KR102008037B1 - 분산형 애플리케이션 객체에 대한 업데이트 통지를 제공하는 기법 - Google Patents

분산형 애플리케이션 객체에 대한 업데이트 통지를 제공하는 기법 Download PDF

Info

Publication number
KR102008037B1
KR102008037B1 KR1020147016135A KR20147016135A KR102008037B1 KR 102008037 B1 KR102008037 B1 KR 102008037B1 KR 1020147016135 A KR1020147016135 A KR 1020147016135A KR 20147016135 A KR20147016135 A KR 20147016135A KR 102008037 B1 KR102008037 B1 KR 102008037B1
Authority
KR
South Korea
Prior art keywords
template
objects
virtual
created
new version
Prior art date
Application number
KR1020147016135A
Other languages
English (en)
Other versions
KR20140101371A (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 KR20140101371A publication Critical patent/KR20140101371A/ko
Application granted granted Critical
Publication of KR102008037B1 publication Critical patent/KR102008037B1/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/45579I/O management, e.g. providing access to device drivers or storage

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 Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명의 분산형 애플리케이션을 생성하는 데 사용되는 객체에 대한 업데이트 통지를 제공하는 방법, 시스템 및 컴퓨터 프로그램 제품에 관한 것이다. 다른 객체가 의존하는 새로운 버전의 객체가 생성되면, 업데드된 객체의 생성에 대해 의존 객체를 관리하는 사람에게 알리기 위한 통지가 의존 객체에 추가될 수 있다. 의존 객체는 템플릿 객체(예, 가상 디스크 객체를 나타내는 가상 머신 템플릿 객체 및 하나 이상의 가상 머신 템플릿 객체를 나타내는 서비스 템플릿 객체)를 포함할 수 있고, 또한 템플릿 객체로부터 인스턴스화되는 서비스 인스턴스를 나타내는 서비스 인스턴스 객체를 포함할 수 있다. 패밀리 내의 객체의 버전은 패밀리 네임을 공유하고 다른 릴리스를 갖짐으로써 식별될 수 있다. 객체가 발행된 시점을 나타내는 타임스탬프가 객체의 버전이 패밀리 내에서 가장 최근의 버전인지를 판정하는 데 된다.

Description

분산형 애플리케이션 객체에 대한 업데이트 통지를 제공하는 기법{PROVIDING UPDATE NOTIFICATIONS ON DISTRIBUTED APPLICATION OBJECTS}
컴퓨터 시스템 및 관련 기술은 사회의 많은 측면에 영향을 미친다. 실제로, 정보를 처리하는 컴퓨터 시스템의 능력은 사람들이 생활하고 작업하는 방식을 변경시켜왔다. 컴퓨터 시스템은 이제 일반적으로, 컴퓨터 시스템의 출현 이전에 수동으로 수행했던 작업(예, 워드 프로세싱, 스케줄링, 회계 등)의 호스트를 수행한다. 더 근래에는, 컴퓨터 시스템이 서로 연결되거나 다른 전자 장치에 연결되어 컴퓨터 시스템 및 다른 전자 장치가 전자 데이터를 전송할 수 있는 유선 네트워크 및 무선 컴퓨터 네트워크 모두를 형성하는 추세이다. 따라서, 많은 컴퓨팅 작업의 수행이 복수의 서로 다른 컴퓨터 시스템 및/또는 복수의 서로 다른 컴퓨팅 환경에 걸쳐 분산된다.
일부 환경에서, 많은 서로 다른 물리적 자원이 함께 그룹화되고 가상 컴퓨터 시스템 또는 "가상 머신(virtual machine)"을 생성하도록 가상화된다. 예를 들어, 가상 머신은 특정된 수의 프로세서, 특정된 양의 메모리, 하나 이상의 가상 저장 장치, 애플리케이션 또는 가상 저장 장치에 저장되는 컴포넌트 등을 포함할 수 있다. 가상 머신을 생성하기 위해, 하나 이상의 사용자가 가상 머신에 대해 원하는 구성을 지정한다. 이러한 구성은 특정한 가상 저장 장치를 참조하는 속성(property)과 같은, 가상 머신 인스턴스에 대한 복수의 속성을 설정하는 것을 포함할 수 있다.
본 명세서에서, 가상 저장 장치와 이러한 장치의 콘텐츠(이하에서 일반적으로 가상 디스크라 함) 사이에 구분이 이루어진다. 가상 하드 드라이브는 가상 저장 장치인데 반해 가상 하드 드라이브의 콘텐트는 가상 하드 디스크라 칭해진다. 가상 하드 드라이브는 가상 머신에 대한 속성으로서 표현되나, 가상 하드 디스크는 가상 머신에 의해 사용되는 운영 체제와 같은 데이터를 포함하는 파일이다. 유사하게, 가상 CD 또는 DVD 드라이브는 가상 머신에 대한 속성으로 표현되는 반면에 가상 CD 또는 가상 DVD는 파일(예를 들면, DVD의 콘텐트에 대한 a.ISO)로서 표현된다. 다른 형태의 가상 디스크는 가상 머신 디스크(VMDK:Virtual Machine Disk)가 있다.
가상 머신 생성을 용이하게 하기 위해, 가상 머신의 인스턴스가 가상 머신 템플릿 객체(virtual machine template object)(속성의 수동 구성을 필요로 하는 것에 대비됨)로부터 생성될 수 있다. 가상 머신 템플릿 객체는 가상 머신을 생성하기 위한 청사진(blueprint)으로서 생각될 수 있다. 가상 머신 템플릿 객체는 원하는 물리적 자원 및 이들의 구성을 특정할 수 있다. 예를 들어, 가상 머신 템플릿 객체는 프로세서의 수, 메모리의 양 등을 특정하기 위한 메타데이터를 포함할 수 있다. 또한, 가상 머신 템플릿 객체는 가상 머신이 가상 하드 드라이브(또는 다른 가상 저장 장치)와 함께 가상 하드 드라이브 내에 포함되어야 하는 콘텐츠를 포함할 것임을 식별할 수 있다. 예를 들어, 가상 머신 템플릿 객체는 가상 하드 디스크 객체를 참조할 수 있다.
또한, 서비스 템플릿 객체는 분산형 애플리케이션(distributed application)을 생성하기 위한 청사진으로 사용될 수 있다. 본 명세서, 분산형 애플리케이션이라는 용어는 일반적으로 서비스 인스턴스라는 용어와 상호교환가능하게 사용된다. 분산형 애플리케이션은 원하는 기능을 구현하도록 구성되는 하나 이상의 가상 머신의 그룹을 포함한다. 따라서, 서비스 템플릿 객체는 하나 이상의 가상 머신 템플릿 객체를 참조할 수 있고, 가상 머신 템플릿 객체로부터 하나 이상의 가상 머신 인스턴스가 분산형 애플리케이션을 구현하기 위해 생성된다. 본 명세서(도면을 포함함)에서, 가상 머신 템플릿 객체 및 서비스 템플릿 객체는 함께 템플릿 객체라 한다.
가상 머신이 가상 머신 템플릿 객체로부터 생성되는 경우에, 가상 머신은 가상 머신 템플릿 객체에 정의된 속성을 이용하여 구성된다. 따라서, 가상 머신 템플릿 객체는 많은 가상 머신의 인스턴스가 유사하게 구성되는 것을 보증하는 데 사용될 수 있다. 예를 들어, 가상 머신 템플릿 객체는 한번에 정의될 수 있고, 가상 머신의 많은 인스턴스는 각각의 인스턴스가 동일한 속성(예를 들면, 동일한 가상 하드 디스크의 사본, 동일한 수의 프로세서 및 메모리 등)을 가지도록 가상 머신 템플릿 객체로부터 생성될 수 있다.
유사하게, 서비스 템플릿 객체는 한번에 정의될 수 있고, 분산형 애플리케이션의 많은 인스턴스는 분산형 애플리케이션의 각각의 인스턴스가 동일 구성을 가지는 동일한 수의 가상 머신으로 구성되도록 서비스 템플릿 객체로부터 생성될 수 있다. 본 발명을 이해하는 데 핵심적인 것은 아니나, 서비스 템플릿 객체는 가상 머신 템플릿 객체를 참조하는 계층 템플릿 객체(tier template object)를 포함할 수 있다. 계층(tier)은 동일하게 구성되는 가상 머신의 그룹이다. 따라서, 계층 템플릿 객체는 가상 머신 템플릿 객체를 참조하고 가상 머신 템플릿 객체로부터 생성되어야 하는 가상 머신 인스턴스의 수를 나타낼 수 있다.
가상 머신을 생성하는 데 사용되는 자원은 흔히 서로 다른 페르소나(persona)에 의해 설계 및/또는 관리된다. 예를 들어, 애플리케이션은 일반적으로 개발자에 의해 생성된다. 반면에, 가상 하드 디스크는 가상 머신을 호스트하는 회사의 서버 관리자에 의해 생성된다. 템플릿 객체는 일반적으로 가상 머신을 원하는 회사에서 IT 관리자 또는 다른 IT 스태프에 의해 생성되고, 가상 머신의 인스턴스는 회사의 다른 IT 스태프 또는 회사의 템플릿 객체를 사용하기를 원하는 다른 회사에 의해서도 개발된다.
가상 머신을 생성하고 개발하는 프로세스에 관여된 서로 다른 당사자(parties)의 수에 적어도 부분적으로 기인하여, 가상 머신을 생성하는 데 사용되는 자원에 대한 변경에 대해 모든 관련 당사자에게 통지를 하는 것이 어려울 수 있다. 변경된 자원에 대한 통지를 제공하기 위한 일부 접근법은 이메일, 전화 등과 같은 전통적인 통신 모드를 포함한다. 이러한 전통적인 접근법은 긴 대기 시간을 가지고, 번거로우며 실수가 발생하기 쉽다.
예를 들어, 서버 관리자가 특정한 가상 하드 디스크에 의존하는 각각의 템플릿 객체를 판정하고 가상 하드 디스크의 각각의 관련 당사자에게 통지하는 것은 일반적으로 시간 소모적이다. 또한, 모든 관련 당사자가 변경에 대해 (예를 들면, 이메일이나 전화로) 통지를 받는 경우에도, 당사자는 그러한 변경에 대해 대응하는 것을 잊어버리기 쉽고, 일부의 다른 경우에는 업데이트된 가상 하드 디스크를 사용하기 위해 템플릿 객체를 수정하는 데 실패할 수 있다.
업데이트된 객체가 생성되는 경우에 유사한 문제가 존재한다. 예를 들어, 템플릿 객체에 의존하는 서비스 인스턴스 객체를 관리하는 각각의 당사자는 업데이트된 템플릿 객체의 이용가능성에 대해 통지받을 필요가 있다. 설명한 바와 같이, 이러한 당사자에게 통지하고, 통지받은 당사자가 그러한 통지에 적절하게 대응하게 하는 것은 번거롭고 실수가 발생하기 쉬운 절차일 수 있다.
본 발명은 분산형 애플리케이션을 생성하는 데 사용되는 객체에 대한 업데이트 통지를 제공하는 방법, 시스템 및 컴퓨터 프로그램 제품에 관한 것이다. 본 발명은 새로운 또는 업데이트된 객체에 대해 관련 당사자에게 통지하는 프로세스를 간략화하고 이러한 통지에 대해 적절하게 대응하는 것을 용이하게 한다.
일 실시예에서, 새로운 버전의 가상 디스크 객체의 생성이 검출된다. 객체는 분산형 애플리케이션에서 사용하기 위한 가상 디스크를 나타낸다. 하나 이상의 템플릿 객체가 식별된다. 하나 이상의 템플릿 객체는 가상 디스크 객체에 의존한다. 새로운 버전의 가상 디스크 객체가 생성되었다는 것을 나타내는 통지가 하나 이상의 템플릿 객체 각각에 제공된다.
다른 실시예에서, 새로운 버전의 템플릿 객체의 생성이 검출된다. 새로운 버전의 템플릿 객체는 분산형 애플리케이션을 정의한다. 하나 이상의 서비스 인스턴스 객체(이는 템플릿 객체로부터 생성됨)가 식별된다. 하나 이상의 서비스 인스턴스 객체 각각에 통지가 제공된다. 통지는 새로운 버전의 템플릿 객체가 생성되었다는 것을 나타낸다.
본 요약은 이하의 발명을 실시하기 위한 구체적인 내용에서 더 기술될 개념을 선택하여 단순화된 형식으로 소개하기 위해 제공된다. 본 요약은 특허청구범위에 기재된 발명의 대상의 주요 특징 또는 핵심 특징을 밝히고자 의도된 것이 아니며, 특허청구범위의 발명의 대상의 범위를 결정하는 것을 보조하는 데 사용하려는 것도 아니다.
다음의 상세한 설명에서 추가적인 특징 및 효과가 설명될 것이며, 당업자는 부분적으로는 상세한 설명의 내용을 통해 명확하게 이해할 수 있고, 본 명세서에 내용을 실행함으로써 학습할 수 있다. 본 발명의 실시예의 특징 및 효과는 첨부된 청구범위에 구체적으로 나타낸 장치 및 이들의 조합에 의해 이해되고 획득될 수 있다. 본 발명의 실시예의 특징은 다음의 상세한 설명 및 첨부된 청구범위로부터 완전히 이해될 것이며 이하에 설명되는 발명을 실행함으로써 학습될 수 있다.
본 발명의 실시예의 전술한 그리고 다른 효과 및 특징을 더욱 명확히 하기 위해, 본 발명의 실시예에 대한 보다 구체적인 설명이 첨부된 도면을 참조하여 설명될 것이다. 이러한 도면은 단지 본 발명의 전형적인 실시예만을 나타내는 것이며 이에 따라 본 발명의 범주를 제한하려는 것이 아님을 이해해야 한다. 본 발명의 실시예의 추가적인 세부사항 및 특징이 첨부된 도면을 사용하여 기술되고 설명될 것이다.
도 1은 분산형 애플리케이션 객체에 대한 업데이트 통지를 제공하는 것을 용이하게 하는 예시적인 컴퓨터 아키텍처를 나타낸다.
도 2a는 도 1의 예시적인 컴퓨터 아키텍처 내의 컴퓨터 시스템의 다양한 로직 스페이스를 나타낸다.
도 2b 내지 2e는 통지가 컴퓨터 시스템의 로직 스펙이스 내의 객체에 제공되는 방법을 나타낸다.
도 3은 가상 디스크 객체에 대한 업데이트의 통지를 가상 디스크 객체에 의존하는 하나 이상의 템플릿 객체에 제공하는 방법의 흐름도이다.
도 4는 템플릿 객체에 대한 업데이트의 통지를 템플릿 객체로부터 생성된 하나 이상의 서비스 인스턴스 객체에 제공하는 방법의 흐름도이다.
본 발명은 분산형 애플리케이션을 생성하는 데 사용되는 객체에 대한 업데이트 통지를 제공하는 방법, 시스템 및 컴퓨터 프로그램 제품에 관한 것이다. 본 발명은 새로운 또는 업데이트된 객체에 대해 관련 당사자에게 통지하는 프로세스를 간략화하고 이러한 통지에 대해 적절하게 대응하는 것을 용이하게 한다.
일 실시예에서, 새로운 버전의 가상 디스크 객체의 생성이 검출된다. 객체는 분산형 애플리케이션에서 사용하기 위한 가상 디스크를 나타낸다. 하나 이상의 템플릿 객체가 식별된다. 하나 이상의 템플릿 객체는 가상 디스크 객체에 의존한다. 새로운 버전의 가상 디스크 객체가 생성되었다는 것을 나타내는 통지가 하나 이상의 템플릿 객체 각각에 제공된다.
다른 실시예에서, 새로운 버전의 템플릿 객체의 생성이 검출된다. 새로운 버전의 템플릿 객체는 분산형 애플리케이션을 정의한다. 하나 이상의 서비스 인스턴스 객체(이는 템플릿 객체로부터 생성됨)가 식별된다. 하나 이상의 서비스 인스턴스 객체 각각에 통지가 제공된다. 통지는 새로운 버전의 템플릿 객체가 생성되었다는 것을 나타낸다.
본 발명의 실시예는, 이하에서 더 상세히 설명하는 바와 같이, 예를 들면 하나 이상의 프로세서 및 시스템 메모리와 같은 컴퓨터 하드웨어를 포함하는 전용 또는 범용 컴퓨터를 포함하거나 이를 사용할 수 있다. 또한, 본 발명의 범주 내의 실시예는 컴퓨터 실행가능 명령어 및/또는 데이터 구조를 포함하는 물리적 또는 다른 컴퓨터 판독가능 매체를 포함한다. 이러한 컴퓨터 판독가능 매체는 범용 또는 전용 컴퓨터 시스템에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 데이터 형태의 컴퓨터 실행가능 명령어를 저장하는 컴퓨터 판독가능 매체는 컴퓨터 저장 매체이다. 컴퓨터 실행가능 명령어가 저장되어 있는 컴퓨터 판독가능 매체는 전송 매체이다. 따라서, 제한이 아닌 예로서, 본 발명의 실시예는 적어도 두 개의 구분된 서로 다른 유형의 컴퓨터 판독가능 매체, 즉 컴퓨터 저장 매체 및 전송 매체를 포함할 수 있다.
컴퓨터 저장 매체는 RAM, ROM, EEPROM, CD-ROM, SSD(solid state drives)(RAM, ROM, 플래시 메모리, PCM(phase-change memory) 또는 다른 유형의 메모리에 기초함) 또는 광 디스크 저장장치, 자기 디스크 저장장치나 다른 자기 저장 장치, 또는 컴퓨터 실행가능 명령어, 데이터, 또는 데이터 구조 형태의 원하는 프로그램 코드 수단을 저장하는 데 사용될 수 있고 범용 또는 전용 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함한다.
"네트워크"는 컴퓨터 시스템 및/또는 모듈 및/또는 다른 전자 장치 사이의 전자 데이터의 전송을 가능하게 하는 하나 이상의 데이터 링크 및/또는 데이터 스위치로서 정의된다. 정보가 네트워크를 통해 또는 다른 통신 연결(유선, 무선, 또는 유선과 무선의 조합 중 어느 하나)을 통해 컴퓨터로 전송되거나 제공되는 경우에, 컴퓨터는 적절하게 그 연결을 전송 매체라고 간주한다. 전송 매체는 컴퓨터-실행가능 명령어나 데이터 구조들의 형태로 원하는 프로그램 코드 수단들을 운반하기 위해 사용될 수 있고 범용 또는 전용의 컴퓨터에 의해 액세스될 수 있는 네트워크 및/또는 데이터 링크들을 포함할 수 있다. 위의 조합들도 또한 컴퓨터-판독가능 매체의 범위에 포함되어야 한다.
또한, 다양한 컴퓨터 시스템 컴포넌트들에 이르면, 컴퓨터 실행가능 명령어나 데이터 구조 형태의 프로그램 코드 수단은 전송 매체로부터 컴퓨터 저장 매체(장치)로(또는 그 역으로) 자동 전송될 수 있다. 예를 들어, 네트워크나 데이터 링크를 통해 수신된 컴퓨터 실행가능 명령어 또는 데이터 구조는 네트워크 인터페이스 모듈(예컨대, NIC) 내의 RAM에서 버퍼링될 수 있고, 그런 다음 결국 컴퓨터 시스템에서 컴퓨터 시스템 RAM 및/또는 그것보다 휘발성이 약한 컴퓨터 저장 매체(장치)로 전송될 수 있다. 따라서, 컴퓨터 저장 매체(장치)는 전송 매체를 같이(또는, 심지어 먼저) 이용하는 컴퓨터 시스템 컴포넌트들에 포함될 수 있다는 점이 이해되어야 한다.
컴퓨터 실행가능(또는 컴퓨터 해석가능) 명령어는, 예를 들어, 프로세서에서 실행되면, 범용 컴퓨터, 전용 컴퓨터, 또는 전용 프로세싱 장치로 하여금 특정 기능 또는 기능들의 집합을 수행하도록 하는 명령어 및 데이터를 포함한다. 컴퓨터 실행가능 명령어는 예를 들어, 이진수, 어셈블리 언어와 같은 중간 포맷 명령어, 또는 심지어 소스 코드일 수 있다. 비록 발명의 대상이 구조적인 특징 및/또는 방법론적 단계에 특정된 언어로 기술되었으나, 첨부된 청구범위에서 한정된 발명의 대상은 기술된 특징이나 위에서 기술된 단계들로 제한될 필요가 없다는 점이 이해되어야 한다. 그보다, 기술된 특징 및 단계는 청구범위를 구현하는 예시적인 형태들로서 개시된다.
해당 기술분야의 기술자는 본 발명이, 퍼스널 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 메시지 프로세서, 핸드헬드 장치, 멀티-프로세서 시스템, 마이크로프로세서-기반 또는 프로그램가능한 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 모바일 전화, PDA, 태블릿, 페이저(pagers), 라우터, 스위치 등을 포함하는 다양한 타입의 컴퓨터 시스템 구성들을 가진 네트워크 컴퓨팅 환경에서 실시될 수 있다는 점을 이해할 것이다. 본 발명은 또한 네트워크를 통해 (유선 데이터 링크, 무선 데이터 링크, 또는 유선과 무선 데이터 링크들의 조합에 의해) 연결된 로컬 및 원격 컴퓨터 시스템 모두가 태스크를 수행하는 분산형 시스템 환경에서 실시될 수 있다. 분산형 시스템 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 모두에 배치될 수 있다.
도 1은 분산형 애플리케이션 객체에 대한 업데이트 통지를 제공하는 것을 용이하게 하는 예시적인 컴퓨터 아키텍처(100)를 도시한다. 도 1을 참조하면, 컴퓨터 아키텍처(100)는 복수의 상호연결된 프로세서, 메모리 및 가상 머신을 생성하고 실행하는 저장 장치를 포함한다. 예를 들어, 컴퓨터 시스템(101)은 저장 장치(102), 프로세서(103) 및 메모리(104)를 포함한다. 컴퓨터 시스템(101)은 컴퓨팅 시스템의 클라우드에 구현될 수 있다. 컴퓨터 시스템(101)의 예에는, 마이크로소프트의 시스템 센터 가상 머신 매니저(System Center Virtual Machine Manager) 제품을 구성하는 자원이 포함할 수 있다.
컴퓨터 시스템(101)은 다른 컴퓨터 시스템(예를 들면, 컴퓨터 시스템(106 및 107))에 LAN(Local Area Network), WAN(Wide Area Network), 및 심지어 인터넷과 같은 네트워크를 통해 연결될 수 있다. 따라서, 다른 컴퓨터 시스템은 임의의 이용가능한 수단을 사용하여 (예를 들면, 메시지 관련 데이터를 생성하고 메시지 관련 데이터(예, IP(Internet Protocol) 데이터그램 및 TCP(Transmission Control Protocol), HTTP(Hypertext Transfer Protocol), SMTP(Simple Mail Transfer Protocol) 등과 같은 IP 데이터그램을 사용하는 다른 상위 레이어 프로토콜)를 교환함으로써) 네트워크를 통해 컴퓨터 시스템(101)과 통신할 수 있다. 이러한 통신은 실행되는 가상 머신과 상호작용하기 위한 커맨드 또는 새로운 가상 머신이나 컴퓨터 시스템(101) 내에 존재하는 가상 머신을 구성하는 명령어를 포함할 수 있다.
도 2a는 컴퓨터 시스템(101) 내의 다양한 로직 스페이스를 나타낸다. 컴퓨터 시스템(101)은 라이브러리 스페이스(201), 템플릿 스페이스(202) 및 인스턴스 스페이스(203)를 포함할 수 있다. 또한, 도 2a는 컴퓨터 시스템(101)이 리프레셔(refresher)(204)(이의 기능은 이하에 설명됨)를 포함할 수 있다는 것을 나타낸다.
라이브러리 스페이스(201)는 가상 디스크를 정의하는 객체를 저장한다. 예를 들어, 라이브러리 스페이스(201)는 컴퓨터 시스템(101) 내에서 이용가능한, 가상 하드 디스크 및, 가상 CD나 가상 DVD와 같은 다른 가상 디스크를 정의하는 객체가 저장되는 물리적 위치를 나타낼 수 있다. 라이브러리 스페이스(201)는 또한 애플리케이션, 스크립트, 드라이버 등과 같은 가상 머신 생성을 위해 사용되는 다른 아티팩트(artifacts)를 저장할 수 있다. 도시된 바와 같이, 라이브러리 스페이스(201)는 가상 하드 디스크 객체(205)를 저장한다. 가상 하드 디스크(또는 다른 가상 디스크)는 운영 체제와 같은 가상 하드 디스크의 콘텐츠를 저장하는 파일이다. 가상 하드 디스크의 인스턴스가 가상 하드 디스크 객체로부터 (예를 들면, 가상 하드 디스크를 나타내는 파일을 가상 하드 디스크를 사용하여 가상 머신을 실행하는 호스트 시스템으로 복사함으로써) 생성될 수 있다. 가상 하드 디스크 객체(205)는 A. VHD의 패밀리 네임과 R-1의 릴리스(release)를 갖는다. 패밀리 네임 및 릴리스의 사용에 대해서는 이하에 설명된다.
도면은 가상 하드 디스크의 사용에 대해 도시하나, 임의의 다른 유형의 가상 디스크(예, 가상 DVD)가 본 발명의 실시예 내에서 사용될 수 있다. 또한, 본 발명에 따른 가상 머신은 하나 이상의 가상 디스크를 사용할 수 있다. 이하에 설명되는 통지 기법은 각각의 가상 디스크에 동일하게 적용될 수 있다.
템플릿 스페이스(202)는 가상 머신 템플릿 객체 및 서비스 템플릿 객체와 같은 정의된 템플릿 객체를 저장한다. 예를 들어, 템플릿 스페이스(202)는 템플릿 객체가 컴퓨터 시스템(101) 내에 저장되는 물리적 위치를 나타낼 수 있다. 특정한 실시예에서, 템플릿 스페이스(202)는 어느 컴포넌트 값이 어느 템플릿 객체에 의해 사용되지는 지에 대한 식별자(identification)와 함께 컴퓨터 시스템(101)에 정의된 다양한 템플릿 객체의 컴포넌트 값을 저장하는 하나 이상의 데이터베이스 태블릿을 나타낼 수 있다. 그러나 다른 실시예에서는, 다른 데이터 구성(contrsturcts)이 템플릿 객체에 대해 사용될 수 있다.
도시된 바와 같이, 템플릿 스페이스(202)는 템플릿 객체(206)를 포함한다. 템플릿 객체(206)는 가상 머신 템플릿 객체를 나타낸다. 가상 머신 템플릿 객체는 가상 하드 디스크 객체를 식별하고(그리고 다른 디스크 객체를 식별하는 것도 가능함), 무엇보다도 프로세서의 수, 메모리의 양, 가상 하드 디스크의 인스턴스에 설치되는 애플리케이션이나 컴포넌트를 특정한다. 가상 머신 템플릿 객체는 가상 머신의 인스턴스가 생성되는 경우에 사용된다. 예를 들어, 템플릿 객체(206)는 템플릿 객체(206)로부터 생성된 가상 머신 인스턴스가 가상 하드 디스크 객체(205)로부터 인스턴스화되는 가상 하드 디스크를 포함할 것이라는 것을 나타내는 가상 하드 디스크 객체(205)를 식별할 수 있다.
템플릿 객체(206)가 가상 머신 템플릿 객체를 나타내는 것으로 설명되었으나, 본 발명의 목적을 위해, 템플릿 객체(206)는 또한 서비스 템플릿 객체를 나타낼 수 있다. 예를 들어, 서비스 템플릿 객체는 하나 이상의 가상 머신 템플릿 객체를 포함한다. 구체적으로, 서비스 탬플릿 객체는 서비스 템플릿 객체로부터 생성된 서비스 인스턴스를 구성하는 하나 이상의 가상 머신 템플릿 객체를 식별한다. 또한, 서비스 템플릿 객체는 서비스 인스턴스를 정의하는 다른 속성 및 구성 설정(configuration settings)(예를 들면, 각각의 가상 머신이 서비스 인스턴스 내의 다른 가상 머신과 통신하는 방법)을 정의한다.
따라서, 서비스 템플릿 객체는 서비스 템플릿 객체에서 참조되는 가상 머신 템플릿 객체에 의해 직접 참조되는 각각의 가상 디스크 객체를 간접적으로 참조할 수 있다. 따라서, 가상 디스크 객체에 대한 업데이트의 통지가 가상 머신 템플릿 객체(이는 가상 디스크 객체를 직접적으로 참조함) 및 서비스 템플릿 객체(이는 가상 디스크 객체를 참조하는 임의의 가상 머신 템플릿 객체를 참조함) 모두에 유사하게 제공될 수 있다. 명세서의 나머지 부분 및 청구범위에서는 포괄적으로 템플릿 객체를 언급한다. 이러한 참조는 다르게 정의되지 않는 한 가상 머신 및 서비스 템플릿 객체 모두를 포함하는 것으로 간주되어야 한다.
인스턴스 스페이스(203)는 서비스 인스턴스(214)와 같은 서비스 인스턴스를 포함하고, 이는 하나 이상의 가상 머신 인스턴스의 컬렉션(collection)이다. 예를 들어, 인스턴스 스페이스(203)는 물리적 프로세서, 메모리 및 가상 머신 인스턴스가 실행되는 저장소를 나타낼 수 있다. 도시된 것과 같이, 인스턴스 스페이스(203)는 또한 서비스 인스턴스 객체를 포함할 수 있다. 서비스 인스턴스 객체는 서비스 인스턴스를 나타내는 데이터 구성(data construct)이다. 예를 들어, 서비스 인스턴스 객체(214)는 서비스 인스턴스(214)를 나타낼 수 있다. 서비스 인스턴스(214)는 템플릿 객체(206)로부터 생성되었고 가상 머신 인스턴스(207)를 포함한다. 가상 머신 인스턴스(207)는 가상 하드 디스크 인스턴스(205a)를 참조한다. 서비스 인스턴스(214)가 단일 가상 머신 인스턴스를 포함하는 것으로 도시되었으나, 임의의 수의 가상 머신 인스턴스가 서비스 인스턴스(214)를 구성할 수 있다.
본 명세서 내에서, 서비스 인스턴스 및 분산형 애플리케이션은 일반적으로 유사한 것을 나타낸다. 분산형 애플리케이션은 하나 이상의 가상 머신 인스턴스의 컬렉션 내에서 실행된다. 예를 들어, 멀티 계층 분산형 애플리케이션은 그 애플리케이션의 프론트엔드(frontend)를 구현하는 하나 이상의 가상 머신, 그 애플리케이션의 중간 레이어를 구현하는 하나 이상의 가상 머신 및 그 애플리케이션의 데이터베이스 백엔드(backend)를 구현하는 하나 이상의 가상 머신을 포함할 수 있다. 이러한 예에서, 멀티 계층 분산형 애플리케이션의 각각의 가상 머신은 가상 머신 템플릿 객체로부터 생성될 수 있다. 분산형 애플리케이션을 나타내는 서비스 템플릿 객체는 이러한 각각의 가상 머신 템플릿 객체를 참조할 수 있다.
가상 머신 인스턴스(207)를 생성하기 위해, 가상 하드 디스크 인스턴스(205a)가 템플릿 객체(206)에서 식별되는 가상 하드 디스크 객체(205)로부터 인스턴스화되고, 프로세서 및 메모리가 템플릿 객체(206)에서 정의된 대로 할당되며, 템플릿 객체(206)에서 정의된 애플리케이션과 컴포넌트는 가상 하드 디스크 인스턴스(205a) 상에 설치된다.
도 2b는 업데이트된 가상 하드 디스크 객체가 생성되는 경우에 템플릿 객체에 대해 통지가 제공되는 방법을 나타낸다. 도 2b는 가상 하드 디스크 객체(208) 및 업데이트된 자원 목록(209)이 추가된 상태의 도 2a와 유사하다.
가상 하드 디스크 객체(208)는 가상 하드 디스크 객체(205)에 대한 업데이트를 포함한다. 예를 들어, 가상 하드 디스크 객체(205)는 운영 체제의 초기 버전을 포함할 수 있는 반면에, 가상 하드 디스크 객체(208)는 운영 체제의 패치 버전(patched version)을 포함할 수 있다. 도 2b는 가상 하드 디스크 객체(208)가 가상 하드 디스크 객체(205)와 동일한 패밀리 네임(A.VHD)을 가지나 다른 릴리스(R-2)를 가진다는 것을 나타낸다.
업데이트된 자원 목록(209)은 템플릿 객체(206)가 의존하는 자원에 대한 업데이트의 목록을 포함한다. 예를 들어, 전술한 바와 같이, 템플릿 객체(206)는 가상 하드 디스크 객체(205)를 식별한다. 가상 하드 디스크 객체(208)가 가상 하드 디스크 객체(205)의 업데이트된 버전이기 때문에, 가상 하드 디스크 객체(208)를 가상 하드 디스크 객체(205)에 대한 이용가능한 업데이트로서 식별하는 엔트리가 업데이트된 자원 목록(209)에 부가된다. 이하에 충분히 설명한 바와 같이, 통지는 객체의 패밀리 네임과 릴리스를 사용하여 업데이트된 객체를 식별할 수 있다.
도 2a 및 도 2b는 단일 템플릿 객체가 가상 하드 디스크 객체(205)에 의존하고 단일 서비스 인스턴스 객체(214a)가 템플릿 객체(206)에 의존하는 것으로 도시하고 있으나, 복수의 템플릿 객체 및 서비스 인스턴스 객체가 단일 가상 하드 디스크 객체 및 단일 템플릿 객체에 각각 의존할 수 있다.
리프레셔(204)는 가상 하드 디스크 객체 또는 템플릿 객체에 대한 임의의 업데이트가 생성되었는지를 판정하기 위해 주기적으로 또는 다른 간격으로 실행될 수 있는 모듈을 포함한다. 리프레셔(204)가 업데이트된 객체를 식별하는 경우에, 이는 적합한 업데이트된 자원 목록을 업데이트한다. 예를 들어, 가상 하드 디스크 객체(208)가 생성되는 경우에 리프레셔(204)는 엔트리를 자원 목록(209)에 추가할 수 있다.
또한, 본 발명의 실시예는 객체에 즉각적인 통지를 제공하는 메커니즘을 제공할 수 있다. 예를 들어, 서버 관리자가 새로운 버전의 가상 하드 디스크 객체를 생성하는 경우에, 서버 관리자는 리프레셔(204)가 다시 실행될 때까지 대기하기보다는, 통지가 가상 하드 디스크 객체에 의존하는 각각의 템플릿 객체로 즉시 올라가게 할 수 있다.
엔트리를 객체와 연관된 업데이트된 자원 목록에 추가하는 것에 더하여, 본 발명의 실시예는 또한 업데이트된 자원 목록이 변경되었다고 객체에 알리기 위한 플래그(flag)를 객체 내에 설정할 수 있다. 이러한 플래그는 객체의 업데이트된 자원 목록이 통지를 포함하는 한 설정상태(set)로 유지될 수 있다.
도 2c는 다른 가상 하드 디스크 객체(211)가 라이브러리 스페이스(201)에 추가된 것을 나타낸다. 가상 하드 디스크 객체(211)는 가상 하드 디스크 객체(208)에 대한 업데이트를 포함한다. 도 2c는 가상 하드 디스크 객체(211)가 가상 하드 디스크 객체(205 및 208)와 동일한 패밀리 네임(A.VHD)을 가지나 다른 릴리스(R-3)를 가진다는 것을 나타낸다.
가상 하드 디스크 객체(211)의 추가의 결과로, 도 2c는 업데이트된 자원 목록(209)이 수정된 것을 나타낸다. 업데이트된 자원 목록(209)은 이제 가상 하드 디스크 객체(208 및 211) 각각에 대해 하나씩, 두 개의 통지를 포함한다.
도 2d는 업데이트된 템플릿 객체가 생성되는 경우에, 서비스 인스턴스 객체에서 통지가 제공되는 방식을 나타낸다. 도 2d는 도 2b와 유사하나 템플릿 스페이스(202)에 새로운 템플릿 객체(212) 및 업데이트된 자원 목록(210)이 추가된다. 도 2d에서, 두 템플릿 객체(206 및 212)는 패밀리 네임과 릴리스를 포함하는 것으로 도시된다. 템플릿 객체(212)는, 두 객체가 패밀리 네임(X.Template)을 공유하나 서로 다른 릴리스(각각, R-1 및 R-2)를 가진다는 사실에 의해 표시되는, 템플릿 객체(206)의 업데이트된 버전이다. 업데이트는 템플릿 객체(206)에 대한 임의의 변경일 수 있으나, 도 2d는 템플릿 객체(212) 내의 업데이트가 가상 하드 디스크 객체(208)에 대한 참조라는 것을 나타낸다.
템플릿 객체(212)의 릴리스에 대한 통지가 전술한 것과 유사한 방식으로 서비스 인스턴스 객체(214a)에서 설정될 수 있다. 예를 들어, 도시된 것과 같이, 업데이트된 자원 목록(210)은 이제 템플릿 객체(212)에 대한 통지를 포함한다.
업데이트된 자원 목록(210)이 템플릿 객체(212)에 대한 통지를 추가하기에 앞서 이전에 공백(empty) 상태였으면, 하나 이상의 통지가 업데이트된 자원 목록(210)에 있다는 것을 서비스 인스턴스 객체(214)에 나타내도록 서비스 인스턴스 객체(214a) 내에 플래그가 설정될 수 있다. 그러나, 업데이트된 자원 목록(210)이 이미 통지를 포함하고 있다면, 플래그가 이미 설정되었을 것이다. 또한, 이하에 설명한 것과 같이 템플릿 객체(212)에 대한 통지가 무시된다.
도 2d는 템플릿 객체(212)에 대한 업데이트된 자원 목록을 도시하고 있지 않으나, 템플릿 객체(212)에 대한 업데이트된 자원 목록은 업데이트된 자원 목록(209)과 유사하게 보일 수 있다. 또한, 예를 들어, 템플릿 객체(212)가 가상 하드 디스크 객체(205)를 식별한 경우에, 가상 하드 디스크 객체(208)에 대한 통지가 템플릿 객체(212)에 대한 업데이트된 자원 목록에 추가될 수 있다. 물론, 템플릿 객체(212)가 가상 하드 디스크 객체(208)을 식별한 경우에는, 그러한 통지는 필요하지 않을 것이다.
도 2e는 객체의 업데이트된 자원 목록으로부터 통지가 제거될 수 있는 방법을 도시한다. 도 2e는 또 다른 업데이트된 템플릿 객체(213)가 템플릿 스페이스(203)에 추가되었다는 점에서 도 2d와 다르다. 또한, 템플릿 객체(213)는 템플릿 객체(206)과 동일한 네임을 공유하나 다른 릴리스를 가지는 템플릿 객체(213)에 의해 표시되는 템플릿 객체(206)에 대한 업데이트이다. 도시된 바와 같이, 업데이트된 자원 목록(210)은 템플릿 객체(213)에 대해 새롭게 추가된 통지를 포함하나, 템플릿 객체(212)에 대한 통지는 무시되었다.
도 2e는 명확한 표현을 위해 라인으로 그려진 무시된 통지를 도시하나, 그러한 통지는 또한 업데이트된 자원 목록(210)으로부터 제거될 수 있다. 서비스 템플릿 객체(214a)의 매니저는 임의의 이유로 통지를 무시할 수 있다. 또한, 예를 들어, 매니저가 업데이트된 자원 목록(210) 내에 템플릿 객체(212)에 대한 통지를 무시할 수 있다.
도 2e에 도시된 본 발명의 일부 실시예에서, 서비스 인스턴스 객체의 업데이트된 자원 목록의 통지만이 무시될 수 있고, 템플릿 객체의 업데이트된 자원 목록의 통지는 무시될 수 없다. 다른 실시예에서는, 템플릿 객체의 업데이트된 자원 목록의 통지도 마찬가지로 무시될 수 있다.
업데이트된 자원 목록에 통지를 추가하는 것에 더하여, 또한 리프레셔(204)가 스테일 통지(stale notifications)를 제거할 수 있다. 예를 들어, 도 2e를 다시 참조하면, 템플릿 객체(213)가 삭제되는 경우에, 리프레셔(204)는 그러한 삭제를 검출하고 이에 따라 업데이트된 자원 목록(210)을 업데이트할 수 있다. 유사하게, 가상 디스크가 라이브러리 스페이스(201)로부터 삭제되는 경우에, 삭제된 가상 디스크의 템플릿 객체에 대한 임의의 통지가 삭제될 수 있다. 전술한 설명은 이용가능한 업데이트의 통지 및 이에 따라 업데이트의 수동적 해결(manual resolution)을 하게 하는 것을 기술하였으나, 이용가능한 업데이트가 템플릿 또는 서비스 인스턴스 객체에 자동으로 적용될 수도 있다. 이러한 시나리오에서는, 이용가능한 업데이트에 대해 개인에게 통지하기보다는, 업데이트가 적용될 것이라는 통지가 제공될 수 있다. 이용가능한 업데이트가 자동으로 적용될지 여부는 비즈니스 인텔리전스 및/또는 정의된 메트릭(metrics)에 기초할 수 있다.
추가로, 본 발명의 일부 실시예에서, 업데이트된 가상 디스크 객체에 관해 통지가 서비스 인스턴스 객체에 제공될 수 있다. 다르게 설명하면, 업데이트된 가상 디스크가 이용가능한 경우에, 이전 버전의 가상 디스크에 의존하는 임의의 템플릿 객체에 통지를 제공하는 것에 추가하여 본 발명은 이전 버전의 가상 디스크에 의존하는 임의의 서비스 인스턴스 객체에 유사한 통지를 제공할 수 있다.
라이브러리 스페이스(201) 및 템플릿 스페이스(202) 내의 자원 및 자원에 대한 업데이트를 식별하기 위해, 네이밍 스킴(naming scheme)이 사용된다. 이러한 스페이스 내에서, 각각의 자원은 패밀리 네임 및 릴리스로 식별된다. 패밀리 네임은 관련된 자원의 세트를 식별한다. 패밀리 네임의 예는 "Windows Server 2008"이다. 릴리스는 패밀리 내의 자원의 특정 버전을 식별한다. 예를 들어, "Windows Server 2008" 패밀리는 "Windows Server 2008"의 패밀리 네임 및 "RTM"의 릴리스를 가진 가상 하드 디스크 객체와, 동일한 패밀리 네임 및 "SP1"의 릴리스를 가지는 다른 가상 하드 디스크 객체를 포함할 수 있다. 패밀리 네임을 공유함으로써, 본 발명의 시스템은 두 개의 가상 하드 디스크가 객체가 관련된다는 것을 알 수 있다.
추가로, 각각의 자원에는 자원이 공개되는(published) 최초 시간(the first time)을 나타내는 타임스탬프가 할당된다. 자원을 공개하는 것은 자원을 사용할 수 있게 하는 조치(act)를 나타낸다. 예를 들어, 템플릿 객체가 템플릿 스페이스(202) 내에 생성(즉, 정의)될 수 있으나, 지정된 날짜까지 사용을 위해 공개되지 않을 수 있다. 이러한 공개일은 타임스탬프 용으로 사용되는 날짜이다. 그러나 다른 실시예에서는, 자원의 생성일이 타임스탬프로서 사용될 수 있다. 예를 들어, 라이브러리 스페이스(201) 내의 디스크 객체의 존재가 공개로 여겨질 수 있다.
이러한 타임스탬프는 시스템으로 하여금 자원이 패밀리에서 가장 최신 버전인지를 알게할 수 있다. 예를 들어, 전술한 "Windows Server 2008" 패밀리 예를 사용하면, "SP1"의 릴리스를 가지는 가상 하드 디스크 객체는 "RTM"의 릴리스를 가지는 가상 하드 디스크 객체보다 시간적으로 뒤인 타임스탬프를 가질 수 있다.
리프레셔(204)가 새로운 자원을 검색하는 경우에, 이는 새로운 자원이 생성되었는지 여부 및 통지가 필요한지 여부를 판정하기 위해 각각의 자원과 연관된 타임스탬프를 사용할 수 있다. 예를 들어, 리프레셔(204)는 템플릿 객체가 "Windows Server 2008"의 패밀리 네임 및 "RTM"의 릴리스를 가지는 가상 하드 디스크에 의존하는 것을 검출할 수 있다. 리프레셔(204)가, 동일한 패밀리 네임과 "SP1"의 릴리스를 가지는 가상 하드 디스크가 릴리스 "RTM" 버전의 타임스탬프보다 뒤의 것이라는 것을 검출하는 경우에, 리프레셔(204)는 통지를 업데이트된 자원 목록에 추가하고 필요한 경우에 플래그를 설정함으로써 템플릿 객체에 통지를 할 수 있다.
알 수 있는 바와 같이, 자동으로 객체에 통지를 하는 이러한 프로세스는 업데이트된 자원의 이용가능성에 대해 관련된 페르소나에게 통지하는 효율적인 수단이다. 페르소나에 의해 관리되는 업데이트된 자원 목록은 관련 페르소나에 의해 사용되는 애플리케이션의 사용자 인터페이스 내에 디스플레이될 수 있다. 또한, 사용자 인터페이스는 페르소나로 하여금 새로운 템플릿 객체나 새로운 서비스 인스턴스 객체를 생성하는 것을 가능하게 하는 수단을 제공할 수 있다. 따라서, 업데이트된 자원은 가상 머신 인스턴스에서 보다 빠르고 효과적으로 사용될 수 있다.
도 3은 가상 디스크 객체에 대한 업데이트의 통지를 가상 디스크 객체에 의존하는 하나 이상의 템플릿 객체에 제공하는 예시적인 방법(300)의 흐름도를 도시한다. 방법(300)은 도 2b를 참조하여 설명될 것이다.
방법(300)은 새로운 버전의 가상 디스크 객체가 생성되었다는 것을 검출하는 단계(301)를 포함한다. 가상 디스크 객체는 분산형 애플리케이션에서 사용하기 위한 가상 디스크를 나타낸다. 예를 들어, 리프레셔(204)는 가상 하드 디스크 객체(208)가 생성되었다는 것을 검출할 수 있다. 또한, 리프레셔(204)는 각각의 객체 내에 정의된 패밀리 네임, 릴리스 및 타임스탬프에 기초하여 가상 하드 디스크 객체(208)가 가상 하드 디스크 객체(205)의 새로운 버전이라는 것을 검출할 수 있다.
방법(300)은 가상 디스크 객체에 의존하는 하나 이상의 템플릿 객체를 식별하는 단계(302)를 포함한다. 예를 들어, 리프레셔(204)는 템플릿 객체(206)가 가상 하드 디스크 객체(205)에 의존하는 것을 식별할 수 있다.
방법(300)은 새로운 버전의 가상 디스크 객체가 생성되었다는 통지를 가상 디스크 객체에 의존하는 하나 이상의 템플릿 객체 각각에 제공하는 단계(303)를 포함한다. 예를 들어, 리프레셔(204)는 가상 하드 디스크 객체(208)의 생성에 대한 통지가 업데이트된 자원 목록(209)에 추가되도록 할 수 있다. 또한, 업데이트된 자원 목록(209)이 가상 하드 디스크 객체(208)에 대한 통지가 추가되기에 앞서 이전에 공백상태였으면, 리프레셔(204)는 업데이트된 자원 항목(209)에 플래그를 설정할 수 있다.
도 4는 템플릿 객체에 대한 업데이트의 통지를 템플릿 객체로부터 생성되는 하나 이상의 서비스 인스턴스 객체에 제공하는 예시적인 방법(400)의 흐름도를 나타낸다. 방법(400)은 도 2e를 참조하여 설명될 것이다
방법(400)은 분산형 애플리케이션을 정의하는 새로운 버전의 템플릿 객체가 생성되었다는 것을 검출하는 단계(401)를 포함한다. 예를 들어, 리프레셔(204)는 템플릿 객체(212)가 생성되었다는 것을 검출할 수 있다. 또한, 리프레셔는 각각의 객체에 정의된 패밀리 네임, 릴리스 및 타임스탬프에 기초하여 템플릿 객체(212)가 템플릿 객체(206)의 새로운 버전임을 검출할 수 있다.
방법(400)은 템플릿 객체로부터 생성된 하나 이상의 서비스 인스턴스 객체를 식별하는 단계(402)를 포함한다. 예를 들어, 리프레셔(204)는 서비스 인스턴스 객체(214)가 템플릿 객체(206)로부터 생성되었음을 식별할 수 있다.
방법(400)은 새로운 버전의 템플릿 객체가 생성되었다는 통지를 하나 이상의 서비스 인스턴스 객체 각각에 제공하는 단계(403)를 포함한다. 예를 들어, 리프레셔(204)는 템플릿 객체(212)의 생성에 대한 통지가 업데이트된 자원 목록(210)에 추가되게 할 수 있다. 또한, 업데이트된 자원 목록(210)이 템플릿 객체(212)에 대한 통지가 추가되기에 앞서 이전에 공백상태였으면, 리프레셔(204)는 업데이트된 자원 목록(210)에 플래그를 설정할 수 있다.
본 발명은 본 발명의 사상 또는 핵심 특징을 벗어나지 않는 범위 내에서 다른 구체적인 형식으로 구현될 수 있다. 기술된 실시예는 모든 면에서 단지 설명을 위한 것이며 제한적인 의미로 간주하여서는 안 된다. 따라서 본 발명의 범주는 전술한 상세한 설명이 아니라 첨부된 청구범위에 의한다. 청구범위의 등가물의 의미 및 범위 내에 속하는 모든 변경은 청구범위의 범주 내에 포함된다.

Claims (20)

  1. 하나 이상의 프로세서와 시스템 메모리를 포함하는 컴퓨터 시스템에서, 가상 저장 장치를 나타내는 객체에 대한 업데이트의 통지를 제공하는 방법으로서,
    상기 컴퓨터 시스템은 템플릿 객체로부터 각각 인스턴스화되는(instantiated) 복수의 분산형 애플리케이션을 실행하고, 상기 템플릿 객체는 각각이 대응하는 분산형 애플리케이션의 컴포넌트를 나타내는 복수의 객체를 정의하며,
    상기 방법은
    새로운 버전의 가상 디스크 객체가 생성되었음을 검출하는 단계 - 상기 가상 디스크 객체는 분산형 애플리케이션에서 사용하기 위한 가상 디스크를 나타내고, 상기 가상 디스크 객체는 가상 하드 드라이브의 콘텐츠를 나타내는 데이터를 포함하는 파일을 포함함 - 와,
    상기 가상 디스크 객체에 의존하는 하나 이상의 템플릿 객체를 식별하는 단계와,
    상기 새로운 버전의 가상 디스크 객체가 생성되었다는 통지를 상기 가상 디스크 객체에 의존하는 하나 이상의 템플릿 객체 각각에 제공하는 단계를 포함하는
    방법.
  2. 제1항에 있어서,
    상기 가상 디스크 객체는 상기 객체의 패밀리 네임의 식별자 및 릴리스의 식별자를 포함하는
    방법.
  3. 제2항에 있어서,
    상기 분산형 애플리케이션에서 사용하기 위한 새로운 버전의 가상 디스크 객체가 생성되었음을 검출하는 단계는 상기 패밀리 네임의 동일한 식별자 및 상기 릴리스의 다른 식별자를 가진 객체가 생성되었음을 검출하는 단계를 더 포함하는
    방법.
  4. 제3항에 있어서,
    상기 분산형 애플리케이션에서 사용하기 위한 새로운 버전의 가상 디스크 객체가 생성되었음을 검출하는 단계는 상기 새로운 버전의 객체와 연관된 타임스탬프가 상기 가상 디스크 객체와 연관된 타임스탬프보다 더 최근 것임을 검출하는 단계를 더 포함하는
    방법.
  5. 제2항에 있어서,
    상기 가상 디스크 객체에 의존하는 하나 이상의 템플릿 객체를 식별하는 단계는 상기 가상 디스크 객체의 상기 패밀리 네임의 식별자 및 상기 릴리스의 식별자에 대한 참조를 포함하는 하나 이상의 템플릿 객체를 식별하는 단계를 더 포함하는
    방법.
  6. 제1항에 있어서,
    상기 새로운 버전의 가상 디스크 객체가 생성되었다는 통지를 상기 가상 디스크 객체에 의존하는 하나 이상의 템플릿 객체 각각에 제공하는 단계는 상기 가상 디스크 객체에 의존하는 하나 이상의 템플릿 객체 각각에 플래그를 설정하는 단계를 더 포함하는
    방법.
  7. 제1항에 있어서,
    상기 하나 이상의 템플릿 객체 각각은 가상 머신 템플릿 객체 또는 서비스 템플릿 객체를 포함하는
    방법.
  8. 제1항에 있어서,
    상기 새로운 버전의 가상 디스크 객체는 상기 객체에 의해 표현되는 가상 하드 디스크에 대한 패치(patch)를 포함하는
    방법.
  9. 하나 이상의 프로세서와 시스템 메모리를 포함하는 컴퓨터 시스템에서, 템플릿 객체에 대한 업데이트의 통지를 상기 템플릿 객체로부터 생성된 서비스 인스턴스를 나타내는 하나 이상의 서비스 인스턴스 객체에 제공하는 방법으로서,
    상기 컴퓨터 시스템은 복수의 분산형 애플리케이션을 실행하고, 상기 복수의 분산형 애플리케이션은, 각각이 대응하는 분산형 애플리케이션의 컴포넌트를 나타내는 복수의 객체를 정의하는 템플릿 객체로부터 각각 인스턴스화되며, 상기 분산형 애플리케이션은 원하는 기능을 구현하도록 구성된 하나 이상의 가상 머신의 그룹을 포함하고,
    상기 방법은
    분산형 애플리케이션을 정의하는 새로운 버전의 템플릿 객체가 생성되었음을 검출하는 단계와,
    상기 템플릿 객체로부터 생성된 서비스 인스턴스를 나타내는 하나 이상의 서비스 인스턴스 객체를 식별하는 단계와,
    상기 새로운 버전의 템플릿 객체가 생성되었다는 통지를 상기 하나 이상의 서비스 인스턴스 객체 각각에 제공하는 단계를 포함하는
    방법.
  10. 제9항에 있어서,
    상기 통지를 상기 하나 이상의 서비스 인스턴스 객체 각각에 제공하는 것과 함께, 상기 통지를 무시하는(dismiss) 옵션을 상기 하나 이상의 서비스 인스턴스 객체 각각에 제공하는 단계를 더 포함하는
    방법.
  11. 제9항에 있어서,
    상기 템플릿 객체는 상기 템플릿 객체의 패밀리 네임의 식별자 및 릴리스의 식별자를 포함하는
    방법.
  12. 제11항에 있어서,
    상기 분산형 애플리케이션을 정의하는 새로운 버전의 템플릿 객체가 생성되었음을 검출하는 단계는 상기 패밀리 네임의 동일한 식별자 및 상기 릴리스의 다른 식별자를 가진 템플릿 객체가 생성되었음을 검출하는 단계를 더 포함하는
    방법.
  13. 제11항에 있어서,
    상기 분산형 애플리케이션을 정의하는 새로운 버전의 템플릿 객체가 생성되었음을 검출하는 단계는 상기 새로운 버전의 템플릿 객체가 공개되었음을 검출하는 단계와, 상기 새로운 버전의 템플릿 객체와 연관된 타임스탬프가 상기 템플릿 객체와 연관된 타임스탬프보다 더 최근 것임을 검출하는 단계를 더 포함하는
    방법.
  14. 제11항에 있어서,
    상기 템플릿 객체로부터 생성된 하나 이상의 서비스 인스턴스 객체를 식별하는 단계는 상기 템플릿 객체의 상기 패밀리 네임의 식별자 및 상기 릴리스의 식별자에 대한 참조를 포함하는 하나 이상의 서비스 인스턴스 객체를 식별하는 단계를 더 포함하는
    방법.
  15. 제9항에 있어서,
    상기 새로운 버전의 템플릿 객체가 생성되었다는 통지를 상기 하나 이상의 서비스 인스턴스 객체의 각각에 제공하는 단계는 상기 하나 이상의 서비스 인스턴스 객체 각각에 플래그를 설정하는 단계를 더 포함하는
    방법.
  16. 제9항에 있어서,
    상기 템플릿 객체는 가상 디스크 객체에 대한 참조를 포함하고, 상기 새로운 버전의 템플릿 객체는 새로운 버전의 가상 디스크 객체에 대한 참조를 포함하는
    방법.
  17. 하나 이상의 프로세서와 시스템 메모리를 포함하는 컴퓨터 시스템에서, 인스턴스화되는 분산형 애플리케이션에서 사용되는 새로운 버전의 객체를 식별하는 방법으로서,
    상기 컴퓨터 시스템은 복수의 분산형 애플리케이션을 실행하고, 상기 복수의 분산형 애플리케이션은, 각각이 대응하는 분산형 애플리케이션의 컴포넌트를 나타내는 복수의 객체를 정의하는 템플릿 객체로부터 각각 인스턴스화되며,
    상기 방법은
    객체의 패밀리 네임의 식별자 및 릴리스의 식별자에 액세스하는 단계 - 상기 분산형 애플리케이션에서 사용되는 인스턴스 객체는 상기 객체에 기초함 - 와,
    상기 패밀리 네임의 동일한 식별자 및 상기 릴리스의 다른 식별자를 갖는 다른 객체를 식별함으로써 다른 버전의 객체가 생성되었음을 판정하는 단계와,
    상기 다른 버전의 객체의 타임스탬프를 상기 객체의 타임스탬프와 비교함으로써 상기 다른 버전의 객체가 새로운 버전의 객체임을 판정하는 단계와,
    상기 다른 버전의 객체가 새로운 버전의 객체임을 판정할 시에, 상기 새로운 버전의 객체가 생성되었다는 통지를 상기 분산형 애플리케이션에서 사용되는 상기 인스턴스 객체에 제공하는 단계를 포함하는
    방법.
  18. 제17항에 있어서,
    상기 객체는 일 버전의 가상 디스크를 나타내는 가상 디스크 객체이고, 상기 새로운 버전의 객체는 패치 버전(patched version)의 가상 디스크를 나타내는
    방법.
  19. 제18항에 있어서,
    상기 분산형 애플리케이션에서 사용되는 상기 인스턴스 객체에 통지를 제공하는 단계는 상기 객체의 상기 패밀리 네임의 식별자 및 상기 릴리스의 식별자를 참조하는 하나 이상의 템플릿 객체에 통지를 제공하는 단계를 포함하는
    방법.
  20. 제17항에 있어서,
    상기 객체는 템플릿 객체이고, 상기 분산형 애플리케이션에서 사용되는 상기 인스턴스 객체에 통지를 제공하는 단계는 상기 템플릿 객체로부터 인스턴스화되는 하나 이상의 서비스 인스턴스 객체에 통지를 제공하는 단계를 포함하는
    방법.
KR1020147016135A 2011-12-15 2012-12-05 분산형 애플리케이션 객체에 대한 업데이트 통지를 제공하는 기법 KR102008037B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/326,878 2011-12-15
US13/326,878 US8694986B2 (en) 2011-12-15 2011-12-15 Providing update notifications on distributed application objects
PCT/US2012/067814 WO2013090066A1 (en) 2011-12-15 2012-12-05 Providing update notifications on distributed application objects

Publications (2)

Publication Number Publication Date
KR20140101371A KR20140101371A (ko) 2014-08-19
KR102008037B1 true KR102008037B1 (ko) 2019-08-06

Family

ID=48023458

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147016135A KR102008037B1 (ko) 2011-12-15 2012-12-05 분산형 애플리케이션 객체에 대한 업데이트 통지를 제공하는 기법

Country Status (6)

Country Link
US (1) US8694986B2 (ko)
EP (1) EP2791793B1 (ko)
JP (1) JP6077562B2 (ko)
KR (1) KR102008037B1 (ko)
CN (1) CN103036986B (ko)
WO (1) WO2013090066A1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9767274B2 (en) 2011-11-22 2017-09-19 Bromium, Inc. Approaches for efficient physical to virtual disk conversion
US9239909B2 (en) 2012-01-25 2016-01-19 Bromium, Inc. Approaches for protecting sensitive data within a guest operating system
US9116733B2 (en) 2010-05-28 2015-08-25 Bromium, Inc. Automated provisioning of secure virtual execution environment using virtual machine templates based on requested activity
US10095530B1 (en) 2010-05-28 2018-10-09 Bromium, Inc. Transferring control of potentially malicious bit sets to secure micro-virtual machine
US9792131B1 (en) 2010-05-28 2017-10-17 Bromium, Inc. Preparing a virtual machine for template creation
US8752047B2 (en) 2010-05-28 2014-06-10 Bromium, Inc. Automated management of virtual machines to process untrusted data based on client policy information
US9148428B1 (en) 2011-05-25 2015-09-29 Bromium, Inc. Seamless management of untrusted data using virtual machines
US9135038B1 (en) 2010-05-28 2015-09-15 Bromium, Inc. Mapping free memory pages maintained by a guest operating system to a shared zero page within a machine frame
US9129124B2 (en) * 2012-04-12 2015-09-08 Hewlett-Packard Development Company, L.P. Dynamic provisioning of virtual systems
CN103440157B (zh) * 2013-06-25 2016-12-28 百度在线网络技术(北京)有限公司 一种用于获得虚拟机的模板的方法和装置
US9274828B2 (en) 2013-11-03 2016-03-01 Maestrano Pty Ltd. Systems and methods for event driven object management and distribution among multiple client applications
CN104639361B (zh) * 2013-11-15 2019-04-19 中兴通讯股份有限公司 网络服务模板的管理方法和装置
US10430614B2 (en) 2014-01-31 2019-10-01 Bromium, Inc. Automatic initiation of execution analysis
US9916171B2 (en) * 2014-07-10 2018-03-13 International Business Machines Corporation Application discovery in virtual machines using temporal clustering of installation files
WO2016113913A1 (ja) 2015-01-16 2016-07-21 株式会社日立製作所 サービスを作成する管理システム
CN105549906B (zh) * 2015-12-09 2019-04-26 华为技术有限公司 一种外置虚拟存储的部署方法、装置和***
CN109213565B (zh) * 2017-06-29 2023-08-11 中兴通讯股份有限公司 异构虚拟计算资源的管理方法、相关设备及存储介质
US10884788B2 (en) * 2018-04-03 2021-01-05 Amazon Technologies, Inc. On-demand code execution with limited memory footprint
KR102012604B1 (ko) * 2018-12-28 2019-10-21 건국대학교 산학협력단 가상화를 위한 확장 가능한 네트워크 연결 저장 장치 및 방법
CN112506641B (zh) * 2019-09-16 2022-11-11 武汉斗鱼网络科技有限公司 一种对象智能释放方法、装置和终端设备
KR102439928B1 (ko) * 2020-10-08 2022-09-05 주식회사 엑스게이트 취약점 탐지 방법 및 취약점 탐지 시스템
CN112632029B (zh) * 2020-12-04 2022-08-05 杭州海康威视***技术有限公司 分布式存储***的数据管理方法、装置及设备
US20220318042A1 (en) * 2021-04-01 2022-10-06 RAMScaler, Inc. Distributed memory block device storage
CN114625485A (zh) * 2022-05-12 2022-06-14 武汉四通信息服务有限公司 虚拟机模板管理***、方法、装置、信服易云及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070234337A1 (en) * 2006-03-31 2007-10-04 Prowess Consulting, Llc System and method for sanitizing a computer program
US20090007105A1 (en) 2007-06-29 2009-01-01 Microsoft Corporation Updating Offline Virtual Machines or VM Images
US7694101B2 (en) 2005-12-30 2010-04-06 Vmware, Inc. Implementing virtual disk reservations on a storage media for multiple distributed applications

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6259446B1 (en) 1992-12-23 2001-07-10 Object Technology Licensing Corporation Menu state system
JPH06332687A (ja) * 1993-05-18 1994-12-02 Fujitsu Ltd プログラム自動修正反映方式
US20030172368A1 (en) 2001-12-26 2003-09-11 Elizabeth Alumbaugh System and method for autonomously generating heterogeneous data source interoperability bridges based on semantic modeling derived from self adapting ontology
US8412813B2 (en) 2002-03-18 2013-04-02 Logiclibrary, Inc. Customizable asset governance for a distributed reusable software library
US7584467B2 (en) 2003-03-17 2009-09-01 Microsoft Corporation Software updating system and method
US8776050B2 (en) * 2003-08-20 2014-07-08 Oracle International Corporation Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes
CN100458775C (zh) * 2004-04-01 2009-02-04 诺基亚公司 用于在多个设备之间实现数据同步的方法、设备和***
US9594548B2 (en) 2005-12-27 2017-03-14 International Business Machines Corporation Dynamically updating templated applications
WO2007089283A2 (en) * 2006-02-01 2007-08-09 X2 Technologies, Inc. System and method for providing computer services
US20090183182A1 (en) * 2008-01-10 2009-07-16 Microsoft Corporation Dynamic Composition of Virtualized Applications
US20090199175A1 (en) * 2008-01-31 2009-08-06 Microsoft Corporation Dynamic Allocation of Virtual Application Server
US8352482B2 (en) * 2009-07-21 2013-01-08 Vmware, Inc. System and method for replicating disk images in a cloud computing based virtual machine file system
US8516137B2 (en) 2009-11-16 2013-08-20 Microsoft Corporation Managing virtual hard drives as blobs
US8627309B2 (en) * 2010-02-25 2014-01-07 Microsoft Corporation Automated deployment and servicing of distributed applications
US8533701B2 (en) * 2010-03-15 2013-09-10 Microsoft Corporation Virtual machine image update service

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7694101B2 (en) 2005-12-30 2010-04-06 Vmware, Inc. Implementing virtual disk reservations on a storage media for multiple distributed applications
US20070234337A1 (en) * 2006-03-31 2007-10-04 Prowess Consulting, Llc System and method for sanitizing a computer program
US20090007105A1 (en) 2007-06-29 2009-01-01 Microsoft Corporation Updating Offline Virtual Machines or VM Images

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Glenn Ammons 외 4명. Virtual machine images as structured data: the Mirage image library. 2011년.

Also Published As

Publication number Publication date
JP2015505096A (ja) 2015-02-16
CN103036986A (zh) 2013-04-10
WO2013090066A1 (en) 2013-06-20
CN103036986B (zh) 2016-06-01
US20130159987A1 (en) 2013-06-20
EP2791793B1 (en) 2020-06-24
KR20140101371A (ko) 2014-08-19
EP2791793A4 (en) 2015-07-08
JP6077562B2 (ja) 2017-02-08
EP2791793A1 (en) 2014-10-22
US8694986B2 (en) 2014-04-08

Similar Documents

Publication Publication Date Title
KR102008037B1 (ko) 분산형 애플리케이션 객체에 대한 업데이트 통지를 제공하는 기법
US11265366B2 (en) Lifecycle management of custom resources in a cloud computing environment
JP5730290B2 (ja) アプリケーションのコンポーネントをバージョン管理するシステム、方法及びコンピュータプログラムプロダクト
US10440138B2 (en) Provisioning IaaS services
US20220284102A1 (en) Data lineage management
US9367371B2 (en) Widget framework, real-time service orchestration, and real-time resource aggregation
TW200839614A (en) Universal schema for representing management policy
US11630695B1 (en) Dynamic reassignment in a search and indexing system
US10740322B2 (en) Collapsing multiple changes in a database for generating a reduced number of messages for an external system
US9374417B1 (en) Dynamic specification auditing for a distributed system
US11693710B1 (en) Workload pool hierarchy for a search and indexing system
EP4173181B1 (en) Container orchestration system (cos) services discovery across multiple cos clusters based on cos cluster domain name system
US20220334809A1 (en) Process flow builder for extensible web component sequences
US11803429B2 (en) Managing alert messages for applications and access permissions
US20240070151A1 (en) Database systems and client-side query transformation methods
US11716380B2 (en) Secure self-contained mechanism for managing interactions between distributed computing components
US11449409B2 (en) Schema inference and log data validation system
US20220245206A1 (en) Process flow builder for user-configurable web component sequences
US20220300574A1 (en) Caching for Single Page Web Applications
US20140059538A1 (en) Virtual machine state tracking using object based storage
US11750460B1 (en) Identifying duplicate entries in views of same and other network management interfaces
US11487839B2 (en) Resource link engine
US20220300988A1 (en) Leveraging individual engagement history in account based personalization
US20240070139A1 (en) Database systems and methods for client-side initiation of server-side actions
Dolzhenko Approaches to Final Implementation

Legal Events

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