KR101442360B1 - 플랫폼들 간 가상 머신 이미지 포팅 - Google Patents

플랫폼들 간 가상 머신 이미지 포팅 Download PDF

Info

Publication number
KR101442360B1
KR101442360B1 KR1020127013641A KR20127013641A KR101442360B1 KR 101442360 B1 KR101442360 B1 KR 101442360B1 KR 1020127013641 A KR1020127013641 A KR 1020127013641A KR 20127013641 A KR20127013641 A KR 20127013641A KR 101442360 B1 KR101442360 B1 KR 101442360B1
Authority
KR
South Korea
Prior art keywords
model
target
topology
source
cloud
Prior art date
Application number
KR1020127013641A
Other languages
English (en)
Other versions
KR20120113716A (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 KR20120113716A publication Critical patent/KR20120113716A/ko
Application granted granted Critical
Publication of KR101442360B1 publication Critical patent/KR101442360B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/58Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/583Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

일 실시 예에서, 소스 플랫폼(source platform)과 연관된 소스 토폴로지 모델(source topology model)과 타겟 플랫폼(target platform)과 연관된 타겟 토폴로지 모델(target topology model)의 차들(differences)을 만드는 방법이 제공된다. 이 차를 만드는 방법은 토폴로지 차(topology difference)를 얻기 위해 프로세서에 의해 수행된다. 워크플로 모델(workflow model) 내의 연산(operation)을 자산 라이브러리(asset library)로부터 획득하며, 상기 연산은 상기 토폴로지 차와 연관된다. 상기 자산 라이브러리의 적어도 일부는 지속형 기억 매체(persistent storage medium)에 저장된다. 솔루션의 일부를 배치하기 위한 연산이 배치를 위해 전송된다(transmitted). 상기 솔루션의 배치된 일부는 상기 타겟 플랫폼과 호환 가능한 타겟 이미지(target image)를 포함한다.

Description

플랫폼들 간 가상 머신 이미지 포팅{PORTING VIRTUAL MACHINE IMAGES BETWEEN PLATFORMS}
본 발명은 분산 컴퓨터 시스템들에 관한 것이다. 자세하게는, 본 발명은 플랫폼들 간 가상 이미지들을 포팅(porting)하는 방법 및 시스템에 관한 것이다.
클라우드 컴퓨팅은 인터넷 기반 서비스를 기술하는 용어이다. 인터넷 기반 서비스는 서비스 제공자에 의해 호스트된다. 서비스 제공자들은 요청 클라이언트들 (requesting clients) 에게 하드웨어 인프라스트럭처 또는 소프트웨어 애플리케이션들을 컴퓨터 네트워크를 통하여 제공할 수 있다. 요청 클라이언트들은 종래의 클라이언트 기반 “브라우저” 소프트웨어 애플리케이션들을 이용하여 상기 소프트웨어 애플리케이션들에 액세스할 수 있으며, 상기 소프트웨어 (명령들) 및 데이터는 클라우드 컴퓨팅 제공자에 의해 유지되는 서버상에 저장된다.
서비스 제공자가 클라우드 컴퓨팅 환경에서 실행되는 애플리케이션들을 이용할 수 있기 위해서는, 상기 서비스 제공자가 자신의 기존 애플리케이션들을 클라우드 컴퓨팅 환경으로 옮겨야 한다. 또는, 서비스 제공자가 자신의 애플리케이션들을 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 포팅(port)할 수 있어야 한다.
애플리케이션들을 한 환경에서 다른 환경으로 포팅하는 것은 종종 시간이 많이 걸리고 실행에 어려움이 많다. 하나 또는 그 이상의 가상 이미지들에서 플랫폼 독립적 솔루션들(platform independent solutions)을 한 클라우드 제공자로부터 다른 클라우드 제공자로 포팅하는 것은 어렵다. 왜냐하면 이미지 포맷들(image formats)이 클라우드 컴퓨팅 환경에 의해 지원되는 하이퍼바이저 기술(hypervisor technology)에 고유하기(specific) 때문이다. 또한, 클라우드 고유의 하이퍼바이저 요건들(cloud specific hypervisor requirements)을 맞추기 위해서는 다수의 지루한(tedious) 수동 구성(manual configuration) 단계들이 게스트 운영체제에서 요구되며 종종 부분적으로 설치 및 구성된 종속적 소프트웨어 컴포넌트들을 가진 적합한 버전의 베이스 이미지들이 이용가능 하지도 않기 때문이다.
US0090282404는 사용자 사양(user specifications)에 따라 자동으로 가상 머신 (VM)을 구성(configuring)하고 VM을 물리적 호스트상에 배치하는 프로비저닝 서버(provisioning server)를 공개한다. 사용자는 미리 구성된 목록에서 즉석 배치가능한(ready-to-deploy) VM들을 고르거나, 혹은 자신이 VM에게 가지게 하기를 원하는 하드웨어, 운영체제 및 애플리케이션(들)을 선택할 수 있다. 그 다음 프로비저닝 서버(provisioning server)는, 원하는 구성(the desired configuration)이 이용 가능할 경우, 그 선택에 따라서 VM을 구성하고, 원하는 구성이 이용 가능하지 않을 경우 사용자의 요청에 가장 적합한 VM을 구성하기 위해 휴리스틱스(heuristics)를 적용한다. 상기 발명은 또한 VM들과 호스트들의 상태(status)를 모니터하고, 호스트들 간에 VM들을 마이그레이팅(migrating)하며, VM들의 네트워크를 생성하는 메커니즘들을 포함한다.
US7356679는, 적어도 하나의 소스 디스크의 상태(state)를 포함하는, 소스 컴퓨터의 하드웨어 및 소프트웨어 구성(configuration)의 소스 이미지가 자동으로 캡처되는 것을 공개한다. 소스 컴퓨터는 구성이 되지 않은(unprepared) 상태일 수도 있고 컴퓨터 복제 및 재구성(computer cloning and reconfiguration)을 용이하게 하기 위한 프로그램을 필요로 하지 않는다. 소스 이미지는 자동으로 분석되고 그리고 목적지 컴퓨터(destination computer)의 하드웨어 구성이 결정된다. 소스 이미지는 목적지 컴퓨터와의 호환성(compatibility) 또는 커스터마이제이션(customization)을 위해 필요한 대로 수정되고, 가능한 수정(modification)을 한 후에 소스 이미지는 목적지 컴퓨터상에 배치된다. 상기 소스 컴퓨터와 목적지 컴퓨터 중 하나 또는 모두는 가상 머신일 수 있다.
그러나, 상기 선행기술 솔루션들 중 어느 것도 호환성 검사/정보(compatibility checks/information)를 가진 하나 또는 그 이상의 가상 이미지들을 포함하는 부분/완전 솔루션을 한 클라우드 컴퓨팅 환경에서 다른 클라우드 컴퓨팅 환경으로 포팅하는 수단을 공개하지는 않는다.
일 실시 예에서, 소스 플랫폼(source platform)과 연관된 소스 토폴로지 모델(source topology model)과 타겟 플랫폼(target platform)과 연관된 타겟 토폴로지 모델(target topology model)의 차를 만드는 (difference) 방법이 제공된다. 이 차를 만드는 방법이 프로세서에 의해 수행되면 토폴로지 차(topology difference)가 그 결과로 나온다. 워크플로 모델(workflow model) 내의 연산(operation)이 자산 라이브러리(asset library)로부터 획득되며, 상기 연산은 상기 토폴로지 차와 연관된다. 상기 자산 라이브러리의 적어도 일부는 지속형 기억 매체(persistent storage medium)에 저장된다. 솔루션의 일부를 배치하기 위한 연산이 배치를 위해 전송된다(transmitted). 상기 솔루션의 배치된 일부는 상기 타겟 플랫폼과 호환 가능한 타겟 이미지(target image)를 포함한다.
전술한 내용은 개요이므로 필요에 의해서 간략한 내용, 일반적인 내용, 및 세부사항의 생략을 포함하고 있다. 따라서, 이 기술 분야에서 통상의 지식을 가진 자는 상기 개요가 단지 예시적이며 어떤 식으로든 제한할 의도가 없음을 인식할 수 있을 것이다. 다른 실시 예들, 발명의 특징들, 및 이점들은, 오직 청구항들에 의해서 정의되는 바와 같이, 아래에서 기술하는 비제한적인 상세한 기술에서 분명히 드러날 것이다.
본 발명의 제1 실시 예에서, 본 발명은 정보 처리 시스템(information handling system)에 의해 구현되는 방법을 제공하며, 상기 방법은: 토폴로지 차를 얻기 위해 소스 플랫폼과 연관된 소스 토폴로지 모델과 타겟 플랫폼과 연관된 타겟 토폴로지 모델의 차를 만든는 단계(differencing) - 상기 차를 만드는 단계의 적어도 일부는 프로세서에 의해서 수행됨 -; 자산 라이브러리로부터 워크플로 모델 내의 연산(operation)을 획득하는 단계(obtaining) - 상기 연산은 상기 토폴로지 차와 연관되고, 상기 자산 라이브러리의 적어도 일부는 지속형 기억 매체에 저장됨-; 및 솔루션의 적어도 일부를 배치하기 위해 상기 연산을 전송하는 단계 - 상기 솔루션의 배치된 일부는 상기 타겟 플랫폼과 호환 가능한 타겟 가상 이미지를 포함함 - 를 포함한다.
본 발명은 상기 연산을 실행함으로써 상기 타겟 플랫폼에 상기 솔루션의 일부를 배치하는 단계를 더 포함하는 방법을 제공한다.
본 발명은 상기 배치하는 단계의 결과는 상기 솔루션을 상기 소스 플랫폼으로부터 상기 타겟 플랫폼으로 포팅하는 것을 포함하는 방법을 제공한다.
본 발명은 상기 소스 플랫폼이 제1 클라우드이고 상기 타겟 플랫폼은 제2 클라우드인 방법을 제공한다.
본 발명은 상기 솔루션이 복합 솔루션(composite solution)이고 제2 클라우드는 복수의 클라우드들을 포함하는 방법을 제공한다.
본 발명은 상기 소스 플랫폼이 사설 클라우드(private cloud)이고 상기 타겟 플랫폼은 공공 클라우드(public cloud)인 방법을 제공한다.
본 발명은 상기 타겟 플랫폼과 연관되는 적어도 하나의 베이스 가상 이미지 메타데이터(base virtual image metadata)를 위해 메타데이터를 탐색하는 단계(searching)을 더 포함하는 방법을 제공한다.
본 발명은 하나 또는 그 이상의 클라우드-고유(cloud-specific) 가상 이미지 라이브러리들 내에서 상기 메타데이터를 탐색하는 단계를 더 포함하는 방법을 제공한다.
본 발명은 상기 탐색하는 단계에서 사용된 입력 파라미터들을 검색(retrieve)하는 단계 - 상기 입력 파라미터들은 상기 타겟 토폴로지 모델에 의해 제공됨 - 를 더 포함하는 방법을 제공한다.
본 발명은 상기 탐색하는 단계에 응답하여 상기 자산 라이브러리에 저장된 메타데이터로부터 하나 또는 그 이상의 베이스 가상 이미지 기술들(descriptions)을 검색하는 단계를 더 포함하는 방법을 제공한다.
본 발명은 소스 플랫폼이 제1 클라우드이고 타겟 플랫폼이 제2 클라우드인 방법을 제공하되, 상기 방법은 자산 라이브러리로부터 상기 소스 플랫폼에 대응하는 제1 세트의 모델 유닛들(a first set of model units)을 검색하는 단계; 상기 자산 라이브러리로부터 상기 타겟 플랫폼에 대응하는 제2 세트의 모델 유닛들(a second set of model units)을 검색하는 단계 - 상기 차를 만드는 단계에 의하여 하나 또는 그 이상의 공통 모델 유닛들(common model units)과 하나 또는 그 이상의 다른 모델 유닛들(different model units)이 얻어짐- ; 상기 공통 모델 유닛들의 각각에 대응하는 제1 세트의 하나 또는 그 이상의 워크플로 단계들을 재사용(reusing)하는 단계; 상기 자산 라이브러리로부터 하나 또는 그 이상의 상기 다른 모델 유닛들에 대응하는 제2 세트의 하나 또는 그 이상의 워크플로 단계들을 검색하는 단계; 및 상기 재사용된 제1 세트의 워크플로 단계들과 상기 검색된 제2 세트의 워크 플로 단계들을 이용하여 상기 워크플로 모델을 생성하는 단계를 더 포함한다.
본 발명은 상기 토폴로지 차를 상기 소스 토폴로지 모델과 상기 타겟 토폴로지 모델에 연관시키는 단계; 및 상기 토폴로지 차와 상기 연관들(associations)을 상기 자산 라이브러리에 패치(patch)로서 저장하는 단계를 더 포함하는 방법을 제공한다.
본 발명은 상기 소스 토폴로지 모델에 부분적으로 공통인 제2 소스 토폴로지 모델과 상기 타겟 플랫폼에 부분적으로 공통인 제2 타겟 플랫폼을 수신하는 단계; 상기 패치를 포함하여 하나 또는 그 이상의 패치들을 상기 자산 라이브러리에서 탐색하는 단계 - 상기 탐색은 상기 연관된 소스 토폴로지 모델을 포함함 -; 상기 탐색에 응답하여 상기 자산 라이브러리로부터 상기 패치를 검색하는 단계; 및 상기 제2 타겟 플랫폼과 연관된 제2 타겟 토폴로지를 얻기 위해 상기 검색된 패치를 제2 소스 토폴로지 모델에 적용하는 단계를 더 포함하는 방법을 제공한다.
본 발명은 상기 솔루션이 다수의 가상 부분들(virtual parts)로 구성된 복합 솔루션이고, 가상 부분(virtual part)은 가상 이미지의 모델과 이를 구성하는 게스트 OS(its constituent guest OS), 미들웨어(middleware) 및 애플리케이션 모델 유닛들로 구성되고, 각각의 가상 부분은 서로 다른 타겟 플랫폼에 배치되며, 각각의 타겟 플랫폼은 공공 클라우드 또는 사설 클라우드 중 하나에 대응하는 방법을 제공한다.
본 발명은 완전한 솔루션(complete solution)을 배치하기 위해, 상기 연산을 포함하는, 복수의 연산들을 전송하는 단계를 더 포함하는 방법을 제공한다.
본 발명은 상기 차를 만드는 단계는: 상기 소스 플랫폼에 대응하는 제1 세트의 모델 유닛들을 식별하는 단계; 상기 타겟 플랫폼에 대응하는 제2 세트의 모델 유닛들을 식별하는 단계; 상기 제1 세트의 모델 유닛들과 상기 제2 세트의 모델 유닛들을 비교하는 단계 - 상기 비교에 의해 일 세트의 하나 또는 그 이상의 변경된(changed) 모델 유닛들과 일 세트의 하나 또는 그 이상의 공통 모델 유닛들을 얻음 -; 상기 소스 토폴로지 모델로부터 상기 공통 모델 유닛들에 대응하는 제1 세트의 자동화 단계 모델들(automation step models)을 검색하는 단계; 상기 변경된 모델 유닛들을 위해 상기 자산 라이브러리를 탐색하는 단계 - 상기 탐색에 의해 상기 변경된 모델 유닛들에 대응하는 제2 세트의 자동화 단계 모델들을 얻음 -; 및 상기 워크플로 모델에 상기 제1 및 제2 세트의 자동화 단계 모델들을 포함시키는 단계를 더 포함하는 방법을 제공한다.
본 발명은 상기 차를 만드는 단계에 의해 하나 또는 그 이상의 새로운 유닛들이 식별되며, 상기 새로운 유닛들은 상기 타겟 토폴로지 모델에서 발견되고 상기 소스 토폴로지 모델에서는 발견되지 않으며, 상기 방법은 상기 새로운 유닛들을 위해 상기 자산 라이브러리를 탐색하는 단계를 더 포함한다.
본 발명은 상기 솔루션의 일부를 배치하기 위한 연산이 상기 솔루션의 일부가 한 클라우드 벤더(cloud vendor)로부터 다른 클라우드 벤더로 포팅될 수 있도록 해주는 방법을 제공한다.
본 발명은 상기 솔루션의 일부를 배치하기 위한 연산이 보안 방화벽(security firewall)을 설정하는 방법을 제공한다.
본 발명은 상기 솔루션의 일부를 배치하기 위한 연산이 상기 타겟 플랫폼에서 상기 타겟 가상 이미지를 인스턴스화(instantiate)하는 방법을 제공한다.
본 발명은 상기 소스 플랫폼이 제1 세트의 하나 또는 그 이상의 컴퓨터 시스템들 상에서 실행되는 제1 하이퍼바이저이고, 상기 타겟 플랫폼은 제2 세트의 하나 또는 그 이상의 컴퓨터 시스템들상에서 실행되는 제2 하이퍼바이저이며, 제1 및 제2 하이퍼바이저들은 서로 다른 유형의 하이퍼바이저인 방법을 제공한다.
본 발명은 상기 소스 및 타겟 토폴로지 모델들 각각은 하나 또는 그 이상의 소프트웨어 애플리케이션 컴포넌트들, 미들웨어 소프트웨어 애플리케이션 컴포넌트, 및 게스트 운영체제 컴포넌트를 기술하는 메타데이터를 포함하는 방법을 제공한다.
본 발명은 상기 소스 및 타겟 토폴로지 모델들 각각과 함께 포함된 메타데이터는 하나 또는 그 이상의 가상 이미지 배치 파라미터들을 더 포함하고, 상기 소스 토폴로지 모델은 소스 클라우드에 대응하는 소스 구성 파라미터들(source configuration parameters) 및 소스 크리덴셜들과 소스 서비스 엔드포인트들(source credentials and source service endpoints)의 소스 토폴로지 모델 유닛들을 포함하고, 상기 타겟 토폴로지 모델은 타겟 클라우드에 대응하는 타겟 구성 파라미터들 및 타겟 크리덴셜들과 타겟 서비스 엔드포인트들((target credentials and target service endpoints)의 타겟 토폴로지 모델 유닛들을 포함하는 방법을 제공한다.
본 발명은 상기 소스 토폴로지 모델 유닛들의 각각을 소스 자동화 단계 모델과 연관(associating)시키는 단계 - 상기 소스 자동화 단계 모델은 상기 연관된 소스 토폴로지 모델 유닛을 배치하기 위해 사용되는 하나 또는 그 이상의 연산들을 상술함 -; 상기 타겟 토폴로지 모델 유닛들의 각각을 타겟 자동화 단계 모델과 연관시키는 단계 - 상기 타겟 자동화 단계 모델은 상기 연관된 타겟 토폴로지 모델 유닛을 배치하기 위해 사용되는 하나 또는 그 이상의 연산들을 상술함 -; 및 상기 타겟 자동화 단계 모델들의 각각을 상기 워크플로 모델에 저장하는 단계를 더 포함하는 방법을 제공한다.
본 발명은 상기 솔루션의 일부를 배치하기 위해 연산을 수행하는 단계가 멀티 테넌시(multi-tenancy)를 가능하게 해주는 방법을 제공한다.
본 발명은 상기 솔루션의 일부를 배치하기 위해 연산을 수행하는 단계가 다양한 워크로드들(varying workloads)을 가능하게 해주는 방법을 제공한다.
본 발명의 다른 실시 예에 따르면, 본 발명은 정보 처리 시스템(information handling system)을 제공하되, 상기 정보 처리 시스템은: 하나 또는 그 이상의 프로세서들; 상기 프로세서들 중 적어도 하나에 의해 액세스 가능한 메모리; 상기 프로세서들 중 적어도 하나에 의해 액세스 가능한 지속형 기억 매체; 상기 정보 처리 시스템을 컴퓨터 네트워크에 연결하는 네트워크 인터페이스 - 상기 네트워크 인터페이스는 상기 프로세서들의 적어도 하나에 의해 액세스 가능함 -; 및 상기 메모리에 저장되고 상기 프로세서들 중 적어도 하나에 의해 실행되는 일 세트의 명령들을 포함하되, 상기 명령들은: 토폴로지 차를 얻기 위해 소스 플랫폼과 연관된 소스 토폴로지 모델과 타겟 플랫폼과 연관된 타겟 토폴로지 모델의 차를 만드는 동작(action); 자산 라이브러리로부터 워크플로 모델 내의 연산을 획득하는 동작 - 상기 연산은 상기 토폴로지 차와 연관되고, 상기 자산 라이브러리의 적어도 일부는 상기 지속형 기억 매체에 저장됨 -; 및 솔루션의 적어도 일부를 배치하기 위해 상기 연산을 전송하는 동작 - 상기 솔루션의 배치된 일부는 상기 타겟 플랫폼과 호환 가능한 타겟 가상 이미지를 포함함 - 을 수행하기 위한 것이다.
본 발명은 상기 동작들이 상기 연산을 실행함으로써 상기 솔루션의 일부를 상기 타겟 플랫폼에 배치하는 동작을 더 포함하는 정보 처리 시스템을 제공한다.
본 발명은 상기 소스 플랫폼이 제1 클라우드이고 상기 타겟 플랫폼은 제2 클라우드인 정보 처리 시스템을 제공한다.
본 발명은 상기 동작들이 상기 타겟 플랫폼과 연관된 적어도 하나의 베이스 가상 이미지 메타데이터를 위해 메타데이터를 탐색하는 동작을 더 포함하는 정보 처리 시스템을 제공한다.
본 발명은 상기 동작들이 상기 탐색 동작에 응답하여 상기 자산 라이브러리에 저장된 메타데이터로부터 하나 또는 그 이상의 베이스 가상 이미지 기술들(base virtual image descriptions)을 검색하는 동작을 더 포함하는 정보 처리 시스템을 제공한다.
본 발명은 상기 소스 플랫폼은 제1 클라우드이고, 상기 타겟 플랫폼은 제2 클라우드이며, 상기 동작들은: 상기 자산 라이브러리로부터 상기 소스 플랫폼에 대응하는 제1 세트의 모델 유닛들을 검색하는 동작; 상기 자산 라이브러리로부터 상기 타겟 플랫폼에 대응하는 제2 세트의 모델 유닛들을 검색하는 동작 - 상기 차를 만드는 동작에 의해서 하나 또는 그 이상의 공통 모델 유닛들(common model units)과 하나 또는 그 이상의 다른 모델 유닛들(different model units)이 얻어짐 -; 상기 공통 모델 유닛들의 각각에 대응하는 제1 세트의 하나 또는 그 이상의 워크플로 단계들을 재사용하는 동작; 상기 자산 라이브러리로부터 하나 또는 그 이상의 상기 다른 모델 유닛들에 대응하는 제2 세트의 하나 또는 그 이상의 워크플로 단계들을 검색하는 동작; 및 상기 재사용된 제1 세트의 워크플로 단계들과 상기 검색된 제2 세트의 워크플로 단계들을 사용하여 상기 워크플로 모델을 생성하는 동작을 더 포함하는 정보 처리 시스템을 제공한다.
본 발명은 상기 동작들이: 상기 토폴로지 차를 상기 소스 토폴로지 모델과 상기 타겟 토폴로지 모델에 연관시키는 동작; 및 상기 토폴로지 차와 상기 연관들을 상기 자산 라이브러리에 패치로서 저장하는 동작을 더 포함하는 정보 처리 시스템을 제공한다.
본 발명은 상기 동작들이: 상기 소스 토폴로지 모델에 부분적으로 공통인 제2 소스 토폴로지 모델과 상기 타겟 플랫폼에 부분적으로 공통인 제2 타겟 플랫폼을 수신하는 동작; 상기 패치를 포함하여 하나 또는 그 이상의 패치들을 상기 자산 라이브러리에서 탐색하는 동작 - 상기 탐색은 상기 연관된 소스 토폴로지 모델을 포함함 -; 상기 탐색에 응답하여 상기 자산 라이브러리로부터 상기 패치를 검색하는 동작; 및 상기 제2 타겟 플랫폼과 연관된 제2 타겟 토폴로지를 얻기 위해 상기 검색된 패치를 제2 소스 토폴로지 모델에 적용하는 동작을 더 포함하는 정보 처리 시스템을 제공한다.
본 발명은 상기 동작들이: 상기 소스 플랫폼에 대응하는 제1 세트의 모델 유닛들을 식별하는 동작; 상기 타겟 플랫폼에 대응하는 제2 세트의 모델 유닛들을 식별하는 동작; 제1 세트의 모델 유닛들과 제2 세트의 모델 유닛들을 비교하는 동작 - 상기 비교에 의해 일 세트의 하나 또는 그 이상의 변경된 모델 유닛들과 일 세트의 하나 또는 그 이상의 공통 모델 유닛들이 얻어짐 -; 상기 소스 토폴로지 모델로부터 상기 공통 모델 유닛들에 대응하는 제1 세트의 자동화 단계 모델들(automation step models)을 검색하는 동작; 상기 변경된 모델 유닛들을 위해 상기 자산 라이브러리를 탐색하는 동작 - 상기 탐색에 의해 상기 변경된 모델 유닛들에 대응하는 제2 세트의 자동화 단계 모델들이 얻어짐 -; 및 상기 워크플로 모델에 제1 및 제2 세트의 자동화 단계 모델들을 포함시키는 동작을 더 포함하는 정보 처리 시스템을 제공한다.
본 발명은 상기 차를 만드는 동작에 의해 하나 또는 그 이상의 새로운 유닛들이 식별되며, 상기 새로운 유닛들은 상기 타겟 토폴로지 모델에서 발견되고 상기 소스 토폴로지 모델에서는 발견되지 않는 정보 처리 시스템을 제공하며, 상기 동작들은 상기 새로운 유닛들을 위해 상기 자산 라이브러리를 탐색하는 동작을 더 포함한다.
본 발명은 상기 소스 플랫폼은 제1 세트의 하나 또는 그 이상의 컴퓨터 시스템들상에서 실행되는 제1 하이퍼바이저이고, 상기 타겟 플랫폼은 제2 세트의 하나 또는 그 이상의 컴퓨터 시스템들상에서 실행되는 제2 하이퍼바이저이며, 상기 제1 및 제2 하이퍼바이저들은 서로 다른 유형의 하이퍼바이저들인 정보 처리 시스템을 제공한다.
본 발명은 상기 소스 및 타겟 토폴로지 모델들 각각은 하나 또는 그 이상의 소프트웨어 애플리케이션 컴포넌트들, 미들웨어 소프트웨어 애플리케이션 컴포넌트, 및 게스트 운영체제 컴포넌트를 기술하는 메타데이터를 포함하는 정보 처리 시스템을 제공한다.
본 발명은 상기 소스 및 타겟 토폴로지 모델들 각각에 포함된 메타데이터는 하나 또는 그 이상의 가상 이미지 배치 파라미터들을 더 포함하고, 상기 소스 토폴로지 모델은 소스 클라우드에 대응하는 소스 구성 파라미터들 및 소스 크리덴셜들과 소스 서비스 엔드포인트들의 소스 토폴로지 모델 유닛들을 포함하고, 상기 타겟 토폴로지 모델은 타겟 클라우드에 대응하는 타겟 구성 파라미터들 및 타겟 크리덴셜들과 타겟 서비스 엔드포인트들의 타겟 토폴로지 모델 유닛들을 포함하는 정보 처리 시스템을 제공한다.
본 발명은 상기 동작들이: 상기 소스 토폴로지 모델 유닛들 각각을 소스 자동화 단계 모델과 연관시키는 동작 - 상기 소스 자동화 단계 모델은 상기 연관된 소스 토폴로지 모델 유닛을 배치하기 위해 사용되는 하나 또는 그 이상의 연산들을 상술함 -; 상기 타겟 토폴로지 모델 유닛들 각각을 타겟 자동화 단계 모델과 연관시키는 동작 - 상기 타겟 자동화 단계 모델은 상기 연관된 타겟 토폴로지 모델 유닛을 배치하기 위해 사용되는 하나 또는 그 이상의 연산들을 상술함 -; 및 상기 타겟 자동화 단계 모델들 각각을 상기 워크플로 모델에 저장하는 동작을 더 포함하는 정보 처리 시스템을 제공한다.
본 발명의 또 다른 실시 예에 따라, 본 발명은 정보 처리 시스템에 의해 구현되는 방법을 제공하며, 상기 방법은: 타겟 플랫폼에 배치될 토폴로지 모델 유닛을 획득하는 단계; 상기 획득된 토폴로지 모델 유닛과 연관된 선택된 자동화 단계 모델을 위해 지속형 기억 매체에 저장된 자산 라이브러리에 저장되어 있는 복수의 자동화 단계 모델들을 탐색하는 단계 - 상기 탐색은 하나 또는 그 이상의 프로세서들에 의해 수행됨 -; 상기 자산 라이브러리로부터 하나 또는 그 이상의 배치 연산들(deployment operations)을 획득하는 단계 - 상기 획득된 배치 연산들은 상기 선택된 자동화 단계 모델과 연관됨 -; 및 상기 토폴로지 모델 유닛을 상기 타겟 플랫폼에 배치하기 위해 상기 획득된 배치 연산들을 수행하는 단계를 포함한다.
본 발명이 제공하는 방법에서 상기 탐색 단계는: 상기 복수의 자동화 단계 모델들로부터 일 세트의 자동화 단계 모델들을 식별하는 단계 - 상기 일 세트의 자동화 단계 모델들의 각각은 상기 토폴로지 모델 유닛과 연관됨 -; 및 상기 일 세트의 식별된 자동화 단계 모델들을 일 세트의 기준(criteria)과 비교하는 단계 - 상기 비교 결과 상기 선택된 자동화 단계 모델이 식별됨 - 를 더 포함한다.
본 발명은 정보 처리 시스템에 의해 실행되는 방법을 제공하되, 상기 방법은: 프로세스를 이용하여 지속형 기억 매체로부터 소스 이미지 메타데이터를 검색하는 단계 - 상기 소스 이미지 메타데이터는 소스 플랫폼과 연관된 소스 이미지에 대응함 -; 상기 프로세서에 의해서 상기 검색된 소스 이미지 메타데이터를 타겟 플랫폼과 연관된 하나 또는 그 이상의 이용 가능한 가상 이미지들에 대응하는 하나 또는 그 이상의 이용 가능한 이미지 메타데이터와 비교하는 단계; 상기 비교에 근거하여, 상기 소스 이미지 메타데이터에 가장 호환 가능한 상기 이용 가능한 이미지 메타데이터 중 하나를 식별하는 단계; 및 상기 식별된 이용 가능한 이미지 메타데이터에 대응하는 상기 이용 가능한 가상 이미지를 상기 타겟 플랫폼과 호환 가능한 타겟 가상 이미지로서 사용하는 단계를 포함한다.
본 발명이 제공하는 방법에서, 상기 소스 이미지 메타데이터는 소스 토폴로지 모델과 연관되고 상기 타겟 플랫폼은 타겟 토폴로지 모델과 연관된다.
본 발명이 제공하는 방법에서, 상기 소스 이미지 메타데이터와 상기 이용 가능한 이미지 메타데이터는 소프트웨어 컴포넌트 메타데이터를 포함한다.
본 발명이 제공하는 방법은 상기 사용하는 단계 전에 상기 이용 가능한 가상 이미지를 향상 시키는 단계(enhancing )를 더 포함한다.
본 발명이 제공하는 방법에서, 상기 향상시키는 단계는 상기 이용 가능한 가상 이미지에 포함된 하나 또는 그 이상의 소프트웨어 컴포넌트들을 업데이트하는 단계 (updating)를 더 포함한다.
본 발명이 제공하는 방법에서, 상기 업데이트하는 단계는 상기 소프트웨어 컴포넌트들 중 하나를 추가하는 단계(adding )를 포함한다.
본 발명의 또 다른 실시 예에 따라, 본 발명이 제공하는 방법은 토폴로지 차(topology difference)와 연관된 연산을 획득하는 단계 - 상기 토폴로지 차는 소스 플랫폼과 연관된 소스 토폴로지 모델과 타겟 플랫폼과 연관된 타겟 토폴로지 모델 사이의 차임 -; 및 상기 획득된 연산을 실행함으로써 솔루션의 적어도 일부를 배치하는 단계 - 상기 솔루션의 배치된 일부는 상기 타겟 플랫폼과 호환 가능한 타겟 이미지를 포함함 - 를 포함한다.
본 발명이 제공하는 방법에서, 상기 소스 플랫폼은 제1 클라우드이고, 상기 타겟 플랫폼은 제2 클라우드이며, 상기 솔루션의 적어도 일부를 배치하는 단계는 상기 솔루션의 적어도 일부를 제1 클라우드로부터 제2 클라우드로 포팅하는 단계를 포함한다.
본 발명이 제공하는 방법에서, 상기 소스 플랫폼은 사설 클라우드이고, 상기 타겟 플랫폼은 공공 클라우드이며, 상기 솔루션의 적어도 일부를 배치하는 단계는 상기 솔루션을 사설 클라우드로부터 공공 클라우드로 배치하는 단계를 포함한다.
이제 첨부하는 도면들을 참조하여 단지 예시의 방식으로 본 발명의 실시 예들을 기술할 것이다.
도 1은 본 발명의 바람직한 실시 예에 따라서, 클라우드 컴퓨팅 환경에서 노드로서 기능하고(serve as a node), 또한 본 명세서에 기술된 방법들이 그 안에서 구현될 수 있는 정보 처리 시스템의 실시 예의 블록 다이어그램이다.
도 2는 본 발명의 바람직한 실시 예에 따라서, 본 명세서에 기술된 방법들이 네트워크 환경에서 작동하는 매우 다양한 정보 처리 시스템들 상에서 수행될 수 있다는 것을 예시하기 위해 도 1에 도시된 정보 처리 시스템 환경을 확장(extension)한 실시 예이다.
도 3은 본 발명의 바람직한 실시 예에 따라서, 클라우드 컴퓨팅 환경의 실시 예를 묘사하는 다이어그램이다.
도 4는 본 발명의 바람직한 실시 예에 따라서, 상기 클라우드 컴퓨팅 환경에 의해 제공되는 일 세트의 기능성 추상층들(functional abstraction layers)의 실시 예를 묘사하는 다이어그램이다.
도 5는 본 발명의 바람직한 실시 예에 따라서, 솔루션을 소스로부터 타겟 플랫폼으로 포팅하는 데 사용되는, 자산 라이브러리에 저장된 소스 및 타겟 토폴로지 모델들과 자동화 단계 모델들의 실시 예의 다이어그램이다.
도 6은 본 발명의 바람직한 실시 예에 따라서, 배치 워크플로들(deployment workflows)을 생성하기 위하여 토폴로지 모델 유닛들을 이용하여 상기 소스 및 타겟 토폴로지 모델들 사이의 공통인 것들(commonalities)과 차들(differences)을 찾는데 취해지는 단계들을 도시하는 흐름도이다.
도 7은 본 발명의 바람직한 실시 예에 따라서, 클라우드 환경에 배치되는 예시 배치 워크플로(example deployment workflow)를 생성하기 위해 사용되는 자동화 단계 모델들의 실시 예를 도시하는 다이어그램이다.
도 8은 본 발명의 바람직한 실시 예에 따라서, 토폴로지 모델을 생성하기 위해 취해지는 단계들을 도시하는 흐름도이다.
도 9는 본 발명의 바람직한 실시 예에 따라서, 자동화 단계 모델들을 생성하기 위해 취해지는 단계들을 도시하는 흐름도이다.
도 10은 본 발명의 바람직한 실시 예에 따라서, 입력 파라미터들을 지정하고(specify) 상기 토폴로지 모델에 저장하기 위해 취해지는 단계들을 도시하는 흐름도이다.
도 11은 본 발명의 바람직한 실시 예에 따라서, 상기 클라우드 기반 애플리케이션(the cloud based application)의 실행 인스턴스(running instance)를 전부(fully) 지정하고 배치하기 위해서 취해지는 단계들을 도시하는 흐름도이다.
도 12는 본 발명의 바람직한 실시 예에 따라서, 상기 자산 라이브러리에 저장된 자원들을 재사용하고 상기 솔루션을 상기 재사용된 자원들을 이용하여 타겟 클라우드 환경에 배치하기 위해서 취해지는 단계들을 도시하는 흐름도이다.
도 13은 본 발명의 바람직한 실시 예에 따라서, 요청에 일치하는 기존 토폴로지 유닛들을 찾고, 클라우드 고유 모델 유닛들을 교체하고, 새로운 그리고 변경된 모델 유닛들을 상기 자산 라이브러리에 저장하기 위해서 취해지는 단계들을 도시하는 흐름도이다.
도 14는 본 발명의 바람직한 실시 예에 따라서, 배치 워크플로 모델을 생성하기 위해서 취해지는 단계들을 도시하는 흐름도이다.
도 15는 본 발명의 바람직한 실시 예에 따라서, 상기 모델로부터 배치 워크플로를 생성하고 배치 엔진을 이용하여 배치하기 위해서 취해지는 단계들을 도시하는 흐름도이다.
도 16은 본 발명의 바람직한 실시 예에 따라서, 상기 모델로부터 배치 워크플로를 생성하고 복합 솔루션(composite solution)을 다수의 클라우드 기반 환경들에 배치하기 위해서 취해지는 단계들을 도시하는 흐름도이다.
편의를 위해서, 본 발명의 상세한 기술은 다음의 두 부분들로 나눈다. 제1부: 클라우드 컴퓨팅의 정의, 제2부: 상세한 구현
제1부: 클라우드 컴퓨팅의 정의(Cloud Computing Definitions)
다음의 정의들 중 많은 부분은 피터 멜(Peter Mell)과 팀 그랜스(Tim Grance)의 2009년 10월 7일자 " 클라우드 컴퓨팅에 관한 NIST의 실무 정의 초안(Draft NIST Working Definition of Cloud Computing)"에서 인용된 것이다.
클라우드 컴퓨팅은 최소한의(minimal) 관리 노력 또는 서비스 제공자 인터랙션으로 빠르게 프로비젼되고(provisioned) 릴리스될(released) 수 있는 구성 가능한(configurable) 컴퓨팅 자원들 (예를 들면, 네트워크, 서버, 기억장치, 애플리케이션, 및 서비스)의 공유 풀(shared pool)에 편리한 온디맨드 네트워크 엑세스(on-demand network access)를 가능하게 해주는 모델이다. 이 클라우드 모델은 가용성(availability)을 증진하며 적어도 다섯 가지의 특성(characteristics), 적어도 세 가지의 서비스 모델(service models), 및 적어도 네 가지의 배치 모델(deployment models)로 구성된다.
특성들은 다음과 같다:
온디맨드 셀프-서비스(on-demand self-service): 소비자(consumer)는 각 서비스 제공자와의 인적 상호작용(human interaction)이 필요 없이 필요한 만큼 자동으로, 서버 시간(server time)과 네트워크 저장(network storage)과 같은 컴퓨팅 능력들(computing capabilities)을 일방적으로(unilaterally) 프로비전(provision)할 수 있다.
광역 네트워크 액세스(broad network access): 능력들(capabilities)은 네트워크를 통해서 이용 가능하고 이종의(heterogeneous) 얇은 또는 두꺼운 클라이언트 플랫폼들(thin or thick client platforms) (예를 들면, 이동 전화기, 랩톱 컴퓨터, 및 PDA)에 의한 사용을 장려하는(promote) 표준 메커니즘들을 통해 액세스된다.
자원 풀링(resource pooling): 제공자의 컴퓨팅 자원들은 소비자의 요구에 따라서 동적으로 할당 및 재할당되는 서로 다른 물리적 및 가상 자원들을 가지고, 멀티 테넌트 모델(multi-tenant model)을 이용하여 다수의 소비자들에게 서비스하기 위해 공유된다(pooled). 고객(customer)은 제공되는 자원들의 정확한 위치(location)에 관한 제어(control) 혹은 지식(knowledge)을 일반적으로 갖지 않지만 더 높은 수준의 추상 관념(abstraction) (예를 들면, 국가, 도, 또는 데이터센터)에서의 위치는 명시할 수도 있다는 점에서 위치 독립성(location independence)의 의미가 있다. 자원들의 예로는 스토리지(storage), 프로세싱(processing), 메모리(memory), 네트워크 대역폭(network bandwidth), 및 가상 머신(virtual machines)이 포함된다.
빠른 탄력성(rapid elasticity): 능력들은 빨리 스케일 아웃(scale out)되도록 신속하게 그리고 탄력적으로, 그리고 어떤 경우에는 자동적으로 프로비전되고, 빨리 스케일 인(scale in) 되도록 신속하게 릴리스될 수 있다. 소비자에게 있어서, 프로비저닝을 위해 이용 가능한 능력들은 종종 무제한적(unlimited)으로 보이며 원하는 시간에 원하는 양만큼 구매할 수 있다.
도수제 서비스(measured service): 클라우드 시스템들은 서비스 유형 (예를 들면, 저장, 처리, 대역폭, 및 활성 사용자 계정)에 적절한 일정한 수준의 추상관념에서 계량 능력(metering capability)을 레버리징(leveraging)함으로써 자원 사용을 자동으로 제어 및 최적화한다. 자원 사용은 모니터되고, 제어되고 보고될 수 있어 이용 서비스의 제공자와 소비자 둘 모두에게 투명성을 제공한다.
서비스 모델들은 다음과 같다:
클라우드 소프트웨어 서비스(Cloud SaaS): 소비자에게 제공되는 능력은 클라우드 인프라스트럭처 상에서 실행되는 제공자의 애플리케이션들을 사용하는 것이다. 상기 애플리케이션들은 웹 브라우저 (예를 들면, 웹기반 이메일)와 같은 얇은 클라이언트 인터페이스를 통해서 여러 클라이언트 디바이스들로부터 액세스될 수 있다. 소비자는 네트워크, 서버, 운영체제, 저장, 또는 심지어 개인의 애플리케이션 기능들을 포함하는 하위 클라우드 인프라스트럭처(underlying cloud infrastructure)를 관리하거나 제어하지 않으며, 제한된 사용자-고유의(user-specific) 애플리케이션 구성 설정은 예외적으로 가능하다.
클라우드 플랫폼 서비스(Cloud PaaS): 소비자에게 제공되는 능력은 제공자에 의해 지원되는 프로그래밍 언어들과 도구들을 이용하여 생성된 소비자-생성(consumer-created) 또는 획득(acquired) 애플리케이션들을 클라우드 인프라스트럭처에 배치하는 것이다. 소비자는 네트워크, 서버, 운영체제, 또는 스토리지를 포함하는 하위 클라우드 인프라스트럭처(underlying cloud infrastructure)를 관리하거나 제어하지는 않지만, 상기 배치된 애플리케이션들에 대한 제어는 가지며 그리고 애플리케이션 호스팅 환경 구성들에 대한 제어가 가능할 수도 있다.
클라우드 인프라스트럭처 서비스(Cloud IaaS): 소비자에게 제공되는 능력은 프로세싱, 스토리지, 네트워크, 및 기타 기본 컴퓨팅 자원들을 프로비전하는 것이며, 소비자는 여기에서 임의의 소프트웨어를 배치하고 실행할 수 있으며, 이 소프트웨어는 운영체제와 애플리케이션을 포함할 수 있다. 소비자는 하부 클라우드 인프라스트럭처를 관리하거나 제어하지는 않지만 운영체제, 스토리지, 배치된 애플리케이션에 대한 제어는 가지며, 선택 네트워킹 컴포넌트들 (예를 들면, 호스트 방화벽들)에 관하여 제한된 제어를 가질 수도 있다.
배치 모델들은 다음과 같다:
사설 클라우드(private cloud): 클라우드 인프라스트럭처는 오직 어떤 기관(an organization)을 위해서만 운영된다. 상기 기관 또는 제3자에 의해서 관리될 수 있고 기관 내부(on-premises) 또는 외부(off-premises)에 존재할 수 있다. 적절한 보안 메커니즘(security mechanisms in place)을 갖고 있다. 적절한 보안 메커니즘의 예는 방화벽(firewall)이다. 다른 적절한 보안 메커니즘의 예는 가상 사설망 (VPN)이다.
커뮤니티 클라우드(community cloud): 클라우드 인프라스트럭처는 여러 기관들에 의해 공유되며 공유된 관심사들 (예를 들면, 미션(mission), 보안 요건들, 정책, 및 준수사항들(compliance considerations))을 갖는 특정한 커뮤니티를 지원한다. 상기 기관들 또는 제3자에 의해서 관리될 수 있고 커뮤니티 내부 또는 외부에 존재할 수 있다.
공공 클라우드(public cloud): 클라우드 인프라스트럭처는 일반 공중 또는 다수의 산업 그룹에 이용 가능하고 클라우드 서비스를 판매하는 기관이 소유한다.
하이브리드 클라우드(hybrid cloud): 클라우드 인프라스트럭처는 둘 또는 그 이상의 클라우드 (사설 클라우드, 커뮤니티 클라우드, 또는 공공 클라우드)로 구성되는데, 여기서 이들 클라우드들은 고유한 엔티티들(unique entities)은 유지(remain)하지만 데이터 및 애플리케이션의 포팅능력(portability) (예를 들면, 클라우드들 간에 부하 밸런싱(load-balancing)을 위한 클라우드 버스팅(cloud bursting))을 발휘할 수 있는 표준화된 혹은 소유권이 있는 기술(standardized or proprietary technology)에 의해서 함께 결합되어있다(bound together).
클라우드 컴퓨팅 환경은 무국적성(statelessness), 낮은 결합도(low coupling), 모듈성(modularity), 및 시멘틱 상호운용성(semantic interoperability)에 초점을 맞춘 서비스이다.
가상 이미지는 파일 시스템 내의 가상 머신을 나타내며 가상 이미지가 가상 머신으로 실행될 때 필요한 구성 파라미터들을 포함할 수 있다. 가상 이미지는 하이퍼바이저라 불리는 소프트웨어 컴포넌트에 의해 실행될 수 있는데, 이 하이퍼바이저는 물리적 머신(physical machine) 내에 위치될 수 있고 상기 물리적 머신의 운영체제를 보조할 수 있다(supplement). 가상 이미지는 또한 머신 이미지(machine image) 또는 가상 머신 이미지(virtual machine image)로 불릴 수도 있다.
가상 머신은 물리적 머신처럼 프로그램들을 실행하는 머신의 소프트웨어 구현(software implementation)이다.
“이미지”는 컴퓨터 시스템과 그 컴퓨터 시스템 상에서 실행되는 소프트웨어의 상태(state)이다. 하이퍼바이저 시스템에서, 이미지는 “가상 이미지”일 수 있는데, 이는 하이퍼바이저가 컴퓨터 시스템 하드웨어에 대한 액세스를 제어하기 때문이다. 즉 게스트 운영체제 또는 파티션의 관점에서 보면, 사실상 하이퍼바이저가 실제로 컴퓨터 하드웨어 컴포넌트들에 대한 액세스를 제어하고 다수의 파티션들 (예를 들면 게스트 운영체제 등) 사이에서 컴퓨터 하드웨어 자원들의 공유를 관리하고 있음에도 게스트 운영체제/파티션이 전체 컴퓨터 시스템을 제어하는 것처럼 보인다.
제2부: 상세한 구현(Detailed Implementation)
이 기술 분야에서 통상의 지식을 가진 자는 인식할 수 있는 바와 같이, 상세한 구현은 시스템, 방법 또는 컴퓨터 프로그램 제품으로 실시될 수 있다. 따라서, 실시 예들은 완전히 하드웨어 실시 예, 완전히 소프트웨어 실시 예 (펌웨어, 상주 소프트웨어, 마이크로 코드 등 포함) 또는 소프트웨어와 하드웨어 실시 예들을 결합한 실시 예의 형태를 취할 수 있으며, 이들은 모두 일반적으로 본 명세서에서는 “회로”, “모듈” 또는 “시스템”으로 불릴 수 있다. 또한, 실시 예들은 컴퓨터 판독가능 프로그램 코드를 내장한 하나 또는 그 이상의 컴퓨터 판독가능 매체(들)에 내장된 컴퓨터 프로그램 제품의 형태를 취할 수도 있다.
하나 또는 그 이상의 컴퓨터 판독가능 매체(들)의 어떤 조합이든 사용될 수 있다. 컴퓨터 판독가능 매체는 컴퓨터 판독가능 신호 매체(computer readable signal medium) 또는 컴퓨터 판독가능 기억 매체(computer readable storage medium)일 수 있다. 컴퓨터 판독가능 기억 매체는 예를 들면, 전자, 자기, 광학, 전자기, 적외선 혹은 반도체 시스템, 장치(apparatus)나 디바이스, 또는 전술한 것들의 적합한 조합일 수 있다(하지만 이에 한정되지는 않는다). 컴퓨터 판독가능 기억 매체의 더 구체적인 예들 (포괄적인 목록은 아님)로는: 하나 또는 그 이상의 와이어들을 가진 전기적 접속체, 휴대용 컴퓨터 디스켓, 하드 디스크, RAM(random access memory), ROM(read-only memory), 소거 및 프로그램 가능 판독 전용 메모리 (EPROM 또는 플래시 메모리), 광섬유, 휴대용 콤팩트 디스크 ROM (CD-ROM), 광학 저장 디바이스, 자기 저장 디바이스, 또는 전술한 것들의 적합한 조합을 포함할 수 있다. 이 문서의 맥락으로 볼 때, 컴퓨터 판독가능 기억 매체는 유형의 매체일 수 있으며, 이 매체는 명령 실행 시스템, 장치, 또는 디바이스에 의해서 또는 이들이 연결되어 사용할 프로그램을 포함하거나 저장할 수 있다.
컴퓨터 판독가능 신호 매체는 컴퓨터 판독가능 프로그램 코드가, 예를 들어, 베이스밴드(baseband)에 내장되거나 반송파(carrier wave)의 부분으로서 내장된, 전파된 데이터 신호(propagated data signal)를 포함할 수 있다. 이러한 전달 신호는 전자기, 광학, 또는 이들의 적합한 조합을 포함하여 (그러나 이에 한정되지 않음) 여러 가지 형태를 취할 수 있다. 컴퓨터 판독가능 신호 매체는 컴퓨터 판독가능 기억 매체가 아닌, 명령 실행 시스템, 장치나 디바이스에 의해서 또는 이들이 연결되어, 사용할 프로그램을 통신하고(communicate), 전파하고(propagate), 또는 이송(transport)할 수 있는 컴퓨터 판독가능 매체일 수 있다.
컴퓨터 판독가능 매체에 내장된 프로그램 코드는 무선, 유선, 광섬유 케이블, RF 등, 또는 전술한 것들의 적합한 조합을 포함하여 (그러나 이에 한정되지는 않음) 적절한 매체를 이용하여 전송될 수 있다.
연산들을 실행할 컴퓨터 프로그램 코드는 자바(Java), 스몰토크(Smalltalk), C++ 또는 그와 유사한 것과 같은 객체 지향 프로그래밍 언어와 “C” 프로그래밍 언어 또는 그와 유사한 프로그래밍 언어들과 같은 종래의 절차적 프로그래밍 언어들을 포함하여 하나 또는 그 이상의 프로그래밍 언어들의 임의 조합들로 작성될 수 있다. 상기 프로그램 코드는 전부 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형의 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서와 부분적으로 원격 컴퓨터상에서 또는 전부 원격 컴퓨터나 서버상에서 실행될 수 있다. 상기 마지막 경우에, 원격 컴퓨터는 어떤 유형이든 네트워크를 통해서 사용자의 컴퓨터와 접속될 수 있고, 상기 네트워크에는 근거리 통신망(LAN) 또는 광역 통신망(WAN)이 포함되며, 또는 상기 접속은 (예를 들면, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터로 연결될 수도 있다.
실시 예들은 방법들, 장치들 (시스템들) 및 컴퓨터 프로그램 제품들의 흐름 예시도 및/또는 블록 다이어그램들을 참조하여 이하 기술된다. 흐름 예시도들 및/또는 블록 다이어그램들의 각각의 블록, 및 흐름 예시도들 및/또는 블록 다이어그램들 내의 블록들의 조합들은 컴퓨터 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다. 이 컴퓨터 프로그램 명령들은, 컴퓨터의 프로세서 또는 기타 프로그램가능 데이터 처리 장치를 통하여 실행되는 상기 명령들이 상기 흐름도 및/또는 블록 다이어그램 블록 또는 블록들에서 지정된(specified) 기능들/동작들(functions/acts)을 구현하는 수단(means)을 생성할 수 있도록, 머신(a machine)을 만들기 위해 범용 컴퓨터, 특별 목적 컴퓨터, 또는 기타 프로그램가능 데이터 처리 장치(programmable data processing apparatus)의 프로세서에 제공될 수 있다.
이 컴퓨터 프로그램 명령들은 또한 컴퓨터 판독가능 매체에 저장될 수 있으며, 상기 명령들은 컴퓨터, 기타 프로그램가능 데이터 처리 장치 또는 기타 디바이스들에 특정한 방식으로 기능하도록 지시할 수 있다, 예를 들어 상기 컴퓨터 판독가능 매체에 저장된 상기 명령들이 흐름도 및/블록 다이어그램 블록 또는 블록들에서 지정된 기능들/동작들을 구현하는 명령들을 포함하는 제품(an article of manufacture)을 생산하도록 할 수 있다.
상기 컴퓨터 프로그램 명령들 (기능기술자료(functional descriptive material))은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치, 또는 기타 디바이스들에 로드되어 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치상에서 수행되는 일련의 연산 단계들(operational steps)이 컴퓨터 구현 프로세스(computer implemented process)를 생산하도록 할 수 있다. 예를 들어 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치상에서 실행되는 명령들이 상기 흐름도 및/또는 블록 다이어그램 또는 블록들에서 지정된 기능들/동작들을 구현하는 프로세스들을 제공하도록 할 수 있다.
여러 실시 예들에 대한 철저한 이해를 제공하기 위해 이어지는 기술과 도면들에서 특정한 구체적 세부사항들이 기술된다. 그러나 흔히 컴퓨팅과 소프트웨어 기술과 연관되어 특정하게 잘 알려진 세부사항들은, 불필요하게 여러 가지 실시 예들을 애매하게 만드는 것을 피하기 위해, 이어지는 명세서에서는 기술되지 않는다. 또한, 이 기술 분야에서 통상의 지식을 가진 자는 아래에 기술된 하나 또는 그 이상의 세부사항들이 없이도 다른 실시 예들을 실시할 수 있다는 것을 이해할 수 있을 것이다. 마지막으로, 여러 실시 예들이 이어지는 명세서에서 단계들과 순서들을 참조하여 기술되지만, 이와 같은 기술은 실시 예들을 분명하게 구현하도록 제공하기 위한 것이며, 상기 단계들과 그 단계들의 순서들은 실시 예들을 실시하는데 필수적이라고 간주되어서는 안 된다. 그 대신, 다음은 하나 또는 그 이상의 실시 예들의 상세한 기술을 제공하기 위한 의도이며 한정하는 것으로 간주되어서는 안되고, 그보다는 여러 변형들(variations)은 상세한 기술 뒤에 오는 청구항들에 의해 정의되는 범위에 속할 수 있다.
다음의 상세한 기술은 일반적으로 상기 기술된 바와 같이 발명의 내용을 따를 것이며, 필요에 따라 여러 실시 예들의 정의들을 더 기술할 것이다. 이러한 목적으로, 이 상세한 기술은 우선 일 실시 예와 연관된 소프트웨어 및/또는 하드웨어 기술들을 구현하는데 적합한 도 1의 컴퓨팅 환경의 예를 기술한다. 도 2에는 네트워크화된 환경의 실시 예가 기본 컴퓨팅 환경의 확장으로서, 다수의 개별 소자들 (multiple discrete devices) 간에 수행될 수 있는 최신(modern) 컴퓨팅 기술들을 강조하기 위해 예시된다.
도 1에는 클라우드 컴퓨팅 노드로서 기능할 수 있는 정보 처리 시스템의 실시 예의 개략도가 도시되어 있다. 클라우드 컴퓨팅 노드 (10)은 적합한 클라우드 컴퓨팅 노드의 한 예일 뿐이며 여기에 기술되는 용도 또는 기능의 범위에 대하여 어떤 한정을 하려는 것은 아니다. 따라서, 클라우드 컴퓨팅 노드 (10)은 상기 제1부에서 기술된 기능들 중 어느 것이든 구현하고 수행할 수 있다.
클라우드 컴퓨팅 노드 (10)에는 컴퓨터 시스템/서버 (12)가 있고, 이는 무수한 다른 범용 또는 특수 목적 컴퓨팅 시스템 환경들이나 구성들로 운용 가능하다. 컴퓨터 시스템/서버 (12)와 함께 사용하는데 적합할 수 있는 잘 알려진 컴퓨팅 시스템들, 환경들, 및/또는 구성들의 예들로는 퍼스널 컴퓨터 시스템들, 서버 컴퓨터 시스템들, 얇은 클라이언트들, 두꺼운 클라이언트들, 소형 또는 휴대용 디바이스들, 멀티프로세서 시스템들, 마이크로프로세서 기반 시스템들, 셋톱박스들(set top boxes), 프로그램 가능 가전제품, 네트워크 PC들, 미니컴퓨터 시스템들, 메인프레임 컴퓨터 시스템들, 및 상기 시스템들 또는 디바이스들 중 어느 것이든 포함하는 분산 클라우드 컴퓨팅 환경들이 포함된다(그러나 이에 한정되지는 않는다).
컴퓨터 시스템/서버 (12)는 컴퓨터 시스템에 의해서 실행되는 프로그램 모듈과 같은 컴퓨터 시스템 실행가능 명령들의 일반적인 맥락에서 기술될 수 있다. 일반적으로, 프로그램 모듈에는 특정한 태스크들을 수행하거나 특정한 추상 데이터 타입들(abstract data types)을 구현하는 루틴(routines), 프로그램(programs), 객체(objects), 컴포넌트, 논리, 데이터 구조 등등이 포함된다. 컴퓨터 시스템/서버 (12)는 통신망(communications network)을 통해 링크된 원격 처리 디바이스들(remote processing devices)에 의해 태스크들이 수행되는 분산 클라우드 컴퓨팅 환경들에서 실시될 수 있다. 분산 클라우드 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 기억 디바이스들을 포함하여 로컬 및 원격 컴퓨터 시스템 기억 매체들 둘 다에 위치할 수 있다.
도 1에 도시된 바와 같이, 클라우드 컴퓨팅 노드 (10) 내의 컴퓨터 시스템/서버 (12)는 범용 컴퓨팅 디바이스의 형태로 도시된다. 컴퓨터 시스템/서버 (12)의 컴포넌트들은 하나 또는 그 이상의 프로세서들 또는 처리장치들 (processing units) (16), 시스템 메모리 (28), 및 버스 (18) - 이 버스는 시스템 메모리 (28)을 포함하여 여러 시스템 컴포넌트들을 프로세서 (16)에 결합함 - 를 포함할 수 있다(그러나 이에 한정되지는 않는다).
버스 (18)은 하나 또는 그 이상의 몇 가지 유형의 버스 구조들을 나타내며, 메모리 버스 또는 메모리 제어기(memory controller), 주변 장치 버스(peripheral bus), 가속 그래픽 포트(accelerated graphics port), 및 다양한 버스 아키텍처들을 사용하는 프로세서 또는 로컬 버스(a processor or local bus)가 이에 포함된다. 한정이 아닌 예시의 방식으로써, 이러한 아키텍처들은 산업 표준 아키텍처(Industry Standard Architecture, ISA) 버스, 마이크로 채널 아키텍처(Micro Channel Architecture, MCA)버스, 강화 ISA(EISA) 버스, 비디오 전자공학 표준 위원회(Video Electronics Standards Association, VESA) 로컬 버스, 및 PCI(Peripheral Component Interconnects) 버스를 포함한다.
컴퓨터 시스템/서버 (12)는 통상적으로 여러 가지 컴퓨터 시스템 판독가능 매체(media)를 포함한다. 이러한 매체는 컴퓨터 시스템/서버 (12)에 의해 액세스될 수 있는 이용 가능한 모든 매체가 될 수 있고, 휘발성 및 비휘발성 매체(volatile and non-volatile media), 이동식 및 비이동식 매체(removable and non-removable media) 모두를 포함한다.
시스템 메모리 (28)은 RAM(random access memory) (30) 및/또는 캐시 메모리 (32)와 같은 휘발성 메모리의 형태로 컴퓨터 시스템 판독가능 매체를 포함할 수 있다. 컴퓨터 시스템/서버 (12)는 다른 이동식/비이동식, 휘발성/비휘발성 컴퓨터 시스템 기억 매체를 더 포함할 수 있다. 단지 예시로써 들자면, 비이동식 비휘발성 자기 매체로부터 읽고 그 매체에 쓸 수 있도록 하드 디스크 드라이브 (34)가 제공될 수 있다(이는 도시되어 있지 않으며 통상적으로 “하드 드라이브”로 불림). 도시되지는 않았지만, 이동식 비휘발성 자기 디스크 (예를 들면, “플로피 디스크”)로부터 읽고 그 디스크에 쓸 수 있는 자기 디스크와, CD-ROM, DVD-ROM 또는 기타 광학 매체와 같은 이동식 비휘발성 광학 디스크도 제공될 수 있다. 이러한 경우에, 각각은 하나 또는 그 이상의 데이터 매체 인터페이스들(data media interfaces)에 의해 버스 (18)에 연결될 수 있다. 아래에 더 묘사하고 기술하는 바와 같이, 메모리 (28)은 일 세트의 (예를 들면, 적어도 하나의) 프로그램 모듈들 - 이 프로그램 모듈들은 여기에 기술된 기능들을 수행하도록 구성됨 - 을 가진 적어도 하나의 프로그램 제품을 포함할 수 있다.
일 세트의 (적어도 하나의) 프로그램 모듈들 (42)를 가진 프로그램/유틸리티 (40)가 메모리 (28)에 저장될 수 있고 이는 한 예이며 이에 한정되지 않으며 또한 운영체제, 하나 또는 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터도 저장될 수 있다. 운영체제, 하나 또는 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터 또는 이들의 일부 조합의 각각은 네트워킹 환경의 구현(implementation)을 포함할 수 있다. 프로그램 모듈들 (42)는 일반적으로 여기에 기술된 바와 같은 기능들 및/또는 방법들(methodologies)을 수행한다.
컴퓨터 시스템/서버 (12)는 또한 키보드, 포인팅 디바이스, 디스플레이 (24) 등과 같은 하나 또는 그 이상의 외부 디바이스들 (14); 사용자가 컴퓨터 시스템/서버 (12)와 인터랙트 할 수 있게 해주는 하나 또는 그 이상의 디바이스들; 및/또는 컴퓨터 시스템/서버 (12)가 하나 또는 그 이상의 다른 컴퓨팅 디바이스들과 통신할 수 있도록 해주는 디바이스들 (예를 들면, 네트워크 카드, 모뎀 등)과 통신할 수 있다. 이러한 통신은 I/O 인터페이스들 (22)를 통해서 이루어질 수 있다. 또한, 컴퓨터 시스템/서버 (12)는 근거리 통신망(LAN), 일반 광역 통신망 (WAN), 및/또는 공중망(public network) (예를 들면, 인터넷)과 같은 통신망들과 네트워크 어댑터 (20)을 통해서 통신할 수 있다. 도시된 바와 같이, 네트워크 어댑터 (20)은 버스 (18)을 통해서 컴퓨터 시스템/서버 (12)의 다른 컴포넌트들과 통신한다. 도시되지는 않았지만, 다른 하드웨어 및/또는 소프트웨어 컴포넌트들도 컴퓨터 시스템/서버 (12)와 함께 사용될 수 있다는 것을 이해할 필요가 있다. 그 예로는 마이크로코드, 디바이스 드라이버, 리던던트 처리 장치(redundant processing units), 외부 디스크 드라이브 어레이, RAID 시스템, 테이프 드라이브, 및 데이터 기록 저장 시스템(data archival storage systems) 등이 포함된다(그러나 이에 한정되지는 않는다).
도 2는 일 실시 예에 따른 네트워크 환경에서 동작하는 매우 다양한 정보 처리 시스템들 상에서 본 명세서에 기술된 방법들이 수행될 수 있다는 것을 보여주기 위해 도 1에 도시된 정보 처리 시스템 환경을 확장(extension)한 것이다. 정보 처리 시스템의 유형은 핸드헬드 컴퓨터/이동 전화기 (210)와 같은 소형 핸드헬드 디바이스부터 메인프레임 컴퓨터 (270)과 같은 대형 메인프레임 시스템까지 다양하다. 핸드헬드 컴퓨터 (210)의 예로는 개인 정보 단말기 (PDA)와, MP3 플레이어, 휴대용 텔레비전, 및 CD 플레이어와 같은 개인 엔터테인먼트 디바이스(personal entertainment device)가 포함된다. 정보 처리 시스템의 다른 예로는 펜 또는 태블릿 컴퓨터 (220), 랩톱 또는 노트북 컴퓨터 (230), 워크스테이션 (240), 개인 컴퓨터 시스템 (250), 및 서버 (260)가 포함된다. 도 2에 개별적으로 도시되지 않은 다른 유형의 정보 처리 시스템들은 정보 처리 시스템 (280)으로 표시된다. 도시된 바와 같이, 상기 여러 가지 정보 처리 시스템들은 컴퓨터 네트워크 (200)을 이용하여 함께 네트워크화될 수 있다. 상기 여러 가지 정보 처리 시스템들을 상호 연결하는데 사용될 수 있는 컴퓨터 네트워크의 유형들로는 근거리 통신망 (LAN), 무선 근거리 통신망 (WLAN), 인터넷, 일반 공중 전화망(Public Switched Telephone Network, PSTN), 기타 무선 네트워크, 및 상기 정보 처리 시스템들을 상호 연결하는데 사용될 수 있는 기타 네트워크 토폴로지가 포함된다. 상기 정보 처리 시스템들의 상당 수는 하드 드라이브 및/또는 비휘발성 메모리와 같은 비휘발성 데이터 기억장치를 포함한다. 도 2에 도시된 정보 처리 시스템들 중 일부는 분리된 비휘발성 데이터 기억장치를 도시한다(서버 (260)은 비휘발성 데이터 기억장치 (265)를 이용하고, 메인프레임 컴퓨터 (270)은 비휘발성 데이터 기억장치 (275)를 이용하며, 정보 처리 시스템 (280)은 비휘발성 데이터 기억장치 (285)를 이용한다). 상기 비휘발성 데이터 기억장치는 상기 여러 가지 정보 처리 시스템들 외부에 있는 컴포넌트일 수 있고 또는 상기 정보 처리 시스템들 중 하나의 내부에 있을 수도 있다. 또한, 둘 또는 그 이상의 정보 처리 시스템들 사이에서 이동식 비휘발성 저장 디바이스 (145)가 공유될 수 있는데, 상기 이동식 비휘발성 저장 디바이스 (145)를 상기 정보 처리 시스템들의 USB 포트 또는 다른 커넥터에 연결하는 것과 같은 여러 가지 기술을 이용하여 이루어질 수 있다). 또한, 컴퓨터 네트워크 (200)은 여러 가지 정보 처리 시스템들을 클라우드 컴퓨팅 환경들 (201)에 연결하는데 사용될 수 있으며, 클라우드 컴퓨팅 환경들에는 클라우드 컴퓨팅 환경 (205)와 다수의 다른 클라우드 컴퓨팅 환경들이 포함된다. 도 3과 4에 기술된 바와 같이, 클라우드 컴퓨팅 환경 (201)은 상기 클라우드 컴퓨팅 환경을 제공하는데 함께 작동하는 다수의 네트워크화된 정보 처리 시스템들 (노드들)을 포함한다. 클라우드 컴퓨팅 환경들 (201)은 각각 도 4에 도시된 추상층들(abstraction layers)을 제공한다. 추상층은 하드웨어 및 소프트웨어층(software layer) (410), 가상층(virtualization layer) (420), 관리층(management layer) (430), 및 워크로드층(workload layer) (440)을 포함한다. 상기 여러 층들 (410-440) 내의 컴포넌트들은 하나의 클라우드 환경부터 다른 것까지 다양할 수 있다. 상기 여러 층들 내의 컴포넌트들의 예는 도 4에 도시되어 있다.
도 3은 예시적인 클라우드 컴퓨팅 환경 (201)을 도시한다. 도시된 바와 같이, 클라우드 컴퓨팅 환경 (201)은 하나 또는 그 이상의 클라우드 컴퓨팅 노드들 (10) - 컴퓨팅 디바이스들, 예를 들어, 개인 정보 단말기 (PDA) 또는 이동 전화기 (210), 데스크톱 컴퓨터 (250), 랩톱 컴퓨터 (290), 자동차 컴퓨터 시스템 (230)이 이들과 통신함 - 과, 도 2에 도시된 다른 유형의 클라이언트 디바이스들을 포함한다. 이것은 인프라스트럭처, 플랫폼들 및/또는 소프트웨어가 (상기 제1부에서 기술된 바와 같이) 서비스로서 클라우드 컴퓨팅 환경 (201)으로부터 제공될 수 있게 하여 각각의 클라이언트가 그러한 자원들을 개별적으로 유지 보수할 필요가 없도록 한다. 도 2와 3에 도시된 컴퓨팅 디바이스들의 유형은 단지 예시의 목적으로 도시된 것이고 클라우드 컴퓨팅 환경 (201)은 어떤 유형이든 네트워크 및/또는 네트워크/주소 접속(network/addressable connection) (예를 들면, 웹 브라우저를 이용한)을 통하여 어떤 유형의 컴퓨터 디바이스(computerized device)와도 통신할 수 있다는 것을 이해할 수 있다.
본 발명자들이 인지한 바와 같이, 다른 클라우드 (또는 하이퍼바이저) 제공자들에 대한 소스 및 목적지 가상 이미지들(source and destination virtual images)은 비호환성 하드웨어 아키텍처들, 하이퍼바이저 기술들, 게스트 OS의 유형들 및/또는 버전들, 및/또는 미들웨어를 가질 수 있다. 가상 이미지의 디스크 파티션들은 클라우드 (또는 하이퍼바이저) 제공자에 고유할(specific) 수 있다. 따라서 작은 커스터마이제이션이라도 있는 컨텐츠는 직접 카피하는 것이 안 될 수 있다. 예를 들면, 아마존(Amazon) EC2는 x86 하드웨어에 대해 XEN 가상 이미지들을 지원하지만, p-시리즈 서버들을 가진 IBM 클라우드는 시스템 p(System p) 이미지들만을 지원할 수 있다.
본 발명자들은 또한 어떤 경우에는 방화벽(firewalls)과 블록 스토리지 볼륨(block storage volumes)과 같은 클라우드 (또는 하이퍼바이저) 고유 구성들이 API 차들로 인해 포팅된 솔루션에 추가될 수 없음을 인지하였다. 예를 들면, 아마존 EC2는 실행 인스턴스들(running instances)에 블록 스토리지 볼륨을 부착하는 구성 옵션들을 제공해도, VM웨어(VMware) 기반 사설 클라우드는 그러한 옵션을 제공하지 않을 수 있다는 것이다.
본 발명자들은 또한 다수의 가상 이미지들을 포함한 솔루션들은 다른 클라우드 (또는 하이퍼바이저)에 포팅될 때 오직 부분적으로만 되어야 할 필요가 있을 수 있다는 것을 인지하였다. 예를 들면, 어떤 가상 이미지 내에 비즈니스 논리 층(business logic layer)을 갖고 다른 가상 이미지 내에 데이터베이스 층을 갖는 솔루션이 있을 경우 데이터 프라이버시 문제들로 인해서 오직 비즈니스 논리 층 가상 이미지만을 공공 클라우드에 포팅하고 데이터베이스 층 가상 이미지는 사설 클라우드에 남겨두어야 할 필요가 있을 수 있다. 그러나, 본 발명자들은 또한 어떤 경우에는 전체 솔루션을 다른 클라우드 (또는 하이퍼바이저)에 포팅하는 것이 바람직할 수도 있다는 것을 인지하였다.
본 발명자들은 다른 클라우드 (또는 하이퍼바이저)에 포팅할 때 프로비저닝 워크플로(provisioning workflow)에서 변경되고, 추가되고, 및/또는 삭제된 솔루션 컴포넌트들/구성들과 변경되고, 추가되고, 및/또는 삭제된 대응하는 배치 연산들(deployment operations)을 식별 및/또는 시각화하는 것이 바람직할 수 있다는 것을 또한 인지하였다. 본 발명자들은 이 변경사항들, 추가사항들, 및/또는 삭제사항들을 소스 모델을 위한 패치에 저장하는 것이 바람직할 수 있다는 것을 또한 인지하였다. 예를 들면, WebSphere 애플리케이션을 VM웨어 기반 사설 클라우드로부터 아마존 EC2로 포팅하려면 베이스 VM웨어 이미지로부터 WebSphere를 갖는 베이스 아마존 머신 이미지 (AMI)로 변경하는 것과 VM 이미지 대신에 AMI를 배치하기 위한 변경된 연산들을 필요로 한다.
본 발명자들은 솔루션들을 다수의 클라우드들에 프로비전하는 것이 바람직할 수 있다는 것을 또한 인지하였다. 예를 들면, 아마존 EC2(Amazon Elastic Compute Cloud)와 IBM 개발 & 테스트 클라우드(IBM Development and Test Cloud) 둘 모두는 API들을 제공하여 이미지를 인스턴스화하고 실행 가상 머신에 안전하게 원격 연결하고 솔루션 프로비저닝 태스크들을 원격으로 실행한다.
도 4에는 (도 3의) 클라우드 컴퓨팅 환경 (201)에 의해 제공되는 일 세트의 기능적 추상층들의 실시 예가 도시된다. 도 4에 도시된 컴포넌트들, 층들, 및 기능들은 단지 예시 용이며 실시 예들은 여기에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 층들과 그에 대응하는 기능들이 제공된다.
하드웨어 및 소프트웨어층 (410)은 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들의 예로는 메인프레임들, 그 일 예로서 IBM® zSeries® 시스템들; RISC((Reduced Instruction Set Computer) 아키텍처 기반 서버들, 그 일 예로서 IBM pSeries® 시스템들; IBM xSeries® 시스템들; IBM BladeCenter® 시스템들; 저장 디바이스들; 네트워크들 및 네트워킹 컴포넌트들이 포함된다. 소프트웨어 컴포넌트들의 예로는 네트워크 애플리케이션 서버 소프트웨어, 그 일 예로서 IBM WebSphere® 애플리케이션 서버 소프트웨어; 및 데이터베이스 소프트웨어, 그 일 예로서 IBM DB2® 데이터베이스 소프트웨어가 포함된다. (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere, 및 DB2는 인터내셔널 비지네스 머신즈 코포레이션의 미국 내, 다른 국가들 내, 또는 미국과 다른 국가들 내의 등록상표이다.)
가상층 (420)은 하나의 추상층(an abstraction layer)을 제공하는데, 이로부터 다음의 가상 엔티티들(virtual entities)이 제공될 수 있다. 제공되는 가상 엔티티들에는 가상 서버들; 가상 스토리지; 가상 사설 네트워크들을 포함하는 가상 네트워크들; 가상 애플리케이션들; 및 가상 클라이언트들이 있다.
관리층 (430)은 아래에 기술되는 기능들을 제공한다. 자원 프로비저닝(Resource Provisioning)은 클라우드 컴퓨팅 환경 내에서 태스크들을 수행하는데 사용되는 컴퓨팅 자원들과 다른 자원들의 동적 조달(dynamic procurement) 기능을 제공한다. 계량 및 가격책정(Metering and Pricing)은 자원들이 클라우드 컴퓨팅 환경 내에서 사용되는 동안 비용 추적(cost tracking) 기능을 제공하고, 이러한 자원들의 소비에 대한 과금(billing) 또는 요금청구(invoicing) 기능을 제공한다. 일 예에서, 이 자원들은 애플리케이션 소프트웨어 라이선스(licenses)를 포함할 수 있다. 보안(Security)은 사용자(users)와 태스크(tasks) 둘 모두 아이덴티티 검증(identity verification) 기능을 제공하고, 또한 데이터와 기타 자원들에 대한 보호(protection) 기능을 제공한다. 사용자 포털(User Portal)은 사용자와 시스템 관리자(administrators) 둘 모두에 클라우드 컴퓨팅 환경에 대한 액세스 기능을 제공한다. 서비스 수준 관리(Service Level Management)는 필요한 서비스 수준들이 충족되도록 클라우드 컴퓨팅 자원 할당 및 관리 기능을 제공한다. SLA(Service Level Agreement, 서비스 수준 협약) 계획 및 이행(planning and fulfillment)은 SLA에 따라 미래 필요사항이 예상되는 경우 클라우드 컴퓨팅 자원들을 미리 준비(pre-arrangement)하고 조달(procurement)하는 기능을 제공한다.
워크로드층 (440)은 클라우드 컴퓨팅 환경이 사용되어야 하는 기능(functionality)을 제공한다. 이 층으로부터 제공될 수 있는 워크로드들과 기능들의 예로는: 매핑 및 내비게이션; 소프트웨어 개발 및 수명주기 관리(lifecycle management); 가상 교실 교육 전달(virtual classroom education delivery); 데이터 분석 처리(data analytics processing); 및 트랜잭션 처리가 포함된다. 전술한 바와 같이, 도 4에 관하여 기술하는 전술한 모든 예는 단지 예시이며 이 예들에 한정되지 않는다.
도 5는 솔루션을 소스 플랫폼에서 타겟 플랫폼으로 포팅하는데 사용되는 자산 라이브러리에 저장된 소스 및 타겟 토폴로지 모델들과 자동화 단계 모델들의 실시 예의 다이어그램이다. 일 실시 예에서, “솔루션”은 하나 또는 그 이상의 소프트웨어 애플리케이션들을 포함하는 소프트웨어 솔루션으로서, 이것은 특정의 기능적 및 비기능적 요건들을 충족시키기 위해 사용되는 하나 또는 그 이상의 하드웨어 기반 컴퓨터 시스템들에 의해 실행된다. 소프트웨어 솔루션은 하나 또는 그 이상의 소프트웨어 애플리케이션들과 이들의 관련 구성 파라미터들을 포함한다. 일 실시 예에서, 솔루션은 턴키 솔루션(turn-key solution)이고 원스톱 접근법(one-stop approach)이다. 솔루션은 다수의 애플리케이션들을 포함할 수 있고 애플리케이션들과 연계된 구성 정보(configuration information)를 포함할 수 있다. 솔루션은 다수의 가상 이미지들을 포함할 수 있다는 점에서 성질이 복합적(composite in nature)일 수 있다.
솔루션의 일부는 하나의 가상 이미지 안에 있을 수 있고, 이 솔루션의 또 다른 부분은 또 다른 가상 이미지 안에 있을 수 있다. 자산 라이브러리 (500)은 토폴로지 및 자동화 데이터의 저장소(repository)로 사용된다. 토폴로지 데이터는 클라우드 기반 솔루션들과 이들의 관계들을 기술한다. 자산 라이브러리 (500)은 수많은 토폴로지 모델들 (510)을 저장하는데 사용된다. 일 실시 예에서, 자산 라이브러리 (500)은 컴퓨터 시스템으로부터 액세스 가능한 비휘발성 저장 디바이스와 같은 지속형 기억 매체에 저장된다. 토폴로지 모델들 (510)의 각각은 클라우드 기반 솔루션에서 사용되는 데이터를 기술한다. 클라우드 기반 솔루션 (“타겟 클라우드 토폴로지”)을 특정한 클라우드 환경 (“타겟 클라우드”)에 처음으로 배치할 때, 자산 라이브러리 (500)에 저장된 자산들이 탐색될 수 있는데, 이는 여러 소스 클라우드 토폴로지 모델 유닛들을 재사용함으로써 상기 타겟 클라우드 토폴로지를 개발(develop)하는데 사용될 수 있는, 상기 자산 라이브러리에 이미 저장된 토폴로지(“소스 클라우드 토폴로지”)를 식별하기 위함이다. 일 실시 예에서, 이것은 솔루션을 상기 소스 클라우드 (예를 들면, 제1 클라우드 제공자에 의해서 제공되는 클라우드)를 상기 타겟 클라우드 (예를 들면, 제2 클라우드 제공자에 의해서 제공되는 클라우드)로 포팅할 때 일어난다.
소스 플랫폼의 실시 예는 솔루션이 배치된 클라우드 (예를 들면, Amazon EC2™ 클라우드)일 수 있다. 타겟 플랫폼의 실시 예는 상기 솔루션이 포팅되는 다른 클라우드 (예를 들면, IBM 스마트 비즈니스 개발 & 테스트 클라우드(IBM Smart Business Development & Test Cloud))일 수 있다. 소스 플랫폼의 실시 예는 하이퍼바이저 (예를 들면, VMWare 하이퍼바이저)일 수 있고 그 대응 타겟 플랫폼의 실시 예는 다른 하이퍼바이저 (예를 들면, KVM 하이퍼바이저)일 수 있다. 소스 플랫폼의 실시 예는 디스크 파티션들 (예를 들면, IBM pSeries 서버)을 가진 물리적 컴퓨터 시스템일 수 있고 그 대응 타겟 플랫폼의 실시 예는 다른 물리적 컴퓨터 시스템 (예를 들면, 선 마이크로시스템즈 서버) 일 수 있다. 또한, 플랫폼들은 혼합(mixed)되고 정합(matched)될 수 있다. 예를 들면, 소스 플랫폼의 실시 예는 하이퍼바이저일 수 있고 그 대응 타겟 플랫폼은 클라우드 일 수 있다.
다수의 토폴로지 모델들에 대응하는 모델 유닛들이 자산 라이브러리 (500)에 저장될 수 있고, 소스 클라우드 토폴로지 모델 유닛들 (520)과 타겟 클라우드 토폴로지 모델 유닛들 (560) 두 가지가 도 5에 도시된다. 상기 소스 및 타겟 클라우드 토폴로지 모델들 모두 여러 모델 유닛들을 포함하는데, 이들에는 메타데이터 (각각 522와 562), 크리덴셜과 서비스엔드 포인트 데이터(credentials and service endpoints data) (각각 524와 564) 및 구성 파라미터들 (각각 526과 566)이 포함된다. 모델 유닛들은 애플리케이션들, 미들웨어, 게스트 운영체제들, 가상 이미지들, 구성 파라미터들, 및 기타 솔루션 컴포넌트들을 표시하는데 사용될 수 있다. 각각의 모델 유닛은 가상 이미지 타입, 아이디(id), 구성 파라미터들, 소프트웨어 버전들, 액세스 크리덴셜(access credentials), 방화벽 규칙들 등과 같은 메타데이터를 포함할 수 있다. 상기 각각의 토폴로지 모델들에 대한 메타데이터는 다수의 메타데이터 항목들(metadata items)을 포함할 수 있는데, 이들에는 가상 이미지 배치 파라미터들, 상기 토폴로지에 포함된 소프트웨어에 관한 메타데이터, 상기 토폴로지에 포함된 미들웨어에 관한 메타데이터, 및 상기 토폴로지에 포함된 게스트 운영체제에 관한 메타데이터가 포함된다.
도시된 바와 같이, 자동화 단계 모델들 (515) 또한 자산 라이브러리 (500)에 저장되고 토폴로지 모델 유닛들과 연관된다. 그 명칭이 함축하는 바와 같이, 자동화 단계 모델들은 상기 토폴로지에 포함된 여러 토폴로지 모델 유닛들을 배치하는데 사용되는 자동화 단계들을 기술한다. 소스 클라우드 자동화 단계 모델 (530)은 소스 클라우드 토폴로지 모델 유닛들 (520)을 배치하는데 사용되는 자동화 단계들을 포함하고, 타겟 클라우드 자동화 단계 모델 (570)은 타겟 클라우드 토폴로지 모델 유닛들 (560)에 사용되는 자동화 단계들을 포함한다. 타겟 클라우드 토폴로지 모델 유닛들 (560)과 타겟 클라우드 자동화 단계 모델 (570)을 개발할 때, 소스 클라우드 토폴로지 모델 유닛들 (520)과 타겟 클라우드 토폴로지 모델 유닛들 (560) 사이의 차들(differences)이 새로운 모델 유닛들과 함께 식별되며, 이들 새 모델 유닛들은 상기 타겟 토폴로지에는 존재하지만 상기 소스 토폴로지에는 존재하지 않는다.
또한, 차들은 상기 소스 토폴로지에는 존재하지만 상기 타겟 토폴로지에는 존재하지 않는 제거된 모델 유닛들을 포함한다. 자산 라이브러리 (500)은 상기 타겟 토폴로지 모델에서 식별된 다르고 새로운 모델 유닛들에 대한 자동화 단계 모델들을 찾기 위해 탐색된다. 상기 차들은 자산 라이브러리 (500)에 패치로서 저장될 수 있고 타겟 토폴로지 모델을 생성하기 위해 유사한 소스 토폴로지 모델에 적용 가능하다. 하나 또는 그 이상의 프로세서들이 소스 플랫폼 (예를 들면, 소스 클라우드, 소스 하이퍼바이저 등)과 연관된 소스 토폴로지 모델과 타겟 플랫폼 (예를 들면, 타겟 클라우드, 타겟 하이퍼바이저 등)과 같은 타겟 플랫폼과 연관된 타겟 토폴로지 사이의 차를 만드는 동작(differencing)을 수행하는데 사용될 수 있다. 토폴로지 모델은 토폴로지 모델 유닛들을 포함한다.
상기 토폴로지 모델 유닛들은 유닛 파라미터들 또는 속성들(attributes)을 포함할 수 있고 또한 유형(type)을 포함할 수 있다. 상기 유형은 예를 들면, 가상 이미지, 미들웨어, 운영체제, 방화벽, 또는 이 기술 분야에서 알려진 기타의 어떤 유형일 수 있다. 하이퍼바이저는 운영체제 위에서 실행될 수 있는 소프트웨어이다. 하이퍼바이저는 운영체제 아래에서 실행될 수도 있다. 하이퍼바이저는 서로 다른 운영체제들 또는 단일 운영체제의 서로 다른 인스턴스들이 동시에 어떤 한 시스템에서 실행하는 것을 허용한다. 다른 말로 하면, 하이퍼바이저는 하나의 호스트 시스템이 다수의 게스트 머신들을 호스트하는 것을 허용한다. 이 러한 차를 만드는 동작에 의해서 토폴로지 차가 얻어지며, 토폴로지 차는 새로운, 변경된 그리고 제거된 모델 유닛들을 포함한다. 상기 토폴로지 차는 상기 소스 토폴로지 모델과 관련하여 상기 타겟 토폴로지 모델에서 다른(different) 솔루션의 여러 컴포넌트들에 대응하는 일 세트의 토폴로지 모델 유닛들일 수 있다.
상기 일 세트의 토폴로지 모델 유닛들은 상기 솔루션을 소스 플랫폼에서 타겟 플랫폼으로 포팅할 때 변경되는 것이 필요 할 수도 있다. 워크플로 모델 (예를 들면, 자동화 단계 모델들 (515)에 저장된 자동화 단계 모델)에 적어도 하나의 연산을 포함하는 일 세트가 자산 라이브러리 (500)으로부터 획득된다. 워크플로 모델 내의 상기 연산은 수행될 수 있는 동작(action)이다. 예를 들면, 워크플로 모델 내의 연산은 sMash 애플리케이션 서버상에 sMash 애플리케이션을 설치하는데 사용될 수 있다.
또 다른 예로서, 워크플로 내의 연산은 가상 이미지를 인스턴스화하기 위해 사용될 수 있다. 각 연산은 상기 소스 및 타겟 토폴로지 모델들 사이의 토폴로지 차 내의 모델 유닛들 중 하나와 연관된다. 일 실시 예에서, 완전한 솔루션 (예를 들면, 상기 소스 토폴로지로부터 대상 토폴로지로 포팅되는 솔루션)이 하나 또는 그 이상의 프로세서들을 이용하여 하나 또는 그 이상의 상기 획득된 연산들을 실행함으로써 배치된다. 일 실시 예에서, 솔루션의 일부는 하나 또는 그 이상의 프로세서들을 이용하여 하나 또는 그 이상의 획득된 연산들을 실행함으로써, 상기 소스 토폴로지로부터 타겟 토폴로지로 포팅된다. 상기 솔루션의 배치된 일부는 타겟 플랫폼 (예를 들면, 타겟 클라우드 (590), 타겟 하이퍼바이저 등)과 호환 가능한 타겟 이미지를 포함한다. 일 실시 예에서, 호환성은 하이퍼바이저 기술, 하드웨어 아키텍처, 운영체제 버전, 미들웨어 버전, (방화벽과 VPN을 구성하는 것과 같이) 서로 다른 클라우드들에서 API 이용 가능성 등과 같은 다양한 이유들에서 기인한다. 일 실시 예에서, 비호환성은 전술한 하나 또는 그 이상의 컴포넌트들이 소스 플랫폼에서 타겟 플랫폼까지 비호환성인 경우 다양한 동일한 이유들에서 기인한다.
도시된 바와 같이, 소스 배치 워크플로 (575)는 상기 솔루션이 소스 클라우드 (580)에 배치되게 한다. 그 배치는 가상 이미지 (582)가 상기 소스 클라우드에 로드되게 하고 애플리케이션 (550)이 실행 미들웨어 이미지 인스턴스에 배치되게 한다. 마찬가지로, 타겟 배치 워크플로 (585)는 상기 솔루션을 타겟 클라우드 (590)에 배치되게 한다. 그 배치는 가상 이미지 (592)가 상기 타겟 클라우드에 로드되게 하고 애플리케이션 (550)이 실행 미들웨어 이미지 인스턴스에 배치되게 한다.
공통 애플리케이션 (550)은 소스 클라우드 (580)과 타겟 클라우드 (590) 둘 모두에 배치된다. 일 실시 예에서, 애플리케이션 (550)은 플랫폼 독립적 애플리케이션으로서, 플랫폼 종속적(platform-dependent)인 “가상 머신”상에서 실행되는 자바 프로그래밍 언어와 같은 플랫폼 독립적(platform-independent) 컴퓨터 언어로 작성된 애플리케이션이다. 타겟 이미지는 타겟 토폴로지 모델 내의 가상 이미지 모델 유닛과 그 포함된 유닛들 내의 메타데이터를 이용하여 식별될 수 있다. 이 메타데이터는 상기 타겟 클라우드 내의 모든 알려진 가상 이미지들을 위한 메타데이터를 탐색하기 위한 입력값(input)으로서 사용될 수 있다. 이러한 모든 메타데이터는 자산 라이브러리에 저장될 수 있다. 타겟 이미지가 식별되어 상기 타겟 플랫폼 (클라우드)에 배치되면, 상기 애플리케이션은 상기 타겟 이미지를 실행하는 타겟 플랫폼 상에 배치될 수 있다. 일 실시 예에서, 상기 타겟 이미지는 상기 애플리케이션이 작동하기에 적합한 타겟 환경을 제공하는 운영체제와 미들웨어 (예를 들면, 가상 머신)를 포함한다. 이러한 방식으로, 현재 상기 소스 클라우드에서 실행되는 상기 소스 토폴로지 모델에 기술된 솔루션은 상기 타겟 토폴로지 모델에 기술된 유사한 모델 유닛들과 함께 상기 타겟 클라우드에 포팅되고 배치될 수 있다.
도 6은 일 실시 예에 따라서, 배치 워크플로들을 생성하기 위해 토폴로지 모델 유닛들을 사용하여 상기 소스 및 타겟 토폴로지 모델들 사이의 공통인 것들과 차들을 찾기 위해 취해지는 단계들을 도시하는 흐름도이다.
상기 공통인 것들은 상기 소스 토폴로지 모델과 관련하여 상기 타겟 토폴로지 모델에서 동일한, 상기 솔루션의 여러 컴포넌트들에 대응하는 일 세트의 토폴로지 모델 유닛들일 수 있다. 공통인 것의 일 예는 상기 타겟 플랫폼과 연관된 모델 유닛에서 표시된 가상 이미지의 유형이 상기 소스 플랫폼과 연관된 모델 유닛에서 표시된 가상 이미지의 유형과 동일하다는 것일 수 있다. 상기 공통인 것은 사실상 부분적일 수 있다(partial in nature). 예를 들어 상기 유형이 두 모델 유닛들에 대해서는 동일하지만, 다른 일부 파라미터, 예를 들면, 식별자(identifier)가 상기 소스 토폴로지 모델과 연관된 모델 유닛과 비교하여 상기 타겟 토폴로지 모델과 연관된 모델 유닛에서 다를 때 그러할 수 있다. 상기 공통인 것은 사실상 전체적일 수 있다(entire in nature). 예를 들어 상기 두 토폴로지 모델들의 모든 파라미터들이 동일하고 다른 파라미터들이 전혀 없는 때 그러할 수 있다. 상기 공통인 것들이 사실상 전체적이라면, 상기 솔루션을 상기 소스 플랫폼에서 상기 타겟 플랫폼으로 포팅할 때 관련된 배치 연산들과 솔루션 컴포넌트들은 변경될 필요가 없을 것이다. 상기 공통인 것들이 사실상 부분적이라면, 이들을 차(difference)로 취급할 수도 있고 또는 전체적으로 공통으로(common) 취급할 수도 있다.
상기 차들은 상기 소스 토폴로지 모델과 관련하여 상기 타겟 토폴로지 모델에서 서로 다른, 상기 솔루션의 여러 컴포넌트들에 대응하는 일 세트의 토폴로지 모델 유닛들일 수 있다. 차의 일 예는 상기 타겟 플랫폼과 연관된 모델 유닛에서 표시된 가상 이미지의 유형이 상기 소스 플랫폼과 연관된 모델 유닛에서 표시된 가상 이미지의 유형과 다르다는 것일 수 있다. 차가 존재한다면, 상기 솔루션을 소스 플랫폼에서 타겟 플랫폼으로 포팅할 때 연관된 배치 연산들과 솔루션 컴포넌트들을 변경할 필요가 있을 것이다.
프로세싱(processing)은 단계(600)에서 시작하며, 단계 (610)에서, 소스 토폴로지 모델 유닛들과 토폴로지 모델들이 생성되어 자산 라이브러리 (500)에 저장된다. 단계 (620)에서는, 단계 (610)에서 소스 토폴로지 모델들에 대해 생성된 토폴로지 모델 유닛들의 일부에 대해서 자동화 단계 모델이 생성되고 이 자동화 모델들도 자산 라이브러리 (500)에 저장된다. 단계 (625)에서, 단계 (610)과 (620)에서 생성된 상기 (토폴로지와 자동화) 모델들은 소스 클라우드 (580)에 대한 배치 워크플로 (628)을 생성하는데 사용된다.
단계 (630)과 (640)은 단계 (610)과 (620)과 유사하지만, 단계 (630)과 (640)은 다른 (타겟) 클라우드에 대한 것이다. 단계 (630)에서, 타겟 토폴로지 모델 유닛들과 토폴로지 모델들이 생성되어 자산 라이브러리 (500)에 저장된다. 이 타겟 토폴로지 모델 유닛들과 토폴로지 모델들은 상기 소스 클라우드에 배치된 동일한 솔루션을 배치하도록 설계되지만, 상기 타겟 토폴로지 모델 유닛들과 토폴로지 모델들은 상기 솔루션을 다른 “타겟” 클라우드상에서 실행하도록 설계된다. 단계 (640)에서는, 단계 (630)에서 상기 타겟 토폴로지 모델들에 대해서 생성된 상기 토폴로지 모델 유닛들의 일부에 대해서 자동화 단계 모델이 생성되고 이 자동화 모델들도 자산 라이브러리 (500)에 저장된다.
단계 (650)에서는, 상기 소스 및 타겟 토폴로지 모델들이 자산 라이브러리 (500)으로부터 판독되고 상기 모델들 사이의 차들을 식별하기 위해 비교된다. 이 차들은 변경된, 새로운 또는 제거된 유닛들을 포함한다. 변경된 모델 유닛들은 상기 소스 및 타겟 모델들 둘 모두에 존재하나 다른 파라미터들 또는 하부 유형들(sub-types)을 가진 유닛들이며, 예를 들자면 소스 토폴로지 하부 유형의 가상 이미지는 타겟 토폴로지 하부 유형의 가상 이미지와 다르다. 파라미터들의 차는 미들웨어 버전들을 포함할 수 있다. 새로운 모델 유닛들은 상기 소스 토폴로지에는 존재하지 않았지만 상기 타겟 토폴로지에 추가된 유닛들이다(예를 들면, 상기 솔루션을 상기 소스 클라우드에 배치하는데 필요하지 않았지만 상기 솔루션을 상기 타겟 클라우드에 배치하기 위해서는 필요한 토폴로지 모델 유닛 등이 있다). 제거된 모델 유닛들은 상기 소스 토폴로지에는 있었지만 상기 타겟 토폴로지에는 존재하지 않은 유닛들이다. 단계 (660)에서는, 상기 식별된 새로운 그리고 변경된 유닛들에 대응하는 자동화 단계 모델들을 위해 자산 라이브러리 (500)가 탐색된다. 단계 (660)에서 발견된 자동화 단계 모델들은 자산 라이브러리 (500)에 저장된 자동화 단계 모델들이다. 예를 들면, 새로운 또는 변경된 모델 유닛이 식별되면, 상기 식별된 새로운 또는 변경된 모델 유닛에 대응하는, 상기 자산 라이브러리에 저장된 다른 토폴로지가 이미 존재할 수도 있다. 또한, 모델 유닛이 처음 조우되면(encountered), 단계 (660)이 동작할 때 발견될 수 있도록 상기 조우된 모델 유닛에 대한 자동화 단계 모델이 개발되어 자산 라이브러리 (500)에 저장될 수 있다.
단계 (670)에서는, 단계 (660)에서 (새로운/변경된 모델 유닛들에 대해서) 식별된 자동화 단계 모델들과 (변경되지 않은 모델 유닛들에 대해서) 단계 (625)에서 상기 소스 클라우드의 배치 워크플로를 생성하는데 사용된 단계들 중 일부를 사용하여 타겟 클라우드 (590)에 대한 배치 워크플로 (675)가 생성된다. 제거된 유닛들에 대한 배치 연산들은 상기 소스 워크플로 모델에서 드롭된다(dropped). 단계 (680)에서는, 배치 워크플로들 (675) 및 (628)이 배치 엔진(deployment engine) (690)에 의해서 실행되면 소스 클라우드 (580) 내 상기 솔루션의 실행 인스턴스 (582)와 타겟 클라우드 (590) 내 상기 솔루션의 실행 인스턴스 (592)가 얻어진다. 일 실시 예에서, 상기 배치 워크플로의 실행은 상기 워크플로 모델에 포함된 상기 연산들을 배치 엔진 (690)으로 전송함으로써 수행된다.
배치 엔진 (690)은 (670)의 생성 단계(generate step)를 수행하는 동일 컴퓨터 시스템상의 소프트웨어 프로세스이거나 컴퓨터 네트워크를 통해서 연결된 다른 컴퓨터 시스템상의 소프트웨어 프로세스일 수 있다. 만일 동일 컴퓨터 시스템이 사용되면, 상기 연산은 내부 연산을 사용하여 (예를 들면, 서브루틴 호출을 통해서, 상기 배치 연산들을 처리하는 인라인 코드(in-line code)의 실행을 통해서, 외부 프로그램 호출을 통해서, 등등) 전송될 수 있다. 만일 다른 컴퓨터 시스템이 사용되면, 상기 연산은 사설 컴퓨터 네트워크 (예를 들면, LAN) 및/또는 공공 네트워크 (예를 들면, 인터넷, 일반 공중 전화망 (PSTN), 등)와 같은 네트워크를 통한 전송을 통해서 다른 컴퓨터 시스템으로 전송될 수 있다. 하나의 배치 엔진이 도시되었지만, 다른 배치 엔진들도 사용될 수 있다. 일 실시 예에서, 상기 자동화 단계 모델들은 상기 여러 모델 유닛들의 배치를 자동화하는데 사용되는 단계들에 대한 일반 표현(generic representation)을 제공하며, 한편 생성된 배치 워크플로들 (628과 675)는 배치 엔진 (690)에 의해 판독되고 처리되도록 설계된 기능기술자료 (예를 들면, 스트립트 등)를 포함한다.
도 7은 클라우드 환경에 배치되는 예시 배치 워크플로를 생성하는데 사용되는 자동화 단계 모델들의 실시 예를 도시하는 다이어그램이다. 토폴로지 모델 (700)은 토폴로지 모델 유닛들을 포함한다. 자동화 단계 모델들 (710)은 상기 토폴로지 모델 유닛들의 일부에 대응한다. 배치 워크플로 (720)은 자동화 단계 모델들 (710)으로부터 생성되고 상기 솔루션을 배치하기 위한 수많은 연산들을 제공한다. 도 7은 공공 타겟 클라우드 (760)과 사설 타겟 클라우드 (780)을 포함하는 하이브리드 솔루션의 예를 도시한다. 공공 타겟 클라우드 기능의 예는 인터넷과 같은 네트워크로부터 공개적으로 액세스 가능한 고객 프론트 엔드 연산(customer front-end operation)일 수 있다. 사설 타겟 클라우드 기능의 예는 데이터베이스와 LDAP 연산들을 처리하는 백엔드 서버 연산(backend server operation)일 수 있다.
도시된 예에서, 배치 워크플로는 연산 (725)부터 (750)까지 포함한다. 연산 (725)는 특정한 머신 이미지를 공공 타겟 클라우드 (760)과 사설 타겟 클라우드 (780)에 인스턴스화 한다. 이렇게 하여 게스트 OS를 가진 클라우드 머신 이미지 (768)가 얻어진다. 일 실시 예에서, 연산 (725)는 또한 사설 타겟 클라우드 (780)상에 클라우드 머신 이미지 (782)를 인스턴스화하고, 한편 일 실시 예에서 클라우드 머신 이미지 (782)는 다수의 공공 타겟 클라우드들에 의해 이용되는 공통 백엔드 서버(common backend server)이다. 사설 타겟 클라우드 (780)상에서 인스턴스화되고 실행되는 클라우드 머신 이미지 (782)는 게스트 운영체제 (784)를 포함하며, 이는 상기 공공 타겟 클라우드상에서 실행되는 운영체제와는 다른 운영체제일 수 있다. 클라우드 머신 이미지 (780)은 또한 데이터베이스 서버 (786) (예를 들면, IBM DB2™ 데이터베이스 서버 등)을 포함할 수 있으며, 이 서버에서 데이터베이스 애플리케이션들이 작동한다. 클라우드 머신 이미지 (782)는 또한 LDAP (Lightweight Directory Access Protocol) 서버 (788)을 포함할 수 있으며, 이 서버에서 LDAP 애플리케니션들이 작동한다.
연산 (730)은 IBM Websphere® sMash™ 미들웨어 애플리케이션과 같은 미들웨어 애플리케이션을 상기 공공 타겟 클라우드상에 인스턴스화된, 이미지상에 설치한다. 이렇게하여 게스트 OS를 가진 클라우드 머신 이미지 (768)상에서 실행되는 애플리케이션 서버 (772)가 얻어진다.. 또한, 연산 (730)은 상기 애플리케이션 서버상에서 실행되는 플랫폼 독립적 애플리케이션 (774)를 설치할 수 있다. 도시된 바와 같이, 게스트 OS를 가진 클라우드 머신 이미지 (768)은 IP 테이블 규칙 및 VPN 구성(IP table rules & VPN configuration) (770)을 포함하고 공공 타겟 클라우드는 클라우드의 탄성 IP 주소들(cloud's elastic IP addresses) (762), 클라우드의 보안 그룹들(cloud's security groups) (764) 및 클라우드의 탄성 블록 기억장치(cloud's elastic block storage) (766)을 포함한다. 한 클라우드 환경에서, 연산 (735)는 실행되어 탄성 IP 주소들을 구성하며, 그 결과 클라우드의 탄성 IP 주소들 (762)의 구성이 나온다. 이 클라우드 환경에서, 연산 (740)은 실행되어 클라우드의 보안 그룹들 (764)를 구성하고, 연산 (745)는 실행되어 클라우드의 탄성 블록 스토리지 (766)을 구성한다. 연산 (750)은 실행되어 VPN들 (가상 사설망들)을 구성한다. 연산 (750)의 결과는 공공 타겟 클라우드 (760)과 사설 타겟 클라우드 (780) 사이의 가상 사설 네트워크를 설정하는, 인스턴스화된 이미지 (768)에서 실행되는 IP 테이블 규칙 및 VPN 구성(IP Table Rules & VPN Configuration) (770)의 업데이트이다.
도 8은 일 실시 예에 따라서 토폴로지 모델을 생성하는데 취해지는 단계들을 도시하는 흐름도이다. 프로세스는 (800)에서 시작하며, 단계 (802)에서, 자바 가상 머신 (예를 들면, IBM WebSphere® sMash 애플리케이션 등)과 같은 미들웨어 유닛이 선택된다. 상기 미들웨어 유닛은 일반적으로 플랫폼 종속적이다. 토폴로지 모델 (804)는 가상 기기(virtual appliance) (806)을 포함하며, 이 기기 안에 상기 선택된 미들웨어 실행시간 환경(middleware runtime environment) (810)이 배치된다. 자바 애플리케이션 같은 플랫폼 독립적 애플리케이션 (808) 또한 선택되고 미들웨어 실행시간 환경 (810)과 연관된다(associated). 단계 (805)에서, 클라우드 고유 베이스 가상 이미지(cloud-specific base virtual image)에 대한 토폴로지 모델 유닛이 추가된다. 그 다음 가상 이미지 (812)가 가상 기기 (806)에 포함된다. 그 다음으로, 이 예에서 가상 이미지 (812)는 게스트 운영체제 (814) (예를 들면, 리눅스 운영체제 등), 서버 소프트웨어 (816), 및 클라우드 이미지 인스턴스 (818)를 포함한다.
클라우드와 호환 가능한 기존 가상 이미지들에 대한 메타데이터는 그 클라우드에 대한 하나 또는 그 이상의 클라우드 고유 이미지 라이브러리들(cloud-specific image libraries)에서 찾을 수 있다. 이러한 메타데이터는 기존 가상 이미지들에 사전 설치된 소프트웨어 컴포넌트들의 기술을 포함한다. 상기 타겟 토폴로지 내의 가상 기기와 그에 포함된 유닛들에 있는 메타데이터는 상기 솔루션에 대한 필수 소프트웨어 컴포넌트들(prerequisite software components)을 기술할 수 있으며, 이들은 상기 클라우드 고유 베이스 가상 이미지에 사전 설치될 수 있다. 상기 가상 기기 유닛 내의 메타데이터는 상기 솔루션을 상기 타겟 클라우드에 배치하기 위한 적합한 베이스 가상 이미지를 찾기 위해서 상기 이미지 라이브러리들 내의 메타데이터를 탐색하도록 사용될 수 있다. 상기 탐색에 의해서 식별된 가상 이미지들이 상기 모든 필수 소프트웨어 컴포넌트들 또는 필수 소프트웨어 컴포넌트들의 올바른 버전들을 포함하고 있지 않으면 가장 가깝게 일치하는 베이스 가상 이미지가 결정될 수 있다. 그 다음 이러한 가장 가깝게 일치하는 베이스 가상 이미지는 상기 가상 이미지 내에서 소프트웨어 컴포넌트들을 추가, 엡데이트 또는 제거함으로써 배치 워크플로의 일부로 향상될 수 있다(enhanced).
단계 (820)에서는, 일 실시 예로, 탄성 IP 주소들(elastic IP addresses), 볼륨 정보(volume information), 보안 그룹 설정들(security group settings) 등과 같은 클라우드 고유 구성 설정들 (822)와 (824)가 추가된다. 단계 (826)에서는, 상기 애플리케이션 서버 (미들웨어 실행시간 환경 (810))가 애플리케이션 유닛들 (플랫폼 독립적 애플리케이션 (808))에 링크된다. 단계 (828)에서는, 운영체제 고유 구성 설정들(operating system specific configuration settings)이 추가되고 게스트 운영체제 (814)와 연관된다(associated).
이 운영체제 고유 구성 설정들은 HTTP 설정들, 네트워크 설정들, 방화벽 설정들 등을 포함할 수 있다. 단계 (832)에서는, 데이터베이스 서비스들과 LDAP 서비스들 같은 필수 애플리케이션 서비스들을 호스팅하는 상기 타겟 클라우드에 대해서 하나 또는 그 이상의 가상 기기들 (외부 서비스 유닛들 (834))이 추가되며, 이들은 상기 클라우드 기반 가상 기기로부터 외부에서 제공된다. 단계 (836)에서는, 상기 애플리케이션 유닛들 (애플리케이션 (808))과 단계 (832)에서 추가된 상기 필수 외부 서비스들 사이에 애플리케이션 통신 링크들(communication links)이 구성된다. 단계 (838)에서는, 다른 모델 유닛들 사이에 배치 순서 제한조건(deployment order constraints)이 지정된다(specified). 단계 (838)은 상기 솔루션을 배치하기 위해 사용되는 자동화 단계들의 순서화(sequencing)를 가능하게 해준다. 단계 (840)에서는, 모든 상기 모델 유닛들과 상기 지정된 배치 순서를 포함하여 토폴로지 모델 (804)가 자산 라이브러리 (500)에 저장된다. 일 실시 예에서, 자산 라이브러리 (500)은 자산 매니저 소프트웨어 애플리케이션 (850)에 의해서 관리된다. 미리 정의된 프로세스(predefined process) (860)에서, 상기 저장된 토폴로지 모델과 지정된 배치 단계들은 자동화 모델을 생성하는데 사용되며, 이 자동화 모델 또한 자산 라이브러리 (850)에 저장된다(상기 자동화 모델의 생성에 관한 처리 세부사항들은 도 9와 그에 대응하는 내용을 참조한다.)
도 9는 일 실시 예에 따라서, 자동화 단계 모델들을 생성하는데 취해지는 단계들을 도시하는 흐름도이다. 프로세싱은 솔루션을 타겟 클라우드에 배치하기 위해 사용되는 여러 자동화 단계 모델들 (910)을 생성한다. 프로세싱은 (900)에서 시작되고, 단계 (905)에서, 자동화 단계 모델 (915)가 생성된다. 자동화 단계 모델 (915)는 보안 그룹들 등을 설정하는(establishing) 클라우드 고유 구성을 상기 타겟 클라우드에 배치하기 위한 연산 (920)을 포함한다. 단계 (925)에서, 상기 애플리케이션 서버 (미들웨어 실행시간 환경)와 상기 플랫폼 독립적 소프트웨어 애플리케이션에 대한 파라미터들을 포함하는 애플리케이션 설치를 위해 자동화 단계 모델 (930)이 생성된다. 자동화 단계 모델 (930)은 상기 플랫폼 독립적 애플리케이션 (예를 들면, 자바 sMash 애플리케이션 등)을 설치하는데 사용되는 연산 (935)와 상기 미들웨어 실행시간 환경을 구성하는데 사용되는 연산 (940)을 포함한다. 단계 (945)에서, 상기 타겟 클라우드상에 이미지를 인스턴스화하기 위해 자동화 단계 모델 (950)이 생성된다. 자동화 단계 모델 (950)은 특정한 이미지를 상기 타겟 클라우드상에 인스턴스화하는데 사용되는 연산 (955)를 포함한다. 단계 (960)에서, 자동화 단계 모델들 (910)이 자산 매니저 애플리케이션 소프트웨어 (850)에 의해 관리되는 것으로 도시된 자산 라이브러리 (500)에 저장된다. 미리 정의된 프로세스 (970)에서, 입력 파라미터 명세(input parameter specifications)가 제공되고 상기 타겟 토폴로지와 함께 상기 자산 라이브러리에 저장된다(처리 세부사항에 대해서는 도 10과 그에 대응하는 내용을 참조한다).
도 10은 일 실시 예에 따라서, 입력 파라미터들을 지정하고 상기 토폴로지 모델에 저장하기 위해 취해지는 단계들을 도시하는 흐름도이다. 도 10에는 도 8에서 소개된 토폴로지 모델 (804)가 도시된다. 도 10에서, 프로세싱은 (1000)에서 시작하며, 단계 (1010)에서, 배치 모델 유닛들이 컴포넌트들에 결합된다(bound). 예를 들면, 배치 가능한 플랫폼 독립적 이진수들(binaries)을 포함하고 있는 자산 라이브러리 내의 특정한 압축 파일 자산(particular compressed file asset)이 상기 토폴로지 모델 내의 애플리케이션 유닛에 결합된다. 애플리케이션 (808)은 특성들/파라미터들(properties and parameters) (1020)을 포함하는데, 이들은, 예를 들어 내부에서 구성된 지정 압축 파일 (“zip” 파일)을 가질 수 있다. 단계 (1030)에서, 상기 구성 파라미터들 중 일부 (그러나 전부는 아님) 파라미터들은 토폴로지 모델 유닛들에 대해서 지정된다. 예를 들면, 상기 애플리케이션에 대한 HTTP 포트, zip 파일 명칭, 및 URL이 지정될 수 있다. 단계 (1040)에서, 상기 부분적으로 지정된 패턴은 자산 라이브러리 (500)에서 재사용 가능한 자산으로 공유된다. 미리 정의된 프로세스 (1050)에서, 인스턴스(들)는 전부 지정되어(fully specified) 상기 타겟 플랫폼에 배치된다(처리 세부사항에 대해서는 도 11과 그에 대응하는 내용을 참조한다).
도 11은 일 실시 예에 따라서, 상기 클라우드 기반 애플리케이션의 실행 인스턴스를 전부 지정하고 배치하기 위해 취해지는 단계들을 도시하는 흐름도이다. 도 11에 도시된 흐름도는 또한 지정하는 동안 (during specification) 작은 구성 변경사항들(minor configuration changes)과 함께 멀티 테넌시(multi-tenancy)를 위한 다수의 인스턴스들을 배치하는 것을 도시한다. 프로세싱은 (1100)에서 시작하고, 단계 (1105)에서, 상기 토폴로지 모델 유닛들 내의 파라미터들이 전부 지정되고 토폴로지 모델 (804)에 저장된다. 일부(some) 토폴로지 모델 유닛들은 상기 토폴로지 모델 유닛들을 배치하기 위해 사용되는 연산을 기술하는 자동화 단계 모델들 (910)과 연관된다. 단계 (1110)에서, 배치 연산들의 순서화된 시퀀스가 생성되어 자동화 워크플로 모델 (1115)에 저장된다. 일 실시 예에서, 자동화 워크플로 모델은 상기 토폴로지 모델 유닛들을 배치하기 위해 사용되는 연산들의 일반 기술(generic depiction)이다. 단계 (1120)에서, 자동화 워크플로 모델 (1115)로부터 배치 워크플로 (1125)가 생성된다. 일 실시 예에서, 배치 워크플로 (1125)는 특정한 배치 엔진 (1135)에 의해 실행될 수 있는 포맷으로 된 연산들의 특별 기술(non-generic depiction)이다. 이 방식으로, 단계 (1120)은 실행되어 다른 배치 엔진들과 함께 작동하는 다른 배치 워크플로들을 제공할 수 있다.
단계 (1130)에서, 배치 엔진 (1135)는 배치 워크플로 (1125)를 실행하고 하나 또는 그 이상의 타겟 클라우드들 (1140)상에서 실행되는 상기 클라우드 기반 애플리케이션의 하나 또는 그 이상의 실행 인스턴스들 (인스턴스 (1150)과 (1155))을 생성한다. 단계 (1160)에서, 상기 클라우드 기반 솔루션이 잘 실행되도록 하기 위해 상기 실행 인스턴스는 관찰되고 테스트된다. 상기 모델 유닛들에서 지정된 파라미터들에 변경들이 필요한지에 대한 결정이 내려진다(결정단계 (1170)). 변경들이 필요하면, 결정단계 (1170)은 “예(Yes)” 분기(branch)로 분기한다. 단계 (1175)에서, 상기 인스턴스의 파라미터들은 편집되고 그 다음 프로세싱은 되돌아가서(loop back) 워크플로 모델과 배치 워크플로를 재생성하고 배치 엔진으로 상기 배치 워크플로를 재실행한다. 이 루프는 더 이상의 변경들이 필요하지 않을 때까지 계속되고, 결정단계 (1170)에서 “아니오(no)” 분기로 분기한다. 이러한 파라미터들이 사용자 입력을 통해서 재배치 전에 변경될 수 있는 입력 파라미터들로 지정되면 상기 워크플로 모델을 재생성할 필요가 없을 수도 있다. 그 다음 타겟 클라우드 (또는 타겟 클라우드들)에서 애플리케이션 (클라우드 기반 솔루션)의 다수의 인스턴스들이 생성되고 있는 지에 대한 결정이 내려진다. 상기 애플리케이션의 다수의 인스턴스들이 생성되고 있으면, 결정단계 (1180)은 “예(yes)” 분기로 분기하고, 단계 (1185)에서, 다음 인스턴스를 생성하기 위해 일부(a few) 워크플로 파라미터들이 변경된다. 그 다음 프로세싱은 되돌아가서(loop back) 또 다른 워크플로 모델과 또 다른 배치 워크플로를 재생성한다. 그 다음 프로세싱은 상기 배치 엔진을 이용하여 새로운 배치 워크플로를 실행한다. 예를 들어, 새로운 인스턴스는 멀티 테넌트 솔루션(multi-tenant solution) 내의 새로운 테넌트(tenant)를 위해 배치될 수 있다. 일 실시 예에서, 멀티 테넌시(multi-tenancy)는 다수의 클라이언트 간에 플랫폼들 (예를 들면, 클라우드들, 하이퍼바이저들)을 공유하는 능력이다. 또 다른 실시 예에서, 다양한 워크로드들에서 다른 성능(performance) 또는 보안 요건을 충족시키기 위해 상기 솔루션의 새로운 인스턴스(들)가 필요할 수 있다. 이 루핑(looping)은 상기 애플리케이션의 인스턴스들이 더 이상 요구되지 않을 때까지 계속되고, 이 지점에서 결정단계 (1180)은 “아니오(no)” 분기로 분기하고 프로세스는 (1195)에서 종료된다.
도 12는 일 실시 예에 따라서, 자산 라이브러리에 저장된 자원들을 재사용하고 상기 재사용된 자원들을 이용하여 솔루션을 타겟 클라우드 환경에 배치하기 위해 취해지는 단계들을 도시하는 흐름도이다. 프로세싱은 (1200)에서 시작하고, 단계 (1210)에서, 프로세싱은 솔루션을 특정한 타겟 클라우드 또는 하이퍼바이저에 포팅하기 위한 요청을 수신한다. 미리 정의된 프로세스 (1220)에서, 상기 요청에 가장 가까운 기존 토폴로지 및 토폴로지 모델 유닛들은 자산 라이브러리 (500)에서 제공된다. 미리 정의된 프로세스 (1220)은 클라우드 고유 모델 유닛들을 교체하는 것(replacing)과 상기 새로운 토폴로지 및 새로운 모델 유닛들을 자산 라이브러리 (500)에 저장하는 것을 포함한다. 미리 정의된 프로세스 (1220)에 관한 처리 세부사항에 대해서는 도 13과 그에 대응하는 내용을 참조한다. 단계 (1230)에서, 상기 타겟 토폴로지 모델 내의 구성 파라미터들이 전부 지정되어 자산 라이브러리 (500)에 저장된다. 미리 정의된 프로세스 (1240)에서, 교체되거나 추가된 클라우드 고유 모델 유닛들에 대응하는 자동화 단계 모델들이 자산 라이브러리 (500)에서 제공된다. 또한 미리 정의된 프로세스 (1240)에서, 타겟 클라우드 고유 토폴로지 모델에 대응하는 자동화 단계 모델들이 자산 라이브러리 (500) 내에서 제공되고 상기 자동화 단계 모델들은 자산 라이브러리 (500)에 저장된다.
상기 자동화 단계 모델들은 상기 토폴로지 모델 유닛들을 상기 타겟 클라우드에 배치하기 위해 사용된다. 미리 정의된 프로세스 (1240)에 관한 처리 세부사항에 대해서는 도 14와 그에 대응하는 내용을 참조한다. 미리 정의된 프로세스 (1250)에서, 상기 자동화 단계 모델들에 기반하여 배치 워크플로가 생성된다(처리 세부사항에 대해서는 도 15와 그에 대응하는 내용을 참조하고, 복합 솔루션의 배치에 관한 세부사항에 대해서는 도 16과 그에 대응하는 내용을 참조한다). 상기 배치의 결과 소스 클라우드 (1260)는 기존 클라우드 기반 솔루션의 인스턴스 (1265)를 갖고 타겟 클라우드 (1270)는 상기 클라우드 기반 솔루션의 새로운 인스턴스 (1275)를 갖는다. 일 실시 예에서, 상기 소스 및 타겟 클라우드 둘 모두는 인터넷과 같은 컴퓨터 네트워크 (200)으로부터 액세스 가능하다. 그러므로, 예를 들면, 각 인스턴스는 컴퓨터 네트워크를 통해서 클라이언트들에 의해 액세스 가능한 웹(Web) 기반 애플리케이션의 인스턴스를 , 클라이언트 기반 웹 브라우징 소프트웨어를 사용하여서, 제공할 수 있다.
도 13은 일 실시 예에 따라서, 자산 라이브러리에서 요청에 일치하는 기존 토폴로지 유닛들을 찾아, 클라우드 고유 모델 유닛들을 교체하고, 새로운 그리고 변경된 모델 유닛들을 저장하기 위해 취해지는 단계들을 도시하는 흐름도이다. 도 13은 도 12에 도시된 미리 정의된 프로세스 (1220)에 의해 호출된다. 도 13에 도시된 프로세싱은 (1300)에서 시작하고, 단계 (1320)에서, 사용자 (1310)으로부터 새로운 클라우드 기반 솔루션에 대한 요건(requirements)을 수신한다. 단계 (1325)에서, 자산 라이브러리 (500)에 저장된 기존 토폴로지 모델들의 메타데이터가 상기 사용자에 의해 제공된 요건에 어느 정도(to some extent) 일치하는 기존 토폴로지 모델들을 찾기 위해 탐색된다. 일 실시 예에서, 이전에 계산된 차들이 자산 라이브러리 (500)으로부터 패치로서 검색될 수 있고, 타겟 토폴로지 모델을 생성하도록 기존 소스 토폴로지 모델에 적용될 수 있다. 사용자의 요건에 일치하는 기존 토폴로지 모델들이 하나라도(any) 상기 자산 라이브러리에서 제공되었는지에 관한 결정이 내려진다(결정단계 (1330)). 상기 사용자의 요건에 일치하는 토폴로지 모델들이 현재 상기 자산 라이브러리에 존재하지 않는다면, 결정단계 (1330)은 “아니오(no)” 분기로 분기하고, 미리 정의된 프로세스 (1335)에서, 새로운 토폴로지 모델이 생성된다(예를 들면, 새로운 토폴로지 모델을 생성하는 예에 대해서는 도 8과 그에 대응하는 내용을 참조한다).
반대로, 사용자의 요건에 일치하는 하나 또는 그 이상의 토폴로지 모델들이 찾아졌다면, 결정단계 (1330)은 “예(yes)” 분기로 분기하고, 단계 (1340)에서, 사용자의 요건에 가장 가깝게 일치하는 자산 라이브러리에서 찾아진 상기 기존 토폴로지 모델은 복사된다. 단계 (1350)에서, 상기 새로운 토폴로지 모델은 상기 자산 라이브러리에 저장된다 (미리 정의된 프로세스 (1335)에서 생성된 새롭게 생성된 토폴로지 모델이 저장되거나 아니면 단계 (1340)에서 복사된 기존 토폴로지 모델이 저장될 수 있다).
토폴로지 모델 유닛들에 수정(modification)이 필요한지에 관한 결정이 내려진다(결정단계 (1360)). 예를 들면, 어떤 토폴로지 모델이 단계 (1340)에서 복사되었고, 그리고 상기 복사된 토폴로지 모델이 사용자에 의해 지정된 요건에 정확히 일치하지 않는다면, 상기 새로운 타겟 토폴로지 모델은 수정이 필요할 수 있다. 하나 또는 그 이상의 토폴로지 모델 유닛들에 수정이 필요하면, 결정단계 (1360)은 “예(yes)” 분기로 분기하고, 단계 (1370)에서, 수정이 필요한 상기 토폴로지 모델 유닛들이 상기 타겟 토폴로지 모델들로부터 검색되어 상기 사용자의 요건을 충족시키기 위해 수정된다. 단계 (1380)에서, 상기 수정된 토폴로지 모델 유닛들은 자산 라이브러리 (500) 내의 상기 타겟 토폴로지 모델에 저장된다. 결정단계 (1360)으로 돌아가서, 토폴로지 모델 유닛들이 수정이 필요하지 않으면, 결정단계 (1360)은 “아니오(no)” 분기로 분기하여 단계 (1370)과 (1380)을 건너뛴다. 단계 (1390)에서, 타겟 클라우드를 위한 클라우드 고유 모델 유닛들은 교체된다. 그 다음 프로세싱은 (1395)에서 호출 루틴(calling routine)으로 돌아간다(도 12 참조).
도 14는 일 실시 예에 따라서, 배치 워크플로 모델을 생성하기 위해 취해지는 단계들을 도시하는 흐름도이다. 도 14는 도 12에 도시된 미리 정의된 프로세스 (1240)에 의해 호출된다. 도 14에 도시된 프로세싱은 (1400)에서 시작하고, 단계 (1410)에서, 상기 타겟 클라우드상에 상기 솔루션을 배치하기 위해 사용되는 제1 변경된 또는 새로운 토폴로지 모델 유닛이 식별된다. 변경되지 않은 소스 토폴로지 모델 유닛들은 식별될 필요가 없는데, 이는 상기 변경되지 않은 토폴로지 모델 유닛과 이미 연관된 상기 자동화 단계 모델이 사용될 수 있기 때문이다. 어떠한 모델 유닛이라도 상기 소스 토폴로지 유닛으로부터 제거된다면 상기 대응하는 배치 연산 또한 상기 타겟 워크플로 모델로부터 제거될 수 있다. 또한, 일 실시 예에서 다수의 토폴로지 모델 유닛들은 자동화 단계 모델 (ASM)과도 연관될 수 있다. 다수의 토폴로지 모델 유닛들이 자동화 단계 모델과 연관되면, 모든 유닛들이 상기 타겟 토폴로지 모델에 존재하는지에 관한 검사(check)가 이루어질 수 있다. 단계 (1420)에서, 상기 타겟 클라우드와 연관된 자동화 단계 모델들을 찾기 위해 자산 라이브러리 (500)이 탐색된다.
일치하는 자동화 단계 모델들이 하나라도(any) 상기 자산 라이브러리에서 찾아졌는지에 대한 결정이 내려진다(결정단계 (1430)). 일치하는 자동화 단계 모델들이 찾아지지 않았다면, 결정단계 (1430)은 “아니오(no)” 분기로 분기하고, 단계 (1450)에서, 타겟 클라우드에 대한 새로운 자동화 단계 모델이 생성된다. 반대로, 일치하는 자동화 단계 모델이 찾아졌다면, 결정단계 (1430)은 “예(yes)” 분기로 분기하고 상기 찾아진 자동화 단계 모델이 사용된다. 단계 (1450)에서, 상기 자동화 단계 모델 (상기 탐색을 통해 찾아졌거나 아니면 단계 (1440)에서 생성된 것)이 상기 식별된 새로운 또는 변경된 토폴로지 모델 유닛과 연관된다. 처리해야 할 변경된 또는 새로운 토폴로지 모델 유닛들이 더 있는지에 관한 결정이 내려진다(결정단계 (1460)). 처리해야 할 변경된 또는 새로운 토폴로지 모델 유닛들이 있다면, 결정단계 (1460)은 “예(yes)” 분기로 분기한다. 이 분기는 되돌아가서 그 다음 변경된 또는 새로운 토폴로지 모델 유닛을 식별하고 식별된 것을 상기 기술된 바와 같이 자동화 단계 모델과 연관시킨다. 변경된 모델 유닛들에 대해서, 소스 클라우드에서 사용된 자동화 단계 모델(Automation Step Model)의 명칭이, 타겟 클라우드에 대한 유사한 자동화 단계 모델들(Automation Step Models)을 찾기 위하여, 탐색에서 사용될 수 있다. 이 루핑은 처리해야 할 변경된 또는 새로운 토폴로지 모델 유닛들이 더 이상 없을 때까지 계속되고, 그 다음 결정단계 (1460)은 “아니오(no)” 분기로 분기한다.
단계 (1470)에서, 타겟 클라우드에 대한 배치 워크플로 모델 (1480)이 생성된다. 상기 워크플로 모델은 솔루션을 타겟 클라우드에 포팅하기 위하여 생성되는데, 이것은 식별된 새로운 또는 변경된 토폴로지 모델 유닛들과 연관된 상기 찾아진 혹은 새롭게 생성된 자동화 단계 모델들뿐만 아니라 소스 토폴로지 모델 내에 변경되지 않은 토폴로지 모델 유닛들과 이미 연관된 자동화 단계 모델들을 이용하여 생성된다. 그 다음 프로세싱은 (1395)에서 상기 호출 루틴으로 돌아간다(도 12 참조).
도 15는 일 실시 예에 따라서, 상기 모델로부터 배치 워크플로를 생성하고 배치 엔진을 이용하여 배치하기 위해 취해지는 단계들을 도시하는 흐름도이다. 도 15는 도 12에 도시된 미리 정의된 프로세스 (1250)에 의해 호출된다. 도 15에 도시된 프로세싱은 (1500)에서 시작하고, 단계 (1510)에서, 솔루션을 타겟 클라우드에 배치하기 위해 사용될 배치 엔진을 배치 엔진 데이터 기억장치 (1515)에서 선택한다. 어떤 타겟 클라우드들은 특정한 배치 엔진을 사용할 수 있지만, 한편 다른 범용 배치 엔진들 또한 솔루션들을 타겟 클라우드들에 배치하기 위해 사용될 수 있다. 배치 엔진들은 서로 다른 처리 능력과 특성(processing capabilities and characteristics)을 가지며, 이로 인해 솔루션을 특정한 타겟 클라우드에 배치하기 위해 특정한 배치 엔진이 선호될(attractive) 수 있다. 단계 (1520)에서, 도 14에서 생성된 배치 워크플로 모델 (1480)로부터 제1 배치 연산(들)이 선택된다.
각각의 자동화 단계 모델은 다수의 배치 연산들을 포함할 수 있다. 이 배치 연산들은 워크플로 모델에서 순차적으로 순서가 매겨진다(ordered sequentially). 상기 배치 연산들은 또한 배치 엔진에 고유하다(specific). 그 다음 각각의 배치 연산은 배치 엔진 고유 단계(deployment engine specific step)를 생성하는데 사용된다. 단계 (1520)은 하나 또는 그 이상의 배치 엔진 (1515) 고유 단계들을 생성하며, 이들은 상기 선택된 배치 엔진에 의해 실행될 수 있다. 상기 생성된 배치 엔진 고유 단계들은 배치 워크플로 (1530)에 제1 배치 단계 (1531), 제2 배치 단계 (1532)등으로 최종 배치 단계 (1534)까지로 저장된다. 처리해야 할 배치 연산들이 더 있는지에 관한 결정이 내려진다(결정단계 (1540)). 처리해야 할 단계 모델들이 더 있다면, 결정단계 (1540)은 “예(yes)” 분기로 분기하고, 되돌아가 전술한 바와 같이 단계 (1520)에서 배치 워크플로 모델 (1480)으로부터 다음 자동화 단계 모델을 선택하고 상기 배치 엔진 고유 단계들을 생성한다. 이 루핑은 처리해야 할 배치 연산들이 더 이상 없을 때까지 계속되며, 그 다음 결정단계 (1540)은 “아니오(no)” 분기로 분기하고, 이곳에서 선택된 배치 엔진 (1550)이 호출되어 배치 워크플로 (1530)을 처리한다. 배치 워크플로 (1530)은 상기 배치 연산들을 포함하고, 호출 전에 선택된 배치 엔진 (1550)으로 전송된다.
배치 엔진 프로세스는 배치 워크플로 (1530)에 포함된 제1 배치 단계 (단계 (1531))을 실행함으로써 시작된다. 제1 배치 단계의 실행의 결과로 상기 솔루션의 일부가 타겟 플랫폼 (타겟 클라우드 (1270))으로 배치된다. 처리해야 할 배치 단계들이 더 있는지에 관한 결정이 배치 엔진들 (1515) 중 하나에 의해 내려진다(결정단계 (1570)). 처리해야 할 배치 단계들이 더 있다면, 결정단계 (1570)은 “예(yes)” 분기로 분기하고, 되돌아가서 배치 워크플로 (1530)으로부터 다음 단계 (예를 들면, 제2 배치 단계 1532)를 선택하고 실행하며, 그 결과 상기 솔루션이 상기 타겟 플랫폼으로 더 배치된다. 이 루핑은 최종 배치 단계 (최종 배치 단계 1534)가 단계 (1560)에서 처리될 때까지 계속되며, 그 다음 결정단계 (1570)은 “아니오(no)” 분기로 분기하고 프로세싱은 (1595)에서 리턴한다(return). 모든 배치 단계들을 실행한 결과 새로운 클라우드 기반 솔루션 (1275)이 상기 플랫폼 (타겟 클라우드 (1270))상에서 실행된다.
도 16은 일 실시 예에 따라서, 상기 모델로부터 배치 워크플로를 생성하고 복합 솔루션을 다수의 클라우드 기반 환경들에 배치하기 위해 취해지는 단계들을 도시하는 흐름도이다. 상기 단계들은 도 15에서 도시되고 기술된 단계들과 동일하나, 도 16에서는 배치 단계들이 솔루션을 두 타겟 플랫폼들 (제1 타겟 클라우드 (1610)과 제2 타겟 클라우드 (1630))로 배치하게 되는데, 그 결과로 복합 솔루션 (1600)이 만들어진다. 상기 타겟 클라우드들 각각은 상기 솔루션의 가상 부분 (제1 타겟 클라우드 (1610)에 의해 호스트되는 가상 부분(virtual part) (1620)과 제2 타겟 클라우드 (1630)에 의해 호스트되는 가상 부분 (1640)을 호스트한다. 또한, 배치 워크플로 (1530)에 포함된 상기 하나 또는 그 이상의 배치 단계들은 가상 부분 (1620)과 가상 부분 (1640) 사이에 통신 링크 (communication link, 1650)을 구축한다. 통신 링크 (1650)은 가상 사설망 (VPN)을 통해서 구축 가능하다. 두 개의 클라우드와 가상 부분들이 복합 솔루션 (1600)에 도시되었지만, 어떤 수의 타겟 클라우드들과 가상 부분들이라도 가상 부분들 사이에 통신 링크들이 구축된 복합 솔루션에 포함될 수 있다.
일 실시 예에서, 상기 타겟 클라우드 또는 하이퍼바이저에 대한 솔루션은 1) 이미지 컨텐츠 복사와 2) 통합 디스크 파일 형식으로 가상 이미지 컨텐츠를 표현하는 것을 피할 수 있는 모델 지향 접근방식(model driven approach)을 사용하여 재구축(reconstructed)될 수 있다. 실시 예들은 솔루션이 호환 불가능한 하드웨어 아키텍처, 하이퍼바이저 기술, 유형 및 버전의 게스트 OS를 가진 서로 다른 클라우드 (또는 하이퍼바이저) 제공자들 사이에서 포팅되도록 해줄 수 있다. 실시 예들은 또한 클라우드 고유 (또는 하이퍼바이저 고유) 구성들이 포팅하는 동안 추가되도록 해줄 수 있다. 실시 예들은 또한 부분적으로 포팅될 수 있는 하이브리드 클라우드들을 위한 복합 솔루션에 가상 이미지 부분들이 포함되도록 해줄 수 있다.
일 실시 예에서, 소스 플랫폼과 연관된 소스 토폴로지 모델과 타겟 플랫폼과 연관된 타겟 토폴로지 모델의 차를 식별한 결과인 토폴로지 차(topology difference)는 이클립스 모델링 프레임워크(Eclipse Modeling Framework, EMF) 비교 프로젝트(Compare Project)와 같은 도구(tool)를 사용하여 획득되고 그리고/또는 패치들에(로) 저장될 수 있다. 일 실시 예에서, 상기 디퍼런싱(differencing)의 일부는 적어도 하나의 프로세서에 의해 수행되며, 이 프로세서는 하나 또는 그 이상의 프로세서들에서 선택될 수 있다. 일 실시 예에서, 토폴로지 모델 유닛들은 이클립스(Eclipse)상의 래쇼날 소프트웨어 아키텍트(Rational Software Architect)를 사용하여 구축될 수 있고 그리고/또는 시각화될 수 있다. 일 실시 예에서, 자동화 단계 모델들은 이클립스(Eclipse)상의 래쇼날 소프트웨어 아키텍트(Rational Software Architect)를 사용하여 구축될 수 있고 그리고 또는 시각화될 수 있다. 래쇼날 소프트웨어 아키텍트는 상기 모델 데이터를 XML 형식으로 저장한다. XML은 가상 기기, 미들웨어, 가상 이미지, 게스트 운영체제, 클라우드 고유 구성, 애플리케이션 수준 통신 링크들 등과 같은 서로 다른 모델 유닛들에 대해서 서로 다른 섹션들을 포함한다. 각 XML 섹션은 소프트웨어 버전 및 유형과 같은 다수의 배치 파라미터들을 포함할 수 있다. 가상 기기 섹션 내의 파라미터들은 상기 타겟 클라우드에 대한 호환 가능한 가상 이미지를 찾기 위해 상기 자산 라이브러리를 탐색하는데 있어서 입력 값으로 사용될 수 있다.
일 실시 예에서, 자산 라이브러리로부터 워크플로 모델 내의 연산을 획득하는 것은 래쇼날 자산 매니저(Rational Asset Manager)를 탐색함으로써 획득될 수 있으며, 래쇼날 자산 매니저에는 상기 배치 연산들을 포함하는 자동화 단계 모델들이 저장되어 있을 수 있다. 상기 탐색은 상기 자동화 단계 모델과 연관된 상기 토폴로지 모델 유닛을 위한 상기 메타데이터를 입력값으로 사용할 수 있다. 일 실시 예에서, 상기 자산 라이브러리의 일부는 지속형 기억 매체에 저장될 수 있다. 일 실시 예에서, 상기 자산 라이브러리의 일부를 포함한 전체 자산 라이브러리는 지속형 기억 매체에 저장될 수 있다.
일 실시 예에서, 솔루션 - 상기 솔루션의 배치된 일부는 상기 타겟 플랫폼과 호환 가능한 타겟 이미지를 포함함 - 의 일부를 배치하는 상기 연산을 수행하는 것은 배치 엔진으로서 티볼리 프로비저닝 매니저(Tivoli Provisioning Manager)를 사용하여 실행될 수 있다. 일 실시 예에서, 티볼리 프로비저닝 매니저는 상기 솔루션의 서로 다른 부분들을 서로 다른 클라우드들 또는 하이퍼바이저들에 배치하는 워크플로를 실행할 수 있다.
솔루션을 소스 플랫폼에서 타겟 플랫폼으로 포팅하는 것에 대한 방법들, 컴퓨터 프로그램 제품들 및 시스템들의 실시 예들이 설명되었다. 소스 토폴로지 모델 내의 일 세트의 모델 유닛들과 타겟 토폴로지 모델 내의 일 세트의 모델 유닛들 사이의 차는 결정(상기 실시 예들에 의해서)될 수 있다. 소스 토폴로지 모델은 소스 플랫폼과 연관되고 타겟 토폴로지 모델은 타겟 플랫폼과 연관된다. 워크플로 모델 내의 연산이 자산 라이브러리로부터 획득되는데, 이는 상기 소스 토폴로지 모델의 일 세트의 모델 유닛들과 상기 타겟 토폴로지 모델의 일 세트의 모델 유닛들 사이에서 결정된 차와 연관(association)에 의해서 그렇게 한다. 상기 연산은 전송된다. 상기 연산은 플랫폼과 호환 가능한 타겟 이미지를 포함하는 솔루션의 적어도 일부를 배치하도록 구성된다. 이러한 실시 예들은 서로 다른 하드웨어 아키텍처, 가상 이미지 형식 및 프로그래밍 인터페이스를 지원하는 서로 다른 인프라스트럭처 클라우드들 또는 하이퍼바이저들 사이에 솔루션들을 포팅하는데 사용된다. 이러한 실시 예들은 또한 솔루션들을 포팅할 때 공통 솔루션 컴포넌트들, 구성 파라미터들, 및 배치 자동화 연산들을 재사용하는데 사용될 수 있다.
더 공개되는 실시 예들에서, 소스 플랫폼은 제1 세트의 하드웨어 및 소프트웨어 자원들이고 타겟 플랫폼은 제2 세트의 하드웨어 및 소프트웨어 자원들이다. 솔루션의 적어도 일부는 제1 세트의 하드웨어 및 소프트웨어 자원들에서 제2 세트의 하드웨어 및 소프트웨어 자원들로 포팅된다. 이러한 실시 예들은 솔루션을 하나의 클라우드 (또는 하이퍼바이저 또는 컴퓨터 시스템)에서 또 하나의 클라우드 (또는 하이퍼바이저 또는 컴퓨터 시스템)로 포팅하는데 사용될 수 있다.
더 공개되는 실시 예들에서, 소스 플랫폼은 사설 하드웨어 및 소프트웨어 자원들의 세트이고 타겟 플랫폼은 공공 하드웨어 및 소프트웨어 자원들의 세트이다. 이러한 실시 예들은 솔루션을 사설 클라우드에서 공공 클라우드로 포팅하는데 사용될 수 있다. 다른 실시 예들은 솔루션을 공공 클라우드에서 사설 클라우드로, 사설 클라우드에서 사설 클라우드로, 그리고/또는 공공 클라우드에서 공공 클라우드로 포팅하는데 사용될 수 있다.
더 공개되는 실시 예들에서, 솔루션은 복합 솔루션이다. 제2 세트의 하드웨어 및 소프트웨어 자원들은 복수의 하드웨어 및 소프트웨어 자원들의 세트를 포함한다. 이러한 실시 예들은 솔루션의 다른 가상 부분들을 하이브리드 클라우드를 포함하여 다른 클라우드들 (또는 하이퍼바이저들 또는 컴퓨터 시스템들)에 포팅하는데 사용될 수 있다.
더 공개되는 실시 예들에서, 자산 라이브러리에 저장된 메타데이터는 타겟 플랫폼과 연관된 적어도 하나의 베이스 이미지 메타데이터를 위해 탐색된다. 이러한 실시 예들은 상기 타겟 플랫폼에 대한 호환 가능한 베이스 가상 이미지들을 찾는데 사용될 수 있으며, 상기 타겟 플랫폼에서 상기 솔루션의 필수 소프트웨어 컴포넌트들이 사전에 설치된다.
더 공개되는 실시 예들에서, 소스 플랫폼은 제1 세트의 하나 또는 그 이상의 컴퓨터 시스템들상에서 실행되는 제1 하이퍼바이저이고 타겟 플랫폼은 제2 세트의 하나 또는 그 이상의 컴퓨터 시스템들상에서 실행되는 제2 하이퍼바이저이다. 제1 및 제2 하이퍼바이저는 다른 유형의 하이퍼바이저이다. 이러한 실시 예들은 솔루션을 하나의 하이퍼바이저 (또는 컴퓨터 시스템)에서 또 하나의 하이퍼바이저 (또는 컴퓨터 시스템)로 포팅하는데 사용될 수 있다.
더 공개되는 실시 예들에서, 결정된 차는 새로운 모델 유닛, 변경된 모델 유닛, 또는 제거된 모델 유닛 중 적어도 하나를 포함한다. 이러한 실시 예들은 솔루션들을 포팅할 때 공통 솔루션 컴포넌트들, 구성 파라미터들, 및 배치 자동화 연산들을 재사용하는데 사용될 수 있다.
더 공개되는 실시 예들에서, 결정된 차는 소스 토폴로지 내의 일 세트의 모델 유닛들의 하나 또는 그 이상의 속성들을 식별하는 것과, 상기 식별된 속성들이 타겟 토폴로지 내의 일 세트의 모델 유닛들의 하나 또는 그 이상의 식별된 속성들과 비호환성인지를 식별하는 것을 포함한다. 상기 결정된 차는 타겟 토폴로지 모델과 비교하여 소스 토폴로지 모델의 모델 유닛들 내의 (유형을 포함한) 비호환성 속성들을 식별하는 것을 포함할 수 있다. 이러한 실시 예들은 솔루션들을 포팅할 때 변경이 필요한 솔루션 컴포넌트들, 구성 파라미터들 및 배치 자동화 연산들을 식별하는데 사용될 수 있다.
더 공개되는 실시 예들에서, 모델 유닛의 식별된 비호환성 속성은, 상기 식별된 속성들이 비호환성이라고 식별하는 것에 응답하여, 분석된다. 상기 모델 유닛의 비호환성 속성은 솔루션을 소스 플랫폼으로부터 타겟 플랫폼으로 포팅하기 위해 수정된다. 이러한 실시 예들은 포팅할 솔루션들에 대한 솔루션 컴포넌트들, 구성 파라미터들 및 배치 자동화 연산들의 변경사항들을 결정하는데 사용될 수 있고, 또한 모델 유닛들 내의 식별된 비호환성 속성들을 타겟 플랫폼 토폴로지 모델과 호환되도록 만드는데 사용될 수 있다.
더 공개되는 실시 예들에서, 식별된 비호환성 속성은 소스 토폴로지 모델과 비교될 때 모델 유닛이 타겟 토폴로지에서 제거, 추가 또는 수정되었는지를 식별한다. 이러한 실시 예들은 솔루션들을 포팅할 때 변경이 필요한 솔루션 컴포넌트들, 구성 파라미터들 및 배치 자동화 연산들을 식별하는데 사용될 수 있다.
더 공개되는 실시 예들에서, 비호환성 속성의 수정은, 소스 토폴로지의 일 세트의 모델 유닛들과 타겟 토폴로지의 일 세트의 모델 유닛들 사이에서 식별된 비호환성을 교정하기(rectify) 위하여, 새로운 모델 유닛을 추가하거나, 모델 유닛을 업데이트하거나 또는 모델 유닛을 제거하는 것을 더 포함한다. 이러한 실시 예들은 포팅할 솔루션들에 대한 솔루션 컴포넌트들, 구성 파라미터들 및 배치 자동화 연산들의 변경사항들을 결정하는데 사용될 수 있다.
더 공개되는 실시 예들에서, 모델 유닛은 토폴로지 모델의 하나 또는 그 이상의 속성들을 식별하는 데이터를 포함한다. 이러한 실시 예들은 솔루션을 플랫폼에 배치하는 것에 대한 구성 및 배치 파라미터들을 결정하는데 사용될 수 있다.
더 공개되는 실시 예들에서, 소스 플랫폼은 제1 세트의 하드웨어 자원들 및 소프트웨어 자원들상에서 실행되는 제1 하이퍼바이저이고 타겟 플랫폼은 제2 세트의 하드웨어 및 소프트웨어 자원들상에서 실행되는 제2 하이퍼바이저이다. 상기 소스 및 타겟 하이퍼바이저들은 서로 다른 유형들이다. 이러한 실시 예들은 서로 다른 유형의 하이퍼바이저들과 호환되는 가상 이미지들 사이에 솔루션을 포팅하는데 사용될 수 있다.
타겟 플랫폼에 배치될 토폴로지 모델 유닛을 획득하는 방법들, 컴퓨터 프로그램 제품들 및 시스템들의 실시 예들이 제공된다. 자산 라이브러리에 저장된 복수의 자동화 단계 모델들이 수신된 토폴로지 모델 유닛과 연관되는 선택된 자동화 단계 모델을 위해 탐색된다. 상기 탐색 단계는 하나 또는 그 이상의 프로세서들에 의해 수행된다. 하나 또는 그 이상의 배치 연산들이 상기 자산 라이브러리에서 획득된다. 상기 획득된 배치 연산들은 상기 선택된 자동화 단계 모델과 연관된다. 상기 획득된 배치 연산들은 토폴로지 모델 유닛을 타겟 플랫폼에 배치하기 위해 수행된다. 이러한 실시 예들은 솔루션을 다른 플랫폼에 배치하는 것에 대한 새로운 또는 변경된 워크플로를 구축하는데 사용될 수 있다.
방법들, 컴퓨터 프로그램 제품들 및 시스템들의 실시 예들은 지속형 기억 매체로부터 소스 이미지 메타데이터를 검색하는 방법(approach)을 제공한다. 소스 이미지 메타데이터는 소스 플랫폼과 연관된 소스 이미지와 대응한다. 상기 검색된 소스 메타데이터는 타겟 플랫폼과 연관된 하나 또는 그 이상의 이용 가능한 이미지들에 대응하는 하나 또는 그 이상의 이용 가능한 이미지 메타데이터와 비교된다. 상기 비교에 근거하여 상기 이용 가능한 이미지 메타데이터 중 상기 소스 이미지 메타데이터와 가장 호환성 있는 하나가 식별된다. 상기 식별된 이용 가능한 이미지 메타데이터에 대응하는 상기 이용 가능한 이미지는 상기 타겟 플랫폼과 호환되는 타겟 이미지로서 사용된다. 이러한 실시 예들은 상기 타겟 플랫폼에 대해서 호환성 있는 베이스 가상 이미지들을 찾는데 사용될 수 있으며, 상기 타겟 플랫폼에서 상기 솔루션의 필수 소프트웨어의 (모두는 아니더라도) 대부분이 사전에 설치된다.
여러 가지 다른 실시 예들이 더 있을 수 있다는 것을 이해해야 한다. 예를 들면, 일 실시 예에서, 본 발명은 컴퓨터 프로그램 코드를 포함하는 컴퓨터 판독가능/사용가능 매체를 제공하며, 이 컴퓨터 프로그램 코드는 컴퓨터 인프라스트럭처가 여기에서 논의된 기능을 제공할 수 있도록 해준다. 이와 같은 정도로, 상기 컴퓨터 판독가능/사용가능 매체는 상기 여러 가지 프로세스들의 각각을 구현하는 프로그램 코드를 포함한다. 컴퓨터 판독가능 매체 또는 컴퓨터 사용가능 매체라는 용어는 상기 프로그램 코드의 물리적인 실시 예의 하나 또는 그 이상의 유형들을 포함한다는 것을 이해해야 한다. 특히, 상기 컴퓨터 판독가능/사용가능 매체는 하나 또는 그 이상의 이동식 기억장치 제조품들 (예를 들면, 컴팩트 디스크, 자기 디스크, 테이프 등)상에 수록된 프로그램 코드; (도 1의) 메모리 (28) 및/또는 시스템 기억장치 (34) (예를 들면, 고정 디스크, ROM, RAM, 캐시 메모리 등)와 같은 컴퓨팅 디바이스의 하나 또는 그 이상의 데이터 기억장치 부분들상의 프로그램 코드; 및/또는 (예를 들면, 상기 프로그램 코드의 유선/무선 전자 배포 중에) 네트워크를 통해서 이동하는 데이터 신호 (예를 들면, 전파 신호)로서 프로그램 코드를 포함할 수 있다.
일 실시 예에서, 상기 프로세스를 회원제(subscription), 광고(advertising), 및/또는 수수료(fee) 기반으로 수행하는 방법이 제공된다. 즉, 솔루션 통합자(Solution Integrator)와 같은 서비스 제공자는 여기에 기술된 서비스들을 제공하는 사업을 할 수도 있다. 이 경우, 서비스 제공자는 (도 1의) 컴퓨터 시스템 (12)와 같이, 하나 또는 그 이상의 고객(들)을 위해 상기 프로세스를 수행하는 컴퓨터 인프라스트럭처의 생성, 유지보수, 지원행위 등을 할 수 있다. 그 대가로, 서비스 제공자는 회원제(subscription) 및/또는 수수료 약정을 맺고 고객(들)에게서 요금을 받을 수 있고/있거나 서비스 제공자는 하나 또는 그 이상의 제3자에게 광고 콘텐트를 판매하고 그로부터 요금을 받을 수 있다.
일 실시 예에서, 여기에 기술된 기능을 제공하기 위한 컴퓨터 구현 방법이 제공된다. 이 경우에, (도 1의) 컴퓨터 시스템 (12)와 같은 컴퓨터 인프라스트럭처가 제공될 수 있고 상기 프로세스를 수행하기 위한 하나 또는 그 이상의 시스템들이 획득되어 (예를 들면, 생성, 구매, 사용, 수정 등이 되어) 상기 컴퓨터 인프라스트럭처에 배치될 수 있다. 이와 같은 정도로, 시스템의 상기 배치는: (1) 컴퓨터 판독가능 매체로부터 (도 1의) 컴퓨터 시스템 (12)와 같은 컴퓨팅 디바이스들상에 프로그램 코드를 설치하는 것; (2) 하나 또는 그 이상의 컴퓨팅 디바이스들을 상기 컴퓨터 인프라스트럭처에 추가하는 것; 및 (3) 상기 컴퓨터 인프라스트럭처의 하나 또는 그 이상의 기존 시스템들을 편입(incorporating)하고/하거나 수정하여 상기 컴퓨터 인프라스트럭처가 상기 프로세스를 수행할 수 있도록 하는 것 중 하나 또는 그 이상을 포함할 수 있다.
상기 기술된 구현들 중 하나는 소프트웨어 애플리케이션, 즉, 코드 모듈 내의 일 세트의 명령들 (프로그램 코드) 또는 다른 컴퓨터 프로그램 명령들이고, 이들은 예를 들면, 상기 컴퓨터의 랜덤 액세스 메모리에 상주할 수 있다. 기능기술자료는 일 세트의 명령들의 “프로그램 코드”, “컴퓨터 프로그램 코드”, “컴퓨터 명령들” 및 임의의 언어, 코드 또는 표기법으로 된 기타 수식(expression)을 포함하며, 상기 명령들은 정보 처리 능력(information processing capability)을 가진 컴퓨팅 디바이스가 특정한 기능(function)을 곧바로 수행하거나 아니면 (a) 다른 언어, 코드 또는 표기법으로 변환, 및/또는 (b) 다른 자료 형식으로 복제(reproduction), 둘 중 하나 또는 둘 모두를 한 후에 수행하게 하도록 의도된 것이다. 이와 같은 정도로, 프로그램 코드는 하나 또는 그 이상의 애플리케이션/소프트웨어 프로그램, 컴포넌트 소프트웨어/기능들의 라이브러리, 운영체제, 특정한 컴퓨팅 디바이스의 베이직 디바이스 시스템/드라이버 등으로 실시될 수 있다. 컴퓨터가 요구할 때까지, 일 세트의 명령들은 다른 컴퓨터 메모리에 저장될 수 있는데, 예를 들면, 하드 디스크 드라이브에, 또는 (CD ROM에서 최종적으로 사용하기 위한) 광학 디스크나 (플로피 디스크 드라이브에서 최종적으로 사용하기 위한) 플로피 디스크 드라이브와 같은 이동식 메모리(removable memory)에 저장될 수 있다. 그러므로, 상기 실시 예들은 컴퓨터에서 사용하기 위한 컴퓨터 프로그램 제품으로 구현될 수 있다. 또한, 상기 기술된 여러 가지 방법들은 소프트웨어에 의해 선택적으로 활성화되거나 재구성된 범용 컴퓨터에서 편리하게 구현되지만, 이 기술 분야에서 통상의 지식을 가진 자는 또한 이러한 방법들이 하드웨어에서, 펌웨어에서, 또는 상기 요구한 방법의 단계들을 수행하도록 구축된 더 특수화된 장치에서 실행될 수 있다는 것을 인식할 것이다. 기능기술자료는 기능(functionality)을 머신(machine)에 나누어주는 정보이다. 기능기술자료는 컴퓨터 프로그램들, 명령들, 규칙들, 사실들(facts), 계산할 수 있는(computable) 기능들의 정의들, 객체들(objects), 및 데이터 구조들을 포함한다(그러나 이에 한정되지는 않는다).
프로그램 코드를 저장 및/또는 실행하는데 적합한 정보 처리 시스템 (데이터 처리 시스템)이 이하에 제공될 수 있고 이것은 시스템 버스를 통해서 메모리 소자(memory element)(들)에 직접 또는 간접적으로 통신가능하도록 결합된 적어도 하나의 프로세서를 포함할 수 있다. 상기 메모리 소자들에는 상기 프로그램 코드의 실제 실행 중에 사용되는 로컬 메모리, 대용량 기억장치(bulk storage), 및 캐시 메모리들이 포함되며 (그러나 이에 한정되지는 않으며), 상기 캐시 메모리들은 실행하는 동안 코드가 대용량 기억장치로부터 검색되어야 하는 횟수를 줄이기 위해 적어도 일부 프로그램 코드의 임시 기억장소(temporary storage)를 제공한다. 입력/출력 또는 장치 디바이스들 (키보드, 디스플레이, 포인팅 장치 등이 포함되나 이에 한정되지는 않음)이 상기 시스템에 직접 또는 중개 디바이스 제어장치를 통해서 결합될 수 있다.
네트워크 어댑터들은 또한 상기 데이터 처리 시스템이 다른 데이터 처리 시스템들, 원격 프린터들, 저장 디바이스들, 및/또는 유사한 것에 결합되게 할 수 있도록 상기 시스템에, 사설 또는 공공 중개 네트워크들의 임의의 조합을 통해서 결합될 수 있다. 네트워크 어댑터들의 예로는 모뎀, 케이블 모뎀, 및 이더넷 카드가 포함된다(그러나 이에 한정되지는 않는다).
전술한 기술은 예시와 기술의 목적으로 제공된 것이다. 전술한 기술은 명백하게 많은 수정들(modifications)과 변경들(variations)이 가능한 것으로서 포괄적이거나 한정하는 의도로 기술된 것은 아니다. 이러한 수정들과 변경들은 이 기술 분야에서 통상의 지식을 가진 자라면 명백히 인식할 수 있으며, 첨부하는 청구항들에 의해 정의되는 공개의 범위에 포함된다.
특정한 실시 예들이 도시되고 기술되었지만, 이 기술 분야에서 통상의 지식을 가진 자라면 여기에 기술된 내용에 근거하여, 이 명세서와 명세서의 더 넓은 구현 실시 예들에서 벗어나지 않고 변경들과 수정들이 될 수 있다는 것을 분명히 인식할 것이다.
또한, 하나 또는 그 이상의 실시 예들은 첨부하는 청구항들에 의해 정의된다는 것을 이해해야 한다. 이 기술 분야에서 통상의 지식을 가진 자는, 소개된 청구 요소의 특정한 수(number)를 의도한 것이라면, 이러한 의도는 그 청구항에 분명하게 열거될 것이고, 이러한 열거가 없다면 그로 인해 한정되는 것은 존재하지 않는다는 것을 이해할 수 있을 것이다. 한정이 아닌 이해를 돕기 위한 예를 들자면, 이어서 첨부되는 청구항들은 청구 요소들을 소개하기 위해 “적어도 하나(at least one)”와 “하나 또는 그 이상의(one or more)”라고 소개하는 문구들을 사용한다. 그러나, 이러한 문구들을 사용하는 것이, 청구 요소가 단수로 소개된다고 해서 위와 같이 소개되는 청구 요소를 가진 특정한 청구항을 단지 하나의 청구 요소만을 포함하는 것으로 한정한다는 의미로 해석되어서는 안 되며, 이는 심지어 상기 동일한 청구항이 “하나 또는 그 이상의”나 “적어도 하나” 그리고 단수로 표현된 문구들을 포함하고 있을 때도 마찬가지다. 또한 “상기”라는 문구가 들어간 청구항들에서 사용할 때도 마찬가지다.

Claims (27)

  1. 플랫폼들 간 가상 이미지들을 포팅하는(porting) 방법에 있어서, 상기 방법은:
    소스 플랫폼(source platform)과 연관된 소스 토폴로지 모델과 타겟 플랫폼(a target platform)과 연관된 타겟 토폴로지 모델을 차별화하는 단계(differencing) - 상기 소스 플랫폼은 제1 클라우드이고, 상기 타겟 플랫폼은 제2 클라우드이고, 상기 차별화하는 단계는 토폴로지 차(topology difference)를 만들고, 상기 차별화하는 단계의 적어도 일부는 프로세서에 의해서 수행되며, 상기 차별화하는 단계는 상기 소스 플랫폼에 대응하는 제1 세트의 모델 유닛들과 상기 타겟 플랫폼에 대응하는 제2 세트의 모델 유닛들을 비교하는 단계를 포함하고, 상기 비교에 의해 하나 혹은 그 이상의 변경된 모델 유닛들과 하나 혹은 그 이상의 공통 모델 유닛들이 얻어짐 -;
    상기 공통 모델 유닛들에 대응하는 상기 소스 토폴로지 모델로부터 제1 세트의 자동화 단계 모델들을 검색하는 단계;
    상기 변경된 모델 유닛들을 위해 자산 라이브러리(an asset library)를 탐색하는 단계 - 상기 탐색에 의해 상기 변경된 모델 유닛들에 대응하는 제2 세트의 자동화 단계 모델들이 얻어짐 -;
    상기 자산 라이브러리로부터 워크플로 모델(a workflow model) 내의 연산(operation)을 획득하는 단계(obtaining) - 상기 워크플로 모델은 상기 제1 및 제2 세트의 자동화 단계 모델들을 포함하고, 상기 연산은 상기 토폴로지 차와 연관되고, 상기 자산 라이브러리의 적어도 일부는 지속형 기억 매체(a persistent storage medium)에 저장됨-; 및
    솔루션의 적어도 일부를 배치하기 위해 상기 연산을 전송하는 단계(transmitting) - 상기 솔루션의 배치된 일부는 상기 타겟 플랫폼과 호환 가능한 타겟 가상 이미지(a target virtual image) 를 포함함 - 를 포함하는
    방법.
  2. 제1항에 있어서, 상기 연산을 실행함으로써 상기 타겟 플랫폼에 상기 솔루션의 일부를 배치하는 단계를 더 포함하는
    방법.
  3. 삭제
  4. 제1항에 있어서, 상기 타겟 플랫폼과 연관되는 적어도 하나의 베이스 가상 이미지 메타데이터를 위해 메타데이터를 탐색하는 단계(searching)를 더 포함하는
    방법.
  5. 삭제
  6. 삭제
  7. 삭제
  8. 제1항에 있어서, 상기 토폴로지 차를 상기 소스 토폴로지 모델과 상기 타겟 토폴로지 모델에 연관시키는 단계; 및
    상기 토폴로지 차와 상기 연관들을 상기 자산 라이브러리에 패치(patch)로서 저장하는 단계를 더 포함하는
    방법.
  9. 제8항에 있어서, 상기 소스 토폴로지 모델에 부분적으로 공통인 제2 소스 토폴로지 모델과 상기 타겟 플랫폼에 부분적으로 공통인 제2 타겟 플랫폼을 수신하는 단계;
    상기 자산 라이브러리에서, 상기 패치를 포함하여, 하나 또는 그 이상의 패치들을 탐색하는 단계 - 상기 탐색은 상기 연관된 소스 토폴로지 모델을 포함함 -;
    상기 탐색에 응답하여 상기 자산 라이브러리로부터 상기 패치를 검색하는 단계; 및
    상기 제2 타겟 플랫폼과 연관된 제2 타겟 토폴로지를 얻기 위해 상기 검색된 패치를 제2 소스 토폴로지 모델에 적용하는 단계를 더 포함하는
    방법.
  10. 제1항에 있어서, 완전한 솔루션(complete solution)을 배치하기 위해 상기 연산을 포함하여, 복수의 연산들을 전송하는 단계를 더 포함하는
    방법.
  11. 제1항에 있어서,
    상기 차별화하는 단계에 의해서 하나 또는 그 이상의 새로운 유닛들이 식별되며,
    상기 새로운 유닛들은 상기 타겟 토폴로지 모델에서 찾아지고 상기 소스 토폴로지 모델에서는 찾아지지 않으며,
    상기 방법은 상기 새로운 유닛들을 위해 상기 자산 라이브러리를 탐색하는 단계를 더 포함하는
    방법.
  12. 정보 처리 시스템에 의해 구현되는 방법에 있어서,
    프로세서를 이용하여, 지속형 기억 매체(persistent storage media)로부터 소스 이미지 메타데이터를 검색하는 단계 - 상기 소스 이미지 메타데이터는 소스 플랫폼과 연관된 소스 이미지에 대응함 -;
    상기 프로세서 의해, 검색된 상기 소스 이미지 메타데이터를, 타겟 플랫폼과 연관된 하나 또는 그 이상의 이용가능한 가상 이미지들에 대응하는 하나 또는 그 이상의 이용가능한 이미지 메타데이터와 비교하는 단계;
    상기 비교에 기초하여, 상기 소스 이미지 메타데이터와 가장 호환이 되는 상기 이용가능한 이미지 메타데이터 중 하나를 식별하는 단계; 및
    식별된 상기 이용가능한 이미지 메타데이터에 대응하는 상기 이용가능한 가상 이미지를 상기 타겟 플랫폼과 호환되는 타겟 가상 이미지로서 이용하는 단계;를 포함하는
    방법.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 플랫폼들 간 가상 이미지를 포팅하기 위한 정보 처리 시스템에 있어서, 상기 정보 처리 시스템은:
    하나 또는 그 이상의 프로세서들;
    상기 프로세서들 중 적어도 하나에 의해 액세스 가능한 메모리;
    상기 프로세서들 중 적어도 하나에 의해 액세스 가능한 지속형 기억 매체;
    상기 정보 처리 시스템을 컴퓨터 네트워크에 연결하는 네트워크 인터페이스 - 상기 네트워크 인터페이스는 상기 프로세서들 중 적어도 하나에 의해 액세스 가능함 -; 및
    상기 메모리에 저장되고 상기 프로세서들 중 적어도 하나에 의해 실행되는 일 세트의 명령들을 포함하되, 상기 명령들은:
    소스 플랫폼(source platform)과 연관된 소스 토폴로지 모델과 타겟 플랫폼(a target platform)과 연관된 타겟 토폴로지 모델을 차별화하는 동작(action) - 상기 소스 플랫폼은 제1 클라우드이고, 상기 타겟 플랫폼은 제2 클라우드이고, 상기 차별화하는 동작은 토폴로지 차(topology difference)를 만들고, 상기 차별화하는 동작의 적어도 일부는 프로세서에 의해서 수행되며, 상기 차별화하는 동작은 상기 소스 플랫폼에 대응하는 제1 세트의 모델 유닛들과 상기 타겟 플랫폼에 대응하는 제2 세트의 모델 유닛들을 비교하는 단계를 포함하고, 상기 비교에 의해 하나 혹은 그 이상의 변경된 모델 유닛들과 하나 혹은 그 이상의 공통 모델 유닛들이 얻어짐 -;
    상기 공통 모델 유닛들에 대응하는 상기 소스 토폴로지 모델로부터 제1 세트의 자동화 단계 모델들을 검색하는 동작;
    상기 변경된 모델 유닛들을 위해 자산 라이브러리(an asset library)를 탐색하는 동작 - 상기 탐색에 의해 상기 변경된 모델 유닛들에 대응하는 제2 세트의 자동화 단계 모델들이 얻어짐 -;
    상기 자산 라이브러리로부터 워크플로 모델(a workflow model) 내의 연산(operation)을 획득하는 동작 - 상기 워크플로 모델은 상기 제1 및 제2 세트의 자동화 단계 모델들을 포함하고, 상기 연산은 상기 토폴로지 차와 연관되고, 상기 자산 라이브러리의 적어도 일부는 지속형 기억 매체(a persistent storage medium)에 저장됨-; 및
    솔루션의 적어도 일부를 배치하기 위해 상기 연산을 전송하는 동작 - 상기 솔루션의 배치된 일부는 상기 타겟 플랫폼과 호환 가능한 타겟 가상 이미지(a target virtual image) 를 포함함 - 을 포함하는
    정보 처리 시스템.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 컴퓨터 시스템에 로드되어 실행될 때, 청구항 제1항, 제2항, 제4항, 제8항, 제9항, 제10항, 제11항 및 제12항 중 어느 한 항에 따른 방법의 모든 단계들을 수행하는 프로그램 코드를 포함하는
    컴퓨터 판독가능 매체.
KR1020127013641A 2009-12-31 2010-12-14 플랫폼들 간 가상 머신 이미지 포팅 KR101442360B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/651,277 2009-12-31
US12/651,277 US8984503B2 (en) 2009-12-31 2009-12-31 Porting virtual images between platforms
PCT/EP2010/069569 WO2011080063A1 (en) 2009-12-31 2010-12-14 Porting virtual machine images between platforms

Publications (2)

Publication Number Publication Date
KR20120113716A KR20120113716A (ko) 2012-10-15
KR101442360B1 true KR101442360B1 (ko) 2014-09-17

Family

ID=43734823

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127013641A KR101442360B1 (ko) 2009-12-31 2010-12-14 플랫폼들 간 가상 머신 이미지 포팅

Country Status (8)

Country Link
US (3) US8984503B2 (ko)
JP (1) JP5669861B2 (ko)
KR (1) KR101442360B1 (ko)
CN (1) CN102725733B (ko)
BR (1) BR112012018768B1 (ko)
CA (1) CA2781496C (ko)
DE (1) DE112010004160T5 (ko)
WO (1) WO2011080063A1 (ko)

Families Citing this family (118)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102460390A (zh) * 2009-06-08 2012-05-16 夏普株式会社 软件更新系统、显示装置及软件更新方法
US8671222B2 (en) * 2010-05-11 2014-03-11 Smartshift Gmbh Systems and methods for dynamically deploying an application transformation tool over a network
US20110126197A1 (en) * 2009-11-25 2011-05-26 Novell, Inc. System and method for controlling cloud and virtualized data centers in an intelligent workload management system
US9317267B2 (en) * 2009-12-15 2016-04-19 International Business Machines Corporation Deployment and deployment planning as a service
US8984503B2 (en) 2009-12-31 2015-03-17 International Business Machines Corporation Porting virtual images between platforms
US9021046B2 (en) 2010-01-15 2015-04-28 Joyent, Inc Provisioning server resources in a cloud resource
US9443078B2 (en) * 2010-04-20 2016-09-13 International Business Machines Corporation Secure access to a virtual machine
US9436459B2 (en) * 2010-05-28 2016-09-06 Red Hat, Inc. Generating cross-mapping of vendor software in a cloud computing environment
US9009663B2 (en) * 2010-06-01 2015-04-14 Red Hat, Inc. Cartridge-based package management
CA2804864C (en) 2010-07-09 2018-11-20 State Street Corporation Systems and methods for private cloud computing
US10671628B2 (en) * 2010-07-09 2020-06-02 State Street Bank And Trust Company Systems and methods for data warehousing
US10235439B2 (en) 2010-07-09 2019-03-19 State Street Corporation Systems and methods for data warehousing in private cloud environment
US20120054626A1 (en) * 2010-08-30 2012-03-01 Jens Odenheimer Service level agreements-based cloud provisioning
US8856770B2 (en) * 2010-09-17 2014-10-07 Sap Ag Solution packages including segments of a process chain
US8819672B2 (en) * 2010-09-20 2014-08-26 International Business Machines Corporation Multi-image migration system and method
US8566397B2 (en) 2010-10-05 2013-10-22 Accenture Global Services Limited Operations management using communications and collaboration platform
US8800055B2 (en) * 2010-10-20 2014-08-05 International Business Machines Corporation Node controller for an endpoint in a cloud computing environment
US9128742B1 (en) * 2010-11-19 2015-09-08 Symantec Corporation Systems and methods for enhancing virtual machine backup image data
US9009105B2 (en) * 2010-12-30 2015-04-14 Sap Se Application exits for consistent tenant lifecycle management procedures
US8875122B2 (en) * 2010-12-30 2014-10-28 Sap Se Tenant move upgrade
US8555276B2 (en) 2011-03-11 2013-10-08 Joyent, Inc. Systems and methods for transparently optimizing workloads
US20120233315A1 (en) * 2011-03-11 2012-09-13 Hoffman Jason A Systems and methods for sizing resources in a cloud-based environment
US8732267B2 (en) * 2011-03-15 2014-05-20 Cisco Technology, Inc. Placement of a cloud service using network topology and infrastructure performance
US8909762B2 (en) * 2011-03-17 2014-12-09 Hewlett-Packard Development Company, L.P. Network system management
US8984104B2 (en) * 2011-05-31 2015-03-17 Red Hat, Inc. Self-moving operating system installation in cloud-based network
US20130007726A1 (en) 2011-06-30 2013-01-03 Indrajit Poddar Virtual machine disk image installation
CN102325043B (zh) * 2011-07-20 2014-09-03 华为技术有限公司 一种拓扑生成方法、装置和系统
US8732693B2 (en) * 2011-08-04 2014-05-20 Microsoft Corporation Managing continuous software deployment
US8943220B2 (en) 2011-08-04 2015-01-27 Microsoft Corporation Continuous deployment of applications
US9038055B2 (en) 2011-08-05 2015-05-19 Microsoft Technology Licensing, Llc Using virtual machines to manage software builds
US8838764B1 (en) * 2011-09-13 2014-09-16 Amazon Technologies, Inc. Hosted network management
US8793379B2 (en) * 2011-11-01 2014-07-29 Lsi Corporation System or method to automatically provision a storage volume by having an app-aware based appliance in a storage cloud environment
US9880868B2 (en) * 2011-11-30 2018-01-30 Red Hat, Inc. Modifying an OS installer to allow for hypervisor-specific adjustment of an OS
TWI515658B (zh) 2011-12-07 2016-01-01 萬國商業機器公司 用於創建虛擬裝置之方法及系統
KR101342592B1 (ko) 2011-12-23 2013-12-17 주식회사 케이티 클라우드 시스템에서의 웹 방화벽 서비스 장치 및 방법
US8547379B2 (en) 2011-12-29 2013-10-01 Joyent, Inc. Systems, methods, and media for generating multidimensional heat maps
US8782224B2 (en) 2011-12-29 2014-07-15 Joyent, Inc. Systems and methods for time-based dynamic allocation of resource management
TWI462017B (zh) * 2012-02-24 2014-11-21 Wistron Corp 伺服器部署系統及資料更新的方法
US8789164B2 (en) * 2012-03-16 2014-07-22 International Business Machines Corporation Scalable virtual appliance cloud (SVAC) and devices usable in an SVAC
US9003502B2 (en) * 2012-03-19 2015-04-07 Empire Technology Development Llc Hybrid multi-tenancy cloud platform
US9071613B2 (en) 2012-04-06 2015-06-30 International Business Machines Corporation Dynamic allocation of workload deployment units across a plurality of clouds
US9086929B2 (en) 2012-04-06 2015-07-21 International Business Machines Corporation Dynamic allocation of a workload across a plurality of clouds
GB2501287A (en) 2012-04-18 2013-10-23 Ibm Installing applications at selected runtime instances
US9286103B2 (en) * 2012-04-21 2016-03-15 International Business Machines Corporation Method and apparatus for providing a test network as an IP accessible cloud service
US9237188B1 (en) * 2012-05-21 2016-01-12 Amazon Technologies, Inc. Virtual machine based content processing
US8924969B2 (en) 2012-06-07 2014-12-30 Microsoft Corporation Virtual machine image write leasing
TW201401074A (zh) * 2012-06-26 2014-01-01 Quanta Comp Inc 軟體跨雲部署機制及系統
US10338940B2 (en) * 2012-06-27 2019-07-02 International Business Machines Corporation Adjusting adminstrative access based on workload migration
US8856382B2 (en) 2012-07-30 2014-10-07 International Business Machines Corporation On-boarding services to a cloud environment
US9836548B2 (en) 2012-08-31 2017-12-05 Blackberry Limited Migration of tags across entities in management of personal electronically encoded items
US9208041B2 (en) 2012-10-05 2015-12-08 International Business Machines Corporation Dynamic protection of a master operating system image
US9311070B2 (en) 2012-10-05 2016-04-12 International Business Machines Corporation Dynamically recommending configuration changes to an operating system image
US9286051B2 (en) 2012-10-05 2016-03-15 International Business Machines Corporation Dynamic protection of one or more deployed copies of a master operating system image
US8990772B2 (en) * 2012-10-16 2015-03-24 International Business Machines Corporation Dynamically recommending changes to an association between an operating system image and an update group
US9135436B2 (en) 2012-10-19 2015-09-15 The Aerospace Corporation Execution stack securing process
GB2507338A (en) 2012-10-26 2014-04-30 Ibm Determining system topology graph changes in a distributed computing system
US8997088B2 (en) * 2012-11-02 2015-03-31 Wipro Limited Methods and systems for automated deployment of software applications on heterogeneous cloud environments
US11475381B2 (en) * 2012-12-24 2022-10-18 International Business Machines Corporation Graphical user interface for receiving proposed and displaying alternative computer architectures
US9256700B1 (en) * 2012-12-31 2016-02-09 Emc Corporation Public service for emulation of application load based on synthetic data generation derived from preexisting models
US10671418B2 (en) * 2013-01-09 2020-06-02 Red Hat, Inc. Sharing templates and multi-instance cloud deployable applications
US10025580B2 (en) * 2013-01-23 2018-07-17 Dell Products L.P. Systems and methods for supporting multiple operating system versions
US8826279B1 (en) 2013-03-14 2014-09-02 Joyent, Inc. Instruction set architecture for compute-based object stores
US8943284B2 (en) 2013-03-14 2015-01-27 Joyent, Inc. Systems and methods for integrating compute resources in a storage area network
US8881279B2 (en) 2013-03-14 2014-11-04 Joyent, Inc. Systems and methods for zone-based intrusion detection
US9104456B2 (en) 2013-03-14 2015-08-11 Joyent, Inc. Zone management of compute-centric object stores
US8677359B1 (en) 2013-03-14 2014-03-18 Joyent, Inc. Compute-centric object stores and methods of use
US9092238B2 (en) 2013-03-15 2015-07-28 Joyent, Inc. Versioning schemes for compute-centric object stores
EP2972856B1 (en) * 2013-03-15 2017-05-10 Oracle International Corporation System and method for generic product wiring in a virtual assembly builder environment
US8775485B1 (en) 2013-03-15 2014-07-08 Joyent, Inc. Object store management operations within compute-centric object stores
US8793688B1 (en) 2013-03-15 2014-07-29 Joyent, Inc. Systems and methods for double hulled virtualization operations
US9268549B2 (en) * 2013-03-27 2016-02-23 Vmware, Inc. Methods and apparatus to convert a machine to a virtual machine
CN103324474B (zh) * 2013-05-22 2016-08-03 中标软件有限公司 基于Linux操作系统跨体系构造ISO的方法及模块
US9390076B2 (en) * 2013-06-06 2016-07-12 Microsoft Technology Licensing, Llc Multi-part and single response image protocol
US10489175B2 (en) * 2013-06-10 2019-11-26 Amazon Technologies, Inc. Pre-configure and pre-launch compute resources
US9632802B2 (en) 2013-06-14 2017-04-25 Sap Se Automatic configuration of mobile programs
CN104253831B (zh) * 2013-06-26 2018-05-11 国际商业机器公司 一种用于在云计算环境中部署应用的方法和系统
US9990189B2 (en) * 2013-07-03 2018-06-05 International Business Machines Corporation Method to optimize provisioning time with dynamically generated virtual disk contents
US9043576B2 (en) * 2013-08-21 2015-05-26 Simplivity Corporation System and method for virtual machine conversion
CN103607426B (zh) * 2013-10-25 2019-04-09 中兴通讯股份有限公司 安全服务订制方法和装置
JP2017523508A (ja) * 2014-06-10 2017-08-17 アルカテル−ルーセント セキュアな統合型クラウドストレージ
JP2016071562A (ja) 2014-09-29 2016-05-09 富士通株式会社 判定プログラム、方法及び装置
US20170302531A1 (en) * 2014-09-30 2017-10-19 Hewlett Packard Enterprise Development Lp Topology based management with compliance policies
WO2016053306A1 (en) * 2014-09-30 2016-04-07 Hewlett Packard Enterprise Development Lp Topology based management of second day operations
JP6451750B2 (ja) * 2015-02-03 2019-01-16 日本電気株式会社 仮想ネットワークシステム、仮想ネットワーク制御方法、仮想ネットワーク機能データベース、統合制御装置、制御装置およびその制御方法と制御プログラム
US9569249B1 (en) * 2015-09-08 2017-02-14 International Business Machines Corporation Pattern design for heterogeneous environments
US9983796B2 (en) * 2015-09-17 2018-05-29 Veritas Technologies Llc Systems and methods for provisioning frequently used image segments from caches
US10802860B2 (en) 2015-10-26 2020-10-13 Hewlett-Packard Development Company, L.P. Cloud platform OS management
CN105515933A (zh) * 2015-11-30 2016-04-20 中电科华云信息技术有限公司 基于OpenStack实现VMware网络功能的管理方法
JP6727804B2 (ja) * 2015-12-25 2020-07-22 株式会社ユーズテック ミドルウェア
US9823919B2 (en) * 2015-12-30 2017-11-21 Microsoft Technology Licensing, Llc Controlled deployment of application feature in mobile environment
US9626166B1 (en) * 2016-01-26 2017-04-18 International Business Machines Corporation Common secure cloud appliance image and deployment
US11593342B2 (en) 2016-02-01 2023-02-28 Smartshift Technologies, Inc. Systems and methods for database orientation transformation
US10423331B2 (en) * 2016-02-02 2019-09-24 Samsung Electronics Co., Ltd. Polymorphic storage devices
US11287973B2 (en) 2016-02-02 2022-03-29 Samsung Electronics Co., Ltd. Polymorphic storage devices
US10498726B2 (en) 2016-03-22 2019-12-03 International Business Machines Corporation Container independent secure file system for security application containers
US10585655B2 (en) 2016-05-25 2020-03-10 Smartshift Technologies, Inc. Systems and methods for automated retrofitting of customized code objects
US10089103B2 (en) 2016-08-03 2018-10-02 Smartshift Technologies, Inc. Systems and methods for transformation of reporting schema
US11231912B2 (en) * 2016-12-14 2022-01-25 Vmware, Inc. Post-deployment modification of information-technology application using lifecycle blueprint
US11231910B2 (en) * 2016-12-14 2022-01-25 Vmware, Inc. Topological lifecycle-blueprint interface for modifying information-technology application
CN108206745B (zh) * 2016-12-16 2020-03-20 华为技术有限公司 业务的操作方法、装置及云计算系统
US10331973B2 (en) * 2017-06-26 2019-06-25 Nicira, Inc. System and method for deploying graphical diagram topologies
CN110096354B (zh) * 2018-01-29 2021-06-15 华为技术有限公司 一种针对应用的克隆方法及装置
US10740075B2 (en) 2018-02-06 2020-08-11 Smartshift Technologies, Inc. Systems and methods for code clustering analysis and transformation
US10528343B2 (en) 2018-02-06 2020-01-07 Smartshift Technologies, Inc. Systems and methods for code analysis heat map interfaces
US10698674B2 (en) 2018-02-06 2020-06-30 Smartshift Technologies, Inc. Systems and methods for entry point-based code analysis and transformation
US10867067B2 (en) * 2018-06-07 2020-12-15 Cisco Technology, Inc. Hybrid cognitive system for AI/ML data privacy
US10904099B2 (en) * 2018-09-07 2021-01-26 Cisco Technology, Inc. Formal model checking based approaches to optimized realizations of network functions in multi-cloud environments
CN109861850B (zh) * 2019-01-11 2021-04-02 中山大学 一种基于sla的无状态云工作流负载均衡调度的方法
US20200293421A1 (en) * 2019-03-15 2020-09-17 Acentium Inc. Systems and methods for identifying and monitoring solution stacks
KR102162834B1 (ko) * 2019-11-25 2020-10-08 (주) 이노트리 멀티클라우드 또는 하이브리드클라우드를 위한 토폴로지 맵 이용 시스템 및 방법
US11269609B2 (en) 2020-04-02 2022-03-08 Vmware, Inc. Desired state model for managing lifecycle of virtualization software
US11334341B2 (en) 2020-04-02 2022-05-17 Vmware, Inc. Desired state model for managing lifecycle of virtualization software
US11194561B1 (en) * 2020-07-08 2021-12-07 Vmware, Inc. System and method for generating and recommending desired state of virtualization software
US20220083876A1 (en) * 2020-09-17 2022-03-17 International Business Machines Corporation Shiftleft topology construction and information augmentation using machine learning
US11886867B2 (en) 2020-11-12 2024-01-30 International Business Machines Corporation Workflow patching
US11435997B2 (en) * 2020-12-09 2022-09-06 Vmware, Inc. Desired state model for managing lifecycle of virtualization software installed in heterogeneous cluster of hosts
US11435996B2 (en) * 2020-12-09 2022-09-06 Vmware, Inc. Managing lifecycle of solutions in virtualization software installed in a cluster of hosts
US11221836B1 (en) * 2021-06-21 2022-01-11 Instabase, Inc. Systems and methods to control configurations of customer-specific deployments of sets of enterprise software applications

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090016151A (ko) * 2007-08-10 2009-02-13 (주)지란지교소프트 가상 플랫폼 실행방법

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5848415A (en) 1996-12-18 1998-12-08 Unisys Corporation Selective multiple protocol transport and dynamic format conversion in a multi-user network
US6058397A (en) 1997-04-08 2000-05-02 Mitsubishi Electric Information Technology Center America, Inc. 3D virtual environment creation management and delivery system
US7227837B1 (en) 1998-04-30 2007-06-05 At&T Labs, Inc. Fault tolerant virtual tandem switch
US6792615B1 (en) 1999-05-19 2004-09-14 New Horizons Telecasting, Inc. Encapsulated, streaming media automation and distribution system
JP2001051834A (ja) 1999-08-04 2001-02-23 Hitachi Ltd ワークフローシステムにおける動的アプリケーション起動方法及びシステム
JP4688270B2 (ja) 1999-10-13 2011-05-25 株式会社ビジュアルジャパン ネットワーク型データ伝送システム、並びに同システムにおけるサーバ及び端末装置
US7006494B1 (en) 2000-01-04 2006-02-28 Cisco Technology, Inc. System and method for a virtual telephony intermediary
US6714980B1 (en) 2000-02-11 2004-03-30 Terraspring, Inc. Backup and restore of data associated with a host in a dynamically changing virtual server farm without involvement of a server that uses an associated storage device
US7209921B2 (en) * 2000-09-01 2007-04-24 Op40, Inc. Method and system for deploying an asset over a multi-tiered network
US7002976B2 (en) 2000-11-01 2006-02-21 Marconi Intellectual Property (Ringfence) Inc. Virtual ethernet ports with automated router port extension
US6954790B2 (en) * 2000-12-05 2005-10-11 Interactive People Unplugged Ab Network-based mobile workgroup system
US7080159B2 (en) 2000-12-15 2006-07-18 Ntt Docomo, Inc. Method and system for effecting migration of application among heterogeneous devices
US7283533B1 (en) 2001-06-25 2007-10-16 Cisco Technology, Inc. Interworking of packet-based voice technologies using virtual TDM trunks
US6785744B2 (en) 2001-08-08 2004-08-31 International Business Machines Corporation Mapping SCSI medium changer commands to mainframe-compatible perform library function commands
US6760804B1 (en) 2001-09-11 2004-07-06 3Com Corporation Apparatus and method for providing an interface between legacy applications and a wireless communication network
US7184789B2 (en) 2001-10-03 2007-02-27 Qualcomm, Incorporated Method and apparatus for data packet transport in a wireless communication system using an internet protocol
US7577722B1 (en) 2002-04-05 2009-08-18 Vmware, Inc. Provisioning of computer systems using virtual machines
US7080378B1 (en) 2002-05-17 2006-07-18 Storage Technology Corporation Workload balancing using dynamically allocated virtual servers
US20040039815A1 (en) * 2002-08-20 2004-02-26 Compaq Information Technologies Group, L.P. Dynamic provisioning system for a network of computers
US20040059829A1 (en) 2002-09-24 2004-03-25 Chu Thomas P. Methods and devices for converting routing data from one protocol to another in a virtual private network
US7092958B2 (en) 2003-01-29 2006-08-15 Battelle Energy Alliance, Llc Knowledge information management toolkit and method
US8209680B1 (en) 2003-04-11 2012-06-26 Vmware, Inc. System and method for disk imaging on diverse computers
US7633955B1 (en) 2004-02-13 2009-12-15 Habanero Holdings, Inc. SCSI transport for fabric-backplane enterprise servers
GB0405792D0 (en) 2004-03-15 2004-04-21 Univ Catholique Louvain Augmented reality vision system and method
US20060101116A1 (en) 2004-10-28 2006-05-11 Danny Rittman Multifunctional telephone, walkie talkie, instant messenger, video-phone computer, based on WiFi (Wireless Fidelity) and WiMax technology, for establishing global wireless communication, network and video conferencing via the internet
US8051148B2 (en) * 2005-01-13 2011-11-01 National Instruments Corporation Determining differences between configuration diagrams
US20110016214A1 (en) * 2009-07-15 2011-01-20 Cluster Resources, Inc. System and method of brokering cloud computing resources
US7454407B2 (en) * 2005-06-10 2008-11-18 Microsoft Corporation Techniques for estimating progress of database queries
US7914519B2 (en) 2005-06-23 2011-03-29 Elcam Medical Agricultural Cooperative Association, Ltd. Catheter device
US7440894B2 (en) 2005-08-09 2008-10-21 International Business Machines Corporation Method and system for creation of voice training profiles with multiple methods with uniform server mechanism using heterogeneous devices
US20070050525A1 (en) 2005-08-25 2007-03-01 Moxa Technologies Co., Ltd. [virtual com port for remote i/o controller]
US8078728B1 (en) * 2006-03-31 2011-12-13 Quest Software, Inc. Capacity pooling for application reservation and delivery
US7587570B2 (en) 2006-05-31 2009-09-08 International Business Machines Corporation System and method for providing automated storage provisioning
US20080080526A1 (en) 2006-09-28 2008-04-03 Microsoft Corporation Migrating data to new cloud
US7865663B1 (en) 2007-02-16 2011-01-04 Vmware, Inc. SCSI protocol emulation for virtual storage device stored on NAS device
US8205195B2 (en) * 2007-06-08 2012-06-19 Sap Ag Method and system for automatically classifying and installing patches on systems
US7383327B1 (en) 2007-10-11 2008-06-03 Swsoft Holdings, Ltd. Management of virtual and physical servers using graphic control panels
US8386918B2 (en) 2007-12-06 2013-02-26 International Business Machines Corporation Rendering of real world objects and interactions into a virtual universe
EP2223281A4 (en) * 2007-12-20 2011-05-25 Hewlett Packard Development Co COMMERCIAL PROCESS MODELING ON COMPUTER FOR CUSTOMIZATION AND DELIVERY
US8175863B1 (en) * 2008-02-13 2012-05-08 Quest Software, Inc. Systems and methods for analyzing performance of virtual environments
US8166254B2 (en) * 2008-06-06 2012-04-24 International Business Machines Corporation Hypervisor page fault processing in a shared memory partition data processing system
US8230500B1 (en) * 2008-06-27 2012-07-24 Symantec Corporation Methods and systems for detecting rootkits
US20100043046A1 (en) 2008-07-07 2010-02-18 Shondip Sen Internet video receiver
US8250215B2 (en) * 2008-08-12 2012-08-21 Sap Ag Method and system for intelligently leveraging cloud computing resources
US8281307B2 (en) * 2009-06-01 2012-10-02 International Business Machines Corporation Virtual solution composition and deployment system and method
US8060714B1 (en) * 2008-09-26 2011-11-15 Emc (Benelux) B.V., S.A.R.L. Initializing volumes in a replication system
US8271536B2 (en) * 2008-11-14 2012-09-18 Microsoft Corporation Multi-tenancy using suite of authorization manager components
CN101430649B (zh) 2008-11-19 2011-09-14 北京航空航天大学 基于虚拟机的虚拟计算环境系统
US8572587B2 (en) * 2009-02-27 2013-10-29 Red Hat, Inc. Systems and methods for providing a library of virtual images in a software provisioning environment
US8856294B2 (en) 2009-06-01 2014-10-07 Oracle International Corporation System and method for converting a Java application into a virtual server image for cloud deployment
US8886708B2 (en) 2009-12-02 2014-11-11 Vmware, Inc. Centralized computer network virtualization environment
US9002838B2 (en) 2009-12-17 2015-04-07 Wausau Financial Systems, Inc. Distributed capture system for use with a legacy enterprise content management system
US8984503B2 (en) 2009-12-31 2015-03-17 International Business Machines Corporation Porting virtual images between platforms
US8140735B2 (en) 2010-02-17 2012-03-20 Novell, Inc. Techniques for dynamic disk personalization
US8352415B2 (en) 2010-06-15 2013-01-08 International Business Machines Corporation Converting images in virtual environments

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090016151A (ko) * 2007-08-10 2009-02-13 (주)지란지교소프트 가상 플랫폼 실행방법

Also Published As

Publication number Publication date
US10528617B2 (en) 2020-01-07
CN102725733B (zh) 2015-04-29
US8990794B2 (en) 2015-03-24
BR112012018768A2 (pt) 2018-06-05
CA2781496A1 (en) 2011-07-07
JP2013516668A (ja) 2013-05-13
US20110161952A1 (en) 2011-06-30
US8984503B2 (en) 2015-03-17
CA2781496C (en) 2020-09-15
DE112010004160T5 (de) 2012-09-20
CN102725733A (zh) 2012-10-10
US20150106396A1 (en) 2015-04-16
KR20120113716A (ko) 2012-10-15
US20120180035A1 (en) 2012-07-12
BR112012018768B1 (pt) 2020-12-22
JP5669861B2 (ja) 2015-02-18
WO2011080063A1 (en) 2011-07-07

Similar Documents

Publication Publication Date Title
KR101442360B1 (ko) 플랫폼들 간 가상 머신 이미지 포팅
US11178207B2 (en) Software version control without affecting a deployed container
US9405529B2 (en) Designing and cross-configuring software
US10430171B2 (en) Extensions for deployment patterns
US9047160B2 (en) Designing and building virtual images using semantically rich composable software image bundles
US9720668B2 (en) Creating and maintaining multi-tenant applications in a platform-as-a-service (PaaS) environment of a cloud computing system
CN107066242B (zh) 确定软件容器中软件的标识的方法和系统
US9195453B1 (en) Remediation of known defects and vulnerabilities in cloud application packages
US9361120B2 (en) Pluggable cloud enablement boot device and method that determines hardware resources via firmware
US9094473B2 (en) Installation of an asset from a cloud marketplace to a cloud server in a private network
US20200272427A1 (en) Automatic generation of a container image
US11561787B2 (en) Application invocation on specified operating system version

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
FPAY Annual fee payment

Payment date: 20170828

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190829

Year of fee payment: 6