KR20010050518A - 에뮬레이션을 통해 클러스터를 활동적으로마이그레이션하기 위한 방법, 시스템 및 프로그램 제품 - Google Patents

에뮬레이션을 통해 클러스터를 활동적으로마이그레이션하기 위한 방법, 시스템 및 프로그램 제품 Download PDF

Info

Publication number
KR20010050518A
KR20010050518A KR1020000054883A KR20000054883A KR20010050518A KR 20010050518 A KR20010050518 A KR 20010050518A KR 1020000054883 A KR1020000054883 A KR 1020000054883A KR 20000054883 A KR20000054883 A KR 20000054883A KR 20010050518 A KR20010050518 A KR 20010050518A
Authority
KR
South Korea
Prior art keywords
component
version
updated
computing environment
identifier
Prior art date
Application number
KR1020000054883A
Other languages
English (en)
Other versions
KR100411384B1 (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 KR20010050518A publication Critical patent/KR20010050518A/ko
Application granted granted Critical
Publication of KR100411384B1 publication Critical patent/KR100411384B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)

Abstract

업데이트 능력은 컴퓨팅 환경의 가용성을 유지하면서, 컴퓨팅 환경의 콤포넌트를 업데이트한다. 특히, 작업 단위의 적어도 한 부분과 관련된 상기 컴퓨팅 환경에서의 콤포넌트는 한 버전에서 다른 버전으로 업데이트된다. 이어서, 동일한 작업 단위와 유사하게 관련된 컴퓨팅 환경의 다른 콤포넌트들이 원래의 버전으로 남아있는 동안, 상기 업데이트된 콤포넌트는 원래의 버전을 에뮬레이트하거나 호환성 모드로 동작한다.

Description

