KR20160074503A - 서버에서 시험 분산 애플리케이션을 에뮬레이션하는 기법 - Google Patents

서버에서 시험 분산 애플리케이션을 에뮬레이션하는 기법 Download PDF

Info

Publication number
KR20160074503A
KR20160074503A KR1020167010504A KR20167010504A KR20160074503A KR 20160074503 A KR20160074503 A KR 20160074503A KR 1020167010504 A KR1020167010504 A KR 1020167010504A KR 20167010504 A KR20167010504 A KR 20167010504A KR 20160074503 A KR20160074503 A KR 20160074503A
Authority
KR
South Korea
Prior art keywords
virtual
node
virtual node
physical server
distributed
Prior art date
Application number
KR1020167010504A
Other languages
English (en)
Other versions
KR102274178B1 (ko
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 KR20160074503A publication Critical patent/KR20160074503A/ko
Application granted granted Critical
Publication of KR102274178B1 publication Critical patent/KR102274178B1/ko

Links

Images

Classifications

    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

본 발명은 시험 대상 분산 애플리케이션의 서로 다른 구성요소를 운영하는 복수의 가상 노드가 존재하는 단일 물리 서버의 사용에 관한 것이다. 각각의 가상 노드는 예상 분산 환경에서 실제 물리 노드를 에뮬레이션한다. 가상 노드는, 예를 들어, 가상 머신 또는 에뮬레이션된 서비스일 수 있고, 가상 노드의 콘텍스트 내에서 이들의 운영 체제를 운영할 수 있다. 배치될 분산 환경에서 보통 사용할 프로토콜을 이용해 상기 가상 노드들을 서로 통신하게 함으로써, 분산 환경이 물리 서버 상에서 에뮬레이션된다. 설정 데이터 소스가 사용되어 가상 노드를 설치하고 아마도 업그레이드함으로써 분산 환경을 에뮬레이션할 수 있다. 따라서 분산 애플리케이션은 분산 환경을 실제로 설치하지 않고 시험될 수 있다.

Description

서버에서 시험 분산 애플리케이션을 에뮬레이션하는 기법{EMULATING TEST DISTRIBUTED APPLICATION ON SERVER}
컴퓨터와 컴퓨팅 시스템은 현대인의 생활의 거의 모든 면에서 영향을 미쳐왔다. 컴퓨팅 시스템은 점점 더 복잡하고 정교한 기능을 제공하고 있다. 이러한 기능은 흔히 기저 소프트웨어에 의해 주로 구동되는데, 이 기저 소프트웨어 자체도 점점 더 복잡해지고 있다. 더 복잡한 기능의 일부는 네트워크를 통해 서로 통신하는 컴퓨팅 시스템을 포함한다. 예를 들어, 인터넷은 컴퓨팅 시스템으로 하여금 통신을 전 세계적으로 완성할 수 있게 하는 구성 컴퓨팅 네트워크의 전 세계적 컨소시엄이다.
통신에서 이러한 개선된 능력에 의해 애플리케이션이 복수의 컴퓨팅 시스템에 걸쳐 널리 분산될 수 있으며, 각각의 컴퓨팅 시스템이 애플리케이션 기능의 전체 성취에서 특정 역할을 한다. 다양한 컴퓨팅 시스템은 서로 다른 운영 체제를 가질 수 있고 확립된 통신 프로토콜에 따라 네트워크 통신을 통해 협업할 수 있다.
본 명세서의 대상은 임의의 단점을 해결하거나 앞서 기재된 바와 같은 환경에서만 동작하는 실시예에 한정되지 않는다. 오히려, 이 배경기술은 단지 본 명세서에 기재되는 일부 실시예가 실시될 수 있는 한 가지 예시적 기술 분야를 설명하기 위해 제공된다.
개요
본 명세서에 기재된 적어도 일부 실시예는 시험 대상인 분산 애플리케이션의 서로 다른 구성요소를 운영하는 복수의 가상 노드가 존재하는 단일 물리 서버에서의 동작과 관련이 있다. 각각의 가상 노드가 예상 분산 환경에서의 실제 물리 노드를 에뮬레이션한다. 가상 노드는, 예를 들어, 가상 머신 또는 에뮬레이션된 서비스일 수 있고 가상 노드의 콘텍스트 내에서 자신의 운영 체제를 운영할 수 있다. 배치된 분산 환경에서 보통 사용할 프로토콜을 이용해 가상 노드가 서로 통신하게 함으로써 분산 환경이 물리 서버 상에서 에뮬레이션된다. 설정 데이터 소스가 사용되어 가상 노드를 설치하고 아마도 업그레이드함으로써 분산 환경을 에뮬레이션할 수 있다. 따라서 분산 애플리케이션은 분산 환경을 실제로 설치하지 않고 시험될 수 있다.
이 개요는 이하의 상세한 설명에서 더 기재될 개념들의 선택을 단순화된 형태로 소개하기 위해 제공된다. 이 개요는 청구되는 발명의 핵심 특징 또는 필수 특징을 식별하려는 것이 아니며 청구범위를 결정하는 데 보조로서 사용되는 것도 아니다.
본 발명의 앞서 언급된 그리고 그 밖의 다른 이점 및 특징이 획득될 수 있는 방식을 설명하기 위해, 첨부된 도면에 도시된 본 발명의 특정 실시예를 참조하여 앞서 간략하게 설명한 본 발명에 관한 더 구체적인 설명을 할 것이다. 이들 도면이 본 발명의 통상적인 실시예만 도시하며 따라서 범위의 한정으로 간주되지 않음을 이해하면서, 첨부된 도면을 이용함으로써 추가적인 세부사항과 함께 본 발명이 기재되고 설명될 것이다.
도 1은 본 명세서에 기재된 원리가 채용될 수 있는 예시적 컴퓨팅 시스템을 도시한다.
도 2는 분산 애플리케이션이 시험될 수 있는 에뮬레이션 환경을 지원하는 지원 환경이 존재하는 물리 서버 머신을 추상적으로 도시한다.
도 3은 분산 애플리케이션이 배포 후에 동작하도록 설계되는 분산 환경을 추상적으로 도시한다.
본 명세서에 기재된 적어도 일부 실시예는 단일 물리적 서버에서의 동작과 관련되는데, 이 단일 물리적 서버에는 시험 중인 분산 애플리케이션의 서로 다른 구성요소를 운영하는 복수의 가상 노드가 존재한다. 각각의 가상 노드는 예상 분산 환경에서 실제 물리 노드를 에뮬레이션한다. 가상 노드는, 예를 들어, 가상 머신 또는 에뮬레이션된 서비스일 수 있고 가상 노드의 콘텍스트 내에서 자신들의 운영 체제를 동작시킬 수 있다. 배치된 분산 환경에서 보통 사용할 프로토콜을 이용해 가상 노드들을 서로 통신하게 함으로써 분산 환경은 물리 서버 상에서 에뮬레이션된다. 설정 데이터 소스(configuration data source)가 사용되어 가상 노드를 설치(set up)하고 아마도 업그레이드함으로써 분산 환경을 에뮬레이션할 수 있다. 따라서 분산 애플리케이션은 분산 환경을 실제로 설치하지 않고 시험될 수 있다.
본 발명이 구조의 특징부 및/또는 방법의 단계에 특정된 언어로 기재되었지만, 이하의 청구범위에서 정의되는 본 발명은 앞서 기재된 특징부 또는 동작 또는 앞서 기재된 동작들의 순서에 반드시 한정되는 것은 아님이 이해될 것이다. 오히려, 기재된 특징부 및 동작은 청구범위의 구현의 예시적 형태로서 개시된다.
컴퓨팅 시스템은 현재 점점 더 다양한 형태를 취한다. 예를 들어, 컴퓨팅 시스템은, 핸드헬드 장치, 가전기구, 랩톱 컴퓨터, 데스크톱 컴퓨터, 메인프레임, 분산 컴퓨팅 시스템, 또는 심지어 전통적으로 컴퓨팅 시스템으로 간주되지 않았던 장치일 수 있다. 이 발명의 설명과 청구범위에서, "컴퓨팅 시스템"이라는 용어는 적어도 하나의 물리적 및 유형(tangible)의 프로세서 및 상기 프로세서에 의해 실행될 수 있는 컴퓨터 실행가능 명령어를 갖는 물리적 및 유형의 메모리를 포함하는 임의의 장치 또는 시스템(또는 이들의 조합)을 포함하는 것으로 널리 정의된다. 컴퓨팅 시스템은 네트워크 환경에 걸쳐 분산될 수 있고 복수의 구성 컴퓨팅 시스템을 포함할 수 있다.
도 1에 도시된 바와 같이, 가장 기본적인 구성에서, 일반적으로 컴퓨팅 시스템(100)은 적어도 하나의 프로세싱 유닛(102) 및 메모리(104)를 포함한다. 상기 메모리(104)는 휘발성, 비휘발성, 또는 이 둘의 임의의 조합일 수 있는 물리적 시스템 메모리일 수 있다. 용어 "메모리"는 또한 비휘발성 대용량 장치, 예컨대, 물리 저장 매체를 지칭하도록 사용될 수 있다. 컴퓨팅 시스템이 분산된 경우, 프로세싱, 메모리, 및/또는 저장 능력이 역시 분산될 수 있다.
본 명세서에서 사용될 때, 용어 "실행 모듈" 또는 "실행 구성요소"는 컴퓨팅 시스템 상에서 실행될 수 있는 소프트웨어 객체, 루틴, 또는 방법을 지칭할 수 있다. 본 명세서에 기재되는 서로 다른 구성요소, 모듈, 엔진, 및 서비스가 컴퓨팅 시스템 상에서 (가령, 개별 스레드로서) 실행되는 객체 또는 프로세스로서 구현될 수 있다.
이하의 기재에서, 하나 이상의 컴퓨팅 시스템에 의해 수행되는 동작들을 참조하여 실시예가 기재된다. 이러한 동작이 소프트웨어로 구현되는 경우, 동작을 수행하는 연관된 컴퓨팅 시스템의 하나 이상의 프로세서는 컴퓨터 실행가능 명령어를 실행한 것에 응답하여 컴퓨팅 시스템의 동작을 지시한다. 예를 들어, 이러한 컴퓨터 실행가능 명령어는 컴퓨터 프로그램 프로덕트를 형성하는 하나 이상의 컴퓨터 판독형 매체 상에서 구현될 수 있다. 이러한 동작의 예시로는 데이터의 조작을 포함한다. 컴퓨터 실행형 명령어(및 조작된 데이터)가 컴퓨팅 시스템(100)의 메모리(104)에 저장될 수 있다. 또한 컴퓨팅 시스템(100)은 자신이 예를 들어 네트워크(100)를 통해 다른 메시지 프로세서와 통신할 수 있게 하는 통신 채널(108)을 포함할 수 있다.
본 명세서에 기재된 실시예는, 이하에서 더 상세히 기재될 바와 같이, 컴퓨터 하드웨어, 가령, 하나 이상의 프로세서 및 시스템 메모리를 포함하는 특수 용도 또는 범용 컴퓨터 시스템을 포함하거나 이용할 수 있다. 상기 시스템 메모리는 전체 메모리(104)에 포함될 수 있다. 시스템 메모리는 또한 "메인 메모리"라고 지칭될 수 있으며, 메모리 버스를 통해 적어도 하나의 프로세싱 유닛(102)에 의해 주소 지정될 수 있는 메모리 위치를 포함하며, 이 경우, 주소 위치가 메모리 버스 자체 상에서 어서트(assert)된다. 시스템 메모리는 전통적으로는 휘발성이지만, 본 명세서에 기재된 원리는 시스템 메모리가 부분적으로 또는 심지어 완전하게 비휘발성인 환경에도 적용된다.
또한 본 발명의 범위 내의 실시예는 컴퓨터 실행가능 명령어 및/또는 데이터 구조를 반송(carry) 또는 저장하기 위한 물리적 그리고 그 밖의 다른 컴퓨터 판독형 매체를 포함한다. 이러한 컴퓨터 판독형 매체는 범용 또는 특수 목적 컴퓨터 시스템에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있다. 컴퓨터 실행가능 명령어 및/또는 데이터 구조를 저장하는 컴퓨터 판독형 매체는 컴퓨터 저장 매체이다. 컴퓨터 실행가능 명령어 및/또는 데이터 구조를 반송하는 컴퓨터 판독형 매체는 전송 매체이다. 따라서 비제한적 예를 들면, 본 발명의 실시예는 적어도 2개의 구별 가능하게 서로 다른 유형의 컴퓨터 판독형 매체, 즉, 컴퓨터 저장 매체와 전송 매체를 포함할 수 있다.
컴퓨터 저장 매체는 컴퓨터 실행가능 명령어 및/또는 데이터 구조를 저장하는 물리 하드웨어 저장 매체이다. 물리 하드웨어 저장 매체는 컴퓨터 하드웨어, 예컨대, RAM, ROM, EEPROM, 솔리드 스테이트 드라이브("SSD"), 플래시 메모리, 상 변화 메모리("PCM"), 광학 디스크 저장장치, 자기 디스크 저장장치 또는 그 밖의 다른 자기 저장 장치, 또는 범용 또는 특수 목적 컴퓨터 시스템에 의해 액세스 및 실행되어 본 발명의 개시된 기능을 구현할 수 있는 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 된 프로그램 코드를 저장하도록 사용될 수 있는 그 밖의 다른 임의의 하드웨어 저장 장치(들)를 포함한다.
전송 매체는 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 프로그램 코드를 반송하도록 사용될 수 있고 범용 또는 특수 목적 컴퓨터 시스템에 의해 액세스될 수 있는 네트워크 및/또는 데이터 링크를 포함할 수 있다. "네트워크"는 컴퓨터 시스템 및/또는 모듈 및/또는 그 밖의 다른 전자 장치 간 전자 데이터의 전송을 가능하게 하는 하나 이상의 데이터 링크로 정의된다. 정보가 (유선, 무선, 또는 유무선의 조합인) 네트워크 또는 또 다른 통신 연결을 통해 컴퓨터 시스템으로 전송 또는 제공될 때, 상기 컴퓨터 시스템은 연결을 전송 매체로 볼 수 있다. 앞서 나열된 것들의 조합이 또한 컴퓨터 판독형 매체의 범위 내에 포함될 것이다.
덧붙여, 다양한 컴퓨터 시스템 구성요소에 도달하면, 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 된 프로그램 코드가 전송 매체에서 컴퓨터 저장 매체로 자동으로 전송될 수 있다(또는 그 반대 방향으로 전송될 수 있다). 예를 들어, 네트워크 또는 데이터 링크를 통해 수신된 컴퓨터 실행가능 명령어 또는 데이터 구조가 네트워크 인터페이스 모듈(가령, "NIC") 내 RAM에 버퍼링될 수 있고, 그 후 결국 컴퓨터 시스템 RAM 및/또는 컴퓨터 시스템의 휘발성이 낮은 컴퓨터 저장 매체로 전송될 수 있다. 따라서 컴퓨터 저장 매체는 전송 매체를 역시(또는 심지어 주로) 사용하는 컴퓨터 시스템 구성요소에 포함될 수 있음이 자명하다.
컴퓨터 실행가능 명령어는, 예를 들어, 하나 이상의 프로세서에서 실행될 때 범용 컴퓨터 시스템, 특수 목적 컴퓨터 시스템, 또는 특수 목적 프로세싱 장치로 하여금 특정 기능 또는 기능 그룹을 수행하게 하는 명령어 및 데이터를 포함한다. 컴퓨터 실행가능 명령어는, 예를 들어, 이진수, 중간 포맷 명령어, 예컨대, 어셈블리어, 또는 심지어 소스 코드일 수 있다.
해당 분야의 통상의 기술자라면 본 명세서에 기재된 원리가, 많은 유형의 컴퓨터 시스템 구성, 예컨대, 개인 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 메시지 프로세서, 핸드-헬드 장치, 멀티-프로세서 시스템, 마이크로프로세서-기반 또는 프로그래머블 소비자 전자기기, 네트워크 PC, 미니컴퓨터, 메인 프레임 컴퓨터, 모바일 전화기, PDA, 태블릿, 호출기(pager), 라우터, 스위치 등에 의해, 네트워크 컴퓨팅 환경에서 실시될 수 있음을 알 것이다. 본 발명은 또한 분산 시스템 환경에서 실시될 수 있고, (유선 데이터 링크, 무선 데이터 링크, 또는 유무선 데이터 링크의 조합에 의해) 네트워크를 통해 링크되는 로컬 및 원격 컴퓨터 시스템 모두가 작업을 수행한다. 따라서 분산 시스템 환경에서, 컴퓨터 시스템은 복수의 구성 컴퓨터 시스템을 포함할 수 있다. 분산 시스템 환경에서, 프로그램 모듈은 로컬 메모리 저장 장치와 원격 메모리 저장 장치 모두에 위치될 수 있다.
해당 분야의 통상의 기술자라면 본 발명이 클라우드 컴퓨팅 환경에서 실시될 수 있음을 인지할 것이다. 클라우드 컴퓨팅 환경은 분산될 수 있지만, 반드시 그런 것은 아니다. 분산될 때, 클라우드 컴퓨팅 환경은 조직 내에서 국제적으로 분산되거나 및/또는 복수의 조직에 걸쳐 소유되는 구성요소를 가질 수 있다. 이 발명의 설명 및 이하의 청구범위에서, "클라우드 컴퓨팅"은 설정 가능한 컴퓨팅 자원(가령, 네트워크, 서버, 저장장치, 애플리케이션 및 서비스)의 공유 풀(shared pool)로의 주문형 네트워크 액세스(on-demand network access)를 활성화하기 위한 모델로 정의된다. "클라우드 컴퓨팅"의 정의는 적절하게 배치될 때 이러한 모델로부터 획득될 수 있는 그 밖의 다른 여러 이점들 중 임의의 것에 한정되지 않는다.
도 2는 물리 서버 머신(200)을 추상적으로 도시한다. 물리 서버 머신(200)은 시험 대상인 분산 애플리케이션의 동작이 비-분산 환경(non-distributed environment)에서 운영될 수 있는 에뮬레이션 환경(210)을 가진다. 물리 서버 머신(200)은 또한 에뮬레이션 환경(210)을 제공하는 지원 환경(support environment)(220)을 포함한다.
3개의 가상 노드(201A, 201B 및 201C)가 물리 서버 머신(200)의 에뮬레이션 환경(210) 내에 포함되는 것으로 도시된다. 발명의 설명 및 청구범위에서, "가상 노드"는 머신의 운영 체제 운영의 에뮬레이션을 가능하게 하는 물리 컴퓨팅 시스템 내의 구성요소 또는 구성요소들의 모음이다. 따라서 복수의 가상 노드가 단일 물리 머신에서 동작하는 경우, 이들 복수의 가상 노드는 서로 비교할 때 동일하거나 상이한 운영 체제, 가상 노드를 실행 중인 단일 물리 서버 머신(200)과 동일하거나 상이한 운영 체제를 운영할 수 있다. 가상 노드의 예시는 가상 머신 또는 에뮬레이터를 포함한다. 예를 들어, 에뮬레이터는 분산 서비스가 클라이언트 요청에 응답하여 일반적으로 제공할 수 있는 응답을 에뮬레이션할 수 있는 서비스 에뮬레이터일 수 있다.
각각의 가상 노드는 시험 대상 분산 애플리케이션의 대응하는 노드와 동일한 기능을 갖고 동작한다. 예를 들어, 도 3은 분산 애플리케이션이 동작될 예상 환경인 분산 환경(300)을 도시한다. 분산 환경(300)은 분산 환경의 동작을 시험하기 위해 실제로 설치될 필요는 없다. 대신, 분산 환경(300)은 물리 서버 머신 내에서 에뮬레이션된다. 따라서 비싼 분산 네트워크를 구축하거나 및/또는 실제 분산 환경에 시험될 분산 애플리케이션을 배포하지 않고 분산 애플리케이션의 시험이 수행될 수 있다.
분산 애플리케이션은 물리 노드(301A, 301B 및 301C)를 포함한다. 분산 애플리케이션 전체에 의해 달성될 기능에 따라서, 물리 노드(301A 내지 301C) 각각이 각자 자신의 역할을 가질 것이다. 예를 들어, 분산 애플리케이션은 콘텐츠 전달 네트워크일 수 있으며, 여기서, 요청이 있으면, 미디어 및 비-미디어(non-media) 콘텐츠가 최초 출발지로부터, 캐싱 인프라구조를 통해, 다양한 도착지로 전달된다. 이 경우, 하나의 역할은 콘텐츠를 발생시키는 것이며, 또 다른 역할은 미디어 콘텐츠를 위한 캐싱된 소스를 제공하는 것이고, 또 다른 역할은 비-미디어 콘텐츠를 위한 캐싱된 소스를 제공하는 것이며, 또 다른 역할은 지능적으로(intelligently) 캐싱하기 위해 사용될 수 있는 통계치를 유지하는 것 등일 수 있다.
물리 서버 머신(200) 상의 가상 노드(201A)는 분산 환경(300) 내에서의 물리 노드(301A)의 역할과 동일한 분산 애플리케이션 내 역할을 수행하고 가진다. 물리 서버 머신(200) 상의 가상 노드(201B)는 분산 환경(300) 내에서의 물리 노드(301B)의 역할과 동일한 분산 애플리케이션 내 역할을 수행하고 가진다. 물리 서버 머신(200) 상의 가상 노드(201C)는 분산 환경(300) 내에서의 물리 노드(301C)의 역할과 동일한 분산 애플리케이션 내 역할을 수행하고 가진다. 물론 분산 환경 내에서 동작할 수 있는 노드의 개수에 어떠한 제한도 없다. 따라서, 생략부호(201D 및 301D)는 본 명세서에 기재되는 원리가 시험 대상 분산 애플리케이션을 갖는 노드의 개수에 의해 제한되지 않음을 추상적으로 나타낸다.
가상 노드는, 분산 애플리케이션이 실제로 배포됐을 경우 분산 환경(300) 내에서 자신이 운영할 수 있는 운영 체제라면 무엇이든 운영한다. 덧붙여, 이들 가상 노드의 운영 체제는, 분산 애플리케이션이 실제로 배포됐을 경우 분산 환경(300)의 운영 체제 내에서 운영될 수 있는 구성요소라면 어느 것이든 운영할 수 있다.
예를 들어, 시험 대상 분산 애플리케이션에서, 물리 노드(301A)가 (구성요소(304A)를 운영하는) 운영 체제(302A)를 운영하고, 물리 노드(301B)가 (구성요소(304B 및 304C)를 운영하는) 운영 체제(302B)를 운영하며, 물리 노드(301C)가 (구성요소(304D, 304E 및 304F)를 운영하는) 운영 체제(302C)를 운영한다고 가정할 수 있다. 단일 물리 서버(200)의 한계 내에서 이러한 분산 애플리케이션을 적절하게 시험하기 위해, 가상 노드(201A)가 마찬가지로 (구성요소(304A)를 운영하는) 운영 체제(302A)를 운영하고, 가상 노드(201B)가 마찬가지로 (구성요소(304B 및 304C)를 운영하는) 운영 체제(302B)를 운영하고, 가상 노드(201C)가 마찬가지로 (구성요소(304D, 304E 및 304F)를 운영하는) 운영 체제(302C)를 운영한다. 운영 체제(302A, 302B, 302C)들은 서로 동일하거나 서로 상이할 수 있다.
도 3을 참조하면, 분산 애플리케이션이 작동하기 위해, 다양한 물리 노드(301A, 301B, 및 301C)가 특정 통신 채널을 이용해 통신할 것이다. 예를 들어, 물리 노드(301A)가 통신 채널(303A)을 통해 물리 노드(301B)와 통신하고, 물리 노드(301A)가 통신 채널(303B)을 통해 물리 노드(301C)와 통신하며, 물리 노드(301B가 통신 채널(303C)을 통해 물리 노드(301C)와 통신할 수 있다.
통신 채널(303A 내지 303C) 각각은 전송되는 실제 비트를 운반하는 물리 매체를 포함한다. 그러나 또한 통신 채널은 소프트웨어 측면을 포함한다. 예를 들어, 송신기와 수신기가 전송될 데이터의 적절한 전송을 조화시키기 위해, 비트를 매체를 통해 통신하도록 특정 프로토콜 스택이 사용될 수 있다.
정확한 물리 매체가 물리 서버 머신(200) 내에서 에뮬레이션되지 않더라도, 통신 채널의 소프트웨어 레벨이 하나 걸러 하나로 에뮬레이션될 수 있다. 이는 분산 소프트웨어 애플리케이션이, 실제로, 소프트웨어이며, 통신하기 위해 사용되는 물리 매체를 포함하기 때문에 적절하다. 따라서 물리 서버 머신(200) 내 가상 통신 채널(203A)에 의해 시험 대상 분산 애플리케이션의 통신 채널(303A)이 에뮬레이션된다. 마찬가지로, 시험 대상 분산 애플리케이션의 통신 채널(303B 및 303C) 각각이 물리 서버 머신(200) 내 대응하는 가상 통신 채널(203C 및 203C)에 의해 에뮬레이션된다. 가상 통신 채널(203A, 203B, 및 203C)이 가령, 가상 네트워크 또는 아마도 적절하게 구성된 가상 스위치를 갖는 하이퍼바이저에 의해 운영될 수 있다.
따라서 분산 환경(300)에 대해 설계되는 물리 노드가 존재하는 것처럼, 단일 서버 머신(200) 내에서 운영되는 많은 가상 노드가 존재할 수 있으며, 이때, 가상 노드들이 대응하는 물리 노드에 대해 설계된 바와 동일한 역할을 수행하고 동일한 운영 체제를 운영한다. 또한 분산 환경(300)에 대해 설계된 통신 채널이 존재하는 것처럼 신호 서버 머신(200) 내에 가상 통신 채널이 존재할 수 있으며, 이때, 가상 통신 채널 각각이 대응하는 통신 채널의 소프트웨어 부분을 에뮬레이션한다.
물리 서버 머신(200)의 지원 환경(200)은 설정 데이터 소스(211) 및 설정 해석 모듈(212)을 포함한다. 설정 데이터 소스(211)는 설정 파일일 수 있으나, 반드시 그런 것은 아니다. 예를 들어, 설정 데이터는 설정 해석 모듈(setup interpretation module)(212)에게 에뮬레이션 환경(210) 내 다양한 가상 노드 및 채널을 설치하는 방식을 지시하는 설치 정보(213A)를 포함할 수 있다. 상기 설정 데이터는 설정 해석 모듈(212)에게 에뮬레이션 환경(210) 내 다양한 가상 노드 및 채널을 업그레이드하는 방식을 지시하는 업그레이드 정보(213B)를 또한 포함할 수 있다.
이하에서 XML(eXtensible Markup Language, 확장 마크업 언어)로 표현되는 설치 정보의 예시가 차후 참조를 위해 추가된 라인 넘버링과 함께 나타난다:
Figure pct00001
이 예시에서 전체 역할(role)이 라인 1 내지 26에서 정의된다. 그 밖의 다른 XML이 또 다른 역할을 설치하도록 사용될 수 있다. 예를 들어, 도 2 및 3을 참조하면, 역할은 가상 노드(202A 내지 202C) 중 임의의 것일 수 있다. 라인 1은 가상 머신의 이름 및 상기 가상 머신에 의해 실행될 운영 체제의 유형을 특정하는 속성을 포함한다. 가상 머신에 대한 추가 디폴트 설정 정보, 예컨대, 디폴트 IP 주소, 디폴트 사용자, 및 디폴트 크리덴셜(credential)이 또한 라인 1에서 특정된다.
라인 2는 가상 머신의 3개의 인스턴스가 설정될 것임을 지시한다. 라인 3은 호스트 이름의 프리픽스(prefix)를 특정한다. 라인 4와 5는 함께 가상 머신의 인스턴스에 할당될 인터넷 프로토콜(IP) 주소의 시작 범위를 정의한다. 라인 6 내지 11은 설치 프로세스가 설치가 적절하게 완료됐는지 여부를 알게 하기 위한 검증 명령어 파라미터를 특정한다. 라인 12는 에뮬레이션되는 중앙 처리 장치(CPU)에 대한 정보가 배치될 수 있는 마커 배치 요소(place marker element)이다. 라인 13은 가상 머신의 에뮬레이션된 메모리와 관련된 정보가 배치될 수 있는 마커 배치 요소이다.
라인 14 내지 25는 각각의 인스턴스에 대한 추가 설정 정보를 정의한다. 설정될 이 역할의 각각의 가상 머신 인스턴스에 대해 개별 instanceCofig 요소가 제공될 수 있지만, 여기서는 하나가 사용된다. id 속성이 공란인 경우, 이는 설정 해석 구성요소(212)에 의해 모든 인스턴스에 동일한 설정이 적용될 필요가 있다고 해석된다. 라인 15는 호스트 명칭에 관한 정보가 배치될 수 있는 마커 배치 요소를 포함한다. 라인 16은 인스턴스에 대한 인터넷 프로토콜(IP) 주소에 관한 정보가 배치될 수 있는 마커 배치 요소를 포함한다. 라인 18 내지 22는 검증 명령어 정보를 포함한다. 라인 23은 인스턴스의 CPU에 관한 정보가 배치될 수 있는 마커 배치 요소이다. 라인 24은 인스턴스의 메모리에 관한 정보가 배치될 수 있는 마커 배치 요소이다.
다음에서 XML로 표현된 업그레이드 정보의 예시가 차후 참조를 위해 추가된 라인 넘버링과 함께 나타난다:
Figure pct00002
이 경우, 업그레이드 동작이 라인 1 내지 16까지 존재하는 ActionGroup 요소에 관하여 표현된다. 여기서 2개의 명령어가 존재하며, 각각의 명령어는 출발지 위치에서 도착지 위치로 파일을 복사하는 것을 포함한다.
따라서 단일 서버 머신 상에서 분산 애플리케이션을 설치하고 시험하기 위한 효과적이고 편리한 메커니즘이 기재되었다.
본 발명은 발명의 사상 또는 본질적 특성의 범위 내에서, 그 밖의 다른 특정 형태로 구현될 수 있다. 기재된 실시예는 모든 면에서 예시에 불과한 것이며 한정이 아닌 것으로 간주되어야 한다. 따라서 본 발명의 범위는 상기의 기재가 아니라 이하의 청구범위에 의해 나타난다. 청구항의 균등항의 의미 및 범위 내에 있는 모든 변경이 이들의 범위 내에 포함될 것이다.

Claims (10)

  1. 물리 서버 머신(physical server machine)으로서,
    제1 운영 체제를 운영하고 시험 대상 분산 애플리케이션(distributed application under test)의 제1 구성요소를 운영하는 제1 가상 노드 - 상기 제1 가상 노드는 예상 분산 환경(prospective distributed environment) 내 제1 물리 노드를 나타냄 - 와,
    제2 운영 체제를 운영하고 상기 시험 대상 분산 애플리케이션의 제2 구성요소를 운영하는 제2 가상 노드 - 상기 제2 가상 노드는 상기 예상 분산 환경 내 제2 물리 노드를 나타냄 - 와,
    상기 제1 가상 노드와 상기 제2 가상 노드 사이의 통신 채널 - 상기 통신 채널은 상기 제1 구성요소 및 상기 제2 구성요소가 상기 예상 분산 환경에서 사용하도록 제안 받는 것과 동일한 프로토콜을 이용함 - 을 포함하는,
    물리 서버 머신.
  2. 제1항에 있어서,
    상기 제1 가상 노드는 가상 머신인,
    물리 서버 머신.
  3. 제1항에 있어서,
    상기 가상 머신은 제1 가상 머신이고,
    제2 가상 노드는 제2 가상 머신인,
    물리 서버 머신.
  4. 제1항에 있어서,
    상기 제2 가상 노드는 서비스 에뮬레이터(service emulator)인,
    물리 서버 머신.
  5. 제1항에 있어서,
    상기 애플리케이션은 콘텐츠 전달 네트워크 서비스인,
    물리 서버 머신.
  6. 제1항에 있어서,
    상기 통신 채널은 가상 네트워크인,
    물리 서버 머신.
  7. 제1항에 있어서,
    상기 통신 채널은 하이퍼바이저(hypervisor) 및 가상 스위치를 포함하는,
    물리 서버 머신.
  8. 제1항에 있어서,
    상기 제1 가상 노드 및 상기 제2 가상 노드를 설치하기 위한 컴퓨터 실행가능 명령어를 포함하는 설정 데이터 소스(configuration data source)를 더 포함하는,
    물리 서버 머신.
  9. 제1항에 있어서,
    상기 제1 가상 노드를 업그레이드하기 위한 컴퓨터 실행가능 명령어를 포함하는 설정 데이터 소스를 더 포함하는,
    물리 서버 머신.
  10. 컴퓨터 실행가능 명령어를 갖는 하나 이상의 컴퓨터 판독형 저장 매체를 포함하는 컴퓨터 프로그램 제품으로서,
    상기 컴퓨터 실행가능 명령어는, 물리 서버의 하나 이상의 프로세서에 의해 실행될 때, 상기 물리 서버로 하여금 상기 물리 서버 상에서,
    제1 운영 체제를 운영하고 시험 대상 분산 애플리케이션의 제1 구성요소를 운영하는 제1 가상 노드 - 상기 제1 가상 노드는 예상 분산 환경 내 제1 물리 노드를 나타냄 - 와,
    제2 운영 체제를 운영하고 상기 시험 대상 분산 애플리케이션의 제2 구성요소를 운영하는 제2 가상 노드 - 상기 제2 가상 노드는 상기 예상 분산 환경 내 제2 물리 노드를 나타냄 - 와,
    상기 제1 가상 노드와 상기 제2 가상 노드 사이의 통신 채널 - 상기 통신 채널은 상기 제1 구성요소 및 상기 제2 구성요소가 상기 예상 분산 환경에서 사용하도록 제안받는 것과 동일한 프로토콜을 이용함 - 을 인스턴스화 및/또는 운영하게 하는,
    컴퓨터 프로그램 제품.
KR1020167010504A 2013-10-23 2014-10-21 서버에서 시험 분산 애플리케이션을 에뮬레이션하는 기법 KR102274178B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/061,556 US9537932B2 (en) 2013-10-23 2013-10-23 Emulating test distributed application on server
US14/061,556 2013-10-23
PCT/US2014/061441 WO2015061240A1 (en) 2013-10-23 2014-10-21 Emulating test distributed application on server

Publications (2)

Publication Number Publication Date
KR20160074503A true KR20160074503A (ko) 2016-06-28
KR102274178B1 KR102274178B1 (ko) 2021-07-06

Family

ID=51866346

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167010504A KR102274178B1 (ko) 2013-10-23 2014-10-21 서버에서 시험 분산 애플리케이션을 에뮬레이션하는 기법

Country Status (5)

Country Link
US (1) US9537932B2 (ko)
EP (1) EP3060987A1 (ko)
KR (1) KR102274178B1 (ko)
CN (1) CN105745621B (ko)
WO (1) WO2015061240A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2600538C2 (ru) * 2014-04-08 2016-10-20 Интел Корпорейшн Запуск приложения на основе интерфейса передачи сообщения (mpi) в гетерогенной среде
US20180276321A1 (en) * 2017-03-24 2018-09-27 The Boeing Company Method and apparatus for testing design of satellite wiring harness and signal processing units
CN111124700B (zh) * 2018-10-31 2023-07-18 百度在线网络技术(北京)有限公司 仿真软件模型的接入方法和装置
US20200244536A1 (en) * 2019-01-24 2020-07-30 Hewlett Packard Enterprise Development Lp Cluster formation
CN111526028B (zh) * 2019-02-01 2023-04-07 阿里巴巴集团控股有限公司 数据处理方法、装置及设备
CN113641469A (zh) * 2021-07-05 2021-11-12 广州工程技术职业学院 一种组件抽象的分布式系统、实现方法、设备及介质
CN113726590A (zh) * 2021-07-20 2021-11-30 深圳市风云实业有限公司 一种定制化协议测试方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050120160A1 (en) * 2003-08-20 2005-06-02 Jerry Plouffe System and method for managing virtual servers
KR20100080527A (ko) * 2007-10-16 2010-07-08 인터내셔널 비지네스 머신즈 코포레이션 제3자 코드를 포함하는 가상 머신 생성
KR20100123847A (ko) * 2008-02-26 2010-11-25 브이엠웨어, 인코포레이티드 서버-기반 데스크탑 가상 머신 아키텍처의 클라이언트 머신들로의 확장
US20100313185A1 (en) * 2009-06-03 2010-12-09 Microsoft Corporation Access to test-ready virtual environments
KR20110139130A (ko) * 2010-06-21 2011-12-28 인텔 코오퍼레이션 부분 가상화 머신에 의한 균일한 저장 디바이스

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7653689B1 (en) 2002-05-17 2010-01-26 Abacast, Inc. Intelligent virtual content distribution network system and method
US7802000B1 (en) * 2005-08-01 2010-09-21 Vmware Virtual network in server farm
US8166458B2 (en) * 2005-11-07 2012-04-24 Red Hat, Inc. Method and system for automated distributed software testing
EP1975830A1 (en) * 2007-03-30 2008-10-01 British Telecommunications Public Limited Company Distributed computer system
US8200738B2 (en) * 2007-09-30 2012-06-12 Oracle America, Inc. Virtual cluster based upon operating system virtualization
WO2010021630A2 (en) * 2008-08-22 2010-02-25 Hewlett-Packard Development Company, L.P. Server virtualized using virtualization platform
US8561067B2 (en) * 2011-05-31 2013-10-15 Red Hat, Inc. Test suites for virtualized computing environments
CN103268252A (zh) * 2013-05-12 2013-08-28 南京载玄信息科技有限公司 基于分布式存储的虚拟化平台系统及其实现方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050120160A1 (en) * 2003-08-20 2005-06-02 Jerry Plouffe System and method for managing virtual servers
KR20100080527A (ko) * 2007-10-16 2010-07-08 인터내셔널 비지네스 머신즈 코포레이션 제3자 코드를 포함하는 가상 머신 생성
KR20100123847A (ko) * 2008-02-26 2010-11-25 브이엠웨어, 인코포레이티드 서버-기반 데스크탑 가상 머신 아키텍처의 클라이언트 머신들로의 확장
US20100313185A1 (en) * 2009-06-03 2010-12-09 Microsoft Corporation Access to test-ready virtual environments
KR20110139130A (ko) * 2010-06-21 2011-12-28 인텔 코오퍼레이션 부분 가상화 머신에 의한 균일한 저장 디바이스

Also Published As

Publication number Publication date
KR102274178B1 (ko) 2021-07-06
EP3060987A1 (en) 2016-08-31
CN105745621B (zh) 2019-06-04
US20150113033A1 (en) 2015-04-23
US9537932B2 (en) 2017-01-03
WO2015061240A1 (en) 2015-04-30
CN105745621A (zh) 2016-07-06

Similar Documents

Publication Publication Date Title
KR102274178B1 (ko) 서버에서 시험 분산 애플리케이션을 에뮬레이션하는 기법
CN111614738B (zh) 基于Kubernetes集群的服务访问方法、装置、设备及存储介质
US9342326B2 (en) Allocating identified intermediary tasks for requesting virtual machines within a trust sphere on a processing goal
CN105765526A (zh) 通过网络从远程磁盘镜像进行引导
KR20180031788A (ko) 가상화된 네트워크와 비-가상화된 네트워크 간 가상화 게이트웨이
CN105988846B (zh) 页面加载方法及页面加载装置
US10372633B1 (en) Interconnection of peripheral devices on different electronic devices
CN104580480A (zh) 一种客户端远程自动化部署系统及方法
CN109525590B (zh) 数据包的传输方法及装置
CN106155264A (zh) 管理存储子系统的电力消耗的计算机方法与计算机系统
CN113709810A (zh) 一种网络服务质量的配置方法、设备和介质
JP6195465B2 (ja) 同期サーバ側スクリプティングを用いた遠隔カードコンテンツ管理
EP3320425A1 (en) Mapping of service requirements for a virtualized network on a packet flow
JP2017538237A (ja) 仮想マシン名を表示するための方法、装置、およびシステム
CN109547394A (zh) 一种引导程序源码生成方法和业务板
US9537931B2 (en) Dynamic object oriented remote instantiation
CN111124535A (zh) 云主机qga的功能扩展方法、装置、设备及存储介质
US20150212834A1 (en) Interoperation method of newtork device performed by computing device including cloud operating system in could environment
CN108353017B (zh) 计算系统和用于操作多网关虚拟机上的多个网关的方法
CN111800340B (zh) 数据包转发方法和装置
US11106359B1 (en) Interconnection of peripheral devices on different electronic devices
US20080140687A1 (en) Socket structure simultaneously supporting both toe and ethernet network interface card and method of forming the socket structure
CN110891239B (zh) Pnf配置及pnfd tosca实现方法和装置
JP6307906B2 (ja) パケット転送装置、パケット転送システム及びパケット転送方法
JP7463458B2 (ja) 設定情報提供装置、設定情報提供方法、及びプログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant