KR20150133651A - 분산 테스트 및 프로파일러 프레임워크 - Google Patents

분산 테스트 및 프로파일러 프레임워크 Download PDF

Info

Publication number
KR20150133651A
KR20150133651A KR1020150069556A KR20150069556A KR20150133651A KR 20150133651 A KR20150133651 A KR 20150133651A KR 1020150069556 A KR1020150069556 A KR 1020150069556A KR 20150069556 A KR20150069556 A KR 20150069556A KR 20150133651 A KR20150133651 A KR 20150133651A
Authority
KR
South Korea
Prior art keywords
distributed application
computing devices
computing device
cluster
distributed
Prior art date
Application number
KR1020150069556A
Other languages
English (en)
Inventor
게르만 플로레즈-라라혼도
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20150133651A publication Critical patent/KR20150133651A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명의 실시 예에 따른 발명은 분산 애플리케이션 설치 패키지를 수신하는 것을 포함할 수 있다. 분산 애플리케이션 설치 패키지는 분산 애플리케이션 설치 파일, 분산 애플리케이션을 위한 지원 파일, 그리고 하나 또는 그 이상의 환경 설정을 포함할 수 있다. 방법은 한 클러스터의 컴퓨팅 장치들에 적어도 분산 애플리케이션을 설치하는 것을 포함할 수 있으며, 분산 애플리케이션은 샌드박스 환경하에서 실행할 수 있다. 방법은, 분산 애플리케이션을 통하여 그리고 한 클러스터의 컴퓨팅 장치들의 샌드박스 환경 하에서, 하나 또는 그 이상의 테스트를 실행함으로써 분산 애플리케이션의 성능을 프로파일링 하는 것을 포함할 수 있다. 방법은 하나 또는 그 이상의 테스트 동안 생성되는 프로파일링 된 데이터의 하나 또는 그 이상의 조각들을 수집함으로써 분산 애플리케이션의 퍼포먼스 서머리를 생성하는 것을 포함할 수 있다.

Description