에뮬레이션을 통해 클러스터를 활동적으로 마이그레이션하기 위한 방법, 시스템 및 프로그램 제품{METHOD, SYSTEM AND PROGRAM PRODUCTS FOR OPERATIONALLY MIGRATING A CLUSTER THROUGH EMULATION}
본 출원은 본 출원과 동일자로 출원되고, 동일한 양수인에게 양도된 아래 출원의 발명의 주제(subject matter)에 관련된 발명의 주제를 포함하고 있다.
에뮬레이션을 통해 클러스터의 콤포넌트를 활동적으로 배킹아웃하기
위한 방법, 시스템 및 프로그램 제품(METHOD, SYSTEM AND PROGRAM
PRODUCTS FOR OPERATIONALLY BACKING OUT COMPONENTS OF A CLUSTER
THROUGH EMULATION), 프로엘리히 외, (도켓 넘버 P09-99-163), 시
리얼 넘버 ____________________.
본 발명은, 일반적으로, 컴퓨팅 환경(computing environment)에서 콤포넌트들(components)을 업데이트(update)하거나 마이그레이션(migration)하는 것에 관련된 것으로, 특히, 컴퓨팅 환경의 가용성(availability)을 유지하기 위해 호환 모드(compatibility mode)로 콤포넌트를 업데이트하고, 업데이트된 콤포넌트를 이어서 동작시키는 것에 관련된 것이다.
분산 컴퓨팅 환경에 있어서, 개개의 컴퓨팅 유닛들(computing units)이나 노드들(nodes)은 클러스터(cluster)를 형성하기 위해 네트워크를 통해 상호 연결된다. 노드들을 이런 방식으로 연결함으로써, 개개의 노드들은, 하나의 태스크(task)를 수행하거나 개개의 컴퓨팅 유닛들 간에 분산된 한 작업 단위(unit of work)를 처리하기 위해 서로 통신할 수 있다. 이러한 태스크를 수행하기 위한 한 가지 방법은, 하나의 프로그램이나 콤포넌트의 복수 개의 이미지(images)를 여러개의 개별 노드들 상에서 수행하는 것이다. 개별 노드들에서 상기 이미지들을 동시에 수행함으로써, 작업 단위(the unit of work)의 서로 다른 부분들이 동시에 함께 처리될 수 있다. 이러한 방식으로 다수의 콤포넌트들 사이에서 작업 단위를 분산하면, 태스크나 작업 단위가 더 효율적으로 처리될 수 있다.
때때로, 프로그램의 현재 버전(current version)과 관련된 문제점들을 해결하거나 기능성(functionality)을 향상시키기 위해서, 개별 콤포넌트들에 의해 처리되고 있는 프로그램이 현재의 버전에서 더 새로운 버전(newer version)으로 업데이트될 필요가 있다. 이러한 업데이트나 마이그레이션을 수행하는 한가지 기술은 시스템의 모든 노드들을 먼저 셧다운(shut down)하는 것이다. 모든 노드들이 디액티베이트(deactivate)된 후, 현재 버전의 콤포넌트가 각각의 노드들에서 업데이트된다. 다음, 모든 콤포넌트들이 마이그레이션된 후, 노드들은 다시 액티베이트(reactivate)되어 새로운 버전의 프로그램을 수행한다. 그러나, 이러한 방법은 개별 콤포넌트들이 업데이트되는 동안 전체 시스템이 디액티베이트되어야만 하므로, 계속적인 가용성이 보장되어야 하거나 하루 24시간 내내 동작해야 하는 미션-크리티컬 시스템(mission-critical system)에는 맞지 않는다.
또 다른 방법으로는, 컴퓨팅 환경 내의 콤포넌트들을 개별적으로 마이그레이션하거나 업데이트시키는 기술이 있다. 이 기술에서는, 전체 클러스터를 디액티베이트할 필요 없이 선택된 콤포넌트를 클러스터 내에서 디액티베이트시키고, 업데이트시킨 다음 다시 액티베이트시킨다. 그러나, 이 기술에서는 사용자가 더 과거의 버전(older version)의 콤포넌트들에 의해 지원되었던 기능성만을 이용할 수 있다는 것을 의식적으로 알고 있어야만 한다. 따라서, 사용자는 더 과거의 버전의 콤포넌트를 수행하는 노드들의 제약점들(limitations)을 적극적으로 인식하고 있어야만 하므로, 이 방법은 시스템의 사용자들에게는 지나치게 성가신 것이 된다.
따라서, 컴퓨팅 환경에서 전체 클러스터를 디액티베이트하지 않고 개별 콤포넌트들을 업그레이드하거나 마이그레이션할 수 있는 능력(capability)이 요구되고 있다. 더우기, 사용자가 이전 버젼의 콤포넌트들의 제약점을 의식적으로 인식할 것을 요구하지 않는 능력이 요구되고 있다.
컴퓨팅 환경 콤포넌트 업데이팅 능력을 제공함으로써, 종래 기술의 단점들을 극복하고, 추가의 이점들을 얻을 수 있다. 본 발명의 한 실시예에 있어서는, 컴퓨팅 환경에서의 콤포넌트 업데이트 방법은 작업 단위의 적어도 한 부분과 관련된 상기 컴퓨팅 환경에서의 콤포넌트를 한 버전에서 다른 버전으로 업데이트하는 단계, 및 상기 작업 단위와 관련된 상기 컴퓨팅 환경의 적어도 하나의 다른 콤포넌트가 상기 한 버전으로 남아있는 동안 상기 한 버전을 상기 업데이트된 콤포넌트에 의하여 에뮬레이트하는 단계를 포함한다.
본 발명의 다른 특징에 따르면, 컴퓨팅 환경에서의 콤포넌트를 업데이트하기 위한 시스템이 제공된다. 본 시스템은 작업 단위의 적어도 한 부분과 관련된 상기 컴퓨팅 환경에서의 콤포넌트를 한 버전에서 다른 버전으로 업데이트하기 위한 수단, 및 상기 작업 단위와 관련된 상기 컴퓨팅 환경의 적어도 하나의 다른 콤포넌트가 상기 한 버전으로 남아있는 동안 상기 한 버전을 상기 업데이트된 콤포넌트에 의하여 에뮬레이트하기 위한 수단을 포함한다.
본 발명의 또 다른 특징에 따르면, 컴퓨팅 환경에서의 콤포넌트를 업데이트하기 위한 또 다른 시스템이 제공된다. 본 시스템은 작업 단위의 적어도 한 부분과 관련된 상기 컴퓨팅 환경에서의 콤포넌트를 한 버전에서 다른 버전으로 업데이트하기 위한 수단, 및 상기 작업 단위와 관련된 상기 컴퓨팅 환경의 적어도 하나의 다른 콤포넌트가 상기 한 버전으로 남아있는 동안 상기 한 버전을 상기 업데이트된 콤포넌트에 의하여 에뮬레이트하기 위한 수단을 포함한다.
본 발명의 또 다른 특징에 따르면, 컴퓨팅 환경에서의 콤포넌트를 업데이트하도록 하기 위하여 컴퓨터에 의해 판독가능한 프로그램 코드 수단이 구현되어 있는 컴퓨터에 의해 판독가능한 적어도 하나의 매체를 포함하는 제조 물품(article of manufacture)이 개시되어 있다. 상기 제조 물품 내의 컴퓨터에 의해 판독가능한 프로그램 코드수단은, 예를 들어, 작업 단위의 적어도 한 부분과 관련된 상기 컴퓨팅 환경에서의 콤포넌트를 한 버전에서 다른 버전으로 업데이트하기 위한 컴퓨터에 의해 판독가능한 프로그램 코드 수단, 및 상기 작업 단위와 관련된 상기 컴퓨팅 환경의 적어도 하나의 다른 콤포넌트가 상기 한 버전으로 남아있는 동안 상기 한 버전을 상기 업데이트된 콤포넌트에 의하여 에뮬레이트하기 위한 컴퓨터에 의해 판독가능한 프로그램 코드 수단을 포함한다.
이렇게, 본 발명의 한 특징에 따르면, 컴퓨팅 환경의 가용성을 유지하면서 컴퓨팅 환경의 콤포넌트를 업데이트하는 업데이트 능력이 제시된다. 특히, 작업 단위의 한 부분과 관련된 컴퓨팅 환경의 콤포넌트는 한 버전에서 다른 버전으로 업데이트된다. 이어서, 동일한 작업 단위와 유사하게 관련된 상기 컴퓨팅 환경의 다른 콤포넌트가 원래의 버전으로 남아있는 동안 상기 업데이트된 콤포넌트는 원래의 버전을 에뮬레이트하거나 호환성 모드에서 동작한다.
본 발명의 또 다른 특징에 따르면, 컴퓨팅 환경의 가용성을 유지하면서 컴퓨팅 환경의 콤포넌트가 더 과거의 버전으로 백아웃되는 배킹아웃(backing-out) 능력이 제시된다. 더 구체적으로, 콤포넌트는 더 새로운 버전에서 클러스터 버전이나 중간 버전으로 백아웃될 수 있다. 뒤의 경우에, 백아웃된(backed-out) 콤포넌트는 클러스터 버전과 호환성 모드로 동작한다.
본 발명의 기술을 통해 추가적인 특징과 이점들을 실현할 수 있다. 본 발명의 다른 실시예들과 특징들은 아래에서 상세히 설명되며, 청구되는 발명의 일부분을 이룬다.
본 발명의 목적, 특징, 이점들은 관련된 도면들과 함께 아래의 상세한 설명을 통해 명백해진다.
도 1은 본 발명의 업데이트 능력을 포함하고 이를 이용하는 컴퓨팅 환경의 한 실시예를 도시한 도면.
도 2는 콤포넌트 버전 식별자와 클러스터 버전 식별자를 포함한 본 발명의 원리에 따른 제어 구조의 한 실시예를 도시한 도면.
도 3a-도 3b는 컴퓨팅 환경의 콤포넌트를 업데이트하는데 관련된 본 발명의 원리에 따른 로직의 한 실시예를 도시한 도면.
도 4a-도 4b는 컴퓨팅 환경이 완전히 업데이트되기 전에, 낡은 버전(out of a version)의 콤포넌트를 백킹(backing)하는데 관련된 본 발명의 원리에 따른 로직의 한 실시예를 도시한 도면.
〈도면의 주요 부분에 대한 부호의 설명〉
102: 네트워크
110: 노드
200: 제어 구조
210: 콤포넌트 버전 식별자
220: 클러스터 버전 식별자
본 발명의 한 특징에 따르면, 컴퓨팅 환경의 가용성을 유지하면서 컴퓨팅 환경의 콤포넌트를 업데이트하는 업데이트 능력이 제공된다. 특히, 작업 단위의 적어도 한 부분과 관련된 컴퓨팅 환경의 콤포넌트가 한 버전에서 다른 버전으로 업데이트된다. 이어서, 동일한 작업 단위와 유사하게 관련된 컴퓨팅 환경의 다른 콤포넌트들이 원래의 버전(original version)으로 남아 있는 동안, 업데이트된 콤포넌트는 원래의 버전을 에뮬레이트(emulate)하거나 호환성 모드(compatibility mode)로 동작한다. 원래의 버전을 에뮬레이트하거나, 상기 호환성 모드에서 동작하는 동안에는, 업데이트된 콤포넌트는 새 버전의 추가된 기능성을 사용하지 않고 원래 버전 수준에서 처리를 해나간다. 이렇게 함으로써 컴퓨팅 환경은 중단 없이 계속해서 처리를 해나갈 수 있게 된다. 본 발명을 구현하고 이용하는 컴퓨팅 환경의 한 실시예가 도 1에 도시되어 있다.
도 1은 본 발명의 콤포넌트 업데이트 능력을 포함한 컴퓨팅 환경(100)의 블록 다이어그램의 한 실시예를 도시한다. 하나의 실시예에서, 컴퓨팅 환경(100)은 최소한 2개의 개별적인 컴퓨팅 유닛이나 노드(110)를 포함한다. 상기 컴퓨팅 유닛이나 노드는 각각 미합중국 뉴욕주 아몬크에 위치한 인터내셔널 비지니스 머신즈 코포레이션(IBM)에 의해 공급되는 RS/6000 컴퓨팅 시스템과 같은 것일 수 있다. 노드들(110)은, 이번에는, 지역망(LAN) 또는 광역망(WAN)과 같은 네트워크(102)를 통해 상호 연결된다.
하나의 실시예에서, 상호 연결된 노드들은 집합적으로 클러스터를 형성하고, 함께 작업하여 하나의 태스크나 작업 단위를 수행하거나 처리할 수 있도록 배열된다. 특히, 한 콤포넌트의 이미지 (예를 들면, 프로그램)는 상기 컴퓨팅 환경의 개별 노드들 각각에 구현된다. 그 다음, 작업 단위는 처리를 위하여 컴퓨팅 환경의 개별 콤포넌트들 간에 분산된다. 이러한 방식으로, 콤포넌트의 다수의 이미지들은, 각 노드가 콤포넌트의 한 이미지를 수행하여 작업 단위를 동시에 처리할 수 있다. 이렇게, 하나의 콤포넌트로 하는 것보다 더 효율적인 방식으로 태스크를 처리하기 위해, 각 이미지는 작업 단위의 특정 부분을 처리한다. 이러한 콤포넌트의 한가지 예가 모두 미합중국 뉴욕주 아몬크에 위치한 비지니스 머신즈 코포레이션(IBM)에 의해 공급되는 AIX 운영 체제에서 수행되는 고 가용성 클러스터 멀티프로세싱(HACMP: High Availability Cluster Multi-Processing) 제품이다.
동작하는 동안에, 상기에서 언급한 바와 같이, 예를 들면, 새로운 콤포넌트 버전에 의해 제공되는 향상된 기능성을 구현하기 위해서 현재의 콤포넌트 버전을 업데이트하는 것이 종종 필요하게 된다. 본 발명의 원리에 따르면, 이러한 업데이트는 일반적으로 컴퓨팅 환경의 한 콤포넌트를 새로운 콤포넌트 버전으로 업데이트하고, 남아있는 콤포넌트들이 업데이트될 때까지 더 과거의 콤포넌트를 업데이트된 콤포넌트 버전으로 에뮬레이트한다. 도 2와 관련하여 아래에서 더 상세히 설명하겠지만, 업데이트된 콤포넌트에 의한 이러한 업데이트와 후속의 에뮬레이션은, 각 콤포넌트들에 의해 접근가능한 데이타베이스나 (예를 들면, 로컬 메모리(local memory)와 같이) 콤포넌트를 수행하는 개별 노드들 내에 위치한 제어 구조(control structure)에 저장된 정보를 사용하여 이루어진다.
각 노드에 구현된 이러한 제어 구조의 한 예가 도 2에 도시되어 있다. 본 발명의 원리에 따르면, 제어 구조(200)는 개별 콤포넌트들의 동작 모드(operating mode)를 결정하는데 사용되는 다수의 데이타 필드들(data fields)을 포함한다. 이와 관련하여, 필드(210)는 특정 콤포넌트의 버전에 대응하는 콤포넌트 버전 식별자(component version identifier)를 포함하는 데이타 필드를 표시한다. 콤포넌트 버전 식별자는 현재 수행 중인 콤포넌트의 버전을 식별하고, 각 콤포넌트가 업데이트될 때마다 업데이트된다. 이렇게, 한 콤포넌트가 예를 들어 버전 Y에서 수행 중이라면, 필드(210)에 의해 표시되는 데이타 필드는 버전 Y 식별자를 포함하게 되는 것이다. 마찬가지로, 만약 콤포넌트가 예를 들어 버전 L로 업데이트된다면, 필드(210)에 의해 표시되는 데이타 필드는 유사하게 버전 L 식별자로 업데이트된다. (한 예에서, 컴퓨팅 환경의 업데이트 가능한 콤포넌트 각각은 그와 관련된 콤포넌트 식별자를 가진다.)
노드에 구현된 노드의 콤포넌트 버전 식별자를 포함하는 것에 부가하여, 각 제어 구조는 클러스터에서의 각 노드의 콤포넌트 버전 식별자를 포함할 수도 있다. 이러한 경우에, 각 제어구조가 전형적으로 임의의 특정한 시간에 동일한 정보를 포함하도록, 각 노드의 제어 구조는 클러스터에서 변화가 있을 때마다 업데이트된다.
필드(220)는, 반면에, 컴퓨팅 환경의 클러스터 버전 식별자(cluster version identifier)를 포함하는 데이타 필드를 표시한다. 상기에서 언급된 콤포넌트 버전 식별자와 대조적으로, 클러스터 버전 식별자는 각 업데이트 가능한 콤포넌트, (예를 들면) 컴퓨팅 환경에서 수행하고 있는 콤포넌트의 가장 낮은 버전을 식별한다. 이렇게, 도 1을 참조하면, 만약 노드(110a와 110b)가 처음에는 모두 버전 Y의 콤포넌트를 수행하고 있었는데, 노드(110b)의 콤포넌트가 얼마 후에 버전 L로 업데이트되면, 노드(110a)와 노드(110b)는 버전 Y와 버전 L의 콤포넌트에 대한 콤포넌트 버전 식별자를 가지며, 둘 모두는 버전 Y의 콤포넌트에 대한 클러스터 버전 식별자를 가지게 된다.
한 예에서, 제어 구조(200)는 콤포넌트 버전 식별자와 특정 노드와 관련된 각 업데이트 가능한 콤포넌트에 대한 클러스터 버전 식별자를 포함한다. 다른 실시예에서는, 각 업데이트 가능한 콤포넌트와 관련된 하나 이상의 제어 구조가 있다.
더우기, 도 2의 제어 구조가 컴퓨팅 환경의 콤포넌트들 각각을 수행하는 각 노드들 내에 구현된 것으로 설명되었지만, 각 제어 구조에 포함된 정보는 각 콤포넌트들에 의해 접근 가능한 하나 이상의 데이타베이스에 쉽게 구현될 수 있다. 본 실시예에서, 하나 이상의 제어 구조는 컴퓨팅 환경의 적어도 하나의 콤포넌트들에 대응하는 콤포넌트 버전 식별자와 함께 클러스터 버전 식별자를 포함하도록 구현될 수 있다. 이 데이타베이스는, 예를 들면, 직접 접근 저장 장치(DASD: Direct Access Storage Device) 또는 유사한 다른 장치에 위치할 수 있다. 어느 경우이든, 이러한 식별자들은, 개별 콤포넌트들을 수행하는 노드들에 저장되었든지 또는 컴퓨팅 환경에서 각 콤포넌트들에 의해 접근 가능한 데이타베이스에 저장되었든지, 도 3a-3b에 따라서 아래에 상세히 설명할 콤포넌트들의 작동 모드를 결정하는데 사용된다.
도 3a-3b는 본 발명의 원리에 따른 컴퓨팅 환경에서 콤포넌트를 업데이트하는데 사용되는 로직의 한 예를 도시한다. 처음에는, 단계(302)에서, 버전 X의 콤포넌트가 컴퓨팅 환경의 다수의 노드들에서 수행하고 있다. 동작 중 어떤 지점에서, 단계(304)에서, 한 콤포넌트를 버전 Y로 업데이트 또는 마이그레이션(migration)한다는 결정이 내려진다. 이러한 결정은 사용자가 할 수도 있고, 또는 시스템에 의한 다른 유사한 결정일 수도 있다. 단계(306)에서, 이 특정한 노드는 이제 셧다운되거나 디액티베이트 되고 (또는 다른 실시예에서는, 단지 해당 콤포넌트만 디액티베이트되고), 단계(308)에서 버전 Y의 설치(installation)가 수행된다.
단계(308)에서 수행되는 설치 과정의 일부분으로서, 단계(310)에서 선택된 콤포넌트는 현재 설치된 콤포넌트 버전 식별자를 읽고 저장한다. 즉, 본 예에서는, 선택된 콤포넌트가 앞으로 사용하기 위해, 필요하다면, 선택된 콤포넌트가 현재 수행하고 있는 버전에 대응하는 버전 X를 식별하는 식별자를 로컬 메모리 또는 데이타베이스로부터 읽고, (다시 로컬 메모리나 데이타베이스에) 저장한다. 다음으로, 단계(312)에서, 콤포넌트 버전 X는 자신의 노드로부터 디인스톨(de-install)되거나 디액티베이트된다. 버전 X가 디액티베이트된 후, 콤포넌트 버전 Y의 설치가 단계(314)에서 계속된다.
그리고, 단계(316)에서 콤포넌트의 로컬 데이타는 이전 포맷(format)에서 버전 Y에 대응하는 포맷으로 변환된다. 그리고, 업데이트된 콤포넌트 버전 식별자는 이러한 변화를 반영하도록 업데이트된다(318). 따라서, 이제 본 예에서는, 버전 Y를 식별하는 식별자가 저장된다.
업데이트된 버전 식별자를 저장한 후에, 새로 업데이트된 콤포넌트는 컴퓨팅 환경에 있는 다른 콤포넌트들에게 명령(command)을 내보낸다(320). 한 예에서, 이러한 명령은 과거 버전 넘버(old version number)를 포함한다. 명령을 받자마자, 명령을 수신한 콤포넌트들은, 이번에는, 업데이트된 콤포넌트 버전 식별자와 클러스터 버전 식별자를 비교하도록 하는 상기 명령을 수행한다. 업데이트 처리 중 이 지점에서, 비교는 업데이트된 콤포넌트가 호환성 모드에서 동작 중인지를 가리킨다. 곧 이어, 업데이트된 노드(또는 콤포넌트)가 액티베이트된다(322).
일단 업데이트된 노드(또는 콤포넌트)가 액티베이트되면, 업데이트된 콤포넌트는 자신의 버전 식별자와 클러스터 버전 식별자를 체크한다(324). 비교 결과, 업데이트된 콤포넌트 버전 식별자가 클러스터 버전 식별자와 동일하다면, 업데이트된 콤포넌트는 호환성 모드에서 동작하고 있는 것이 아니고(326), 업데이트된 노드(또는 콤포넌트)의 액티베이트가 완료된다(328). 여기서부터 처리는, 업데이트할 콤포넌트의 선택과 더불어 컴퓨팅 환경의 마이그레이션을 계속할, 304 단계로 되돌아 온다.
만약 질의(324)에서의 비교 결과, 업데이트된 콤포넌트 버전 식별자가 클러스터 버전 식별자와 같지 않다면, 업데이트된 콤포넌트는 자신의 콤포넌트 버전 식별자가 클러스터 버전 식별자보다 큰지를 결정한다(질의(330)). 질의(330)의 비교 결과 업데이트된 콤포넌트 식별자가 클러스터 버전 식별자보다 크지 않다면, 에러가 발생한 것이고(332), 그러면 업데이트는 종결된다. 이때, 에러 메시지를 방생시키고, 에러의 원인을 결정하기 위한 단계들이 수행된다.
반면에, 질의(330)의 비교 결과 업데이트된 콤포넌트 식별자가 클러스터 버전 식별자보다 크다면, 모든 콤포넌트들에 의해 접근 가능한 데이타베이스에 위치한 제어 구조를 이용하지 않는 실시예에서는, 컴퓨팅 환경의 각 콤포넌트들을 수행하는 노드들의 로컬 메모리에 있는 제어 구조들에서 현재 버전 식별자는 이러한 변화를 반영하도록 업데이트된다(334). 하나의 제어 구조를 사용하는 실시예에서는, 업데이트된 콤포넌트에 대응하는 현재 버전 식별자가 단계(318)에서 이미 업데이트되었기 때문에, 이러한 변화를 반영하도록 제어 구조를 업데이트할 필요가 없다.
질의(336)에서는, 컴퓨팅 환경의 모든 콤포넌트가 동일한 버전을 수행하고 있는지를 체크한다. 이러한 체크는, 모든 노드들의 콤포넌트 버전 식별자가 노드의 제어 구조에 포함되어 있다면, 각 노드의 제어 구조를 조사하는 것에 의해 수행될 수도 있고, 또는 하나 이상의 노드들에 의해 접근 가능한 데이타베이스에 구현된 제어 구조를 조사하는 것에 의해 수행될 수도 있다. 더우기, 클러스터에 있는 다른 노드들 각각과 단순히 통신함으로써, 노드가 체크를 수행하는 것이 또한 가능하다. 어떤 경우이든, 체크 결과 모든 노드들이 동일한 버전에서 수행하고 있는 것이 아니면, 업데이트된 콤포넌트는 자신의 액티베이션을 계속하고, 원래의 버전을 에뮬레이팅하는 호환성 모드로 동작을 수행한다(338). 그리고 나서 처리는, 업데이트할 콤포넌트의 선택과 더불어 컴퓨팅 환경의 마이그레이션을 계속할, 단계(304)로 되돌아 온다.
만약 질의(336) 결과, 모든 콤포넌트들이 동일한 버전에서 수행중이라면, 클러스터 버전 식별자는 더 새로운 버전으로 업데이트된다(340) (예를 들어, 본 예에서는 버전 Y로). 여기서부터, 새로 업데이트된 콤포넌트는 컴퓨팅 환경의 다른 콤포넌트들에게 명령을 내보낸다(342). 명령을 받자마자, 명령을 수신한 콤포넌트들은, 콤포넌트들에게 업데이트된 콤포넌트 버전 식별자와 클러스터 버전 식별자를 비교하도록 하는, 명령을 수행한다(344). 이때, 클러스터 버전 식별자는 모든 콤포넌트 버전 식별자들과 동일하기 때문에, 비교 결과는 콤포넌트들이 더 이상 호환성 모드에서 동작하지 않음을 지시한다. 이어서, 각 콤포넌트들은 새로 설치된 버전에 의해 제공되는 추가된 기능성을 사용할 수 있게 된다(346). 그 후, 업데이트 처리는 컴퓨팅 환경의 모든 콤포넌트들이 더 새로운 버전(즉, 버전 Y)을 수행하면서 끝난다(348).
비록 상기에서 설명한 실시예들이, 각 콤포넌트를 더 새로운 버전으로 업데이트하고, 그 다음에 클러스터를 마이그레이션하는 것을 설명하였지만, 본 발명의 원리 내에서, 클러스터를 마이그레이션하기 전에 콤포넌트를 여러번 업데이트하는 것도 또한 가능하다. 이렇게, 보기로써, 도 1을 다시 참조해 보면, 클러스터가 버전 X로부터 마이그레이션되기 전에, 콤포넌트를 클러스터 버전, 예를 들어 X로부터 더 새로운 버전, 예를 들어 Y로 업데이트하고, 그리고 나서 다시 콤포넌트를 더 새로운 버전, 예를 들어 Z로 업데이트하는 것도 가능하다.
도 4a-4b는 본 발명의 다른 능력을 도시한다. 특히, 도 4a-4b는, 본 발명의 한 측면에 따라서, 컴퓨팅 환경이 완전히 업데이트되기 전에 낡은 버전(out of a version)의 콤포넌트를 백킹(backing)하는데 사용되는 로직의 한 예를 도시한다. 더 구체적으로는, 컴퓨팅 환경이 완전히 마이그레이션되기 전에 (즉, 각 콤포넌트들이 클러스터 버전으로부터 업데이트되기 전에), 개별 콤포넌트들은 더 새로운 버전으로부터 더 낮은 또는 원래의 버전으로 되돌려지거나 백아웃(backed-out)될 수 있다. 예를 들어, 개별 콤포넌트는 클러스터 버전보다 더 새로운 버전으로부터 바로 클러스터 버전으로, 또는 다른 예로는, 중간 버전(intermediate versions)이 존재한다면 그러한 중간 버전으로 백아웃될 수 있다. 뒤의 경우에, 백아웃된(backed-out) 콤포넌트는, 도 4a-4b와 관련하여 아래에 자세히 설명하는 바와 같이, 클러스터 버전과 호환성 모드에서 동작할 것이다.
먼저, 도 4a를 보면, 컴퓨팅 환경은 뒤섞인 상태 모드(mixed state mode)로, 즉, 하나 이상의 콤포넌트들이 하나의 버전에서 수행 중이고, 또 다른 하나 이상의 콤포넌트들이 다른 버전에서 수행중인 것과 같이, 동작하고 있는 것으로 묘사되어 있다(404). 백아웃 처리는 더 낮은 버전, 예를 들어 버전 X로 되돌리기 위해 현재 더 새로운 버전, 예를 들면 버전 Y에서 동작 중인 하나의 콤포넌트를 선택하면서 진행한다(406). 이러한 선택은 사용자에 의해 될 수도 있고, 또는 시스템에 의해서 유사한 다른 결정이 될 수도 있다. 이어서, 선택된 노드(또는 콤포넌트)는 셧다운되거나 디액티베이트된다(408). 그 후, 선택된 노드 상에서 원래 버전 X의 설치가 수행된다(410).
단계(410)의 설치 과정 중 일부로써, 선택된 콤포넌트는 현재 설치된 콤포넌트 버전 Y를 읽고 저장한다(412). 위에서 언급한 바와 같이, 식별자는 개별 콤포넌트를 수행하는 노드들의 로컬 메모리나 각 콤포넌트들에 의해 접근 가능한 데이타베이스에 저장될 수 있다. 이어서, 더 새로운 콤포넌트 버전 Y는 디인스톨되거나 디액티베이트된다(414). 더 새로운 버전이 디액티베이트된 후, 원래의 콤포넌트 버전 X는 설치된다(416).
버전 X의 설치에 이어서, 콤포넌트의 로컬 데이타는, 유틸러티 프로세스로, 버전 Y에 대응하는 포맷으로부터 버전 X에 대응하는 포맷으로 변환된다(418). 다른 예로는, 단계(418)에서 설명된 로컬 데이타를 변환하는 대신에, 로컬 데이타는 버전 X에 대응하는 미리 저장된 데이타를 포함하는 소스로부터 로드(load)될 수도 있다(420). 어느 경우이든, 단계(418) 또는 단계(420) 후에, 백아웃 콤포넌트 버전 식별자(backed-out components version identifier)는 변화를 반영하도록 업데이트된다(422). 그러므로, 이 때에, 버전 X를 가리키는 식별자가 저장된다.
여기서부터, 백아웃된 콤포넌트는 컴퓨팅 환경 내의 다른 콤포넌트들에게 명령을 내보낸다(424) (도 4b). 명령을 받자마자, 명령을 수신한 콤포넌트들은, 이번에는 콤포넌트들에게 백아웃된 콤포넌트 버전 식별자와 클러스터 버전 식별자를 비교하도록 하는, 상기 명령을 수행한다. 이 지점에서, 클러스터 버전 식별자는 각 콤포넌트 버전 식별자들과 동일하지 않기 때문에, 비교는 콤포넌트들이 호환성 모드에 있지 않다는 것을 가리키게 된다. 그 후, 백아웃된 콤포넌트는 다시 액티베이트(reactivate)되거나, 다시 활성화된다(brought back up) (426).
백아웃된 콤포넌트가 다시 액티베이트되면, 백아웃된 콤포넌트는 자신의 버전 식별자를 클러스터 버전 식별자를 체크한다(질의(428)). 비교 결과, 백아웃된 콤포넌트 버전 식별자가 클러스터 버전 식별자가 동일하다면, 업데이트된 콤포넌트는 호환성 모드에서 동작하고 있는 것이 아니고(430), 업데이트된 노드 (또는 콤포넌트)의 리액티베이션(reactivaton)이 단계(432)에서 완료된다.
여기서부터, 추가의 콤포넌트들이 원래 버전으로 백아웃되어야 하는지 아닌지에 대한 결정이 내려진다(질의(434)). 만약 결정의 결과, 원래의 콤포넌트 버전으로 백아웃될 다른 콤포넌트들이 없다면, 백아웃 처리는 종료된다(436). 만약 질의(434)의 결정 결과, 추가의 콤포넌트들이 백아웃되어야 한다면, 프로세싱은, 백아웃 프로시저가 백아웃될 다른 콤포넌트를 선택하면서 시작하는 단계(404)로 되돌아간다.
이제 질의(428)로 되돌아 가보면, 비교 결과, 백아웃된 콤포넌트 버전 식별자가 클러스터 버전 식별자와 동일하지 않다면, 이는 백아웃된 콤포넌트가 클러스터 버전보다 더 새로운 버전으로 백아웃되었다는 것을 의미하므로, 백아웃된 콤포넌트는 자신의 콤포넌트 버전 식별자가 클러스터 버전 실별자보다 큰지 여부를 결정한다(질의(438)). 만약 비교 결과, 백아웃된 콤포넌트 식별자가 클러스터 버전 식별자보다 크지 않다면, 에러가 발생한 것이고(440), 백아웃은 종료된다. 이때에, 에러 메시지가 발생되고, 에러의 원인을 결정하기 위한 단계들이 수행된다.
반면에, 만약 질의(438)의 비교 결과, 백아웃된 콤포넌트 식별자가 클러스터 버전 식별자보다 크다면, 모든 콤포넌트들에 의해 접근 가능한 데이타베이스에 위치한 제어 구조를 이용하지 않는 실시예에서는, 그러한 변화를 반영하도록 컴퓨팅 환경의 콤포넌트들을 수행하는 노드들의 로컬 메모리에 있는 제어 구조에서 현재 버전 식별자가 업데이트된다(442). 하나의 제어 구조를 사용하는 실시예에서는, 백아웃된 콤포넌트에 대응하는 현재 버전 식별자가 이미 단계(422)에서 업데이트되었기 때문에, 그러한 변화를 반영하기 위해 제어 구조를 업데이트할 필요가 없다.
다음으로, 한 콤포넌트가 중간 버전으로 백아웃되고, 모든 콤포넌트들이 클러스터 버전보다 더 새로운 버전에서 수행하고 있지 않으면 (단계(420)을 보시오), 백킹아웃(backing-out)은 액티베이션과 원래 버전을 에뮬레이팅하는 호환성 모드에서의 동작을 계속한다(444). 그리고 나서, 프로세싱은, 추가의 콤포넌트들이 원래의 콤포넌트 버전으로 백아웃되어야 하는지를 결정하는 프로세스인 질의(434)와 더불어 계속된다.
이렇게, 본 발명의 한 측면에 따르면, 여기에서 설명한 것은 컴퓨팅 환경의 가용성을 유지하면서 컴퓨팅 환경의 콤포넌트를 업데이트하는 업데이트 능력이다. 특히, 작업 단위의 부분과 관련된 컴퓨팅 환경의 콤포넌트는 한 버전에서 다른 버전으로 업데이트된다. 이어서, 작업의 동일한 단위와 유사하게 관련이 있는 컴퓨팅 환경의 다른 콤포넌트들이 원래의 버전으로 남아 있는 동안, 업데이트된 콤포넌트는 원래의 버전을 에뮬레이트하거나, 호환성 모드에서 동작한다.
본 발명의 또 다른 측면은, 컴퓨팅 환경의 가용성을 유지하면서, 컴퓨팅 환경의 콤포넌트가 더 과거의 버전으로 백아웃되는 백킹 아웃 능력을 포함한다. 더 구체적으로, 콤포넌트는 더 새로운 버전으로부터 클러스터 버전이나 중간 버전으로 백아웃될 수 있다. 뒤의 경우에, 백아웃된 콤포넌트는 다른 클러스터 버전과 호환성 모드에서 동작한다.
본 발명은 예를 들어 컴퓨터가 사용가능한 매체(media)를 가진 제조 물품(예를 들면 하나 이상의 컴퓨터 프로그램 제품)에 포함될 수 있다. 매체는, 예를 들어, 본 발명의 능력을 제공하고 용이하게 하도록 하는 컴퓨터에 의해 판독가능한 프로그램 코드 수단을 그 내부에 구현한다. 제조 물품은 독립적으로 판매될 수도 있고, 컴퓨터 시스템의 일부분으로 포함될 수도 있다.
추가로, 본 발명의 능력을 수행하도록 기계에 의해 수행가능한 명령들의 적어도 하나 이상의 프로그램을 실제로 구현하는, 기계에 의해 읽을 수 있는 적어도 하나의 프로그램 저장 장치가 제공될 수 있다.
여기에서 묘사된 흐름도(flow diagram)는 단지 보기일뿐이다. 본 발명의 정신에서 벗어나지 않으면서도, 본원에서 설명된 이러한 다이어그램들 또는 단계들 (또는 동작들)에 대한 많은 변용이 가능하다. 예를 들어, 단계들을 다른 순서로 수행할 수도 있고, 단계들을 추가, 삭제, 변경할 수도 있다. 이러한 모든 변용들이 청구되는 본 발명의 일부로 간주된다.
비록, 바람직한 실시예가 본원에서 도시되고 상세히 설명되었지만, 관련 분야에서 통상의 기술을 가진 자에게는 다양한 변경, 추가, 교체 등과 같은 것들이 본 발명의 정신 내에서 할 수 있다는 것이 분명하고, 따라서 이러한 것들은 아래 청구항들에서 정의된 바와 같이 본 발명의 범위 내로 인식된다.

Claims (43)

  1. 컴퓨팅 환경에서의 콤포넌트 업데이트 방법에 있어서,
    작업 단위의 적어도 한 부분과 관련된 상기 컴퓨팅 환경에서의 콤포넌트를 한 버전에서 다른 버전으로 업데이트하는 단계, 및
    상기 작업 단위와 관련된 상기 컴퓨팅 환경의 적어도 하나의 다른 콤포넌트가 상기 한 버전으로 남아있는 동안 상기 한 버전을 상기 업데이트된 콤포넌트에 의하여 에뮬레이트하는 단계를 포함하는 콤포넌트 업데이트 방법.
  2. 제1항에 있어서, 상기 콤포넌트와 상기 적어도 하나의 다른 콤포넌트는 하나의 프로그램의 다수의 이미지를 포함하고, 상기 작업 단위는 하나의 태스크를 포함하는 콤포넌트 업데이트 방법.
  3. 제2항에 있어서, 상기 다수의 이미지는 서로 통신하는 콤포넌트 업데이트 방법.
  4. 제1항에 있어서, 상기 콤포넌트와 상기 적어도 하나의 다른 콤포넌트는 분산 컴퓨팅 환경의 복수개의 노드에서 상기 작업 단위를 처리하는 콤포넌트 업데이트 방법.
  5. 제1항에 있어서, 상기 업데이트하는 단계는 상기 업데이트된 콤포넌트의 콤포넌트 식별자를 상기 다른 버전에 상응하도록 업데이트하는 것을 포함하는 콤포넌트 업데이트 방법.
  6. 제5항에 있어서,
    상기 업데이트된 콤포넌트와 상기 적어도 하나의 다른 콤포넌트가 업데이트되었는지를 결정하기 위하여 상기 업데이트된 콤포넌트의 상기 콤포넌트 식별자를 상기 적어도 하나의 다른 콤포넌트의 적어도 하나의 콤포넌트 식별자와 비교하는 단계,
    상기 업데이트된 콤포넌트와 상기 적어도 하나의 다른 콤포넌트 중 어느 하나가 업데이트되지 않았으면 상기 업데이트된 콤포넌트에 의하여 상기 한 버전을 에뮬레이트하는 단계, 및
    상기 업데이트된 콤포넌트와 상기 적어도 하나의 다른 콤포넌트가 업데이트되었으면 상기 업데이트된 콤포넌트와 상기 다른 버전의 상기 적어도 하나의 다른 콤포넌트를 처리하는 단계를 더 포함하는 콤포넌트 업데이트 방법.
  7. 제1항에 있어서,
    상기 분산 컴퓨팅 환경의 수행되고 있는 가장 낮은 버전을 나타내도록 클러스터 버전 식별자를 이용하는 단계, 및
    상기 콤포넌트와 상기 적어도 하나의 다른 콤포넌트 중 어느 하나가 상기 한 버전으로 업데이트되었을 때 상기 수행되고 있는 가장 낮은 버전을 상기 업데이트된 콤포넌트에 의하여 에뮬레이트하는 단계를 더 포함하는 콤포넌트 업데이트 방법.
  8. 제7항에 있어서, 상기 콤포넌트와 상기 적어도 하나의 다른 콤포넌트가 상기 한 버전으로 업데이트되었을 때, 상기 클러스터 버전 식별자를 상기 한 버전에 대응하도록 업데이트하는 단계를 더 포함하는 콤포넌트 업데이트 방법.
  9. 제1항에 있어서, 상기 업데이트된 콤포넌트를 상기 다른 버전으로부터 더 과거의 버전으로 백킹(backing)하는 단계를 더 포함하는 콤포넌트 업데이트 방법.
  10. 제9항에 있어서, 상기 배킹아웃은 상기 백아웃된 콤포넌트의 콤포넌트 버전 식별자를 상기 더 과거의 버전에 대응하도록 업데이트하는 단계를 포함하는 콤포넌트 업데이트 방법.
  11. 제9항에 있어서, 상기 더 과거의 버전은 상기 한 버전을 포함하는 콤포넌트 업데이트 방법.
  12. 제9항에 있어서, 상기 더 과거의 버전은 중간 버전을 포함하는 콤포넌트 업데이트 방법.
  13. 제12항에 있어서, 상기 한 버전을 상기 백아웃된 콤포넌트에 의하여 에뮬레이트하는 단계를 더 포함하는 콤포넌트 업데이트 방법.
  14. 제1항에 있어서, 상기 업데이트하는 단계는 상기 컴퓨팅 환경의 복수개의 콤포넌트를 업데이트하는 단계를 포함하는 콤포넌트 업데이트 방법.
  15. 컴퓨팅 환경에서의 콤포넌트 업데이트 시스템에 있어서,
    작업 단위의 적어도 한 부분과 관련된 상기 컴퓨팅 환경에서의 콤포넌트를 한 버전에서 다른 버전으로 업데이트하기 위한 수단, 및
    상기 작업 단위와 관련된 상기 컴퓨팅 환경의 적어도 하나의 다른 콤포넌트가 상기 한 버전으로 남아있는 동안 상기 한 버전을 상기 업데이트된 콤포넌트에 의하여 에뮬레이트하기 위한 수단을 포함하는 콤포넌트 업데이트 시스템.
  16. 제15항에 있어서, 상기 콤포넌트와 상기 적어도 하나의 다른 콤포넌트는 하나의 프로그램의 다수의 이미지를 포함하고, 상기 작업 단위는 하나의 태스크를 포함하는 콤포넌트 업데이트 시스템.
  17. 제16항에 있어서, 상기 다수의 이미지는 서로 통신하는 콤포넌트 업데이트 시스템.
  18. 제15항에 있어서, 상기 콤포넌트와 상기 적어도 하나의 다른 콤포넌트는 분산 컴퓨팅 환경의 복수개의 노드에서 상기 작업 단위를 처리하는 콤포넌트 업데이트 시스템.
  19. 제15항에 있어서, 상기 업데이트하기 위한 수단은 상기 업데이트된 콤포넌트의 콤포넌트 식별자를 상기 다른 버전에 상응하도록 업데이트하기 위한 수단을 포함하는 콤포넌트 업데이트 시스템.
  20. 제19항에 있어서,
    상기 업데이트된 콤포넌트와 상기 적어도 하나의 다른 콤포넌트가 업데이트되었는지를 결정하기 위하여 상기 업데이트된 콤포넌트의 상기 콤포넌트 식별자를 상기 적어도 하나의 다른 콤포넌트의 적어도 하나의 콤포넌트 식별자와 비교하기 위한 수단,
    상기 업데이트된 콤포넌트와 상기 적어도 하나의 다른 콤포넌트 중 어느 하나가 업데이트되지 않았으면 상기 업데이트된 콤포넌트에 의하여 상기 한 버전을 에뮬레이트하기 위한 수단, 및
    상기 업데이트된 콤포넌트와 상기 적어도 하나의 다른 콤포넌트가 업데이트되었으면 상기 업데이트된 콤포넌트와 상기 다른 버전의 상기 적어도 하나의 다른 콤포넌트를 처리하기 위한 수단을 더 포함하는 콤포넌트 업데이트 시스템.
  21. 제15항에 있어서,
    상기 분산 컴퓨팅 환경의 수행되고 있는 가장 낮은 버전을 나타내도록 클러스터 버전 식별자를 이용하기 위한 수단, 및
    상기 콤포넌트와 상기 적어도 하나의 다른 콤포넌트 중 어느 하나가 상기 한 버전으로 업데이트되었을 때 상기 수행되고 있는 가장 낮은 버전을 상기 업데이트된 콤포넌트에 의하여 에뮬레이트하기 위한 수단을 더 포함하는 콤포넌트 업데이트 시스템.
  22. 제21항에 있어서, 상기 콤포넌트와 상기 적어도 하나의 다른 콤포넌트가 상기 한 버전으로 업데이트되었을 때, 상기 클러스터 버전 식별자를 상기 한 버전에 대응하도록 업데이트하기 위한 수단을 더 포함하는 콤포넌트 업데이트 시스템.
  23. 제15항에 있어서, 상기 업데이트된 콤포넌트를 상기 다른 버전으로부터 더 과거의 버전으로 백킹(backing)하기 위한 수단을 더 포함하는 콤포넌트 업데이트 시스템.
  24. 제23항에 있어서, 상기 배킹아웃을 위한 수단은 상기 백아웃된 콤포넌트의 콤포넌트 버전 식별자를 상기 더 과거의 버전에 대응하도록 업데이트하기 위한 수단을 포함하는 콤포넌트 업데이트 시스템.
  25. 제23항에 있어서, 상기 더 과거의 버전은 상기 한 버전을 포함하는 콤포넌트 업데이트 시스템.
  26. 제23항에 있어서, 상기 더 과거의 버전은 중간 버전을 포함하는 콤포넌트 업데이트 시스템.
  27. 제26항에 있어서, 상기 한 버전을 상기 백아웃된 콤포넌트에 의하여 에뮬레이트하기 위한 수단을 더 포함하는 콤포넌트 업데이트 시스템.
  28. 제15항에 있어서, 상기 업데이트하기 위한 수단은 상기 컴퓨팅 환경의 복수개의 콤포넌트를 업데이트하기 위한 수단을 포함하는 콤포넌트 업데이트 시스템.
  29. 컴퓨팅 환경에서의 콤포넌트 업데이트 시스템에 있어서,
    작업 단위의 적어도 한 부분과 관련된 상기 컴퓨팅 환경에서의 콤포넌트를 한 버전에서 다른 버전으로 업데이트하도록 적응된 컴퓨팅 노드를 포함하고,
    상기 컴퓨팅 노드는 상기 작업 단위와 관련된 상기 컴퓨팅 환경의 적어도 하나의 다른 콤포넌트가 상기 한 버전으로 남아있는 동안 상기 한 버전을 상기 업데이트된 콤포넌트에 의하여 에뮬레이트하도록 더 적응되어 있는, 콤포넌트 업데이트 시스템.
  30. 제조 물품(an article of manufacture)에 있어서,
    컴퓨팅 환경에서의 콤포넌트를 업데이트하도록 하기 위하여 컴퓨터에 의해 판독가능한 프로그램 코드 수단이 구현되어 있는 컴퓨터가 사용할 수 있는 적어도 하나의 매체를 포함하고, 상기 제조 물품 내의 컴퓨터에 의해 판독가능한 프로그램 코드수단은
    작업 단위의 적어도 한 부분과 관련된 상기 컴퓨팅 환경에서의 콤포넌트를 한 버전에서 다른 버전으로 업데이트하기 위한 컴퓨터에 의해 판독가능한 프로그램 코드 수단, 및
    상기 작업 단위와 관련된 상기 컴퓨팅 환경의 적어도 하나의 다른 콤포넌트가 상기 한 버전으로 남아있는 동안 상기 한 버전을 상기 업데이트된 콤포넌트에 의하여 에뮬레이트하기 위한 컴퓨터에 의해 판독가능한 프로그램 코드 수단을 포함하는 제조 물품.
  31. 제30항에 있어서, 상기 콤포넌트와 상기 적어도 하나의 다른 콤포넌트는 하나의 프로그램의 다수의 이미지를 포함하고, 상기 작업 단위는 하나의 태스크를 포함하는 제조 물품.
  32. 제31항에 있어서, 상기 다수의 이미지는 서로 통신하는 제조 물품.
  33. 제30항에 있어서, 상기 콤포넌트와 상기 적어도 하나의 다른 콤포넌트는 분산 컴퓨팅 환경의 복수개의 노드에서 상기 작업 단위를 처리하는 제조 물품.
  34. 제30항에 있어서, 상기 업데이트하기 위한 컴퓨터에 의해 판독가능한 프로그램 코드 수단은 상기 업데이트된 콤포넌트의 콤포넌트 식별자를 상기 다른 버전에 상응하도록 업데이트하기 위한 컴퓨터에 의해 판독가능한 프로그램 코드 수단을 포함하는 제조 물품.
  35. 제34항에 있어서,
    상기 업데이트된 콤포넌트와 상기 적어도 하나의 다른 콤포넌트가 업데이트되었는지를 결정하기 위하여 상기 업데이트된 콤포넌트의 상기 콤포넌트 식별자를 상기 적어도 하나의 다른 콤포넌트의 적어도 하나의 콤포넌트 식별자와 비교하기 위한 컴퓨터에 의해 판독가능한 프로그램 코드 수단,
    상기 업데이트된 콤포넌트와 상기 적어도 하나의 다른 콤포넌트 중 어느 하나가 업데이트되지 않았으면 상기 업데이트된 콤포넌트에 의하여 상기 한 버전을 에뮬레이트하기 위한 컴퓨터에 의해 판독가능한 프로그램 코드 수단, 및
    상기 업데이트된 콤포넌트와 상기 적어도 하나의 다른 콤포넌트가 업데이트되었으면 상기 업데이트된 콤포넌트와 상기 다른 버전의 상기 적어도 하나의 다른 콤포넌트를 처리하기 위한 컴퓨터에 의해 판독가능한 프로그램 코드 수단을 더 포함하는 제조 물품.
  36. 제30항에 있어서,
    상기 분산 컴퓨팅 환경의 수행되고 있는 가장 낮은 버전을 나타내도록 클러스터 버전 식별자를 이용하기 위한 컴퓨터에 의해 판독가능한 프로그램 코드 수단, 및
    상기 콤포넌트와 상기 적어도 하나의 다른 콤포넌트 중 어느 하나가 상기 한 버전으로 업데이트되었을 때 상기 수행되고 있는 가장 낮은 버전을 상기 업데이트된 콤포넌트에 의하여 에뮬레이트하기 위한 컴퓨터에 의해 판독가능한 프로그램 코드 수단을 더 포함하는 제조 물품.
  37. 제36항에 있어서, 상기 콤포넌트와 상기 적어도 하나의 다른 콤포넌트가 상기 한 버전으로 업데이트되었을 때, 상기 클러스터 버전 식별자를 상기 한 버전에 대응하도록 업데이트하기 위한 컴퓨터에 의해 판독가능한 프로그램 코드 수단을 더 포함하는 제조 물품.
  38. 제30항에 있어서, 상기 업데이트된 콤포넌트를 상기 다른 버전으로부터 더 과거의 버전으로 백킹(backing)하기 위한 컴퓨터에 의해 판독가능한 프로그램 코드 수단을 더 포함하는 제조 물품.
  39. 제38항에 있어서, 상기 수단은 상기 백아웃된 콤포넌트의 콤포넌트 버전 식별자를 상기 더 과거의 버전에 대응하도록 업데이트하기 위한 컴퓨터에 의해 판독가능한 프로그램 코드 수단을 포함하는 제조 물품.
  40. 제38항에 있어서, 상기 더 과거의 버전은 상기 한 버전을 포함하는 제조 물품.
  41. 제38항에 있어서, 상기 더 과거의 버전은 중간 버전을 포함하는 제조 물품.
  42. 제41항에 있어서, 상기 한 버전을 상기 백아웃된 콤포넌트에 의하여 에뮬레이트하기 위한 컴퓨터에 의해 판독가능한 프로그램 코드 수단을 더 포함하는 제조 물품.
  43. 제30항에 있어서, 상기 업데이트하기 위한 컴퓨터에 의해 판독가능한 프로그램 코드 수단은 상기 컴퓨팅 환경의 복수개의 콤포넌트를 업데이트하기 위한 컴퓨터에 의해 판독가능한 프로그램 코드 수단을 포함하는 제조 물품.