분산 테스트 및 프로파일러 프레임워크{DISTRIBUTED TEST AND PROFILER FRAMEWORK}
본 발명은 분산 컴퓨팅에 관한 것으로, 좀 더 상세하게는 분산 애플리케이션(distributed application)의 셋 업 및 테스트에 관한 것이다.
분산 컴퓨팅(distributed computing)은 일반적으로 분산 시스템을 연구하거나 이용하는 컴퓨터 과학의 분야이다. 분산 시스템(distributed system)은 전통적으로, 네트워크화된 컴퓨터들에 배치된 컴포넌트들이 그들 사이에서 메시지 전달(message passing)에 의해 그들의 행동과 통신하고 조직화하는 시스템이다. 컴포넌트들은 공통적인 목표를 달성하기 위해 서로 상호작용한다. 분산 시스템의 일반적인 특징은 컴포넌트들의 동시 실행(concurrency), 글로벌 클록(global clock)의 부재, 컴포넌트들의 독립 실패를 포함할 수 있다. 분산 시스템의 예들은 멀티플레이어 온라인 게임부터 피어-투-피어(peer-to-peer) 애플리케이션에 이르기까지 다양할 수 있다.
"분산 시스템", "분산 프로그래밍", "분산 알고리즘" 등과 같은 용어에서의 "분산"라는 단어는 원래 개인용 컴퓨터들이 어떤 지리적 영역 내에서 물리적으로 분산되는 컴퓨터 네트워크를 일컫는다. 근래에는 이 용어는 좀 더 넓은 의미로 사용되고, 종종 동일한 물리적 위치 내에서 작동하고 메시지 전달(message passing)에 의해 서로 교류하는 자율적인 처리를 일컫는다.
분산 시스템은 큰 컴퓨터 적인 문제(computational problem)를 해결하는 것과 같은, 공통의 목적을 가질 수 있다. 예를 들어, 어떤 분산 시스템에서, 컴퓨터의 문제는 동시에 실행될 수 있는 복수의 더 작은 작업들로 나누어질 수 있고, 이들 작업들은 분산 시스템의 다양한 컴퓨터들에 할당될 수 있다. 그러한 시스템에서, 더 큰 컴퓨터의 문제는, 문제를 연속적으로 처리하는 싱글 컴퓨터와는 대조적으로, 문제를 동시에 처리하기 위해 분산 시스템의 집행력(execution power)을 강화함으로써 좀 더 빨리 해결될 수 있다.
본 발명의 목적은 분산 애플리케이션을 효율적으로 셋-업 하고 테스트하는 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 방법은 분산 애플리케이션 설치 패키지를 수신하는 단계를 포함할 수 있다. 분산 애플리케이션 설치 패키지는 분산 애플리케이션 설치 파일, 분산 애플리케이션을 위한 지원 프로그램, 및 하나 또는 그 이상의 환경 설정들을 포함할 수 있다. 상기 방법은, 운영되는 동안 샌드박스 환경에서 상기 분산 애플리케이션이 실행되도록, 컴퓨팅 장치들의 클러스터에서 적어도 상기 분산 애플리케이션을 설치하는 단계를 포함할 수 있다. 상기 방법은, 상기 분산 애플리케이션을 통하여 그리고 상기 컴퓨팅 장치들의 상기 클러스터에서 상기 샌드박스 환경 내에서, 하나 또는 그 이상의 테스트들을 실행함으로써 상기 분산 애플리케이션의 성능을 프로파일링 하는 단계를 포함할 수 있다. 상기 방법은 상기 하나 또는 그 이상의 테스트들의 실행 동안 생성된 프로파일링 된 데이터의 하나 또는 그 이상의 조각들을 수집함으로써 상기 분산 애플리케이션의 퍼포먼스 서머리를 생성하는 단계를 포함할 수 있다.
본 발명의 다른 실시 예에 따른 시스템은 사용자의 컴퓨팅 장치 및 한 클러스터의 컴퓨팅 장치들을 포함할 수 있다. 상기 사용자의 컴퓨팅 장치는 상기 분산 애플리케이션이 샌드박스 환경에서 실행되도록, 분산 애플리케이션 설치 패키지를 수신하고 마스터 컴퓨팅 장치에 적어도 상기 분산 애플리케이션을 설치하도록 구성될 수 있다. 상기 분산 애플리케이션 설치 패키지는 분산 애플리케이션 설치 파일 및 상기 분산 애플리케이션을 위한 지원 프로그램을 포함할 수 있다. 그리고 상기 한 클러스터의 컴퓨팅 장치들은 상기 마스터 컴퓨팅 장치 및 적어도 하나의 보조 컴퓨팅 장치를 포함할 수 있다. 상기 마스터 컴퓨팅 장치는, 상기 분산 애플리케이션이 상기 샌드박스 환경에서 실행되도록 상기 보조 컴퓨팅 장치들 각각에 상기 분산 애플리케이션을 설치하고, 상기 분산 애플리케이션에 의해 하나 또는 그 이상의 작업들의 실행을 관리하되, 각각의 작업은 상기 컴퓨팅 장치들의 클러스터 중 각각의 컴퓨팅 장치를 통하여 그리고 상기 각각의 컴퓨팅 장치와 관련된 상기 샌드박스 환경 내에서 실행되고, 상기 하나 또는 그 이상의 작업들의 상기 실행 동안 생성된 프로파일링 된 데이터의 하나 또는 그 이상의 조각들을 자동으로 수집하고, 그리고 상기 프로파일링 된 데이터의 하나 또는 그 이상의 조각들에 기초하여 상기 분산 애플리케이션의 퍼포먼스 서머리를 생성하도록 구성될 수 있다.
본 발명의 또 다른 실시 예에 따른 장치는 네트워크 인터페이스 및 프로세서를 포함하는 한 클러스터의 컴퓨팅 장치들을 포함할 수 있다. 상기 네트워크 인터페이스는 상기 클러스터에 의해 포함되는 하나 또는 그 이상의 보조 컴퓨팅 장치들로 적어도 분산 애플리케이션을 전송하도록 구성될 수 있다. 상기 분산 애플리케이션은 샌드박스 환경을 실행하도록 구성될 수 있다. 상기 프로세서는 상기 분산 애플리케이션에 의해 하나 또는 그 이상의 작업들의 실행을 관리하도록 구성될 수 있고, 각각의 작업은 상기 클러스터의 각각의 컴퓨팅 장치를 통하여 그리고 상기 각각의 컴퓨팅 장치와 관련된 상기 샌드박스 환경 내에서 실행할 수 있다. 상기 네트워크 인터페이스는 상기 하나 또는 그 이상의 작업들의 실행 동안 생성된 프로파일링 된 데이터의 하나 또는 그 이상의 조각들을 수집하도록 구성될 수 있다. 상기 프로세서는 상기 프로파일링 된 데이터의 하나 또는 그 이상의 조각들에 기초하여 상기 분산 애플리케이션의 퍼포먼스 서머리를 생성하도록 구성될 수 있다.
하나 또는 그 이상의 실시 예들이 첨부된 도면 및 발명의 상세한 설명을 통하여 좀 더 자세하게 설명될 것이다. 다른 특징들은 발명의 상세한 설명, 도면 및 청구항들로부터 명백할 것이다.
본 발명의 실시 예에 따르면, 분산 애플리케이션을 효율적으로 셋-업 하고 테스트하는 방법을 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 시스템을 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 방법을 보여주는 순서도이다.
도 3은 본 발명의 실시 예에 따른 퍼포먼스 서머리를 보여주는 그래프이다.
도 4는 본 발명의 실시 예에 따라 생성된 장치를 포함하는 정보 처리 시스템을 보여주는 블록도이다.
유사한 구성 요소에 대해 유사한 참조 번호들이 사용될 수 있다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
한 요소 또는 층이 다른 요소 또는 층에 "연결되는", "결합하는", 또는 "인접하는" 것으로 언급되는 때에는, 다른 요소 또는 층에 직접적으로 연결되거나, 결합 되거나, 또는 인접하는 것일 수 있고, 혹은 그 사이에 끼워지는 요소 또는 층이 존재할 수 있음이 잘 이해될 것이다. 본 명세서에서 사용되는 "및/또는"이라는 용어는 나열된 요소들의 하나 또는 그 이상의 가능한 조합들을 포함할 것이다.
비록 "제 1", "제 2" 등의 용어가 여기서 다양한 요소를 설명하기 위해 사용될 수 있다 하더라도, 이들 요소는 이 용어들에 의해 한정되지 않는다. 이 용어들은 단지 다른 것들로부터 하나의 구성요소를 구별하기 위해 사용될 수 있다. 따라서, 본 명세서에서 사용된 제 1 구성요소, 구간, 층과 같은 용어는 본 발명의 사상을 벗어나지 않는 범위 내에서 제 2 구성요소, 구간, 층 등으로 사용될 수 있다.
"아래의", "하부의", "위의", "상부의", 및 이와 유사한 용어들은 직접적으로(directly) 또는 다른 층을 개재하여(indirectly) 배치되는 경우를 모두 포함한다. 그리고, 공간적으로 상대적인 이러한 용어들은 도면에 도시된 방향에 더하여 다른 방향을 포함하는 것으로 이해되어야 한다. 예를 들어, 만일 장치가 뒤집히면, "아래의"로 설명된 구성요소는 "위의"가 될 것이다.
본 명세서에서 설명되는 용어는 단지 특정한 실시 예를 설명하기 위한 목적으로 사용되며, 그것에 한정되지 않는다. "하나의"와 같은 용어는 달리 명백하게 지칭하지 않으면 복수의 형태를 포함하는 것으로 이해되어야 한다. "포함하는" 또는 "구성되는"과 같은 용어는 설명된 특징, 단계, 동작, 성분, 및/또는 구성요소의 존재를 명시하며, 추가적인 하나 또는 그 이상의 특징, 단계, 동작, 성분, 구성요소 및/또는 그들의 그룹의 존재를 배제하지 않는다.
다양한 실시 예에서, 분산 시스템(distributed system)을 구축하는 것은 어려울 수 있다. 전통적인 분산 프로그램들 또는 애플리케이션들은 복잡하거나 유지하기 어려운 경향이 있다. 뿐만 아니라, 분산 애플리케이션은 (싱글 머신 상에서 실행되는 비-분산 애플리케이션과 함께 실행되는) 한 번이 아니라 여러 번 설치되고 구성될 필요가 있다. 분산 애플리케이션은 분산 시스템에 있는 각각의 컴퓨팅 장치를 위해 설치되고 셋 업 되거나 또는 구성될 수 있다. 32개의 컴퓨팅 장치들을 포함하는 분산 시스템은 32번 설치되고 구성되는 분산 애플리케이션을 필요로 할 수 있다(각각의 컴퓨팅 장치마다 한 번).
이러한 설치 및 유지 작업을 좀 더 복잡하게 하는 것은 적어도 두 개의 추가적인 이슈들이다. 첫째로, 많은 분산 애플리케이션들이 독립적이지 않다. 종종 그들은 프로그램들을 지원할 것을 요구하거나 또는 다양한 소프트웨어 라이브러리들에 종속적이다. 예를 들어, Apache Hadoop 분산 애플리케이션은 JRE (Oracle Java RunTime Environment) 및 그것의 다양한 소프트웨어 라이브러리들(예를 들어, Jersey web service engine, Apache Logging Service (Log4j), 등)을 포함할 수 있다. 이와 유사하게, 이러한 지원 프로그램들 또는 종속적인 것들은 모두 각각의 컴퓨팅 장치상에 설치되거나 셋-업 될 수 있다. 분산 시스템 내의 분산 애플리케이션의 설치는 종종 사소하지 않을 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
둘째로, 분산 시스템들은 종종 동종이 아닐 수 있다(non-homogeneous). 분산 시스템 내의 다양한 컴퓨팅 장치들은 상당히 다양할 수 있다. 예를 들어, 어떤 컴퓨팅 장치들은 마이크로소프트사의 운영 체제를 실행할 수 있음에 반해, 다른 것들은 리눅스와 같은 운영 체제를 실행할 수 있다. 다른 실시 예에서, 분산 시스템은 동일한 기본 OS를 실행할 수 있다. 그러나, 그것의 다른 버전들을 실행할 수도 있다(예를 들어, Windows 7 & Windows 8.1, Linux 3.11 & 2.6, 등). 종종, 다양한 컴퓨팅 장치들을 다른 하드웨어 컴포넌트들(예를 들어, 다른 크기의 메모리, 스토리지, 프로세싱 파워 등; 카메라, 그래픽 프로세서 등)을 포함할 수 있다. 분산 애플리케이션을 설치하고 구성할 때, 각각의 컴퓨팅 장치는 각각의 컴퓨팅 장치의 역량에 의존하여 약간은 다른 환경 설정(configuration setting) 및/또는 소프트웨어를 필요로 할 수 있다. 그러한 실시 예에서, 종종 균일한 또는 널리 적용되도록 만든(one-size-fits-all) 설치 루틴(installation routine)은 적용되지 않을 수 있다. 어떤 실시 예에서, 이 이슈는 동종의 분산 시스템을 가짐으로써 개선될 수 있다. 그러나, 그러한 균일성은 비싸거나(예를 들어, 모든 컴퓨팅 장치들이 동시에 업그레이드되거나 대체되는 등) 또는 불편할 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
도 1은 분산 애플리케이션 및 어떤 바람직한 지원 프로그램들/소프트웨어 패키지들을 설치하고 테스트하기 위한 시스템(100)을 보여주는 블록도이다. 다양한 실시 예에서, 시스템(100)은 주로 싱글 로케이션(single location)(예를 들어, 연구실, 데이터 센터 등)에 포함될 수 있다. 다른 실시 예에서, 시스템(100)은 다양한 지리적 위치에 걸쳐 물리적으로 분산되어 있을 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
다양한 실시 예에서, 시스템(100)은 사용자 컴퓨팅 장치(104) 및 복수의 또는 한 클러스터의 컴퓨팅 장치들(106)을 포함할 수 있다. 다른 실시 예에서, 시스템(100)은 개발 컴퓨팅 장치(development computing device)(102)를 포함할 수 있다. 어떤 실시 예에서, 분산 애플리케이션(172)은 비특권(non-privileged) 사용자 또는 일반 사용자(191)에 의해 설치되고 실행될 수 있다. 그러한 실시 예에서, 일반 사용자(191)는 한 클러스터의 컴퓨팅 장치들(106)에 대한 특정한 액션들을 실행하기 위한 특권 또는 특별한 권리(예를 들어, 관리자, 슈퍼 사용자 등)를 갖지 않을 수 있다. 다양한 실시 예에서, 일반 사용자(191)는 실제로 특권을 받은 사용자일 수 있으나, 그러한 특권 또는 특별한 권리는 아래에서 설명될 액션들을 실행하도록 요구받지 않을 수 있다.
다양한 실시 예에서, 복수의 한 클러스터의 컴퓨팅 장치들(106)은 하나 또는 그 이상의 컴퓨팅 장치들(예를 들어, 마스터 컴퓨팅 장치(112), 보조 컴퓨팅 장치(들)(114) 등)을 포함할 수 있다. 어떤 실시 예에서, 한 클러스터의 컴퓨팅 장치들 각각은, 예를 들어, 랩톱, 데스크톱, 워크스테이션, 시스템-온-칩(SoC), 스마트폰, 태블릿 및 다른 적절한 컴퓨터 등, 또는 가상 머신 또는 그것의 가상 컴퓨팅 장치와 같은 장치를 포함할 수 있다. 어떤 실시 예에서, 한 클러스터의 컴퓨팅 장치들(106)은 동종일 수 있으며, 컴퓨팅 장치들의 모든 것들은 대체로 동일할 수 있다. 다른 실시 예에서, 한 클러스터의 컴퓨팅 장치들(106)은 동종일 수 있으며, 컴퓨팅 장치들은 어떤 사소하지 않은 방법(non-trivial way)에 있어서 클러스터(106) 내의 적어도 하나의 다른 컴퓨팅 장치와 다를 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
어떤 실시 예에서, 한 클러스터의 컴퓨팅 장치들(106)은 분산 애플리케이션(172) 및 다른 테스트들 또는 분산 애플리케이션(172)에 관련된 테스트들에 배타적으로 제공될 수 있다. 다양한 다른 실시 예에서, 클러스터(106) 내의 하나 또는 그 이상의 컴퓨팅 장치들은 분산 애플리케이션과 관련되지 않은 다른 동작들을 실행할 수 있다. 예를 들어, 실시 예로써, 보조 컴퓨팅 장치(114)는 사용자(미도시)를 위한 기본적인 워크스테이션일 수 있고, 따라서 그 사용자에 의해 표준 작업 애플리케이션들을 실행할 수 있고(예를 들어, 워드 프로세서, 스프레드시트, 통합 개발 환경(integrated design environment) 등), 분산 애플리케이션(172)을 실행할 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
어떤 실시 예에서, 한 클러스터의 컴퓨팅 장치들(106)은 컴퓨팅 장치들이 브로드 네트워크(예를 들어, 인터넷 등)에 연결되는 동안 동작하도록 구성되고 표준 인터넷 프로토콜(예를 들어, DNS (dynamic name server))을 사용하도록 구성된 "실 세계" 환경 내에 존재할 수 있다. 다른 실시 예에 있어서, 한 클러스터의 컴퓨팅 장치들(106)은 "최적화된" 또는 "격리된" 환경(예를 들어, 실험실 등) 내에 존재할 수 있다. 그러한 실시 예에서, 한 클러스터의 컴퓨팅 장치들(106)은 제한된 연결성을 가질 수 있으며, 표준 인터넷 프로토콜을 사용하지 않을 수 있다(예를 들어, DNS와 같은, 네트워크 네임 디스커버리(network name discovery)는 사용 금지(disable) 상태일 수 있다.). 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
도면에 도시된 실시 예에 있어서, 사용자(191)는 한 클러스터의 컴퓨팅 장치들(106)에 분산 애플리케이션(172)(또는 그것의 새로운 버전)을 설치하거나 배치하기를 원할 수 있고, 분산 애플리케이션(172)이 주어진 클러스터(106) 내에서 얼마나 잘 동작하는지 테스트하기를 원할 수 있다. 앞서 설명된 바와 같이, 이러한 바램을 실행하기를 시도할 때, 전통적인 다양한 이슈들 또는 어려움이 발생할 수 있다.
도면에 도시된 실시 예에 있어서, 관리자 또는 슈퍼 사용자(190)는 분산 애플리케이션 설치 패키지(160)를 생성할 수 있다. 다양한 실시 예에 있어서, 이 분산 애플리케이션 설치 패키지(160)는 분산 애플리케이션 설치 및 설정과 전통적으로 관련된 복잡성 없이 분산 애플리케이션(172)을 설치하기 위해 일반 사용자(191)에 의해 사용될 수 있다. 다양한 실시 예에 있어서, 분산 애플리케이션 설치 패키지(160)의 생성은 드물게 생성될 수 있으며, 복수의 클러스터들(106) 또는 분산 애플리케이션(172)의 설치를 위해 다시 사용될 수 있다.
다양한 실시 예에 있어서, 특권을 받은 사용자(190)는 개발 컴퓨팅 장치(102)는, 예를 들어, 랩톱, 데스크톱, 워크스테이션, 시스템-온-칩(SoC), 스마트폰, 태블릿 및 다른 적절한 컴퓨터 등, 또는 가상 머신 또는 그것의 가상 컴퓨팅 장치와 같은 장치를 포함할 수 있다. 다양한 실시 예에 있어서, 컴퓨팅 장치(102)는 하나 또는 그 이상의 기계 실행가능한 명령어(machine executable instruction) 또는 소프트웨어, 펌웨어 또는 그들의 조합을 실행하도록 구성될 수 있다. 어떤 실시 예에서, 컴퓨팅 장치(102)는 데이터의 하나 또는 그 이상의 조각들을 일시적으로, 영구적으로, 반영구적으로 (또는 그들의 조합) 저장하도록 구성된 메모리(144)를 포함할 수 있다. 게다가, 메모리(144)는 휘발성 메모리, 불휘발성 메모리, 또는 그들의 조합을 포함할 수 있다. 다양한 실시 예에 있어서, 컴퓨팅 장치(102)는 반영구적 또는 대체로 영구적인 형태로 데이터를 저장하도록 구성된 저장 매체(145)를 포함할 수 있다. 다양한 실시 예에 있어서, 저장 매체(145)는 메모리(144)에 의해 포함될 수 있다.
다양한 실시 예에 있어서, 컴퓨팅 장치(102)는, 사용자 장치(102)가 통신 네트워크의 일부일 수 있고 그리고 통신 네트워크를 통하여 통신하도록 구성된 하나 또는 그 이상의 네트워크 인터페이스들(146)을 포함할 수 있다. 예를 들어, Wi-Fi 프로토콜은 IEEE (Institute of Electrical and Electronics Engineers) 802.11g, IEEE 802.11n 등을 포함할 수 있으나, 이에 한정되지 않는다. 예를 들어, 셀룰러 프로토콜은 IEEE 802.16m (a.k.a. Wireless-MAN (Metropolitan Area Network), LTE (Long Term Evolution) Advanced), Enhanced Data rates for GSM (Global System for Mobile Communications) Evolution (EDGE), Evolved High-Speed Packet Access (HSPA+) 등을 포함할 수 있으나, 이에 한정되지 않는다. 예를 들어, 유선 프로토콜은 IEEE 802.3 (a.k.a. Ethernet), 파이버 채널(Fibre Channel), 전력선 통신망(Power Line communication)(예를 들어, HomePlug, IEEE 1901 등) 등을 포함할 수 있으나, 이에 한정되지 않는다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
다양한 실시 예에 있어서, 컴퓨팅 장치(102)는 하나 또는 그 이상의 다른 하드웨어 컴포넌트들(143)(예를 들어, 디스플레이 또는 모니터, 키보드, 마우스, 카메라, 지문 판독 장치, 비디오 프로세서 등)을 포함할 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
다양한 실시 예에 있어서, 컴퓨팅 장치(102)는 애플리케이션(148)(예를 들어, 통합 개발 환경, 텍스트 편집기 등)에 하나 또는 그 이상의 서비스들을 제공하도록 구성되고, 애플리케이션(148)과 다양한 하드웨어 컴포넌트들(예를 들어, 프로세서(142), 네트워크 인터페이스(146) 등) 사이에서 관리하거나 중재자처럼 동작하도록 구성된 운영 체제(OS)(147)를 포함할 수 있다. 그러한 실시 예에 있어서, 컴퓨팅 장치(102)는 하나 또는 그 이상의 네이티브 애플리케이션(native application)들을 포함할 수 있으며, 이들은 국부적으로 설치될 수 있고(예를 들어, 저장 매체(145) 내에 등) 프로세서(142)에 의해 직접 실행되고 OS와 직접 상호작용 하도록 구성될 수 있다. 그러한 실시 예에 있어서, 네이티브 애플리케이션들은 미리 프로파일링 된 기계 실행가능한 코드(pre-compiled machine executable code)를 포함할 수 있다. 실시 예에 있어서, 네이티브 애플리케이션들은 스크립트 번역기(script interpreter)(예를 들어, C shell (csh), AppleScript, AutoHotkey, Python 등) 또는 소스나 목적 코드(object code)를 실행가능한 코드로 변환시키도록 구성된(그 후 프로세서(142)에 의해 실행됨) 가상 실행 머신(virtual execution machine; VM)(예를 들어, Java Virtual Machine, the Microsoft Common Language Runtime 등)을 포함할 수 있다.
도면에 도시된 실시 예에 있어서, 특권을 받은 사용자(190)는 분산 애플리케이션 설치 파일(162)(또는 파일들), 및 어떤 필요로 하거나 원하는 지원 프로그램(164) 또는 종속 소프트웨어 라이브러리(dependent software library)들을 획득하거나 다운로드 할 수 있다. 예를 들어, Hadoop의 예로 돌아가면(다만, 이 예에 한정되지 않는다), 분산 애플리케이션 설치 파일(162)은 Hadoop 웹 페이지로부터 Hadoop TAR (tape archive) 파일을 다운로드 받는 것을 포함할 수 있다. 이것은 Java 웹 페이지로부터 JRE (Java Runtime Environment) 설치 파일을 다운로드 받는 것을 포함할 수 있고, 어떤 필요로 하거나 원하는 라이브러리들(예를 들어, Jersey web service engine, Apache Logging Service (Log4j) 등)을 다운로드 받는 것을 포함할 수 있다. 다양한 실시 예에 있어서, 아래에서 설명될 바와 같이, 파일들(162 및 164)의 다양한 버전들이 획득될 수 있고, 그리고 대체로 분산 애플리케이션 설치 패키지(160)에 포함될 수 있다.
다양한 실시 예에 있어서, 특권을 받은 사용자(190)는 하나 또는 그 이상의 환경 설정(configuration setting) 파일 또는 정보(166)를 기록하거나 편집할 수 있다. 다양한 실시 예에 있어서, 이들 환경 설정들(166)은 분산 애플리케이션(172) 또는 지원 프로그램들(174)의 동작을 수정할 수 있다. 어떤 실시 예에 있어서, 환경 설정들(166)은 복수의 다른 환경 설정들을 포함할 수 있다. 그러한 실시 예에 있어서, 각각의 환경 설정은 클러스터(106) 또는 심지어 다른 타입의 클러스터(106) 내의 컴퓨팅 장치의 다른 타입과 관련되어 있을 수 있고, 분산 애플리케이션 설치 패키지(160)는 하나의 클러스터(106) 이상으로 사용될 수 있다. 어떤 실시 예에 있어서, 환경 설정들은 하나 또는 그 이상의 디폴트 환경 설정들 또는 컴퓨팅 장치가 미리 정해진 가능한 환경 설정들 중 어느 것을 위해 이상적으로 매칭되지 않은 경우 여러 그룹의 설정들을 포함할 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
특권을 받은 사용자(190)는, 사람의 개입을 필요로 하지 않고 분산 애플리케이션(172) 그리고 지원 프로그램들 및/또는 라이브러리들(174)을 어떻게 자동으로 설치할 수 있는가에 관하여 설치 스크립트(168) 또는 컴퓨팅 장치(예를 들어, 마스터 컴퓨팅 장치(112) 등)에 명령들을 제공하는 프로그램을 기록할 수 있다. 어떤 실시 예에 있어서, 설치 스크립트(168)는 동적으로 적응적일 수 있으며(adaptive), 그것이 목표로 하거나 또는 실행되는 컴퓨팅 장치에 따라 다른 기능들을 실행하도록 구성될 수 있다. 예를 들어, 만일 클러스터(106)가 동종이지 않으면, 설치 스크립트(168)는 각각의 컴퓨팅 장치에 따라 다른 파일들 또는 사른 세트의 환경 설정들을 설치할 수 있다. 특정한 실시 예로써, 만일 제 1 보조 컴퓨팅 장치(114)가 윈도 OS를 실행한다면, 설치 스크립트(168)는 이것을 감지할 수 있고 분산 애플리케이션(172) 또는 지원 프로그램들(174)의 윈도 버전이 설치되도록 지시할 수 있다. 반면, 스크립트(168)는 이것을 감지할 수 있고, 분산 애플리케이션(172) 또는 지원 프로그램들(174)의 리눅스 버전이 설치되도록 지시할 수 있다. 그러한 실시 예에 있어서, 앞서 설명된 바와 같이, 분산 애플리케이션 설치 패키지(160)는 다양한 파일들의 다른 버전들을 포함할 수 있다. 다른 실시 예에 있어서, 설치 스크립트(168)는 컴퓨팅 장치에 질의하고, 컴퓨팅 장치(예를 들어, 프로세서의 타입, 메모리의 양, OS 등)에 의해 제공되는 시스템 리소스를 판단하고, 각각의 컴퓨팅 장치의 시스템 리소스에 기초하여 주어진 세트의 환경 설정들을 동적으로 선택하도록 구성될 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
다양한 실시 예에 있어서, 설치 스크립트(168)는 미리-컴파일링 된 애플리케이션 또는 다른 애플리케이션(예를 들어, OS, runtime interpreter 등)에 의해 해석된 애플리케이션을 포함할 수 있다. 도면에 도시된 실시 예에 있어서, 설치 스크립트(168)는 복수의 프로그래밍 언어들(예를 들어, Python, bash 등)로 쓰인 복수의 스크립트들을 포함할 수 있다. 그러한 실시 예에 있어서, 분산 애플리케이션 설치 패키지(160)는 넓은 범위의 아키텍처들 및 다양한 타입의 클러스터들(106)에 걸쳐 사용될 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
다양한 실시 예에 있어서, 특권을 받은 사용자(190)는 통합된 분산 애플리케이션 설치 패키지(160) 안으로 분산 애플리케이션 설치 파일(162), 지원 프로그램들 또는 라이브러리들(164), 환경 설정들 또는 정보(166), 그리고 설치 스크립트(168)를 수집할 수 있다. 특권을 받은 사용자(190)는 분산 애플리케이션 설치 패키지(160)가 바라는 대로 동작하는지 (즉, 그것이 분산 애플리케이션(172)을 설치하는지 외) 테스트할 수 있으며, 일반 사용자(191)에 의한 사용을 위해 분산 애플리케이션 설치 패키지(160)를 배포할 수 있다.
도면에 도시된 실시 예에 있어서, 분산 애플리케이션 설치 패키지(160)는 모든 원하는 또는 가능한 컴포넌트들을 포함하는 싱글 파일로써 도시되었다. 다양한 실시 예에 있어서, 파일은 TAR 파일, ZIP 파일 등일 수 있다. 다른 실시 예에 있어서, 설치 스크립트(168)는 서버(예를 들어, 개발 컴퓨팅 장치(102) 등)로부터 파일들(예를 들어, 분산 애플리케이션 설치 파일(162), 환경 설정들(166) 등)을 동적으로 선택하고 다운로드 할 수 있도록 구성될 수 있다. 그러나, 그러한 설치 파일들의 동적 취득은 클러스터(106)가 호스트 서버로의 접근권(access)을 가질 것을 요구하므로, 이것은 도시된 수집된 파일보다 덜 바람직할 수 있다. 만일 클러스터(106)가 고립된 환경(예를 들어, 실험실 등)에서 동작한다면, 이 접근은 존재하지 않을 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
앞서 설명된 바와 같이, 도면에 도시된 실시 예에 있어서, 일반의, 비특권 사용자(191)는 클러스터(160)에 걸쳐 분산 애플리케이션(172)을 설치하기를 원할 수 있다. 도면에 도시된 실시 예에 있어서, 일반 사용자(191)는 사용자 컴퓨팅 장치(104)를 사용할 수 있다. 실시 예에 있어서, 사용자 컴퓨팅 장치(104)는, 예를 들어, 랩톱, 데스크톱, 워크스테이션, 시스템-온-칩(SoC), 스마트폰, 태블릿 및 다른 적절한 컴퓨터 등, 또는 가상 머신 또는 그것의 가상 컴퓨팅 장치와 같은 장치를 포함할 수 있다. 뿐만 아니라, 다양한 실시 예에 있어서, 사용자 컴퓨팅 장치(104)는 개발 컴퓨팅 장치(102)와 유사한 하나 또는 그 이상의 컴포넌트들(예를 들어, 프로세서(142), 메모리(144), 네트워크 인터페이스(146), OS(147) 등)을 포함할 수 있다.
다양한 실시 예에 있어서, 비특권 사용자(191)는 분산 애플리케이션 설치 패키지(160)를 수신할 수 있다. 예를 들어, 특권 사용자(190)는 회사의 정보 기술 부서에서 일할 수 있고, 분산 애플리케이션 설치 패키지(160)를 회사 내의 다양한 연구 개발 부서로 전송할 수 있다. 일반 사용자(191)는 이들 그룹들 중 하나에서 일할 수 있다. 또는 분산 애플리케이션 설치 패키지(190)는 제 3자로부터 또는 외부 회사로부터 수신될 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
일반 사용자(191)는 주어진 클러스터의 컴퓨팅 장치들(106)을 담당하거나 또는 관련될 수 있다. 도면에 도시된 실시 예에 있어서, 클러스터(106)는 마스터 컴퓨팅 장치(112) 및 하나 또는 그 이상의 보조 컴퓨팅 장치(114)를 포함할 수 있다. 실시 예에 있어서, 마스터 컴퓨팅 장치(104) 및/또는 보조 컴퓨팅 장치들은, 예를 들어, 랩톱, 데스크톱, 워크스테이션, 시스템-온-칩(SoC), 스마트폰, 태블릿 및 다른 적절한 컴퓨터 등, 또는 가상 머신 또는 그것의 가상 컴퓨팅 장치와 같은 장치를 포함할 수 있다. 뿐만 아니라, 다양한 실시 예에 있어서, 컴퓨팅 장치(112 및/또는 114)는 개발 컴퓨팅 장치(102)와 유사한 하나 또는 그 이상의 컴포넌트들(예를 들어, 프로세서(142), 메모리(144), 네트워크 인터페이스(146), OS(147) 등)을 포함할 수 있다. 앞서 설명된 바와 같이, 클러스터(106)는 실시 예에 따라 이종 또는 동종일 수 있다.
도면에 도시된 바와 같이, 사용자(191)는 분산 애플리케이션(172), 및 어떤 지원 프로그램들 또는 라이브러리들(174)을 마스터 컴퓨팅 장치(112)에 설치할 수 있다. 다양한 실시 예에 있어서, 마스터 컴퓨팅 장치(112)는 미리 정해질 수 있다. 다른 실시 예에 있어서, 사용자(191)는 클러스터의 컴퓨팅 장치들 중 어느 것이 마스터 컴퓨팅 장치(112)가 되도록 선택할 수 있다. 그러한 실시 예에 있어서, 분산 애플리케이션 설치 패키지(160)는 사용자(191)에 의한 활동과 함께 미리 패키징 되고 분산 애플리케이션(172)을 자동으로 설치하도록 구성되기 때문에, 분산 애플리케이션 설치 패키지(160)는 사용자(191)를 대신하여 자동으로 최적화 및 최상의 추측을 실행하다시피 사용자(191)는 기술적으로 요령 있을 필요가 없다(예를 들어, 분산 애플리케이션 설정(예를 들어, 컨테이너의 수, 타임아웃 등), 파일 시스템 마운팅 옵션, 등). 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
도면에 도시된 실시 예에 있어서, 분산 애플리케이션 설치 패키지(160)는 샌드박스 환경과 함께 분산 애플리케이션(172)을 설치하도록 구성될 수 있다. 그러한 실시 예에 있어서, 샌드박스 환경은 클러스터(106) 또는 컴퓨팅 장치(112)의 다른 가능한 사용자들로부터 효율적으로 고립될 수 있다. 그러한 실시 예에 있어서, 샌드박스는, 시스템 리소스들(예를 들어, 프로세싱 사이클, 메모리의 부분 등) 소모 외에도, 분산 애플리케이션(172)이 어떤 다른 실행 애플리케이션(예를 들어, 웹 서버(134), 워드 프로세서 등)에 영향을 미침 없이 실행되도록 할 수 있다. 그러한 실시 예에 있어서, 샌드박스는 분산 애플리케이션(172)이 다른 설치된 애플리케이션들 또는 프로그램들에 영향을 미침 없이 설치되거나 또는 제거되도록 할 수 있다.
실시 예에 있어서, 샌드박스 환경은 별도의 또는 전용의 사용자 계정(122)의 생성을 포함할 수 있다. 실시 예에 있어서, 분산 애플리케이션(distributed application; DA) 사용자 계정(122)은 일반 사용자(191)의 계정과는 다른 특권(privilege), 그룹 연계(group associations) 등을 포함할 수 있다. 다양한 실시 예에 있어서, 분산 애플리케이션(172)은 DA 사용자 계정(122)에 속하거나 또는 관련됨으로써 설치될 수 있다. 그러한 실시 예에 있어서, 이것은 어느 파일들 및/또는 설정들이 분산 애플리케이션(172)에 속하는지를 확인하거나 또는 표시하는데 사용될 수 있고, 더 단순한 및/또는 제거를 할 수 있도록 한다. 어떤 실시 예에 있어서, 분산 애플리케이션(172)이 실행될 때, 그것은 일반 사용자(192)의 계정이 아닌 DA 사용자 계정(122)에 의해 실행될 수 있다. 그러한 실시 예에 있어서, 분산 애플리케이션(172)의 실행은 이득을 취할 수 있거나, 또는 일반 사용자(191)가 아닌 DA 사용자 계정(122)과 관련된 특권들로 제한될 수 있다. 어떤 실시 예에 있어서, 이것은 어떤 사용자가 분산 애플리케이션(172)을 구동하거나 또는 실행하는 것을 허락할 수 있다.
일단 분산 애플리케이션(172)이 마스터 컴퓨팅 장치(112)에 설치되면, 마스터 컴퓨팅 장치(112)는 분산 애플리케이션(172)을 보조 컴퓨팅 장치들(114)에 배치하거나 설치할 수 있다. 다양한 실시 예에 있어서, 이것은 분산 애플리케이션 설치 패키지(160)를 포함할 수 있다. 어떤 실시 예에 있어서, 복수의 보조 컴퓨팅 장치들(114)에 대한 이러한 설치 또는 배치는 대체로 동시에, 또는 병렬로 발생할 수 있다. 다양한 실시 예에 있어서, 이 설치는, 마스터 컴퓨팅 장치(112)에 대한 것과 대체로 유사한, 보조 컴퓨팅 장치들(114)에 대한, DA 사용자 계정(122)의 생성을 포함할 수 있다. 앞서 설명된 바와 같이, 분산 애플리케이션(172)은 샌드박스 환경 내에 설치되거나 배치될 수 있다.
다양한 실시 예에 있어서, 분산 애플리케이션 설치 패키지(160) 내에 있는 환경 설정들(166)은, 분산 애플리케이션(172)이, (예를 들어, DNS (dynamic name server), DHCP (Dynamic Host Configuration Protocol) 등을 통하여) 적어도 반-연결되거나(semi-connected) 또는 관리되는 클러스터(106) 내에 설치되도록, 또는 회부의 네트워크 구성을 사용하지 않는 고립된 네트워크 내에 설치되도록 할 수 있다. 그러한 실시 예에 있어서, 분산 애플리케이션 설치 패키지(160)는 클러스터(106)의 다양한 컴퓨팅 장치들을 발견하도록 구성될 수 있고, 그것들이 그것들 사이에서 통신하도록 구성할 수 있다. 다양한 실시 예에 있어서, 앞서 설명된 바와 같이, 다양한 환경 설정들(166)은 다양한 컴퓨팅 장치들(112 및/또는 114)의 동적 구성을 허락할 수 있다.
도면에 도시된 실시 예에 있어서, 일단 마스터 컴퓨팅 장치(122)가 원하는 보조 컴퓨팅 장치들(114)에 분산 애플리케이션(172)을 설치하면, 마스터 컴퓨팅 장치(112) 또는 사용자 컴퓨팅 장치(104)는 설치가 성공했는지 여부를 검사할 수 있다. 실시 예에 있어서, 이것은 설치 과정 동안 하나 또는 그 이상의 로그 파일들 또는 다른 메시지를 검사하는 것을 포함할 수 있다. 만일 로그 파일들 또는 메시지들이 이상적이지 않다면, 환경 설정은 조정되거나 또는 설치는 분산 애플리케이션(172)의 다른 형태(예를 들어, 컴퓨팅 장치의 운영 체제의 다른 버전으로 조정된 지원 프로그램(174) 등)를 사용하여 다시 시도될 수 있다.
실시 예에 있어서, 마스터 컴퓨팅 장치(112) 또는 다른 컴퓨팅 장치(104)는 분산 애플리케이션(172)을 사용하여 하나 또는 그 이상의 작은, 미리 정해진, "핵심적인 특징(heartbeat)" 테스트들을 실행할 수 있다. 그러한 실시 예에 있어서, 작은 테스트들의 목적은 단순히 분산 애플리케이션(172)이 모든 설치된 컴퓨팅 장치들(112 및 114)에 대한 기능의 기본적인 레벨을 갖는지 여부를 판단하기 위한 것일 수 있다. 다양한 실시 예에 있어서, 만일 설치 로그들, 메시지들, 또는 작은 "핵심적인 특징" 테스트들 중 어느 것이라도 바람직하지 않다면, 개선책이 취해질 수 있다. 실시 예에 있어서, 개선책은 (예를 들어, 분산 애플리케이션(172)을 제거함으로써) 클러스터(106)로부터 실패한 컴퓨팅 장치(114)를 제거하는 것, 또는 일반 사용자(191) 또는 특권을 받은 사용자 중 누구라도 더 사전 대책을 강구하는 행동을 취하게 하는 것을 포함할 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
일단 분산 애플리케이션(172)이 클러스터(106)에 걸쳐 적절하게 설치되면, 일반 사용자(191)는 클러스터(106)의 성능을 프로파일링 하거나 또는 테스트하기를 원할 수 있다. 도면에 도시된 실시 예에 있어서, 일반 사용자(191)는 분산 애플리케이션(172)을 통하여 실행하도록 고안된 하나 또는 그 이상의 테스트들(178)을 가질 수 있다. 그러한 실시 예에 있어서, 테스트들(178)은 다양한 방법들(예를 들어, 많은 처리 사이클 사용(heavy processing cycle usage), 클러스터의 컴퓨팅 장치들 중에 많은 작은 테스트(178)의 할당, 대역폭 사용 등)로 클러스터(106)를 연습(stress or exercise)시킬 수 있다. 다양한 실시 예에 있어서, 테스트들(178)은 테스트들(178)을 실행하는데 사용되는 각각의 컴퓨팅 장치들(112 또는 114)의 다양한 시스템 리소스들을 감시하고 기록하도록 구성될 수 있다. 이 기록된 데이터는 프로파일 데이터(182)로 언급될 수 있다. 다양한 실시 예에 있어서, 프로파일링 기능들은 테스트(178), 분산 애플리케이션(172), 및/또는 하나 또는 그 이상의 지원 프로그램들(174)의 일부일 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
도면에 도시된 실시 예에 있어서, 일반 사용자(191)는 분산 애플리케이션(172)에 의해 실행될 하나 또는 그 이상의 테스트들(178) 또는 테스트들의 그룹을 선택할 수 있다. 다양한 실시 예에 있어서, 일반 사용자(191)는 클러스터(106) 및 분산 애플리케이션의 가능한 성능의 다른 양상들을 각각 테스트하거나 또는 연습시키는 미리 정의된 세트의 테스트들 또는 많은 미리 정의된 세트를 제공받을 수 있다. 어떤 실시 예에 있어서, 테스트들(178)은 특권을 받은 사용자(190) 또는 유사한 사용자에 의해 생성되고 분배될 수 있다. 다른 실시 예에 있어서, 테스트들(178)은 일반 사용자(191)에 의해 생성될 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
도면에 도시된 실시 예에 있어서, 일반 사용자(191)는 테스트들(178)이 분산 애플리케이션(172)에 의해 실행되도록 할 수 있다. 적절한 때에, 분산 애플리케이션(172)은 다양한 테스트들(178)을 클러스터(106)의 컴퓨팅 장치들(112 및 114)에 할당할 수 있다. 일단 할당되면, 분산 애플리케이션(178)의 로컬 인스턴트 생성(local instantiation)은 할당된 테스트(178)를 실행하거나 수행할 수 있고, 그 결과를 프로파일 데이터(182)에 기록할 수 있다. 그리고, 테스트들(178)은 모두 완료될 수 있다. 어떤 실시 예에 있어서, 하나 또는 그 이상의 테스트들(178)은 성공적으로 완료되지 못할 수 있고, 분산 애플리케이션(172)은 그것의 환경 설정에 의해 지시된 개선책 또는 테스트들(178)에서 정의된 행동(예를 들어, 실패한 테스트의 재개, 실패한 테스트를 다른 컴퓨팅 장치(114)로 재할당, 실패의 보고 등)을 실행할 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다. 앞서 설명된 바와 같이, 다양한 실시 예에 있어서, 분산 애플리케이션(172)은 테스트들(178)을 샌드박스 환경 내에서 그리고 DA 사용자 계정(122)을 사용하여 실행할 수 있다.
도면에 도시된 실시 예에 있어서, 일단 테스트(178)가 완료되면, 마스터 컴퓨팅 장치(112)는 프로파일 데이터(182)의 분산된 조각들을 수집할 수 있다. 다양한 실시 예에 있어서, 마스터 컴퓨팅 장치(112)는 그것을 포함하거나 그것에 프로파일러 엔진(132)을 설치했을 수 있다. 어떤 실시 예에 있어서, 프로파일러 엔진(132)은 지원 프로그램들(174) 및/또는 지원 프로그램 설치 파일들(164)에 포함되어 있을 수 있다. 다양한 실시 예에 있어서, 프로파일러 엔진(132)은 마스터 컴퓨팅 장치(112)에 설치될 수 있으나, 다양한 보조 컴퓨팅 장치(114)에는 아니다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
도면에 도시된 실시 예에 있어서, 프로파일러 엔진(132)은 다양한 보조 컴퓨팅 장치들(114)로부터의 프로파일 데이터(182)의 이질적인 조각들을 수집하도록 구성될 수 있다. 그러한 실시 예에 있어서, 프로파일러 엔진(132)은 프로파일 데이터(182)를, 개별적인 컴퓨팅 장치들(112 및/또는 114)이 아닌 전체의 클러스터(106)로부터의 수집된 프로파일 데이터를 나타내는, 통합된 프로파일 데이터(184)로 모을 수 있다.
앞서 설명된 바와 같이, 프로파일 데이터(182) 및 통합된 프로파일 데이터(184)는 다양한 시스템 리소스들의 측정들을 포함할 수 있다. 예를 들어, 프로파일 데이터(182)는 프로세서 사용, 메모리 사용, 저장 매체 사용, 네트워크 사용, 런타임 환경의 성능 데이터(즉, Java Runtime heap), 개별적인 테스트(178)의 완료에 걸리는 시간, 전체로서의 테스트들(178)의 완료에 걸리는 시간 등의 측정을 포함할 수 있다. 프로파일 데이터(182) 및 통합된 프로파일 데이터(184)는 테스트들(178)의 실패한 결과 또는 일반적으로 완료된 결과를 가질 수 있는 테스트(178)에 관한 정보를 포함할 수 있다. 또 다른 실시 예에 있어서, 프로파일 데이터(182) 및 통합된 프로파일 데이터(184)는 테스트들(178)의 실행 동안 생성된 로그들을 포함할 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
도면에 도시된 실시 예에 있어서, 프로파일러 엔진(132)은 통합된 프로파일 데이터(184) 또는 그것의 일부에 기초한 분산 애플리케이션의 퍼포먼스 서머리(performance summary)(186)를 자동으로 생성하도록 구성될 수 있다. 다양한 실시 예에 있어서, 퍼포먼스 서머리(186)는 하나 또는 그 이상의 플롯, 다이어그램, 및/또는 그래프들(188)을 포함할 수 있다. 그러한 실시 예에 있어서, 그래프들(188)의 생성은 그래픽 파일들(예를 들어, JPEG 파일, PNG (Portable Network graphics) 파일 등)의 생성 및 저장을 초래할 수 있다. 통합된 프로파일 데이터(184)로부터의 가공되지 않은 데이터(raw data)는 좀더 바람직한 포맷(예를 들어, CSV (comma separated values) 스프레드시트, 테이블, 데이터 파일 등)로 포맷이 새로이 될 수 있다(reformat). 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
실시 예에 있어서, 퍼포먼스 서머리(186)는 테스트들(178)의 실행 동안 테스트들(178)을 완료하는데 걸리는 실시간(real-time or wall-clock time), 그리고 분산 애플리케이션(172)의 처리량의 측정을 포함할 수 있다. 다른 실시 예에 있어서, 퍼포먼스 서머리(186)는 각각의 컴퓨팅 장치(112 및/또는 114)의 성능의 분석을 포함할 수 있다. 그러한 실시 예에 있어서, 클러스터(106)는 클러스터(106)에서의 어떤 병목 현상 또는 약한 실행자를 판단하기 위해 검사될 수 있다. 다양한 실시 예에 있어서, 퍼포먼스 서머리(186)는 시간(실제의 또는 컴퓨터 사이클들 등), 컴퓨팅 장치(112 및 114), 테스트(178), 그러한 작은, 더 과립 형태의 분석의 그룹들 또는 카테고리들에 의해 연관된 데이터를 포함할 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
다양한 실시 예에 있어서, 마스터 컴퓨팅 장치(112)는 그것을 포함하거나 그것을 퍼포먼스 서머리(186) 및/또는 통합된 프로파일 데이터(184)의 접근을 가능하게 하는 웹서버(134) 또는 다른 애플리케이션(예를 들어, 파일 전송 프로토콜(FTP), 데이터베이스 서버 등)에 설치할 수 있다. 어떤 실시 예에 있어서, 웹 서버(134)는 지원 프로그램들(174) 및/또는 지원 프로그램 설치 파일들(164)에 포함될 수 있다. 다양한 실시 예에 있어서, 웹 서버(134)는 다양한 보조 컴퓨팅 장치(114)가 아닌 마스터 컴퓨팅 장치(112)에 설치될 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
도면에 도시된 실시 예에 있어서, 일반 사용자(191)(또는 다른 관계인)는 웹 서버(134)를 통하여 퍼포먼스 서머리(186)에 접근할 수 있다. 그러한 실시 예에 있어서, 퍼포먼스 서머리(186)는 프로파일러 엔진(132) 또는 웹 서버(134) 중 어느 하나에 의해 원하는 포맷(예를 들어, HTML (hypertext markup language) 등)으로 포맷될 수 있고, 그리고 웹 서버(134)에 의해 사용되는 프로토콜에 따라 전통적인 스킴을 통하여 이용 가능하게 할 수 있다. 다양한 실시 예에 있어서, 웹 서버(134)는 보안 메커니즘(예를 들어, 암호 보호, 암호화 등)을 포함할 수 있다. 다양한 실시 예에 있어서, 웹 서버(134) 및/또는 프로파일러 엔진(132)은, 앞서 설명된 바와 같이, DA 사용자 계정(122)을 사용하여 그리고 샌드박스 환경 내에서 실행될 수 있다.
다양한 실시 예에 있어서, 통합된 프로파일 데이터(182) 및/또는 퍼포먼스 서머리(186)는 저장소(108)에 저장될 수 있다. 그러한 실시 예에 있어서, 사용자(예를 들어, 일반 사용자(191) 등)는 사전의 퍼포먼스 서머리(prior performance summaries)(186)를 수신할 수 있고, 분산 애플리케이션(172) 및/또는 클러스터(106)가 시간 또는 다른 변수들(예를 들어, 실행된 테스트들, 클러스터(106)에 포함된 컴퓨팅 장치들(112 및 114) 등)의 함수로써 어떻게 실행되는지를 볼 수 있다. 그러한 실시 예에 있어서, 시스템(100)의 성능은 시스템의 다른 부분들(예를 들어, 다른 연구실에 있는 클러스터, 다른 OS를 실행하는 클러스터, 인터넷으로부터 고립되지 않은 클러스터 등)과 비교되고 대조될 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
도면에 도시된 실시 예에 있어서, 일단 분산 애플리케이션(172)이 설치되면, 사용자(191)는 어떤 테스트들(178) 또는 다른 일반적인 작업들을 구동하거나 실행할 수 있다. 그러한 실시 예에 있어서, 분산 애플리케이션(172)은 논-프로파일링 작업들을 실행하기 위해 사용될 수 있다. 그리고, 이 작업들은 앞서 설명된 바와 같이 샌드박스 환경 내에서 실행될 수 있다.
어떤 관점에서, 사용자(191)는 분산 애플리케이션(172)을 제거할 수 있다. 그러한 실시 예에 있어서, 분산 애플리케이션 설치 패키지(160) 또는 이와 유사한 것은 제거 프로그램 또는 스크립트를 포함할 수 있다. 다양한 실시 예에 있어서, 제거 스크립트는 설치 스크립트(168)의 일부일 수 있다.
그러한 실시 예에 있어서, 제거에 관한 과정은 대체로 설치 과정과 유사할 수 있다. 사용자(191)는 클러스터(106)로부터 분산 애플리케이션(172)을 제거하도록 마스터 컴퓨팅 장치(112)에 명령할 수 있다. 마스터 컴퓨팅 장치(112)는 다양한 보조 컴퓨팅 장치들(114)로부터 분산 애플리케이션(172)의 제거를 감독할 수 있고, 마스터 컴퓨팅 장치(112) 자신으로부터 분산 애플리케이션(172)을 제거할 수 있고, 그리고 사용자(191)에게 성공 또는 실패를 보고할 수 있다.
도면에 도시된 실시 예에 있어서, 분산 애플리케이션(172)은 샌드박스 환경에 설치되었기 때문에, 일단 제거가 완료되면, 클러스터(106) 내에는 분산 애플리케이션(172)의 흔적이 없거나 거의 없을 수 있다. 분산 애플리케이션(172) 및 지원 프로그램들(174)은 분명히 제거될 수 있다. 어떤 테스트들(178), 프로파일 데이터(182 또는 184), 그리고 퍼포먼스 서머리들(186)은 제거될 수 있다. 게다가, 프로파일러 엔진(132) 그리고 웹 서버(134)도 제거될 수 있다. 유사하게, DA 사용자 계정(122)은 삭제되거나 제거될 수 있다. 그러한 실시 예에 있어서, DA 사용자 계정(112) 및 분산 애플리케이션(172)은 컴퓨팅 장치들(112 및 114)의 어떤 다른 사용자들로부터 분리되거나 고립되었기 때문에, 분산 애플리케이션(172)은 운영 체제가 재부팅되거나 또는 다른 사용자들이 영향받을 필요 없이 설치되거나 또는 제거될 수 있다. 다양한 실시 예에 있어서, 제거는, 클러스터(106)가 분산 애플리케이션(172)의 설치에 앞서와 같은 동일한 상태로 되돌아가는 것을 초래할 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
도 2는 본 발명의 실시 예에 따른 방법을 보여주는 순서도이다. 다양한 실시 예에 있어서, 방법(200)은 도 1 또는 도 4와 같은 시스템에 의해 사용되거나 생성될 수 있다. 게다가, 방법(200)의 일부는 도 1과 같은 시스템에 의해 생성될 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
블록(202)은, 앞서 설명된 바와 같이, 클러스터 내에서 발생할 수 있는 분산 애플리케이션의 배치 또는 설치를 보여준다. 다양한 실시 예에 있어서, 이것은 분산 애플리케이션 설치 패키지를 통하여 발생할 수 있다. 앞서 설명된 바와 같이, 어떤 실시 예에서, 이것은 분산 애플리케이션을 클러스터의 마스터 컴퓨팅 장치에 설치함으로써, 그리고 그것을 하나 또는 그 이상의 보조 컴퓨팅 장치에 설치함으로써 발생할 수 있다. 다양한 실시 예에 있어서, 이 블록에 의해 도시된 하나 또는 그 이상의 동작(들)은 도 1의 장치 또는 시스템, 또는 도 1의 장치, 클러스터, 마스터 컴퓨팅 장치, 및/또는 보조 컴퓨팅 장치에 의해 실행될 수 있다.
블록(204)은, 앞서 설명된 바와 같이, 분산 애플리케이션이 성공적으로 배치되었는지 여부를 판단하기 위한 하나 또는 그 이상의 테스트들이 실행될 수 있다는 것을 보여준다. 블록(205)은 분산 애플리케이션이 성공적으로 배치되지 않았다면, 로그 파일들이 조사되거나 검사될 수 있고, 다른 또는 조정된 세트의 환경 설정들을 사용하여 (전체적으로 또는 부분적으로) 배치가 다시 시도될 수 있다. 다양한 실시 예에 있어서, 이것은 자동으로 실행될 수 있다. 다양한 실시 예에 있어서, 이 블록들에 의해 도시된 하나 또는 그 이상의 동작(들)은 도 1의 장치 또는 시스템, 또는 도 1의 장치, 클러스터, 마스터 컴퓨팅 장치, 및/또는 보조 컴퓨팅 장치에 의해 실행될 수 있다.
블록(206)은, 사용자(예를 들어, 특권을 받지 않은 또는 일반 사용자 등)가 분산 애플리케이션에 의해 실행될, 일(jobs), 작업(tasks), 또는 테스트를 선택할 수 있다는 것을 보여준다. 블록(208)은 선택된 테스트들이, 필요하거나 또는 원한다면, 구성될 수 있다는 것을 보여준다. 다양한 실시 예에 있어서, 이 구성들의 일부 또는 전부는 자동으로 실행될 수 있다. 다른 실시 예에 있어서, 사용자는 매뉴얼에 따라, 선택된 테스트들과 관련된 설정들을 구성하거나 수립할 수 있다. 다양한 실시 예에 있어서, 블록들에 의해 도시된 하나 또는 그 이상의 동작(들)은 도 1의 장치 또는 시스템, 또는 도 1의 장치, 클러스터, 마스터 컴퓨팅 장치, 및/또는 보조 컴퓨팅 장치에 의해 실행될 수 있다.
블록(210)은, 선택된 테스트들을 실행하기에 앞서 또는 선택된 테스트들의 실행의 일부로써, 하나 또는 그 이상의 프로파일러들이 개시되고 시작될 수 있다는 것을 보여준다. 앞서 설명된 바와 같이, 프로파일러들은 다양한 시스템 리소스 사용을 모니터링하고 기록할 수 있다. 다양한 실시 예에 있어서, 블록들에 의해 도시된 하나 또는 그 이상의 동작(들)은 도 1의 장치 또는 시스템, 또는 도 1의 장치, 클러스터, 마스터 컴퓨팅 장치, 및/또는 보조 컴퓨팅 장치에 의해 실행될 수 있다.
블록(212)은, 분산 애플리케이션이 선택된 테스트들을 실행할 수 있다는 것을 보여준다. 다양한 실시 예에 있어서, 앞서 설명된 바와 같이, 분산 애플리케이션은 다양한 시스템 리소스 사용을 모니터링하고 기록할 수 있다. 다양한 실시 예에 있어서, 블록들에 의해 도시된 하나 또는 그 이상의 동작(들)은 도 1의 장치 또는 시스템, 또는 도 1의 장치, 클러스터, 마스터 컴퓨팅 장치, 및/또는 보조 컴퓨팅 장치에 의해 실행될 수 있다.
블록(214)은, 일단 분산 애플리케이션이 테스트들의 실행을 (전체적으로 또는 부분적으로) 완료하면, 결과들 또는 프로파일링 데이터는 마스터 컴퓨팅 장치로 수집되거나 취합될 수 있다는 것을 보여준다. 블록(216)은, 일단 프로파일 데이터가 수집되면, 프로파일러들이 정지될 수 있다는 것을 보여준다. 다양한 실시 예에 있어서, 블록들에 의해 도시된 하나 또는 그 이상의 동작(들)은 도 1의 장치 또는 시스템, 또는 도 1의 장치, 클러스터, 마스터 컴퓨팅 장치, 및/또는 보조 컴퓨팅 장치에 의해 실행될 수 있다.
블록(218)은, 측정 메트릭(performance metrics) 및/또는 그래프 등이 수집된 프로파일 데이터에 기초하여 자동으로 생성될 수 있다는 것을 보여준다. 다양한 실시 예에 있어서, 앞서 설명된 바와 같이, 생성된 측정 메트릭들은 사용자에 의해 검토될 수 있다. 어떤 실시 예에 있어서, 측정 메트릭들은 웹 서버 또는 다른 서버 애플리케이션을 통하여 이용가능하게 될 수 있다. 다양한 실시 예에 있어서, 블록들에 의해 도시된 하나 또는 그 이상의 동작(들)은 도 1의 장치 또는 시스템, 또는 도 1의 장치, 클러스터, 마스터 컴퓨팅 장치, 및/또는 보조 컴퓨팅 장치에 의해 실행될 수 있다.
블록(220)은, 분산 애플리케이션을 통하여 더 많은 일 또는 작업들을 실행하는 것이 바람직한지 여부에 관하여 사용자에 의해 판단될 수 있다는 것을 보여준다. 만일 그렇다면, 블록(206)은 새로운 세트의 일, 작업들, 또는 테스트들이 분산 애플리케이션을 통하여 실행될 수 있다는 것을 보여준다.
블록(222)은, 분산 애플리케이션 및 관련된 파일들이 클러스터로부터 제거될 수 있다는 것을 보여준다. 어떤 실시 예에 있어서, 이것은 클러스터를 파괴하는 것으로 여겨질 수 있다. 그러한 실시 예에 있어서, 클러스터는 분산 클러스터와의 연관에 의해 정의된 즉석(ad hoc) 그룹의 컴퓨팅 장치들로 간주될 수 있다. 다양한 실시 예에 있어서, 블록들에 의해 도시된 하나 또는 그 이상의 동작(들)은 도 1의 장치 또는 시스템, 또는 도 1의 장치, 클러스터, 마스터 컴퓨팅 장치, 및/또는 보조 컴퓨팅 장치에 의해 실행될 수 있다.
다양한 실시 예에 있어서, 블록들(206, 208, 220, 및 218의 일부)의 동작들은 사용자에 의해 실행되거나 개시될 수 있다. 다양한 실시 예에 있어서, 앞서 설명된 바와 같이, 다른 블록들은 시스템에 의해 자동으로 실행될 수 있다. 어떤 실시 예에 있어서, 블록들(206, 208, 220, 및 218의 일부)의 하나 또는 그 이상의 동작들은 자동화될 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
도 3a는 본 발명의 실시 예에 따른 퍼포먼스 서머리(300)의 그래프를 보여주는 도면이다. 도면에 도시된 실시 예에 있어서, 퍼포먼스 서머리(300)는 시간의 함수로써 일반적인 프로세서 또는 중앙 처리 장치(CPU)의 도해적 표현(graphical representation)을 포함할 수 있다.
앞서 설명된 바와 같이, 다양한 실시 예에 있어서, 시스템은 수집된 데이터 또는 통합된 프로파일 데이터, 또는 그것의 일부분에 기초하여 분산 애플리케이션의 퍼포먼스 서머리를 자동으로 생성할 수 있다. 앞서 설명된 바와 같이, 어떤 실시 예에 있어서, 퍼포먼스 서머리는 하나 또는 그 이상의 플롯, 다이어그램, 및/또는 그래프를 포함할 수 있다.
도면에 도시된 실시 예에 있어서, 그래프(300)는 퍼포먼스 서머리 또는 그것의 일부를 포함할 수 있다. 그러한 실시 예에 있어서, 분산 애플리케이션이 시간이 지나면서 실행됨으로써, CPU 사용량은 클러스터 내의 컴퓨팅 장치들 각각에 대해 측정될 수 있다.
어떤 실시 예에 있어서, 컴퓨팅 장치들은 미리 정해진 세트의 기준에 기초하여 그룹화될 수 있다. 예를 들어, CPU들은 작업 타입, 위치 등에 의해, 그들의 아키텍처 (예를 들어, x86, ARM 등)에 의해 그룹화될 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다. 다양한 실시 예에 있어서, 그래프(300)는 복수의 컬러들(흑백인 도면에는 도시되지 않음) 또는 사용자가 수집된 데이터임을 빨리 이해할 수 있도록 하는 다른 형태의 식별을 포함할 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
도 3b는 본 발명의 실시 예에 따른 퍼포먼스 서머리(301)의 일 실시 예를 보여주는 그래프이다. 도면에 도시된 실시 예에 있어서, 퍼포먼스 서머리(301)는 시간의 함수로써 메모리 사용의 도해적 표현을 포함할 수 있다.
앞서 설명된 바와 같이, 다양한 실시 예에 있어서, 시스템은 수집된 데이터 또는 통합된 프로파일 데이터, 또는 그것의 일부에 기초하여 분산 애플리케이션의 퍼포먼스 서머리를 자동으로 생성할 수 있다. 앞서 설명된 바와 같이, 어떤 실시 예에 있어서, 퍼포먼스 서머리는 하나 또는 그 이상의 플롯, 다이어그램, 및/또는 그래프를 포함할 수 있다.
도면에 도시된 실시 예에 있어서 그래프(301)는 퍼포먼스 서머리 또는 그것의 일부를 포함할 수 있다. 그러한 실시 예에 있어서, 분산 애플리케이션이 시간이 지나면서 실행되면서, 메모리 사용량은 클러스터 내의 컴퓨팅 장치들 각각에 대해 측정될 수 있다.
앞서 설명된 바와 같이, 어떤 실시 예에 있어서, 컴퓨팅 장치들은, 예를 들어, 작업 타입, 위치 등에 의한, 미리 정해진 세트의 기준에 기초하여 그룹화될 수 있다. 다른 실시 예에 있어서, 그래프는 메모리가 어떻게 사용되는지에 관한 정보를 포함할 수 있다. 예를 들어, 도면에 도시된 실시 예에 있어서, 그래프(301)는 유휴 상태이거나(free), 캐싱 된 상태이거나(cached), 버퍼링 된 상태이거나(buffered), 또는 사용중인(used) 메모리의 퍼센티지를 나타내는 네 개의 라인들 또는 데이터 세트들을 포함할 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
앞서 설명된 바와 같이, 다양한 실시 예에 있어서, 그래프(300)는 복수의 컬러들(흑백인 도면에는 도시되지 않음) 또는 사용자가 수집된 데이터임을 빨리 이해할 수 있도록 하는 다른 형태의 식별을 포함할 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
다양한 실시 예에 있어서, 도해적으로 표시된 데이터의 다른 형태들은 CPU 사용 대 입출력 처리량의 비교, 대역폭 처리량 대 시간의 비교, 입출력 지연 또는 CPU 코어 당 와트 대 시간의 비교, 커널 사용 대 시간의 비교, 네트워크 사용 또는 혼잡 대 시간의 비교, 인터럽트 또는 에러 조건 대 시간의 비교 등을 포함할 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다. 다른 실시 예에 있어서, 데이터는 하나의 그래프 내에 세 개 또는 그 이상의 변수들을 도해적으로 나타낼 수 있다. 예를 들어, 하나의 그래프는 사용된 메모리의 양, 디스크 사용량(예를 들어, 읽기/쓰기 요청의 개수), 그리고 네트워크의 사용량을 서로 비교하는 3차원 그래프를 포함할 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
도 4를 참조하면, 정보 처리 시스템(400)은 본 발명의 사상에 따라 구현된 하나 또는 그 이상의 장치들을 포함할 수 있다. 다른 실시 예에 있어서, 정보 처리 시스템(400)은 본 발명의 사상에 따른 하나 또는 그 이상의 방법을 실행할 수 있다.
다양한 실시 예에 있어서, 정보 처리 시스템(400)은, 예를 들어, 랩톱, 데스크톱, 워크스테이션, 서버, 블레이드 서버, PDA (personal digital assistant), 스마트폰, 태블릿 및 다른 적절한 컴퓨터 등, 또는 가상 머신 또는 그것의 가상 컴퓨팅 장치와 같은 컴퓨팅 장치를 포함할 수 있다. 다양한 실시 예에 있어서, 정보 처리 시스템(400)은 사용자(미도시)에 의해 사용될 수 있다.
본 발명의 실시 예에 따른 정보 처리 시스템(400)은 CPU (central processing unit), 로직, 프로세서(410)를 더 포함할 수 있다. 어떤 실시 예에 있어서, 프로세서(410)는 하나 또는 그 이상의 FUBs (functional unit blocks) 또는 CLBs (combinational logic blocks)(415)를 포함할 수 있다. 그러한 실시 예에 있어서, CLB는 다양한 불린 로직 동작(Boolean logic operation)(예를 들어, NAND, NOR, NOT, XOR 등), 안정화 로직 장치(stabilizing logic device)(예를 들어, 플립-플롭, 래치 등), 다른 로직 장치들, 또는 그들의 조합을 포함할 수 있다. 조합 논리 동작(combinational logic operation)은 입력 신호들을 처리하기 위한 단순한 또는 복잡한 방법으로 구현되어 원하는 결과를 달성할 수 있다. 동기식 조합 논리 동작들이 예시적으로 설명되었다 하더라도, 본 발명의 사상은 이에 한정되지 않고 비동기식 동작, 또는 그들의 혼합 동작을 포함할 수 있다. 실시 예에 있어서, 조합 논리 동작은 복수의 CMOS (complementary metal oxide semiconductors) 트랜지스터들로 구현될 수 있다. 다양한 실시 예에 있어서, CMOS 트랜지스터들은 논리적 동작들을 실행하는 게이트에 배치될 수 있다.
본 발명의 실시 예에 따른 정보 처리 시스템(400)은 휘발성 메모리(420)(예를 들어, RAM (random access memory) 등)를 더 포함할 수 있다. 본 발명의 실시 예에 따른 정보 처리 시스템(400)은 불휘발성 메모리(430)(예를 들어, 하드 드라이브, 광학 메모리, NAND 또는 플래시 메모리 등)를 더 포함할 수 있다. 어떤 실시 예에 있어서, 휘발성 메모리(420), 불휘발성 메모리(430), 또는 그것의 조합 또는 일부 중 어느 하나는 "저장 매체"로 일컫는다. 다양한 실시 예에 있어서, 휘발성 메모리(420) 및/또는 불휘발성 메모리(430)는 반영구적 또는 대체로 영구적인 형태로 데이터를 저장하도록 구성될 수 있다.
다양한 실시 예에 있어서, 정보 처리 시스템(400)은 정보 처리 시스템(400)이 통신 네트워크의 일부이고 그리고 통신 네트워크를 통하여 통신하도록 구성된 하나 또는 그 이상의 네트워크 인터페이스(440)를 포함할 수 있다. 예를 들어, Wi-Fi 프로토콜은 IEEE (Institute of Electrical and Electronics Engineers) 802.11g, IEEE 802.11n 등을 포함할 수 있으나, 이에 한정되지 않는다. 예를 들어, 셀룰러 프로토콜은 IEEE 802.16m (a.k.a. Wireless-MAN (Metropolitan Area Network) Advanced), LTE (Long Term Evolution) Advanced, EDGE (Enhanced Data rates for GSM (Global System for Mobile Communications) Evolution), Evolved High Speed Packet Access (HSPA+) 등을 포함할 수 있으나, 이에 한정되지 않는다. 예를 들어, 유선 프로토콜은 IEEE 802.3 (a.k.a. Ethernet), Fibre Channel, Power Line communication 5 (예를 들어, HomePlug, IEEE 1901 등) 등을 포함할 수 있으나, 이에 한정되지 않는다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
본 발명의 실시 예에 따른 정보 처리 시스템(400)은 사용자 인터페이스 유닛(450)(예를 들어, 디스플레이 어댑터, 햅틱 인터페이스, 휴먼 인터페이스 장치 등)을 더 포함할 수 있다. 다양한 실시 예에 있어서, 사용자 인터페이스 유닛(450)은 사용자로부터의 입력을 수신하거나 사용자에게 출력을 제공하도록 구성될 수 있다. 다른 종류의 장치들은 사용자와의 상호교류를 제공하기 위해 사용될 수 있다. 예를 들어, 사용자에게 제공되는 피드백은 어떠한 형태의 감각 피드백(예를 들어, 시각 피드백, 청각 피드백, 또는 촉각 피드백일 수 있다. 그리고, 사용자로부터의 입력은 소리, 말, 또는 촉각 입력의 형태로 수신될 수 있다.
다양한 실시 예에 있어서, 정보 처리 시스템(400)은 하나 또는 그 이상의 다른 장치들 또는 하드웨어 컴포넌트들(460)(예를 들어, 디스플레이 또는 모니터, 키보드, 마우스, 카메라, 지문 판독기, 비디오 프로세서 등)을 포함할 수 있다. 앞서 설명된 것은 단지 개시된 주제가 한정되지 않음을 나타내는 예라는 것임을 이해해야 한다.
본 발명의 실시 예에 따른 정보 처리 시스템(400)은 하나 또는 그 이상의 버스들(405)을 더 포함할 수 있다. 그러한 실시 예에 있어서, 시스템 버스(405)는 프로세서(410), 휘발성 메모리(420), 불휘발성 메모리(430), 네트워크 인터페이스(440), 사용자 인터페이스 유닛(450), 및 하나 또는 그 이상의 하드웨어 컴포넌트들(460)과 통신하도록 연결될 수 있다. 프로세서(410)에 의해 처리된 데이터 또는 불휘발성 메모리(430)의 외부로부터 입력된 데이터는 휘발성 메모리(420) 또는 불휘발성 메모리(430)에 저장될 수 있다.
다양한 실시 예에 있어서, 정보 처리 시스템(400)은 하나 또는 그 이상의 소프트웨어 컴포넌트들(470)을 포함하거나 실행할 수 있다. 어떤 실시 예에 있어서, 소프트웨어 컴포넌트들(470)은 운영 체제 및/또는 애플리케이션을 포함할 수 있다. 어떤 실시 예에 있어서, 운영 체제는 애플리케이션에 하나 또는 그 이상의 서비스를 제공하도록 구성될 수 있고, 애플리케이션과 정보 처리 시스템(400)의 다양한 하드웨어 컴포넌트들(예를 들어, 프로세서(410), 네트워크 인터페이스(440) 등) 사이에서 관리하거나 중개자로서 동작할 수 있다. 그러한 실시 예에 있어서, 정보 처리 시스템(400)은, (예를 들어, 불휘발성 메모리(430) 등 내에) 국부적으로 설치될 수 있고 프로세서(410)에 의해 직접적으로 실행되고 운영 체제와 직접적으로 상호교류하도록 구성된, 하나 또는 그 이상의 네이티브 애플리케이션(native application)을 포함할 수 있다. 그러한 실시 예에 있어서, 네이티브 애플리케이션은 미리-컴파일링 된 머신 실행 코드(pre-compiled machine executable code)를 포함할 수 있다. 어떤 실시 예에 있어서, 네이티브 애플리케이션은 스크립트 번역기(script interpreter)(예를 들어, C shell (csh), AppleScript, AutoHotkey, Python 등) 또는 소스나 목적 코드(object code)를 실행가능한 코드로 변환시키도록 구성된(그 후 프로세서(142)에 의해 실행됨) 가상 실행 머신(virtual execution machine; VM)(예를 들어, Java Virtual Machine, the Microsoft Common Language Runtime 등)을 포함할 수 있다.
앞서 설명된 반도체 장치들은 다양한 패키징 기술들을 사용하여 패키징 될 수 있다. 예를 들어, 본 발명의 실시 예에 따른 반도체 장치들은 POP (package on package) 기술, BGAs (ball grid arrays) 기술, CSPs (chip scale packages) 기술, PLCC (plastic leaded chip carrier) 기술, PDIP (plastic dual in-line package) 기술, die in waffle pack 기술, die in wafer form 기술, COB (chip on board) 기술, CERDIP (ceramic dual in-line package) 기술, PMQFP (plastic metric quad flat package) 기술, PQFP (plastic quad flat package) 기술, SOP (small outline package) 기술, SSOP (shrink small outline package) 기술, TSOP (thin small outline package) 기술, TQFP (thin quad flat package) 기술, SIP (systemin package) 기술, MCP (multichip package) 기술, WFP (wafer-level fabricated package) 기술, WSP (wafer-level processed stack package) 기술, 또는 본 발명이 속하는 기술 분야에서 통상의 지식을 지닌 자에 의해 사용될 수 있는 다른 기술들 중 적어도 하나를 사용하여 패키징 될 수 있다.
앞서 설명된 방법들은 컴퓨터 프로그램을 실행하는 하나 또는 그 이상의 프로그램 가능한 프로세서들을 실행하여 입력을 동작시킴으로써 그리고 출력을 생성함으로써 기능들을 실행할 수 있다. 앞서 설명된 방법들은 특수한 목적의 로직 회로, 예를 들어, FPGA (field programmable gate array) 또는 ASIC (application-specific integrated circuit)에 의해 실행될 수 있다. 그리고 장치는 특수한 목적의 로직 회로, 예를 들어, FPGA 또는 ASIC로써 구현될 수 있다.
다양한 실시 예에 있어서, 컴퓨터 판독 가능 매체는, 실행될 때, 장치가 앞서 설명된 방법들 중 적어도 일부를 실행하도록 하는 명령들을 포함할 수 있다. 어떤 실시 예에 있어서, 컴퓨터 판독 가능 매체는 자기 매체(magnetic medium), 광학 매체, 다른 매체, 또는 그들의 조합(예를 들어, CD-ROM, 하드 드라이브, 리드-온리 메모리, 플래시 드라이브 등)에 포함될 수 있다. 그러한 실시 예에 있어서, 컴퓨터 판독 가능 매체는 명백하게 그리고 비일시 적으로 구현된 제조물(article of manufacture)일 수 있다.
본 발명의 사상이 예시적인 실시 예들과 함께 설명되었다. 그러나, 본 발명이 속하는 기술 분야에서 통상의 지식을 지닌 자에게 본 발명의 사상을 벗어나지 않는 범위 내에서 다양한 변형 또는 변경이 가능함은 명백하다. 따라서, 앞서 설명된 실시 예들에 한정되지 않는 것으로 이해되어야 한다. 본 발명의 범위는 후술될 청구항 및 그것의 균등물을 가능한 최대한 넓게 해석함으로써 정해져야 하고, 앞서 설명된 것들에 의해 제한될 것은 아니다.
100: 시스템
102: 개발 컴퓨팅 장치
104: 사용자 컴퓨팅 장치
106: 컴퓨팅 장치들의 클러스터
108: 저장소
112: 마스터 컴퓨팅 장치
114: 보조 컴퓨팅 장치
122: DA 사용자 계정
142: 프로세서
143: 하드웨어 컴포넌트
144: 메모리
145: 저장 매체
146: 네트워크 인터페이스
147: 운영체제
148: 애플리케이션
160: 분산 애플리케이션 설치 패키지
162: 분산 애플리케이션 설치 파일
164: 지원 프로그램
166: 환경 설정 파일 또는 정보
168: 설치 스크립트
172: 분산 애플리케이션
174: 지원 프로그램
178: 테스트
182: 프로파일 데이터
184: 통합된 프로파일 데이터
186: 퍼포먼스 서머리
190: 특권을 받은 사용자
191: 일반 사용자

Claims (10)

  1. 분산 애플리케이션 설치 파일, 지원 프로그램, 및 하나 또는 그 이상의 환경 설정들을 포함하는, 분산 애플리케이션 설치 패키지를 수신하는 단계;
    샌드박스 환경에서 상기 분산 애플리케이션이 실행되도록, 컴퓨팅 장치들의 클러스터에 적어도 상기 분산 애플리케이션을 설치하는 단계;
    상기 분산 애플리케이션을 통하여 그리고 상기 컴퓨팅 장치들의 상기 클러스터에서 상기 샌드박스 환경 내에서, 하나 또는 그 이상의 테스트들을 실행함으로써 상기 분산 애플리케이션의 성능을 프로파일링 하는 단계; 그리고
    상기 하나 또는 그 이상의 테스트들의 실행 동안 생성된 프로파일링 된 데이터의 하나 또는 그 이상의 조각들을 수집함으로써 상기 분산 애플리케이션의 퍼포먼스 서머리(performance summary)를 생성하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 설치하는 단계는 상기 분산 애플리케이션과 배타적으로 관련된 사용자 계정을 생성하는 단계를 포함하는 방법.
  3. 제 1 항에 있어서,
    운영되는 동안, 상기 컴퓨팅 장치들의 클러스터는 동적 네임 서버를 사용하지 않고 동작하되,
    상기 설치하는 단계는:
    상기 컴퓨팅 장치들의 클러스터 내의 상기 컴퓨팅 장치들을 발견하는 단계; 그리고
    상기 컴퓨팅 장치들이 상기 동적 네임 서버의 보조 없이 통신하도록 구성하는 단계를 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 설치하는 단계는:
    상기 컴퓨팅 장치들의 클러스터 중 마스터 컴퓨팅 장치에 상기 분산 애플리케이션을 설치하는 단계; 그리고
    상기 컴퓨팅 장치들의 클러스터들 내의 하나 또는 그 이상의 다른 컴퓨팅 장치들에 상기 분산 애플리케이션을 설치하기 위해 상기 마스터 컴퓨팅 장치를 사용하는 단계를 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 프로파일링 하는 단계는:
    상기 컴퓨팅 장치들에 상기 하나 또는 그 이상의 테스트들을 분산하는 단계; 그리고
    상기 분산 애플리케이션과 배타적으로 관련된 사용자 계정을 이용하여 상기 각각의 컴퓨팅 장치들에 의해 상기 하나 또는 그 이상의 테스트들을 실행하는 단계를 포함하는 방법.
  6. 제 1 항에 있어서,
    상기 생성하는 단계는:
    상기 각각의 컴퓨팅 장치들로부터 상기 하나 또는 그 이상의 테스트들의 상기 실행 동안 생성된 프로파일링 된 하나 또는 그 이상의 조각들을 자동으로 수집하는 단계;
    상기 프로파일링 된 데이터의 하나 또는 그 이상의 조각들을 통합된 프로파일링 된 데이터로 종합하는 단계; 그리고
    상기 통합된 프로파일링 된 데이터의 적어도 일부에서 시각적으로 표현되는 하나 또는 그 이상의 그래프들을 생성하는 단계를 포함하는 방법.
  7. 제 6 항에 있어서,
    상기 생성하는 단계는:
    상기 컴퓨팅 장치들의 클러스터 중 마스터 컴퓨팅 장치에서 웹 서버를 실행하는 단계; 그리고
    상기 웹 서버를 통하여 상기 하나 또는 그 이상의 그래프들을 제공하는 단계를 포함하는 방법.
  8. 시스템에 있어서:
    분산 애플리케이션 설치 패키지를 수신하되, 상기 분산 애플리케이션 설치 패키지는 분산 애플리케이션 설치 파일 및 상기 분산 애플리케이션을 위한 지원 프로그램을 포함하고, 그리고 상기 분산 애플리케이션이 샌드박스 환경에서 실행되도록 마스터 컴퓨팅 장치에 적어도 상기 분산 애플리케이션을 설치하도록 구성된 사용자 컴퓨팅 장치; 그리고
    상기 마스터 컴퓨팅 장치 및 적어도 하나의 보조 컴퓨팅 장치를 포함하는 컴퓨팅 장치들의 클러스터를 포함하되,
    상기 마스터 컴퓨팅 장치는,
    상기 분산 애플리케이션이 상기 샌드박스 환경에서 실행되도록 상기 보조 컴퓨팅 장치들 각각에 상기 분산 애플리케이션을 설치하고,
    상기 분산 애플리케이션에 의해 하나 또는 그 이상의 작업들의 실행을 관리하되, 각각의 작업은 상기 컴퓨팅 장치들의 클러스터 중 각각의 컴퓨팅 장치를 통하여 그리고 상기 각각의 컴퓨팅 장치와 관련된 상기 샌드박스 환경 내에서 실행되고,
    상기 하나 또는 그 이상의 작업들의 실행 동안 생성된 프로파일링 된 데이터의 하나 또는 그 이상의 조각들을 자동으로 수집하고, 그리고
    상기 프로파일링 된 데이터의 하나 또는 그 이상의 조각들에 기초하여 상기 분산 애플리케이션의 퍼포먼스 서머리(performance summary)을 생성하는 시스템.
  9. 제 8 항에 있어서,
    상기 마스터 컴퓨팅 장치는, 상기 분산 애플리케이션의 설치 동안, 상기 분산 애플리케이션과 배타적으로 관련된 사용자 계정을 생성하도록 구성된 시스템.
  10. 제 8 항에 있어서,
    상기 컴퓨팅 장치의 클러스터는 인터넷으로부터 고립되고; 그리고
    상기 마스터 컴퓨팅 장치는, 상기 보조 컴퓨팅 장치들에 상기 분산 애플리케이션의 상기 설치 동안, 상기 보조 컴퓨팅 장치들을 발견하고, 그리고 상기 보조 컴퓨팅 장치들이 동적 네임 서버의 보조 없이 통신하도록 구성되는 시스템.
KR1020150069556A 2014-05-20 2015-05-19 분산 테스트 및 프로파일러 프레임워크 KR20150133651A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462000998P 2014-05-20 2014-05-20
US62/000,998 2014-05-20
US14/548,265 2014-11-19
US14/548,265 US20160274999A1 (en) 2014-05-20 2014-11-19 Distributed test and profiler framework

Publications (1)

Publication Number Publication Date
KR20150133651A true KR20150133651A (ko) 2015-11-30

Family

ID=56925219

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150069556A KR20150133651A (ko) 2014-05-20 2015-05-19 분산 테스트 및 프로파일러 프레임워크

Country Status (2)

Country Link
US (1) US20160274999A1 (ko)
KR (1) KR20150133651A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106294133A (zh) * 2016-07-29 2017-01-04 腾讯科技(深圳)有限公司 一种应用程序安装包的检测方法、相关装置及系统
KR20180044579A (ko) * 2016-10-24 2018-05-03 삼성에스디에스 주식회사 컨테이너 기반의 분산 애플리케이션 관리 시스템 및 방법

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106257415A (zh) * 2015-06-19 2016-12-28 阿里巴巴集团控股有限公司 实现动态图片预览的方法和装置、表情包展示方法和装置
US10504736B2 (en) 2015-09-30 2019-12-10 Texas Instruments Incorporated Plating interconnect for silicon chip
CN107247661B (zh) * 2017-05-09 2020-07-31 北京京东尚科信息技术有限公司 支持对应用的安装包进行自动化验证的方法和系统
CN107302475A (zh) * 2017-07-06 2017-10-27 郑州云海信息技术有限公司 一种面向分布式存储集群的测试方法及装置
US10359971B2 (en) * 2017-07-17 2019-07-23 Hewlett Packard Enterprise Development Lp Storing memory profile data of an application in non-volatile memory
US10394584B2 (en) * 2017-12-18 2019-08-27 Atlassian Pty Ltd Native execution bridge for sandboxed scripting languages
US10656930B2 (en) * 2018-09-12 2020-05-19 Microsoft Technology Licensing, Llc Dynamic deployment target control
US11669436B2 (en) 2021-01-04 2023-06-06 Bank Of America Corporation System for providing interactive tools for design, testing, and implementation of system architecture
CN114816442A (zh) * 2021-01-22 2022-07-29 华为技术有限公司 分布式应用的处理方法和装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7437706B2 (en) * 2003-06-27 2008-10-14 At&T Intellectual Property I, L.P. Automating the life cycle of a distributed computing application
US7546598B2 (en) * 2003-09-03 2009-06-09 Sap Aktiengesellschaft Measuring software system performance using benchmarks
US7103874B2 (en) * 2003-10-23 2006-09-05 Microsoft Corporation Model-based management of computer systems and distributed applications
US7490323B2 (en) * 2004-02-13 2009-02-10 International Business Machines Corporation Method and system for monitoring distributed applications on-demand
EP1932079A1 (en) * 2005-09-30 2008-06-18 Telecom Italia S.p.A. A method and system for automatically testing performance of applications run in a distributed processing structure and corresponding computer program product
US8799862B2 (en) * 2011-06-24 2014-08-05 Alcatel Lucent Application testing using sandboxes

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106294133A (zh) * 2016-07-29 2017-01-04 腾讯科技(深圳)有限公司 一种应用程序安装包的检测方法、相关装置及系统
KR20180044579A (ko) * 2016-10-24 2018-05-03 삼성에스디에스 주식회사 컨테이너 기반의 분산 애플리케이션 관리 시스템 및 방법

Also Published As

Publication number Publication date
US20160274999A1 (en) 2016-09-22

Similar Documents

Publication Publication Date Title
KR20150133651A (ko) 분산 테스트 및 프로파일러 프레임워크
EP3518098B1 (en) Cross platform content management and distribution system
US11023215B2 (en) Methods, systems, and portal for accelerating aspects of data analytics application development and deployment
US20180039507A1 (en) System and method for management of a virtual machine environment
US10459822B1 (en) Iterative static analysis using stored partial results
US10417031B2 (en) Selective virtualization for security threat detection
US9703551B2 (en) Modifying mobile application binaries to call external libraries
US9996374B2 (en) Deployment and installation of updates in a virtual environment
Lei et al. Speaker: Split-phase execution of application containers
US9652211B2 (en) Policy management of deployment plans
Eismann et al. Microservices: A performance tester's dream or nightmare?
US9509553B2 (en) System and methods for management virtualization
EP2656206B1 (en) Probe insertion via background virtual machine
US11797424B2 (en) Compliance enforcement tool for computing environments
US20160357661A1 (en) Automated dynamic test case generation
US20200081825A1 (en) Automated Certification Testing for Application Deployment
US20200167215A1 (en) Method and System for Implementing an Application Programming Interface Automation Platform
Wang et al. Performance and isolation analysis of RunC, gVisor and Kata Containers runtimes
Jones et al. Scalability of VM provisioning systems
US11888758B2 (en) Methods and apparatus to provide a custom installable open virtualization application file for on-premise installation via the cloud
Suneja et al. Safe inspection of live virtual machines
Kumar et al. Virtual environments testing in cloud service enviorment: a framework to optimize the performance of virtual applications
US11875175B2 (en) Providing physical host hardware state information to virtual machines deployed on the physical host
Yehuda et al. Arm security alternatives
US20180157510A1 (en) Interrupt generated random number generator states