KR10-2000-0054883A 1999-09-30 2000-09-19 에뮬레이션을 통해 클러스터를 활동적으로마이그레이션하기 위한 방법, 시스템 및 프로그램 제품 KR100411384B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/408,916 US6754848B1 (en) 1999-09-30 1999-09-30 Method, system and program products for operationally migrating a cluster through emulation
US9/408,916 1999-09-30
US09/408,916 1999-09-30

Publications (2)

Publication Number Publication Date
KR20010050518A true KR20010050518A (ko) 2001-06-15
KR100411384B1 KR100411384B1 (ko) 2003-12-18

Family

ID=23618309

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0054883A KR100411384B1 (ko) 1999-09-30 2000-09-19 에뮬레이션을 통해 클러스터를 활동적으로마이그레이션하기 위한 방법, 시스템 및 프로그램 제품

Country Status (3)

Country Link
US (2) US6754848B1 (ko)
JP (1) JP2001134454A (ko)
KR (1) KR100411384B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100113573A (ko) * 2008-01-22 2010-10-21 아마데우스 에스.에이.에스. 클라이언트/서버 네트워크 환경에서 비 역호환 서버 버전을 분배하기 위한 방법 및 시스템

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002318692A (ja) * 2001-04-19 2002-10-31 Sony Corp インストール支援システム、インストール支援装置、インストール支援方法、インストールを支援するためのプログラムおよびそのプログラムを記録した記録媒体
US7246349B2 (en) * 2001-08-31 2007-07-17 Telefonaktiebolaget Lm Ericsson (Publ) Migration support mechanism in open service and open mobile architecture
US20040010786A1 (en) * 2002-07-11 2004-01-15 Microsoft Corporation System and method for automatically upgrading a software application
US7555750B1 (en) * 2002-08-22 2009-06-30 Hewlett-Packard Development Company, L.P. Update package generator employing partial predictive mapping techniques for generating update packages for mobile handsets
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US20060130038A1 (en) * 2004-12-15 2006-06-15 Claussen Christopher S Apparatus, system, and method for facilitating dynamic modification of existing software objects defined in a strongly-typed programming language
EP1739552A1 (en) * 2005-06-21 2007-01-03 Hewlett-Packard Development Company, L.P. Software installation method and computer system
EP2025095A2 (en) 2006-06-08 2009-02-18 Hewlett-Packard Development Company, L.P. Device management in a network
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
WO2008126221A1 (ja) 2007-03-29 2008-10-23 Fujitsu Limited ソフトウェア修正管理プログラム、ソフトウェア修正管理装置、およびソフトウェア修正管理方法
US8166492B2 (en) 2007-04-10 2012-04-24 Microsoft Corporation Application compatibility using a hybrid environment
US7792800B1 (en) * 2007-07-02 2010-09-07 Emc Corporation Data repository upgrade process
US8788510B2 (en) 2007-08-17 2014-07-22 Salesforce.Com, Inc. System, method, and computer program product for runtime invocation of an appropriate version of program instructions in an on-demand database
US8689203B2 (en) * 2008-02-19 2014-04-01 Microsoft Corporation Software update techniques based on ascertained identities
US20090248397A1 (en) * 2008-03-25 2009-10-01 Microsoft Corporation Service Initiation Techniques
WO2010016057A2 (en) * 2008-08-04 2010-02-11 Red Bend Ltd. Performing a pre-update on a non volatile memory
WO2010016058A2 (en) * 2008-08-04 2010-02-11 Red Bend Ltd. Performing an in-place update of an operating storage device
US8438558B1 (en) 2009-03-27 2013-05-07 Google Inc. System and method of updating programs and data
WO2010135696A1 (en) * 2009-05-21 2010-11-25 Salesforce.Com, Inc. System, method and computer program product for versioning components of an application
US9170852B2 (en) * 2012-02-02 2015-10-27 Microsoft Technology Licensing, Llc Self-updating functionality in a distributed system
US9542177B1 (en) * 2012-10-30 2017-01-10 Amazon Technologies, Inc. Peer configuration analysis and enforcement
WO2018109825A1 (ja) * 2016-12-13 2018-06-21 株式会社日立製作所 バージョン管理システムおよびバージョン管理方法

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2203573A (en) 1987-04-02 1988-10-19 Ibm Data processing network with upgrading of files
US5155847A (en) * 1988-08-03 1992-10-13 Minicom Data Corporation Method and apparatus for updating software at remote locations
US5008814A (en) * 1988-08-15 1991-04-16 Network Equipment Technologies, Inc. Method and apparatus for updating system software for a plurality of data processing units in a communication network
US5155837A (en) * 1989-03-02 1992-10-13 Bell Communications Research, Inc. Methods and apparatus for software retrofitting
EP0415863A3 (en) 1989-08-31 1992-02-26 International Business Machines Corporation Computer system with downward compatibility function
EP0463251A1 (en) 1990-06-28 1992-01-02 International Business Machines Corporation Software installation
JP3227542B2 (ja) * 1991-06-17 2001-11-12 サン・マイクロシステムズ・インコーポレーテッド 特定のコンピュータ・ハードウェア・アーキテクチャのために作成されたソフトウェアのバージョンの互換性を確保する装置および方法
US5519875A (en) * 1991-08-08 1996-05-21 Hitachi, Ltd. Distributed processing system for modules, each having modularized objects
JPH05324303A (ja) 1992-05-21 1993-12-07 Hitachi Ltd 情報処理システム
US5359730A (en) 1992-12-04 1994-10-25 International Business Machines Corporation Method of operating a data processing system having a dynamic software update facility
DE69424597T2 (de) * 1993-06-17 2001-03-01 Sun Microsystems Inc Erweiterbares Dateiensystem
US5721943A (en) * 1993-10-14 1998-02-24 International Business Machines Corporation Negotiable locks for concurrent access of control data by multiple programs
JP3658420B2 (ja) * 1994-04-14 2005-06-08 株式会社日立製作所 分散処理システム
JP3160149B2 (ja) 1994-05-13 2001-04-23 株式会社日立製作所 ディスク制御装置の無停止プログラム変更方法およびディスク制御装置
DE69510226T2 (de) 1994-12-13 1999-11-04 Novell Inc Verfahren und vorrichtung zur aktualisierung oder änderung eines netzwerkverzeichnisses
US5764992A (en) 1995-06-06 1998-06-09 Apple Computer, Inc. Method and apparatus for automatic software replacement
US6047323A (en) * 1995-10-19 2000-04-04 Hewlett-Packard Company Creation and migration of distributed streams in clusters of networked computers
US6012059A (en) * 1997-08-21 2000-01-04 Dataxel Corporation Method and apparatus for replicated transaction consistency
US6000044A (en) * 1997-11-26 1999-12-07 Digital Equipment Corporation Apparatus for randomly sampling instructions in a processor pipeline
US6131148A (en) * 1998-01-26 2000-10-10 International Business Machines Corporation Snapshot copy of a secondary volume of a PPRC pair
DE19810802A1 (de) * 1998-03-12 1999-09-16 Ericsson Telefon Ab L M Störungsfreies Aktualisieren von Daten
DE19810814B4 (de) * 1998-03-12 2004-10-28 Telefonaktiebolaget Lm Ericsson (Publ) Rechnersystem und Zustandskopierverfahren zur skalierbaren Software-Aktualisierung
US6205548B1 (en) * 1998-07-31 2001-03-20 Intel Corporation Methods and apparatus for updating a nonvolatile memory
US6411966B1 (en) * 1998-09-21 2002-06-25 Microsoft Corporation Method and computer readable medium for DNS dynamic update to minimize client-server and incremental zone transfer traffic
US6237091B1 (en) * 1998-10-29 2001-05-22 Hewlett-Packard Company Method of updating firmware without affecting initialization information
WO2000055735A1 (en) * 1999-03-15 2000-09-21 Powerquest Corporation Manipulation of computer volume segments
US6401093B1 (en) * 1999-03-31 2002-06-04 International Business Machines Corporation Cross file system caching and synchronization
US6324692B1 (en) * 1999-07-28 2001-11-27 Data General Corporation Upgrade of a program
US6564376B1 (en) * 1999-09-30 2003-05-13 International Business Machines Corporation Method, system and program products for operationally backing out components of a cluster through emulation
US6418524B1 (en) * 1999-12-28 2002-07-09 Ati International Srl Method and apparatus for dependent segmentation and paging processing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100113573A (ko) * 2008-01-22 2010-10-21 아마데우스 에스.에이.에스. 클라이언트/서버 네트워크 환경에서 비 역호환 서버 버전을 분배하기 위한 방법 및 시스템

Also Published As

Publication number Publication date
US6915452B2 (en) 2005-07-05
US20040205401A1 (en) 2004-10-14
JP2001134454A (ja) 2001-05-18
US6754848B1 (en) 2004-06-22
KR100411384B1 (ko) 2003-12-18

Similar Documents

Publication Publication Date Title
KR100411384B1 (ko) 에뮬레이션을 통해 클러스터를 활동적으로마이그레이션하기 위한 방법, 시스템 및 프로그램 제품
US5564051A (en) Automatic update of static and dynamic files at a remote network node in response to calls issued by or for application programs
EP0436559B1 (en) Data processing network
US6920631B2 (en) Software installation and validation using custom actions
US6055363A (en) Managing multiple versions of multiple subsystems in a distributed computing environment
US6269442B1 (en) Apparatus and method for on-line replacement of a running program code and data using checkpoints
CN112099918A (zh) 容器化环境中的集群的实时迁移
US6314567B1 (en) Apparatus and method for transferring state data when performing on-line replacement of a running program code and data
US6438590B1 (en) Computer system with preferential naming service
US5649112A (en) Method and apparatus for modifying microcode in a distributed nodal network while the network continues operation
US5717950A (en) Input/output device information management system for multi-computer system
US20030014381A1 (en) Method and system for identifying and resolving software conflicts and computer-readable storage medium having a program for executing the method
US5956515A (en) Method for managing multiple versions of multiple subsystems in a distributed computing environment
US6671721B1 (en) Object oriented framework mechanism and method for distributing and managing heterogenous operations of a network application
US8260897B2 (en) System and method for automatically managing IT-resources in a heterogeneous environment
CN111124475A (zh) 存储管理的方法、电子设备和计算机可读存储介质
US20030130980A1 (en) Efficient configuration data migration technique
JPH11345130A (ja) 複数のデ―タストアの同期をとってデ―タ整合性を達成する方法
CN106021373A (zh) 一种文件更新方法及装置
US6564376B1 (en) Method, system and program products for operationally backing out components of a cluster through emulation
JP2000315192A (ja) クライアントサーバシステム、サーバ、アプリケーション管理方法及び記録媒体
JPH1091405A (ja) ソフトウェア保守方法
US6725188B1 (en) Method of cleanup after termination of a process under a simulated operating system
JPH1027095A (ja) ソフトウェアのバージョン管理システム
JP4070389B2 (ja) 電力系統監視制御装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20101109

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee