KR100942127B1 - 업데이트 배포 시스템에서 업데이트 메타데이터를 배포시키기 위한 태그-기반 스키마 - Google Patents

업데이트 배포 시스템에서 업데이트 메타데이터를 배포시키기 위한 태그-기반 스키마 Download PDF

Info

Publication number
KR100942127B1
KR100942127B1 KR1020050005702A KR20050005702A KR100942127B1 KR 100942127 B1 KR100942127 B1 KR 100942127B1 KR 1020050005702 A KR1020050005702 A KR 1020050005702A KR 20050005702 A KR20050005702 A KR 20050005702A KR 100942127 B1 KR100942127 B1 KR 100942127B1
Authority
KR
South Korea
Prior art keywords
update
software
software update
service node
tag
Prior art date
Application number
KR1020050005702A
Other languages
English (en)
Other versions
KR20050091998A (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 KR20050091998A publication Critical patent/KR20050091998A/ko
Application granted granted Critical
Publication of KR100942127B1 publication Critical patent/KR100942127B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • AHUMAN NECESSITIES
    • A23FOODS OR FOODSTUFFS; TREATMENT THEREOF, NOT COVERED BY OTHER CLASSES
    • A23LFOODS, FOODSTUFFS, OR NON-ALCOHOLIC BEVERAGES, NOT COVERED BY SUBCLASSES A21D OR A23B-A23J; THEIR PREPARATION OR TREATMENT, e.g. COOKING, MODIFICATION OF NUTRITIVE QUALITIES, PHYSICAL TREATMENT; PRESERVATION OF FOODS OR FOODSTUFFS, IN GENERAL
    • A23L11/00Pulses, i.e. fruits of leguminous plants, for production of food; Products from legumes; Preparation or treatment thereof
    • A23L11/05Mashed or comminuted pulses or legumes; Products made therefrom
    • A23L11/07Soya beans, e.g. oil-extracted soya bean flakes
    • AHUMAN NECESSITIES
    • A23FOODS OR FOODSTUFFS; TREATMENT THEREOF, NOT COVERED BY OTHER CLASSES
    • A23PSHAPING OR WORKING OF FOODSTUFFS, NOT FULLY COVERED BY A SINGLE OTHER SUBCLASS
    • A23P30/00Shaping or working of foodstuffs characterised by the process or apparatus
    • A23P30/10Moulding
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47JKITCHEN EQUIPMENT; COFFEE MILLS; SPICE MILLS; APPARATUS FOR MAKING BEVERAGES
    • A47J43/00Implements for preparing or holding food, not provided for in other groups of this subclass
    • A47J43/20Shapes for preparing foodstuffs, e.g. meat-patty moulding devices, pudding moulds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Food Science & Technology (AREA)
  • General Physics & Mathematics (AREA)
  • Chemical & Material Sciences (AREA)
  • Polymers & Plastics (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Physics & Mathematics (AREA)
  • Manufacturing & Machinery (AREA)
  • Mechanical Engineering (AREA)
  • Agronomy & Crop Science (AREA)
  • Botany (AREA)
  • Health & Medical Sciences (AREA)
  • Nutrition Science (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

소프트웨어 업데이트 메타데이터 정보를 클라이언트 컴퓨터와 업데이트 서비스 노드에게 전달하기 위한 태그-기반 구조가 제공된다. 업데이트 메타데이터 파일은, 소프트웨어 업데이트를 고유하게 식별하는 소프트웨어 업데이트 식별자를 포함하는 식별자 태그; 소프트웨어 업데이트에 관한 일반적인 속성 정보를 수반하는 0 이상의 일반적인 속성 태그; 언어에 따라 조직된 로컬화된 속성 정보를 수반하는 0 이상의 로컬화된 속성 태그; 업데이트 메타데이터에서 기술된 바와 같이, 현재 소프트웨어 업데이트가 다른 소프트웨어 업데이트와 갖는 의존 관계를 식별하는 0 이상의 관계 태그; 클라이언트 컴퓨터에 대한 소프트웨어 업데이트의 적용가능성을 결정하기 위한 정보를 수반하는 0 이상의 적용가능성 규칙 태그; 소프트웨어 업데이트의 페이로드 파일에 관한 정보를 수반하는 0 이상의 파일 태그; 및 소프트웨어 업데이트를 설치하기 위한 소프트웨어 핸들러에게 송신된 정보를 수반하는 핸들러 특정 데이터 태그를 포함한다.
업데이트 메타데이터, 업데이트 배포, 태그-기반 스키마

Description

업데이트 배포 시스템에서 업데이트 메타데이터를 배포시키기 위한 태그-기반 스키마{TAG-BASED SCHEMA FOR DISTRIBUTING UPDATE METADATA IN AN UPDATE DISTRIBUTION SYSTEM}
도 1은 본 발명의 양태에 따라 형성된 예시적인 업데이트 배포 시스템의 블록도.
도 2는 본 발명의 양태에 따라 형성된 업데이트 서비스 노드의 예시적인 논리 컴포넌트를 도시하는 블록도.
도 3은 본 발명의 양태에 따라 형성된 루트 업데이트 서비스 노드의 예시적인 논리 컴포넌트를 도시하는 블록도.
도 4a 및 도 4b는 본 발명의 양태에 따라, 부모 업데이트 서비스 노드로부터 자식 업데이트 서비스 노드로 소프트웨어 업데이트를 제공할 때, 부모 업데이트 서비스 노드와 자식 업데이트 서비스 노드 간의 예시적인 교환을 도시하는 블록도.
도 5는 자식 업데이트 서비스 노드 상에서 실행되어 그의 부모 업데이트 서비스 노드로부터 업데이트를 주기적으로 획득하는 예시적인 루틴을 도시하는 흐름도.
도 6은 부모 업데이트 서비스 노드로부터 업데이트 카탈로그를 획득하기 위한, 도 5의 예시적인 루틴에서 사용하기 적합한 예시적인 서브루틴의 흐름도.
도 7은 부모 업데이트 서비스 노드로부터 소프트웨어 업데이트를 획득하기 위한, 도 5의 예시적인 루틴에서 사용하기 적합한 예시적인 서브루틴의 흐름도.
도 8은 자식 업데이트 서비스 노드로부터의 업데이트 요구를 처리하기 위한 예시적인 루틴의 흐름도.
도 9는 업데이트 메타데이터 파일의 컨텐츠를 정의하는 예시적인 XML-기반 업데이트 메타데이터 스키마의 일부를 도시하는 블록도.
〈도면의 주요 부분에 대한 부호의 설명〉
102 : 루트 업데이트 서비스 노드
104, 106 : 업데이트 서비스 노드
108 인터넷
110 : 소프트웨어 제공자
202 : 업데이트 웹 서비스
204 : 클라이언트 업데이트 모듈
206 : 자식 업데이트 모듈
208 : 리포팅 모듈
210 : 인증/승인 모듈
212 : 관리 API
218 : 관리 사용자 인터페이스
214 : 업데이트 컨텐츠
216 : 업데이트 정보
본 발명은 소프트웨어 및 컴퓨터 네트워크에 관한 것으로서, 특히, 업데이트 배포 시스템 내의 업데이트 메타데이터를 배포시키기 위한 태그-기반 스키마에 관한 것이다.
상업적으로 이용가능한 거의 모든 소프트웨어 제품은 소프트웨어의 특징을 수리 또는 업데이트하는 지속적인 개정 처리를 받는다. 소프트웨어 제품의 각 개정에서는 자주, 새로운 파일을 추가하는 것, 기존 파일을 보다 새로운 개정물로 대체하는 것, 못쓰는 파일을 삭제하는 것 또는 이 액션들의 여러 조합을 요구한다. 소프트웨어 제품의 보다 오래된 파일을 대체하고, 새로운 파일을 추가하고, 못쓰는 파일을 삭제하는 처리는 이후, "제품을 업데이트 한다"라고 지칭할 것이며, 제품을 업데이트하는 데 사용되는 이진 파일, 데이터 파일, 업데이트 명령, 메타데이터 등의 데이터 집합은 이후, 단순히 "업데이트"라고 지칭할 것이다.
소프트웨어 제공자가 소프트웨어 제품에 대한 업데이트를 생성하여, 문제를 고치거나, 보안을 강화하거나, 새로운 특징을 추가하면, 소프트웨어 제공자는 그 업데이트가 고객층에 널리 이용가능하도록 하기를 원할 것이다. 빈번히, 제품의 결점을 정정하거나 중대한 보안 문제에 대처하는 업데이트가 지시될 때, 소프트웨어 제공자는 그 업데이트가 가능한 한 빨리 고객의 컴퓨터 상에 설치되길 바랄 것이다. 사실, 대부분의 소프트웨어 제공자는 가능한 한 빠르고 문제 없이, 소프트 웨어 업데이트를 고객에게 배포하는 사업적 동기를 갖는다.
컴퓨터 산업은 네트워크 특히, 인터넷에 접속된 컴퓨터 수의 폭발적인 증가를 경험하였다. 이 폭발적인 증가로 인해, 그리고 인터넷으로의 접속을 통해 사용가능한 통신 능력으로 인해, 업데이트를 고객에게 배포시키는 소프트웨어 제공자에게 있어서, 인터넷은 중요하고 필수적인 채널이 되었다. 실제로, 인터넷은 다수의 소프트웨어 제공자가 소프트웨어 업데이트를 고객에게 제공하기 위한 주요 배포 채널이 되었다. 인터넷을 통한 전자 업데이트 배포는 전체 비용을 감소시키고, 사용가능한 한 빨리 고객이 소프트웨어 업데이트를 획득하게 하기 때문에, 소프트웨어 제공자는 인터넷을 통해 소프트웨어 업데이트를 배포하는 것에 관심이 많았다. 점점 더 빈번하게, 이 소프트웨어 업데이트는 어떠한 사용자 간섭 없이, 인터넷을 통해 자동적으로 실시된다.
이제, 소프트웨어 제공자로부터 소프트웨어 업데이트를 배포하기 위한 수로로서 인터넷이 흔히 사용되고 있지만, 몇몇 문제가 자주 발생한다. 그러한 문제 2가지로는 (1)업데이트 배포 인프라구조/자원에 관한 효율성, 및 (2)소프트웨어 업데이트의 배포 및 설치에 대한 관리적 제어가 있다.
배포 자원의 효율성에 관하여, 인터넷을 포함한 네트워크는 종종 대역폭이라고 지칭되는 유한한 양의 통신 자원만을 갖는다. 유한한 양의 통신 대역폭은 특히, 마이크로소프트 사의 윈도우® 오퍼레이팅 시스템 패밀리 및 그와 관련된 생산성 제품과 같은 인기있는 소프트웨어 제품에 대한 소프트웨어 업데이트에 대하여, 자주 병목현상에 귀착한다. 그러한 병목현상은 심지어 소프트웨어 업데이트가 인터넷을 통해 배포된 다수의 다운로드 위치에서 사용가능하게 될 때에도 존재한다. 그러한 병목현상이 발생하는 한가지 원인은 인터넷에 의해 사용가능하게 된 비구조적 액세스 모델이다. 예를 들어, 제1 사용자가 컴퓨터 A에서 소프트웨어 제품의 최신 다운로드를 요구할 경우, 그 다운로드는 제1 사용자의 독립적인 서비스 제공자(ISP)를 통해 전달된다. 또한, 그 요구는 단일의 개별화된 액세스로서 다루어지는데, 이것은 그 요구가 임의의 다른 네트워크 트래픽 및/또는 요구에 대해 독립적이고 무관하게 다루어지는 것을 의미한다. 마찬가지로, 동일한 ISP를 가진 제2 사용자가 컴퓨터 B에서 제1 사용자와 동일한 다운로드를 요구하는 경우, 제2 사용자로부터의 요구도 단일의 개별화된 액세스로서 다루어진다. 이 예에서, 각각의 요구는 따로따로 다루어지기 때문에, 동일한 다운로드는 동일한 인프라구조를 통해 두번 전송될 것이다. 분명히, 사용자의 수가 충분히 증가하면, 유효 통신 대역폭은 병목현상이 생길 것이다. 매우 흔한 이 예에서, 다운로드가 로컬 위치에 캐싱되고 각각의 사용자가 그 로컬 캐시로부터 만족한다면, 훨씬 효율적이게 된다.
배포의 제어에 관하여, 다수의 조직 특히, 큰 조직들은 그들의 컴퓨터에 대해 업데이트의 배포를 제어하는 합법적 이유를 갖는다. 예를 들어, 불행히도 일부 업데이트는 소프트웨어 제품의 특징을 "파괴하는", 종종 버그라고 지칭되는 결점을 가지고 있거나 도입한다. 이 파괴된 특징은 중요하지 않을 수도 있지만, 너무 자주 사업체의 임무상-중대한 특징을 방해할 수 있다. 사업체가 그 임무상-중대한 특징을 손실할 여유가 없기 때문에, 담당 사업체는 우선, 그들의 나머지 컴퓨터에 대해 업데이트를 배포하기 전에, 소정의 기간동안 제어된 환경 내에서 각각의 소프트웨어 업데이트를 평가하고 테스트할 것이다. 이 평가 기간은 조직으로 하여금 업데이트가 임무상-중대한 특징에 역효과를 일으킬 것인지를 확인하게 한다. 업데이트가 임의의 임무상의 중대한 특징을 저하시키지 않을 것으로 만족스럽게 결정된 후에만, 업데이트는 조직의 나머지 컴퓨터에 배포되도록 허용된다. 분명히, 대부분의 조직들은 그들의 컴퓨터 상의 소프트웨어 업데이트 설치에 대하여 제어를 수행해야 한다.
사업체 또는 조직이 종종 소프트웨어 업데이트의 배포를 제어하기 원하는 다른 이유는 조직 내의 컴퓨터들 간의 일관성을 보장하기 위해서이다. 정보 서비스 부서에 있어서, 워드 프로세서에 대한 것이든 오퍼레이팅 시스템에 대한 것이든 간에, 모든 컴퓨터들이 동작하는 표준화된 타겟 플랫폼을 갖는 것이 매우 중요하다. 표준 없이는, 소프트웨어 및 컴퓨터 유지는 불필요하게 복잡하고 어려워질 수 있다.
로컬 제어가 중요한 또다른 이유는 빌링(billing) 목적 때문이다. 큰 조직에서, 컴퓨터 상에 소프트웨어를 개별적으로 설치하거나 조직 내의 각각의 컴퓨터에 대해서 특정 소프트웨어 제품의 라이센스를 개별적으로 유지하는 것은 종종 비효율적이다. 대신에, 단일 사이트 라이센스는 조직이 수많은 컴퓨터들 상에서 소프트웨어 제품을 실행하게 한다. 따라서, 조직은 사이트 라이센스 하의 제품을 실행하는 컴퓨터들의 수를 보고하도록 요구되거나, 사이트 라이센스 하의 제품을 실행하는 컴퓨터들의 수를 제한할 필요가 있을 수 있다. 이 모든 이유는 종종 소프 트웨어 업데이트 배포에 대한 로컬 제어를 요구한다.
소프트웨어 업데이트 배포에 관한 상술된 여러가지 문제 측면에서 필요한 것은, 소프트웨어 업데이트의 배포에 대한 제어를 제공할 뿐만 아니라 그 배포 효율성도 증가시키기 위한 확장가능한 소프트웨어 업데이트 배포 아키텍처이다. 본 발명은 종래 기술에서 발견된 이러한 문제 및 그외의 문제들을 다룬다.
본 발명의 양태에 따르면, 업데이트 서비스 노드로부터 자식 업데이트 서비스 노드 또는 클라이언트 컴퓨터로 업데이트 메타데이터를 전달하기 위한 태그-기반의 구조가 제공된다. 태그-기반의 구조는, 소프트웨어 업데이트를 고유하게 식별하는 소프트웨어 업데이트 식별자를 포함하는 식별자 태그; 소프트웨어 업데이트에 관한 일반 속성 정보를 수반하는 0개 이상의 일반 속성 태그; 언어에 따라 조직된 로컬화된 속성 정보를 수반하는 0개 이상의 로컬화된 속성 태그; 업데이트 메타데이터에서 기술된 바와 같이, 현재 소프트웨어 업데이트가 다른 소프트웨어 업데이트와 갖는 의존 관계를 식별하는 0개 이상의 관계 태그; 클라이언트 컴퓨터에 대한 소프트웨어 업데이트의 적용가능성을 결정하기 위한 정보를 수반하는 0개 이상의 적용가능성 규칙 태그; 소프트웨어 업데이트의 페이로드 파일에 관한 정보를 수반하는 0개 이상의 파일 태그; 및 소프트웨어 업데이트를 설치하기 위한 소프트웨어 핸들러에게 송신되는 정보를 수반하는 핸들러 특정 데이터 태그를 포함한다.
본 발명의 추가적인 양태에 따르면, 업데이트 서비스 노드로부터 자식 업데이트 서비스 노드 또는 클라이언트 컴퓨터로 업데이트 메타데이터를 전달하기 위한 태그-기반 구조가 제공된다. 태그-기반 구조는, 소프트웨어 업데이트를 고유하게 식별하는 소프트웨어 업데이트 식별자를 포함하는 식별자 태그; 업데이트 메타데이터에서 기술된 바와 같이, 현재 소프트웨어 업데이트가 다른 소프트웨어 업데이트와 갖는 의존 관계를 식별하는 0개 이상의 관계 태그; 및 소프트웨어 업데이트의 페이로드 파일에 관한 정보를 수반하는 0개 이상의 파일 태그를 포함한다.
전술한 본 발명의 양태들과 많은 장점들은 첨부 도면과 관련하여 다음의 상세한 설명을 참조함으로써 보다 쉽게 이해될 것이다.
본 발명의 양태에 따르면, 소프트웨어 업데이트를 배포하기 위한, 계층적 방식으로 조직된 업데이트 배포 시스템이 제공된다. 도 1은 본 발명의 양태에 따라 형성된 예시적인 업데이트 배포 시스템(100)의 도면이다. 본 발명에 따르면, 도시된 업데이트 배포 시스템(100)과 같은 업데이트 배포 시스템의 "상단"은 루트 업데이트 서비스 노드(102)이다. 소프트웨어 제공자(110)와 같은 소프트웨어 제공자는 루트 업데이트 서비스 노드(102)에 업데이트를 서브밋함으로써 업데이트 배포 시스템(100)을 통해 그들의 소프트웨어 업데이트를 배포한다. 본 발명의 양태에 따르면, 소프트웨어 제공자(110)와 같은 소프트웨어 제공자는 인터넷(108)과 같은 네트워크를 통해 루트 업데이트 서비스 노드(102)에 그들의 소프트웨어 업데이트를 서브밋할 수 있다.
예시적인 업데이트 배포 시스템(100)과 같은 계층형 업데이트 배포 시스템은 루트 업데이트 서비스 노드(102)뿐만 아니라 적어도 하나의 다른 업데이트 서비스 노드를 포함할 것이다. 도 1에서 도시되는 바와 같이, 예시적인 업데이트 배포 시 스템(100)은 루트 업데이트 서비스 노드(102)와 2개의 추가적인 업데이트 서비스 노드{즉, 업데이트 서비스 노드(104) 및 업데이트 서비스 노드(106)}를 포함한다. 본 발명에 따르면, 각각의 계층형 업데이트 배포 시스템은 루트 업데이트 서비스 노드(102) 밑으로 트리형 구조로 조직된다. 다시 말하면, 업데이트 배포 시스템 내의 각각의 업데이트 서비스 노드는 0개 이상의 자식 업데이트 서비스 노드를 갖는다. 따라서, 예시적인 업데이트 배포 시스템(100)은 각각의 부모 업데이트 서비스 노드 즉, 루트 업데이트 서비스 노드(102) 및 업데이트 서비스 노드(104)가 하나의 자식만을 갖는 것으로 도시하고 있지만, 이것은 설명을 위한 것일 뿐이고, 본 발명에 대한 제한으로 해석해서는 안된다. 또한, 루트 업데이트 서비스 노드(102)를 제외하고, 업데이트 배포 시스템 내의 각각의 업데이트 서비스 노드는 하나의 부모 업데이트 서비스 노드를 갖는다. 따라서, 도 1에 도시된 바와 같이, 업데이트 서비스 노드(104)는 루트 업데이트 서비스 노드(102)에 대한 자식 노드이고, 업데이트 서비스 노드(106)는 업데이트 서비스 노드(104)에 대한 자식 노드이다. 도시되는 바와 같이, 루트 업데이트 서비스 노드(102)를 제외하고, 각각의 업데이트 서비스 노드는 자식 업데이트 서비스 노드와 부모 업데이트 서비스 노드 둘 다일 수 있다.
예시적인 업데이트 배포 시스템(100)에서 도시되는 바와 같이, 루트 업데이트 서비스 노드(102)는 인터넷(108)을 통하여 업데이트 서비스 노드(104)와 통신한다. 그러나, 이것은 단지 예시적인 것일 뿐이며, 본 발명에 대한 제한으로 해석해서는 안된다는 것을 이해해야 한다. 업데이트 배포 시스템 내의 각각의 업데이트 서비스 노드는 임의의 통신 네트워크를 통해 부모 및/또는 자식과 통신할 수 있기만 하면 된다. 따라서, 업데이트 서비스 노드(104)는 인터넷(108)을 통하여 부모인 루트 업데이트 서비스 노드(102)와 통신하는 한편, 대안적으로, 근거리 네트워크(LAN; 124)를 통해서 업데이트 서비스 노드(106)와 같은 자식 업데이트 서비스 노드와 통신할 수 있다.
또한, 도 1에 도시되는 바와 같이, 업데이트 서비스 노드(106)는 근거리 네트워크(124)의 서브-네트워크(126) 내에 상주한다. 예를 들어, 근거리 네트워크(124)는 조직의 일반 기업 네트워크에 대응할 수 있고, 업데이트 서비스 노드(104)는 부모인 루트 업데이트 서비스 노드(102)와의 접속을 통해, 업데이트 배포 시스템(100)으로의 기업 링크를 대표한다. 또한, 서브-네트워크(126)는 테스트/평가 그룹, 원격 위치된 사무실 또는 임무상 중대한 그룹과 같은 기업 네트워크 내의 식별가능한 컴퓨터 그룹에 대응할 수 있다. 이하에서 보다 상세히 설명되는 바와 같이, 본 발명의 양태에 따라, 업데이트 서비스 노드(104)에 대한 관리자는 업데이트 서비스 노드(106)로의, 궁극적으로는 클라이언트 컴퓨터들로의 업데이트의 배포를 제어할 수 있다.
루트 업데이트 서비스 노드(102)와 업데이트 서비스 노드(104 및 106) 둘 다를 포함하여, 각각의 업데이트 서비스 노드는 자식 업데이트 서비스 노드들 뿐만 아니라 클라이언트 컴퓨터들에게 소프트웨어 업데이트를 배포하도록 구성된다는 것을 인지해야 한다. 도 1에서 도시되는 바와 같이, 예시적인 업데이트 배포 시스템(100)은 클라이언트 컴퓨터(112 내지 122)를 포함한다. 루트 업데이트 서비스 노 드(102)를 포함하여 각각의 업데이트 서비스 노드는 로컬 구성 정보에 따라 자식 업데이트 서비스 노드와 클라이언트 컴퓨터에게 업데이트를 배포한다. 일 실시예에 따르면, 관리자는 그룹을 정의하고 업데이트 배포 규칙을 이들 그룹과 연계시킨다. 각각의 업데이트 서비스 노드는 적어도 하나의 배포 그룹을 갖는다.
업데이트 배포 시스템이 동작하는 방법을 예시하는 예로, 근거리 네트워크(124)가 사업 조직의 기업 네트워크에 대응한다고 가정하자. 본 발명의 일 실시예에 따르면, 관리자는 업데이트 서비스 노드(104) 상에서, 일반 기업 네트워크(124) 뿐만 아니라 업데이트 서비스 노드(104) 및 클라이언트 컴퓨터(114 내지 118)를 포함하는 일반 기업 그룹에 대해 업데이트의 적합성을 평가하기 위하여, 업데이트 서비스 노드(106)와 클라이언트 컴퓨터(120 및 122)를 포함하는 서브-네트워크(126)에 대응하여, 평가 그룹을 포함하는 기업 네트워크(124)에 대한 다수의 배포 그룹을 정의할 수 있다.
평가 그룹에 관하여, 관리자는 업데이트 서비스 노드(106)를 멤버로서 포함하고, 업데이트가 사용가능해지는 즉시 평가 그룹의 멤버들에게 배포되도록, 규칙을 그 그룹과 연계시킨다. 대안적으로, 일반 기업 그룹에 관하여, 관리자는 클라이언트 컴퓨터(114 내지 118)를 추가하고, 관리자에 의해 특별히 승인된 경우, 업데이트가 일반 기업 그룹 멤버들에게만 배포되도록 규칙을 연계시킨다. 또한, 자식 업데이트 서비스 노드(106)에 대한 관리자는, 임의의 새로운 소프트웨어 업데이트가 즉시 배포될 수 있는 평가 서브-네트워크(126) 내의 클라이언트 컴퓨터(120 및 122)로 구성된 디폴트 그룹을 생성한다고 가정하자.
계속해서 상기 예를 들면, 소프트웨어 제공자(110)는 소프트웨어 업데이트를 루트 업데이트 서비스 노드(102)에 서브밋한다. 루트 업데이트 서비스 노드(102)에 설립된 규칙에 따라, 업데이트는 결국 기업 업데이트 서비스 노드(104)에 배포된다. 업데이트를 수신할 때, 관리자에 의해 설립된 규칙 당, 기업 업데이트 서비스 노드(104)는 {자식 업데이트 서비스 노드(106)만으로서 정의된} 평가 그룹의 멤버들에게 업데이트를 배포하지만, 그 업데이트를 그 그룹에 배포하는 특정 승인을 미결한(pending) 일반 기업 그룹으로부터는 업데이트를 억제한다.
계속해서 상기 예를 들면, 업데이트를 수신할 때, 평가 업데이트 서비스 노드(106)는 각각의 정의된 그룹에 대하여 업데이트를 소유한다. 이 예에서, 평가 업데이트 서비스 노드(106)는 단지 하나의 그룹을 갖는다. 그러나, 상술된 바와 같이, 실제 구현에서는, 연계된 배포 규칙들의 유일한 집합을 각각 갖는 것으로 정의된 다수의 그룹들이 있을 수 있다. 이 예에서, 평가 업데이트 서비스 노드(106)는 즉시, 업데이트가 클라이언트 컴퓨터(120 및 122)로의 배포에 이용가능하도록 한다. 클라이언트 컴퓨터(120 및 122)는 이제 업데이트될 수 있고 평가 기간/프로세스가 시작된다.
계속해서 상기 예를 들면, 기업 업데이트 서비스 노드(104)에 대한 관리자가 업데이트가 전체 기업 네트워크(124)를 통한 배포에 적합하다고 충분히 만족할 때, 관리자는 업데이트를 일반 기업 그룹의 멤버들에게 배포되도록 명백히 승인한다. 이에 따라, 기업 업데이트 서비스 노드(104)는 업데이트가 클라이언트 컴퓨터(114 내지 118)에 사용가능하게 한다. 평가 업데이트 서비스 노드(106)는 또한, 일반 기업 그룹 내에 포함될 수 있음을 이해해야 한다. 그러나, 평가 업데이트 서비스 노드(106)는 이미 업데이트되었기 때문에, 업데이트를 평가 서브-네트워크(126)에 배포하기 위한 추가적인 업데이트-관련 액션이 요구되지 않는다.
상기 예에서 볼 수 있는 바와 같이, 본 발명은 로컬 배포 제어 및 다운로드 효율성 측면에서 상당한 이익을 제공한다. 상술된 양태의 로컬 배포 제어와 더불어, 통신 대역폭에서의 상당한 절약도 실현된다. 예를 들면, 도 1에 도시된 예시적인 기업 네트워크(124)는 5개의 클라이언트 컴퓨터를 포함하고 있지만, 소프트웨어 제공자의 업데이트는 루트 업데이트 서비스 노드(102)로부터 기업 업데이트 서비스 노드(104)로 단지 1회 다운로드되었다. 분명히, 업데이트 서비스 노드에 의해 서비스 받은 클라이언트 컴퓨터의 수가 증가함에 따라, 부모 업데이트 서비스 노드와 클라이언트 업데이트 서비스 노드 간의 통신 대역폭 사용은 일정하게 남아있어, 이에 의해, 다르게 사용될 수 있는 통신 대역폭의 양을 충분히 감소시킨다. 또한, 업데이트 배포 시스템은 확장가능하고 측정가능하다. 업데이트 배포 시스템은 적어도 2가지 방법으로 확장가능하다. 그중 하나는 임의의 수의 자식 업데이트 서비스 노드들이 부모 업데이트 서비스 노드에 추가될 수 있는 것이고, 다른 하나는 자식 업데이트 서비스 노드들이 또한, 부모 업데이트 서비스 노드일 수 있는 것이다. 따라서, 업데이트 배포 시스템의 각각의 서브-트리는 개별 요구를 충족시키도록 맞추어질 수 있다.
도 2는 본 발명의 양태에 따라 형성된 기업 업데이트 서비스 노드(도 1의 104) 또는 평가 업데이트 서비스 노드(도 1의 106)와 같은 업데이트 서비스 노드 (200)의 예시적인 논리 컴포넌트를 도시하는 블록도이다. 도 2에 도시되는 바와 같이, 업데이트 서비스 노드(200)는 업데이트 웹 서비스(202), 클라이언트 업데이트 모듈(204), 자식 업데이트 모듈(206) 및 리포팅 모듈(208)을 포함한다. 예시적인 업데이트 서비스 노드(200)는 또한, 인증/승인 모듈(210), 관리 어플리케이션 프로그래밍 인터페이스(API; 212), 업데이트 컨텐츠 저장(214), 관리 사용자 인터페이스(218) 및 업데이트 정보 저장(216)을 포함한다.
업데이트 웹 서비스(202)는 클라이언트 컴퓨터, 자식 업데이트 서비스 노드 및 부모 업데이트 서비스 노드가 업데이트 서비스 노드와 통신할 수 있는 흔한 웹 서비스 집합을 제공한다. 예를 들어, 도 1을 참조하면, 자식/평가 업데이트 서비스 노드(106)가 부모/기업 업데이트 서비스 노드(104)로부터 소프트웨어 업데이트를 얻도록 하기 위하여, 클라이언트는 부모의 업데이트 웹 서비스(202)를 통해 통신한다. 마찬가지로, 루트 업데이트 서비스 노드(102)와 같은 부모 업데이트 서비스 노드가 그 자식 업데이트 서비스 노드(104)와 통신하기 위해 업데이트를 포함하는 정보를 가질 때, 부모 업데이트 서비스 노드는 자식의 업데이트 웹 서비스(202)를 통해 통신한다.
클라이언트 업데이트 모듈(204)은 업데이트 및 업데이트 서비스 노드 상에 저장된 업데이트 정보에 관하여, 클라이언트 컴퓨터와 업데이트 서비스 노드(200) 간의 통신을 핸들링힌다. 업데이트-관련 통신은 클라이언트 요구에 응답하여 업데이트를 배포하는 것, 및 클라이언트 컴퓨터에 대하여 사용가능한 소프트웨어 제품 및 관련 업데이트의 목록을 제공하는 것을 포함하지만, 이것으로 제한되는 것은 아 니다. 클라이언트 업데이트 모듈(204)은, 또한, 클라이언트 컴퓨터가 관련 배포 규칙에 따라 특정 업데이트를 얻도록 승인되고, 클라이언트 컴퓨터가 액세스하도록 승인된 업데이트-관련 정보를 갖는 클라이언트 컴퓨터에 응답하는 지의 여부 결정을 담당한다.
자식 업데이트 모듈(206)은 부모 업데이트 서비스 노드와 그 자식 업데이트 서비스 노드 간의 업데이트-관련 통신을 핸들링한다. 업데이트-관련 통신은 자식 업데이트 서비스 노드에 사용가능한 소프트웨어 제품 및 관련 업데이트의 목록을 식별하는 것 뿐만 아니라, 자식 업데이트 서비스 노드로부터의 업데이트 요구에 응답하는 것을 포함하지만, 이것으로 제한되는 것은 아니다. 다운스트림 업데이트 모듈(206)은, 자식 업데이트 서비스 노드가 연계된 배포 규칙에 따라 특정 업데이트를 얻도록 승인되고, 자식 업데이트 서비스 노드가 액세스하도록 승인된 업데이트-관련 정보를 갖는 자식 업데이트 서비스 노드에 응답하는 지의 여부 결정을 담당한다.
리포팅 모듈(208)은 어느 그룹이 특정 업데이트를 수신하고 수신하지 않았는 지, 어느 클라이언트 컴퓨터가 업데이트를 다운로드/설치하고 다운로드/설치하지 않았는 지, 어느 업데이트가 업데이트 서비스 노드에 사용가능한 지 등과 같은 업데이트-관련 리포트를 생성한다. 이 리포트는 내부적으로, 예를 들면 관리자에 의해 사용될 수 있고, 또한, 부모의 업데이트 서비스 인터페이스(202)를 통해 부모 업데이트 서비스 노드에 서브밋될 수 있다. 상술한 바와 같이, 기업은, 빌링 프로세스, 또는 유지 목적 등을 위해, 어느 클라이언트 컴퓨터가 특정 업데이트를 설치 하게 하였는 지를 결정하는 것이 종종 필요하다. 리포팅 모듈(208)에 의해 생성된 정보/리포트는 이 리포트의 기초가 될 수 있다.
인증/승인 모듈(210)은 인증 즉, 특정 클라이언트 컴퓨터 또는 자식 업데이트 서비스 노드의 식별을 결정하는 것, 및 클라이언트 컴퓨터 또는 자식 업데이트 서비스 노드가 업데이트 서비스 노드(200)에서 사용가능한 업데이트에 액세스하도록 승인되는 지의 여부를 결정하는 것을 담당한다. 업데이트 서비스 노드 상의 업데이트에 액세스하도록 인증되고 승인된 이 클라이언트 컴퓨터 및 자식 업데이트 서비스 노드에게, 인증/승인 모듈(210)은 업데이트를 얻는 것과 관련하여 사용되어야 하는 승인 토큰을 발행한다. 승인 토큰의 발행 및 사용은 도 4a 및 도 4b를 참조하여 이하에서 보다 상세히 설명할 것이다.
관리 API(212)는 업데이트 서비스 노드(200)의 제어가 시험되고 업데이트가 결국 저장되고 배포되는 어플리케이션 인터페이스를 나타낸다. 업데이트 웹 서비스(202)가 여러가지 업데이트-관련 요구를 클라이언트 컴퓨터 및 자식 업데이트 서비스 노드로부터 수신할 때, 이 요구는 결국, 클라이언트 업데이트 모듈(204) 및 자식 업데이트 모듈(206)을 통해 직접 또는 간접적으로, 관리 API(212)로의 호출로 쪼개진다. 관리 사용자 인터페이스(218), 또는 관리 API(212)를 사용하는 데 적합하게 구성된 업데이트 서비스 노드(200)에 설치된 임의의 다른 프로그램과 관련하여, 관리자는 결국, 그 업데이트 서비스 노드에 대한 업데이트 프로세스의 모든 양태 뿐만 아니라, 임의의 자식 업데이트 서비스 노드 및 클라이언트 컴퓨터를 제어한다.
관리 사용자 인터페이스(218)를 통하여, 관리자는 관리 API(212)를 통해 업데이트 서비스 노드(200)를 구성하고 유지할 수 있다. 따라서, 관리 사용자 인터페이스(218)를 통해, 관리자는 그룹 뿐만 아니라, 각각의 그룹에 대한 연계 규칙을 생성, 수정 및 삭제한다. 또한, 관리 사용자 인터페이스(218)를 사용하여, 관리자는 클라이언트 컴퓨터 또는 자식 업데이트 서비스 노드가 어느 그룹에 속해있는 지를 설정한다. 관리 사용자 인터페이스(218)를 통하여, 관리자는 또한, 클라이언트 컴퓨터 또는 자식 업데이트 서비스 노드로의 업데이트 배포를 명시적으로 승인할 수 있고, 그 부모 업데이트 서비스 노드에게 새로운 업데이트에 대하여 주기적으로 질의하도록 업데이트 서비스 노드(200)를 구성할 수 있고, 리포팅 파라미터를 구성하고 내부적인 리포트를 볼 수 있다. 상술된 바와 같이, 관리 사용자 인터페이스(218)는 관리자가 업데이트 서비스 노드(200)의 양태들에 대한 제어를 시험하도록 허용하지만, 관리 API(212)와 함께 동작하도록 적합하게 적응된, 업데이트 서비스 노드(200) 상에 상주하는 다른 어플리케이션은 관리 사용자 인터페이스(218) 대신에 사용될 수 있따.
상술된 바와 같이, 본 발명의 일 실시예에 따라, 업데이트 서비스 노드(200)느느 업데이트 컨텐츠 저장(214)과 업데이트 정보 저장(216) 양자를 포함한다. 업데이트 컨텐츠 저장(214)은 이진 및 패치 파일과 같은 소프트웨어 업데이트를 나타내는 실제 파일을 저장한다. 반대로, 업데이트 정보 저장(216)은 업데이트 컨텐츠 저장(214)에 저장된 업데이트 파일을 포함한, 업데이트 서비스 노드(200)에 사용가능한 업데이트에 대응하는 정보 및 메타데이터를 저장한다. 일 실시예에 따르면, 업데이트 컨텐츠 저장(214) 및 업데이트 정보 저장(216)은 둘 다 관계형 데이터베이스이다. 예시적인 업데이트 서비스 노드(200)가 2개의 데이터 저장을 갖는 것으로 나타나고 있지만, 본 발명은 이것으로 제한되지 않는다. 대안적인 실시예에서, 업데이트 컨텐츠 저장(214)과 업데이트 정보 저장(216) 둘 다는 단일 정보 저장으로 결합될 수 있다.
본 발명의 양태에 따라, 소프트웨어 업데이트는 업데이트가 업데이트 컨텐츠 저장(214)에서 물리적으로 저장되지 않더라도, 클라이언트 컴퓨터 및 자식 업데이트 서비스 노드에게 업데이트 서비스 노드(200) 상에서 "사용가능한" 것으로 나타날 수 있다. 특히, 업데이트 서비스 노드(200) 상에서 실제 업데이트 파일을 즉시 다운로드하고 저장하기 보다, 부모 업데이트 서비스 노드 또는 그외의 곳에서 업데이트 파일의 링크 참조가 업데이트 서비스 노드 상에 저장될 수 있다. 따라서, 클라이언트 컴퓨터가 업데이트를 요구하거나 자식 업데이트 서비스 노드가 실제 업데이트를 요구한다면, 업데이트는 그것을 클라이언트 컴퓨터 또는 자식 업데이트 서비스 노드로 전달하기 위한 준비로, 부모 업데이트 서비스 노드로부터 내려지고 업데이트 컨텐츠 저장(214)에 저장된다. 본 기술분야에 숙련된 기술자는 이러한 유형의 업데이트 액세스가 JIT(just-in-time) 다운로딩으로 지칭된다는 것을 알고 있을 것이다.
도 2에 대한 상술된 설명은 예시적인 업데이트 서비스 모듈(200)의 여러가지 컴포넌트를 예시하고 있지만, 업데이트 서비스 모듈의 다른 컴포넌트들도 존재할 수 있음을 인지해야 한다. 또한, 상술된 컴포넌트는 논리 컴포넌트이고, 반드시 실제 컴포넌트일 필요는 없음을 이해해야 한다. 실제 구현에서, 구현 결정에 따라, 상기 식별된 컴포넌트들은 함께 및/또는 다른 컴포넌트들과 결합될 수 있다. 또한, 업데이트 서비스 노드(200)는 실제 구현에서 네트워크 상의 서버 컴퓨터로서 보일 수 있지만, 업데이트 서비스 노드는 임의의 수의 타입의 컴퓨팅 장치 상에서 구현될 수 있음을 인지해야 한다. 예를 들면, 각각의 업데이트 서비스 노드(200)는 단일 독립형 컴퓨터 시스템 또는 대안적으로, 다수의 컴퓨팅 장치들을 포함하는 분산 컴퓨팅 시스템 상에서 구현 및/또는 설치될 수 있다.
도 3은 본 발명의 양태에 따라 형성된, 도 1에서 예시된 루트 업데이트 서비스 노드(102)와 같은 루트 업데이트 서비스 노드(300)의 예시적인 논리 컴포넌트를 도시하는 블록도이다. 업데이트 서비스 노드(도 2의 200)의 논리 컴포넌트와 마찬가지로, 루트 업데이트 서비스 노드(300)는 업데이트 웹 서비스(202), 자식 업데이트 모듈(206) 및 인증/승인 모듈(210)을 포함한다. 또한, 예시적인 루트 업데이트 서비스 노드(300)는 관리 API(212), 업데이트 컨텐츠 저장(214) 및 업데이트 정보 저장(216)을 포함한다. 선택적으로, 루트 업데이트 서비스 노드(300)는 또한, 클라이언트 업데이트 모듈(204), 리포팅 모듈(208) 및 관리 사용자 인터페이스(218)를 포함할 수 있다.
클라이언트 업데이트 모듈(204)은 루트 업데이트 서비스 노드가 클라이언트 컴퓨터에게 직접적으로 소프트웨어 업데이트를 제공하는 지의 여부에 따라, 루트 업데이트 서비스 노드(300)에 대한 선택적인 컴포넌트이다. 예를 들어, 도 1을 참조하면, 루트 업데이트 서비스 노드(102)는 클라이언트 컴퓨터(112)에 직접적으로 서비스하는 루트 업데이트 서비스 노드로서 선택적인 클라이언트 업데이트 모듈(204)을 포함한다. 그러나, 루트 업데이트 서비스 노드(300)가 클라이언트 컴퓨터에 직접적으로 서비스하지 않는다면, 클라이언트 업데이트 모듈(204)은 생략될 수 있다.
리포팅 모듈(208)은 루트 업데이트 서비스 노드가 업데이트 리포트를 제공받는 부모 업데이트 서비스 노드를 가지고 있지 않기 때문에, 루트 업데이트 서비스 노드(300)에 대해 선택적이다. 그러나, 업데이트 리포트가 루트 업데이트 서비스 노드의 관리자에게 바람직하다고 확장하면, 리포트 모듈(208)은 선택적으로 포함될 수 있다.
업데이트 서비스 노드(도 2의 200) 내에 포함된 논리 컴포넌트를 포함하는 것과 더불어, 루트 업데이트 서비스 노드(300)는 또한, 소프트웨어 제공자 인터페이스(302)를 포함한다. 소프트웨어 제공자 인터페이스(302)는 소프트웨어 제공자(도 1의 110)가 소프트웨어 업그레이드를 루트 업데이트 서비스 노드(300)에 직접적으로 서브밋하고, 예시적인 업데이트 배포 시스템(100)에 간접적으로 서브밋하는 통신 인터페이스를 제공한다.
도 2의 업데이트 서비스 노드(200)와 마찬가지로, 도 3에 대한 상기 설명은 예시적인 루트 업데이트 서비스 모듈(300)의 여러 가지 컴포넌트를 예시한다. 그러나, 루트 업데이트 서비스 모듈의 다른 컴포넌트들도 존재할 수 있음을 인지해야 한다. 또한, 상술된 컴포넌트는 논리 컴포넌트이고, 반드시 실제 컴포넌트일 필요는 없음을 이해해야 한다. 실제 구현에서, 구현 결정에 따라, 상기 식별된 컴포넌 트들은 함께 및/또는 다른 컴포넌트들과 결합될 수 있다. 또한, 루트 업데이트 서비스 노드(200)는 실제 구현에서 네트워크 상의 서버 컴퓨터로서 보일 수 있지만, 업데이트 서비스 노드는 임의의 수의 컴퓨팅 장치 상에서 구현될 수 있음을 인지해야 한다. 예를 들면, 루트 업데이트 서비스 노드(300)는 단일 독립형 컴퓨터 시스템 또는 대안적으로, 다수의 컴퓨팅 장치들을 포함하는 분산 컴퓨팅 시스템 상에서 구현 및/또는 설치될 수 있다.
업데이트 배포 시스템(100)을 통해 업데이트가 루트 업데이트 서비스 노드로부터 배포되는 방법을 보다 잘 이해하기 위하여, 부모 업데이트 서비스 노드와 자식 업데이트 서비스 노드 간의 예시적인 교환의 설명이 보장된다. 도 4는 본 발명의 양태에 따라, 소프트웨어 업데이트를 부모 업데이트 서비스 노드로부터 자식 업데이트 서비스 노드로 전달하는 데에 있어서, 부모 업데이트 서비스 노드(402)와 자식 업데이트 서비스 노드(404) 간의 예시적인 교환(400)을 도시하는 블록도이다. 보여지는 바와 같이, 예시적인 도면(400)은 반으로 나뉘어지는데, 좌측은 부모 업데이트 서비스 노드(402)의 액션 및 이벤트에 대응하고, 우측은 자식 업데이트 서비스 노드(404)의 액션 및 이벤트에 대응한다.
도 4에 관하여 논의하기 위하여는, 부모 업데이트 서비스 노드(402)가 업데이트 배포 시스템(100)에서 루트 업데이트 서비스 노드일 수도 있고 아닐 수도 있음을 잘 이해해야 한다. 또한, 이 논의를 위하여, 자식 업데이트 서비스 노드(404)는 관리자에 의해 명시적으로 승인되지 않은 경우, 소프트웨어 업데이트를 수신할 수 없도록, 관리자에 의해 부모 업데이트 서비스 노드(402)가 구성되었다고 가정하자.
예시적인 교환(400)에서 도시되는 바와 같이, 이벤트(406)에서 개시하면서, 부모 업데이트 서비스 노드(402)는 부모 업데이트 서비스 노드가 루트 업데이트 서비스 노드(102)인 경우 직접적으로, 아니면 업데이트 배포 시스템(100)을 통해 간접적으로, 소프트웨어 제공자(110)로부터 소프트웨어 업데이트를 수신한다. 부모 업데이트 서비스 노드(402)가 소프트웨어 제공자(110)로부터 소프트웨어 업데이트를 수신한 이후의 임의의 시점에서, 자식 업데이트 서비스 노드(404)는 부모 업데이트 서비스 노드로부터 소프트웨어 업데이트를 얻기 위한 프로세스를 시작한다.
일 실시예에 따르면, 자식 업데이트 서비스 노드(404)는 주기적으로 부모 업데이트 서비스 노드(202)로부터 사용가능한 소프트웨어 업데이트를 자동적으로 얻도록 구성될 수 있다. 특히, 관리자는 관리 사용자 인터페이스(218)를 통해서, 주기적으로 부모 업데이트 서비스 노드(402) 상의 사용가능한 최신 소프트웨어 업데이트를 자동적으로 얻도록 자식 업데이트 서비스 노드(404)를 선택적으로 구성할 수 있다. 일례로서, 관리자는 부모 업데이트 서비스 노드(402)로부터 매일 및/또는 매시간 최신 소프트웨어 업데이트를 얻도록 자식 업데이트 서비스 노드(404)를 구성할 뿐만 아니라, 자동 업데이트 프로세스가 개시되는 시간을 지정할 수 있다. 다른 주기적 스케줄 및 기준이 사용될 수도 있다. 마찬가지로, 관리자는 관리 사용자 인터페이스(218)를 통해 수동으로 업데이트 프로세스 를 개시할 수 있다.
업데이트 프로세스를 시작하기 위해서, 이벤트(408)에서 자식 업데이트 서비스 노드(404)는 부모 업데이트 서비스 노드(402)를 이용하여 자신을 인증하고 승인 한다. 부모 업데이트 서비스 노드(402)를 이용하여 인증하고 승인하는 것은 소프트웨어 업데이트의 배포에 대한 제어의 요소를 제공하여, 업데이트 배포를 승인된 업데이트 서비스 노드로 제한한다. 기술을 인증하고 승인하는 것은 본 분야에 주지되어 있으며, 그 중 몇몇은 부모 업데이트 서비스 노드(402)를 이용하여 자식 업데이트 서비스 노드(404)를 인증하고 승인하는 데 이용될 수 있다. 본 발명은 임의의 하나의 기술로 제한되지 않는다.
부모 업데이트 서비스 노드(402)를 이용하여 적절히 인증하고 승인한 후에, 이벤트(410)에서, 부모 업데이트 서비스 노드(402)는 승인 토큰을 자식 업데이트 서비스 노드(404)에 리턴한다. 일 실시예에 따르면, 승인 토큰은 자식 업데이트 서비스 노드(404)에게 제한된 시간동안 부모 업데이트 서비스 노드와의 이상의 업데이트 활동을 실시하도록 승인을 제공하는 시간 감지 토큰이다. 따라서, 자식 업데이트 서비스 노드(404)가 부모 업데이트 서비스 노드를 이용하여 적절히 인증되고 승인되지 않으면, 승인 토큰이 리턴되지 않고, 자식 업데이트 서비스 노드는 인증 및 승인을 제외한 임의의 다른 업데이트-관련 활동을 수행할 수 없다. 마찬가지로, 업데이트 토큰이 만료된 후에는, 자식 업데이트 서비스 노드(404)는 재인증 및 재승인을 제외한 부모 업데이트 서비스 노드(402)와의 임의의 이상의 업데이트-관련 활동을 수행할 수 없다.
승인 토큰을 수신한 후, 이벤트(412)에서, 자식 업데이트 서비스 노드(404)는 승인 토큰과 함께 부모 업데이트 서비스 노드에게 제품 업데이트 카탈로그에 대한 요구를 서브밋한다. 제품 업데이트 카탈로그는 부모 업데이트 서비스 노드 (402)가 소프트웨어 업데이트를 배포하는 소프트웨어 제품의 목록 또는 컨텐츠의 테이블을 나타낸다.
본 발명의 양태에 따라, 자식 업데이트 서비스 노드(404)는 그의 부모 업데이트 서비스 노드(402) 상에서 사용가능한 모든 소프트웨어 업데이트를 전달하도록 요구되지 않는다. 예를 들어, 도 1의 예시적인 업데이트 배포 시스템을 참조하면, 기업 업데이트 서비스 노드(104)는 루트 업데이트 서비스 노드(102) 상에서 사용가능한 소프트웨어 제품의 일부에 대해서만 사이트 라이센스를 가질 수 있다. 따라서, 기업 업데이트 서비스 노드(104)에 있어서, 대부분은 전혀 사용되지 않을 것이기 때문에, 루트 업데이트 서비스 노드(102)에서 사용가능한 모든 소프트웨어 업데이트를 얻는 것은 불필요하다. 따라서, 업데이트 서비스 노드 상의 관리자는 어느 소프트웨어 제품 업데이트가 업데이트 서비스 노드 상에서 사용가능할 것인 지를 선택적으로 설정할 수 있다.
본 발명의 하나의 양태에 따르면, 부모 업데이트 서비스 노드(402)로부터 획득된 업데이트 제품 카탈로그는 업데이트가 사용가능한 소프트웨어 제품 모두를 식별하고, 자식 업데이트 서비스 노드(404)가 각각의 제품에 대한 업데이트를 배포하도록 구성되어 있는 지를 식별한다. 그러나, 본 발명의 대안적인 양태에 따르면, 부모 업데이트 서비스 노드(402)로부터 획득된 업데이트 제품 카탈로그는 요구하는 자식 업데이트 서비스 노드가 업데이트를 배포하도록 구성되어 있는 소프트웨어 제품들만을 식별한다. 예를 들면, 제품 업데이트 카탈로그에 어느 소프트웨어 제품이 나열되는 지를 제한하는 것은 자식 업데이트 서비스 노드(404)가 속해있는 그룹 또는 그룹들에 따라 결정될 수 있다.
이벤트(414)에서, 부모 업데이트 서비스 노드(402)는 자식 업데이트 서비스 노드(404)에게 제품 업데이트 카탈로그를 리턴한다. 이벤트(416)에서, 자식 업데이트 서비스 노드(404)는 제품 업데이트 카탈로그로부터 최신 업데이트가 현재 요구되는 제품을 선택한다. 제품 업데이트 카탈로그가 자식 업데이트 서비스 노드(404)가 배포하는 소프트웨어 제품들만을 나열하더라도, 자식 업데이트 서비스 노드는 상이한 시간에 또는 상이한 주기적 스케줄로 상이한 소프트웨어 제품에 대한 업데이트를 얻도록 구성될 수 있다.
이벤트(418)에서, 자식 업데이트 서비스 노드(404)는 승인 토큰과 함께, 선택된 제품을 식별하면서(자식 업데이트 서비스 노드는 현재, 이 선택된 제품의 업데이트를 찾고 있음), 업데이트 동기화 요구를 서브밋한다. 자식 업데이트 서비스 노드(404) 상의 제품에 사용가능한 최신 업데이트를 식별하는 정보는 동기화 요구에 포함된다. 제품에 대한 최신 업데이트를 식별하는 정보는 이후, "업데이트 앵커(update anchor)"라고 지칭한다. 각각의 소프트웨어 제품에 대한 업데이트 앵커는 일반적으로 업데이트 정보 저장(도 2의 216)에 저장된다. 일 실시예에서, 업데이트 앵커는 개정 번호, 및 개정 번호와 관련된 날자를 포함한다.
업데이트 동기화 요구에 응답하여, 이벤트(420)에서, 부모 업데이트 서비스 노드(402)는 있다면, 어느 새로운 업데이트가 자식 업데이트 서비스 노드(404)에 사용가능한 지를 결정한다. 상술된 바와 같이, 이 결정은 특정 소프트웨어 업데이트와 관련된 특정 규칙, 및 자식 업데이트 서비스 노드(404)가 멤버인 그룹 또는 그룹들 뿐만 아니라, 업데이트 앵커에 기초한 것이다. 이 예에서, 상술한 바와 같이, 이전에 수신된 소프트웨어 업데이트는 자식 업데이트 서비스 노드(404)에 대해 명시적으로 승인되지 않았다. 따라서, 이벤트(406)에서 수신된 소프트웨어 업데이트는자식 업데이트 서비스 노드(404)에 "사용가능한" 것으로 결정되지 않는다. 따라서, 이벤트(422)에서, 업데이트 목록은 이벤트(406)에서 수신된 소프트웨어 업데이트를 식별하지 않고 자식 업데이트 서비스 노드(404)에게 리턴된다. 본 발명의 양태에 따르면, 업데이트 목록은 동기화 요구에 따라 부모 업데이트 서비스 노드(402) 상에서 "사용가능한" 업데이트 모두를 식별한다. 일 실시예에서, 업데이트 목록은 업데이트와 관련된 고유한 식별자에 의해 각각의 "사용가능한" 업데이트 정보를 식별한다.
이벤트(424)에서, 업데이트 목록은 비어있기 때문에, 즉, 부모 업데이트 서비스 노드(402) 상에 현재 "사용가능한" 업데이트가 없기 때문에, 자식 업데이트 서비스 노드(404)의 업데이트 프로세스는 소정량의 시간동안 단순히 지연 또는 슬립(sleep)한다. 이 예에 따르면, 이 지연 기간동안, 이벤트(426)에서, 부모 업데이트 서비스 노드(402)의 관리자는 자식 업데이트 서비스 노드(404)에 배포되도록, 이벤트(406)에서 수신된 소프트웨어 업데이트를 승인한다.
이벤트(도 4b의 428)에서, 자식 업데이트 서비스 노드(404)는 부모 업데이트 서비스 노드(402)를 이용하여 자신을 인증하고 승인함으로써 자동 업데이트 프로세스를 다시 개시한다. 응답으로, 이벤트(430)에서, 부모 업데이트 서비스 노드(402)는 자식 업데이트 서비스 노드(404)에세 승인 토큰을 리턴한다.
이벤트(432)에서, 자식 업데이트 서비스 노드(404)는 승인 토큰과 함께, 부모 업데이트 서비스 노드(402)에게 제품 업데이트 카탈로그에 대한 요구를 서브밋한다. 이벤트(434)에서, 부모 업데이트 서비스 노드(402)는 자식 업데이트 서비스 노드(404)에게 제품 업데이트 카탈로그를 리턴한다. 이벤트(436)에서, 자식 업데이트 서비스 노드(404)는 업데이트 카탈로그에 대하여 업데이트가 요구되는 제품을 선택한다. 이벤트(438)에서, 자식 업데이트 서비스 노드(404)는 승인 토큰으로 이 선택된 제품들을 식별하면서 업데이트 동기화 요구를 서브밋한다.
자식 업데이트 서비스 노드(404)가 이전에 이벤트(406)에서 수신된 소프트웨어 업데이트를 획득하도록 승인되었기 때문에, 이벤트(440)에서 부모 업데이트 서비스 노드(402)는 그 소프트웨어 업데이트가 자식 업데이트 서비스 노드에 대해 "사용가능"한 것으로 결정하고, 업데이트 목록에서 대응하는 업데이트 정보를 포함한다. 이후, 이벤트(442)에서, 부모 업데이트 서비스 노드(402)는 이벤트(406)에서 수신된 소프트웨어 업데이트를 식별하면서, 자식 업데이트 서비스 노드(404)에게 업데이트 목록을 리턴한다.
부모 업데이트 서비스 노드(402) 상에서 "사용가능한" 업데이트를 식별하는 업데이트 목록을 가지고, 자식 업데이트서비스 노드(404)는 이제 소프트웨어 업데이트를 획득하는 데 필요한 정보를 갖는다. 본 발명의 일 실시예에 따르면, 자식 업데이트 서비스 노드(404)는 2가지 부분에서 부모 업데이트 서비스 노드(402)로부터 소프트웨어 업데이트를 얻는다. 즉, 업데이트 메타데이터를 얻는 것과 업데이트 컨텐츠 또는 파일(이후, 업데이트 페이로드라 칭함)을 얻는다. 이하에 보다 상세히 설명되는 바와 같이, 업데이트 메타데이터는, 업데이트를 고유하게 식별하는 업데이트 식별자, 소프트웨어 업데이트와 관련된 개정 번호 정보, 소프트웨어 업데이트가 우선순위을 고려해야 하는 지의 여부, 언어 특정 정보, 다른 소프트웨어 업데이트와의 관계, 다운로드 프로세스에 대한 업데이트 페이로드의 위치, 설치 핸들러 루틴 등을 포함하지만 이것으로 제한되지는 않는 소프트웨어 업데이트의 적절한 양태를 설명한다.
2가지 부분, 즉, 업데이트 메타데이터와 업데이트 페이로드에서 전체 소프트웨어 업데이트를 다운로드하는 것이 종종 이득인 이유들 중 일부는, 업데이트 페이로드는 종종 업데이트 메타데이터보다 충분히 크고 업데이트 페이로드는 항상 즉시 요구되지 않는다, 즉, 요구되는 경우는 클라이언트 컴퓨터 상의 설치에 대해 요구된다는 것이다. 따라서, 본 발명의 일 실시예에 따라, 업데이트 페이로드는 필요시에만, 업데이트 메타데이터로부터 따로 다운로드된다. 본 기술분야에 숙련된 자는 이 다운로드 기술을 게으른 다운로드로서, 또는 대안적으로, JIT(just-in-time) 다운로드로서 인식할 것이다. 본 발명의 양태에 따라, 관리자는 JIT 방식으로, 또는 업데이트 메타데이터를 획득할 때 즉시, 업데이트 페이로드를 획득하도록 업데이트 서비스 노드를 구성할 수 있다. 또한, 대안적인 실시예에서, 업데이트 메타데이터와 업데이트 페이로드 양자는 연합하여 다운로드될 수 있다.
도 4b에서 도시되는 바와 같이, 업데이트 목록에서 식별된 업데이트를 이용하여, 이벤트(444)에서, 자식 업데이트 서비스 노드(404)는 업데이트 메타데이터에게 그 업데이트 목록 내의 자신의 고유한 식별자에 따라 "사용가능한" 소프트웨어 업데이트를 요구한다. 부모 업데이트 서비스 노드(402)와의 대부분의 다른 통신 교환으로, 업데이트 요구는 승인 토큰을 가지고 서브밋된다. 예시된 예에서, 모든 업데이트 메타데이터는 하나의 액세스로 다운로드되지만, 본 발명의 대안적인 양태(도시되지 않음)에 따르면, 업데이트 메타데이트는 하나 이상의 액세스로 다운로드될 수 있음을 주지해야 한다. 예를 들어, 제1 액세스에서, 소프트웨어 업데이트가 적용가능하고/적용가능하거나 바람직한 지를 결정하는 것이 적응성 규칙 및 다른 소프트웨어 업데이트에 대한 의존성과 같은 업데이트 메타데이터의 엘리먼트들에게만 우선 다운로드될 필요가 있다. 업데이트가 적용가능하고/적용가능하거나 바람직하다고 결정된 후에는, 업데이트 메타데이터의 리마인더가 획득된다. 응답으로, 이벤트(446)에서, 부모 업데이트 서비스 노드(402)는 소프트웨어 업데이트에 대한 업데이트 메타데이터를 자식 업데이트 서비스 노드(404)에 리턴하고, 그 업데이트 메타데이터를 업데이트 정보 저장(216)에 저장한다.
선택적으로, 이벤트(448)에서, 자식 업데이트 서비스 노드(404)는 부모 업데이트 서비스 노드(402)로부터 업데이트 페이로드를 다운로드하도록 요구를 서브밋한다. 응답으로, 이벤트(450)에서, 부모 업데이트 서비스 노드(402)는 자식 업데이트 서비스 노드(404)에게 업데이트 페이로드를 리턴하고, 그것을 업데이트 컨텐츠 저장(214)에 저장한다. 대안적인 실시예에서, 자식 업데이트 서비스 노드(404)는 저장 위치, 즉, 업데이트 메타데이터에서 지정된 위치로부터, 업데이트 페이로드를 다운로드하며, 그 위치는 부모 업데이트 서비스 노드(402)일 수 없다.
업데이트 활동이 이제 자식 업데이트 서비스 노드(404) 상에서 일어나기 때 문에, 이벤트(452)에서, 자식 업데이트 서비스 노드는 업데이트 리포트를 생성하고 그것을 최근 발생한 업데이트 활동을 아웃라이닝하는 부모 업데이트 서비스 노드(402)에게 서브밋한다. 이후, 자식 업데이트 서비스 노드(404)는 다시, 업데이트 프로세스가 실행되도록 스케줄링되는 다음번까지 지연한다(도시되지 않음).
본 기술분야에 숙련된 자는 상술된 이벤트들은 설명을 위한 것이며 하나의 특정 예시적인 이벤트의 집합과 환경을 반영한 것임을 인지할 것이다. 명백히, 상술된 이벤트에 몇몇 변경을 야기할 특정 상세사항 및 환경에 따라 다른 이벤트들도 발생할 수 있다. 또한, 자식 업데이트 서비스 노드(404)가 최신 "사용가능한" 소프트웨어 업데이트를 부모 업데이트 서비스 노드(402)로부터 획득하고 있지만, 자식 업데이트 서비스 노드는 그의 자식 업데이트 서비스 노드로부터의 업데이트 요구를 동시에 처리할 수 있다. 따라서, 상기 일련의 이벤트는 본 발명에 대한 제한이 아닌 단지 예시적인 것으로 보아야 한다.
도 5는 부모 업데이트 서비스 노드로부터 업데이트를 주기적으로 획득하기 위해, 도 1의 기업 업데이트 서비스 노드(104)와 같은 자식 업데이트 서비스 노드 상에서 실행되는 예시적인 루틴(500)을 설명하는 흐름도이다. 블록(502)에서 개시하면서, 자식 업데이트 서비스 노드는 부모 업데이트 서비스 노드로부터 "사용가능한" 업데이트의 동기화된 업데이트 목록을 획득한다. 부모 업데이트 서비스 노드로부터 "사용가능한" 업데이트의 동기화된 업데이트 목록을 얻는 것은 이하에서 도 6을 참조하여 설명된다.
도 6은 부모 업데이트 서비스 노드로부터 "사용가능한" 업데이트의 동기화된 업데이트 목록을 획득하기 위한, 도 5의 예시적인 루틴(500)에서 사용하기 적합한 예시적인 서브루틴(600)의 흐름도이다. 블록(602)에서 개시하면서, 도 4a 및 도 4b를 참조하여 전술된 바와 같이, 자식 업데이트 서비스 노드는 부모 업데이트 서비스 노드를 이용하여 자신을 인증하고 승인하며, 적합한 인증 및 승인에 응답하여, 승인 토큰을 수신한다. 블록(604)에서 승인 토큰과 함께, 자식 업데이트 서비스 노드는 부모 업데이트 서비스 노드와의 통신 파라미터를 설립한다. 통신 파라미터를 설립하는 것은 부모 및 자식 업데이트 서비스 노드가 부모와 자식 양자가 이해하는 공통적인 기반을 적절히 수립하는 것을 허용한다. 통신 파라미터는 통신 업데이트 프로토콜 또는 버전; 제품 그룹핑 등을 포함하지만 이것으로 제한되는 것은 아니다.
블록(606)에서, 부모 업데이트 서비스 노드와의 통신 파라미터를 설립한 후에, 자식 업데이트 서비스 노드는 부모업데이트 서비스 노드가 업데이트를 제공/배포하는 소프트웨어 업데이트를 설명하는 제품 업데이트 카탈로그를 획득한다. 블록(608)에서, 자식 업데이트 서비스 노드는 현재 찾는 업데이트의 소프트웨어 제품 업데이트를 선택한다. 블록(610)에서, 자식 업데이트 서비스 노드는 자식 업데이트 서비스 노드 상의 현재 개정과 업데이트를 이미 식별하는 선택된 소프트웨어 제품과 관련된 승인 토큰과 "앵커" 모드를 포함하는 부모 업데이트 서비스 노드에 업데이트 동기화 요구를 서브밋한다.
업데이트 동기화 요구에 응답하여, 블록(612)에서, 자식 업데이트 서비스 노드는 현재 자식 업데이트 서비스 노드에 저장되어 있는 것에 따라, 부모 업데이트 서비스 노드 상의 "사용가능한" 소프트웨어 업데이트에 따라 동기화되면서, 부모 업데이트 서비스 노드로부터 업데이트 목록을 획득한다. 상술된 바와 같이, 업데이트 목록은 고유한 식별자에 의해, 자식 업데이트 서비스 노드에 "사용가능한" 부모 업데이트 서비스 노드 상의 소프트웨어 업데이트들을 식별한다. 이후, 예시적인 서브루틴(600)은 종료한다.
도 5를 다시 참조하면, 부모 업데이트 서비스 노드로부터 동기화된 업데이트 목록을 획득한 후, 결정 블록(504)에서, 임의의 소프트웨어 업데이트가 현재 부모 업데이트 서비스 노드로부터 다운로드하는 데 "사용가능한" 지에 대해 결정한다. 이 결정은 동기화된 업데이트 목록 내에 업데이트 식별자들이 나열되어 있는 지에 따라 결정된다. 어떤 소프트웨어 업데이트도 현재 다운로드하는 데 "사용가능"하지 않다면, 예시적인 루틴(500)은 다음 업데이트 기간이 발생할 때까지 지연/슬립하는 지연 블록(510)으로 진행한다. 대안적으로, 부모 업데이트 서비스 노드로부터 다운로드하는 데 "사용가능한" 업데이트가 있다면, 블록(506)에서, 자식 업데이트 서비스 노드는 부모 업데이트 서비스 노드로부터 업데이트를 획득한다. 부모 업데이트 서비스 노드로부터 "사용가능한" 업데이트를 획득하는 것은 이하에서 도 7을 참조하여 설명된다.
도 7은 부모 업데이트 서비스 노드로부터 "사용가능한" 소프트웨어 업데이트를 획득하기 위한, 도 5의 예시적인 루틴(500)에서 사용하기 적합한 예시적인 서브루틴(700)의 흐름도이다. 블록(702)에서 개시하면서, 업데이트 목록 내의 제1 업데이트 식별자를 선택한다. 블록(704)에서, 자식 업데이트 서비스 노드는 부모 업데이트 서비스 노드로부터 그 선택된 업데이트 식별자에 따른 업데이트 메타데이터를 획득하고, 그것을 업데이트 정보 저장(216)에 저장한다.
일 실시예에서, 블록(706)에서, 자식 업데이트 서비스 노드는 부모 업데이트 서비스 노드로부터 그 선택된 업데이트 식별자에 따른 업데이트 페이로드를 획득하고, 그 업데이트 페이로드를 업데이트 컨텐츠 저장(212)에 저장한다. 선택적으로, 업데이트 컨텐츠는 자식 업데이트 서비스 노드에게 즉시 다운로드될 필요는 없다. 전술한 바와 같이, 자식 업데이트 서비스 노드는 선택적으로, JIT 방식으로 부모 업데이트 서비스 노드로부터 업데이트를 다운로드하도록 구성될 수 있다. 이 선택적인 처리에 따라, 도 7에서 도시된 바와 같이, 블록(704)에서 블록(706)으로의 진행보다는 예시적인 서브루틴(700)은 선택적으로, 블록(704)에서 결정 블록(708)으로 진행한다.
결정 블록(708)에서, 선택된 업데이트 식별자에 대한 업데이트 메타데이터를 획득하고 선택적으로 업데이트 페이로드를 획득한 후에, 업데이트 목록에 추가적인 업데이트 식별자가 있는 지에 대한 결정이 이루어진다. 추가적인 업데이트 식별자가 있다면, 블록(710)에서, 업데이트 목록 내의 다음 업데이트 식별자가 선택되고, 서브루틴(700)은 추가적인 프로세싱을 위해 블록(704)으로 되돌아간다. 루틴(700)은 결정 블록(708)에서, 업데이트 목록 내에 더 이상의 업데이트 식별자가 없는 것으로 결정될 때까지 계속된다.
도 5를 다시 참조하면, 부모 업데이트 서비스 노드로부터 "사용가능한" 업데이트를 획득한 후에, 블록(508)에서, 자식 업데이트 서비스 노드는 부모 업데이트 서비스 노드에게 업데이트 활동을 리포트한다. 이후, 지연 블록(510)에서, 예시적인 루틴(500)은 다음 업데이트 기간까지 소정 양의 시간동안 지연/슬립하고, 그리고나서 상기 식별된 업데이트 절차를 반복하기 위해 블록(502)으로 진행한다.
도 5에서 도시된 바와 같이, 결정 블록(504)에서, 부모 업데이트 서비스 노드 상에 "사용가능한" 업데이트가 없을 시에도, 자식 업데이트 서비스 노드는 선택적으로, 자신의 업데이트 활동을 부모 업데이트 서비스 노드에 리포트하도록 구성될 수 있다. 이 대안적인 구성에 따라, 사용가능한 업데이트가 없을 시, 예시적인 루틴(500)은 업데이트 활동을 리포트하는 블록(508)으로 진행할 수 있다.
도 8은 자식 업데이트 서비스 노드로부터의 업데이트 동기화 요구에 응답하여, "사용가능한" 업데이트를 식별하는 동기화된 업데이트 목록을 생성하기 위한, 부모 업데이트 서비스 노드 상에서 구현되는 예시적인 루틴(800)의 흐름도이다. 블록(802)에서 개시하면서, 부모 업데이트 서비스 노드는 "사용가능한" 업데이트를 식별하는 업데이트 목록을 위해 자식 업데이트 서비스 노드로부터 업데이트 동기화 요구를 수신한다. 블록(804)에서, 업데이트 동기화 요구에서 식별된 제1 소프트웨어 제품을 선택한다.
결정 블록(806)에서, 그 식별된 소프트웨어 제품에 대한 사용가능한 업데이트가 있는 지에 대한 결정이 이루어진다. 이 결정은 자식 업데이트 서비스 노드에 의해 제공되는 업데이트 앵커에 따라, 자식 업데이트 서비스 노드가 속해있는 그룹과 관련된 배포 규칙에 따라, 그리고 업데이트 정보 저장(216)에 저장된 소프트웨어 제품에 대한 메타데이터에 따라 결정된다. 이 결정에 따라, "사용가능한" 업데이트가 있다면, 블록(808)에서, "사용가능한" 업데이트와 관련된 고유한 업데이트 식별자는 업데이트 목록 내로 기록된다. "사용가능한" 업데이트에 대한 고유한 업데이트 식별자를 업데이트 목록 내로 기록한 후, 결정 블록(810)에서, 업데이트 동기화 요구에서 식별된 더 이상의 추가적인 소프트웨어 제품이 있는 지에 대한 결정이 이루어진다. 업데이트 동기화 요구에서 식별된 추가적인 업데이트 소프트웨어가 있다면, 블록(814)에서, 부모 업데이트 서비스 노드는 업데이트 동기화 요구에서 식별된 다음 소프트웨어 제품을 선택하고, 그 선택된 소프트웨어 제품에 대해 "사용가능한" 업데이트가 있는 지를 결정하기 위해 결정 블록(806)으로 되돌아간다. 대안적으로, 업데이트 동기화 요구에서 식별된 더 이상의 소프트웨어 제품이 없다면, 블록(814)에서, 업데이트 목록은 자식 업데이트 서비스 노드에게 되돌려진다. 이후, 예시적인 서브루틴(800)은 종료한다.
전술한 바와 같이, 업데이트 메타데이터는 소프트웨어 업데이트의 적절한 양태를 설명한다. 사실상, 이 양태들 중 다수는 소프트웨어 업데이트에게 업데이트 페이로드 자체만큼 중요하다. 예를 들어, 제1 소프트웨어 업데이트에 대한 업데이트 메타데이터가, 이전의 소프트웨어 업데이트는 필수로서 설치되어야 하고 현재 그 이전 소프트웨어 업데이트는 관리자 결정에 따라 설치되어 있지 않음을 나타낸다면, 제1 소프트웨어 업데이트의 업데이트 페이로드를 다운로드하는 것은 소용이 없을 것이다. 결과적으로, 제1 소프트웨어 업데이트의 업데이트 페이로드를 다운로드하지 않음으로써, 중요한 통신 대역폭이 보존될 수 있다. 물론, 이것은 업데이트 메타데이터가 소프트웨어 업데이트에 관한 중요하고 적절한 정보를 제공하는 방법에 대한 일례일 뿐이라는 것을 본 기술분야에 숙련된 기술자는 인지할 것이다.
본 발명의 양태에 따라, 업데이트 메타데이터는 임의의 포맷의 파일에서 전송될 수 있지만, 소프트웨어 업데이트에 대응하는 업데이트 메타데이터는 XML(extensible markup language) 파일과 같은 태그-기반 파일로 기술되고 포함된다. 데이터를 기술하고 포함하는 주문가능한 태그를 허용하는 임의의 적합한 태그-기반 파일 포맷이 사용될 수 있다. 정보를 기술하고 포함하기 위한 XML 또는 HTML(hypertext markup language) 기반 파일과 같은 태그-기반 파일은 본 기술분야에 주지되어 있다. 본 기술분야에 잘 알려져 있는 바와 같이, 태그-기반 XML의 컨텐츠는 스키마라고 불리는 정의 파일에 따라 자주 결정된다. 이 업데이트 메타데이터는 자식 업데이트 서비스 노드와 클라이언트 컴퓨터 양자에 의해 사용된다.
본 발명의 실제 실시예에서, 소프트웨어 업데이트에 대한 업데이트 메타데이터는 업데이트 메타데이터 스키마에 따르는 XML-기반 파일에 포함된다. 도 9는 업데이트 메타데이터 파일의 컨텐츠를 정의하는 예시적인 XML-기반 업데이트 메타데이터 스키마(900)의 일부를 도시하는 블록도이다. 특히, 예시적인 업데이트 메타데이터 스키마(900)는 UpdateIdentity 엘리먼트(904); Properties 엘리먼트(906); LocalizedPropertiesCollection 엘리먼트(908); Relationships 엘리먼트(910); ApplicabilityRules 엘리먼트(912); Files 엘리먼트(914); 및 HandlerSpecificData 엘리먼트(916)를 포함하는 업데이트(902)를 정의한다. 엘리먼트(906 내지 916)에 관하여, 적합한 업데이트 메타데이터 파일은 태그 한정자 "minOccurs="0""(918) 당, 0 이상의 엘리먼트들을 포함할 수 있다. 반대로, 업데이트 메타데이터 파일은 하나의 UpdateIdentifier 엘리먼트(902)를 포함해야 한다. 도시된 메타데이터 스키마(900)에 따라, 업데이트 메타데이터 파일 내의 각각의 업데이트 엘리먼트는 존재한다면, 상기 기술된 순서에 따라 나타나야 한다.
전술된 바와 같이, 각각의 소프트웨어 업데이트는 고유한 식별자를 지정받는다. 본 발명의 양태에 따라, UpdateIdentifier 엘리먼트(902)는 이 고유한 식별자 뿐만 아니라, 소프트웨어 업데이트와 관련된 개정 번호와 같은 소프트웨어 업데이트를 식별하는 다른 정보를 포함한다.
Properties 엘리먼트(904)는, 소프트웨어 업데이트가 로컬화된 영어, 스페인어, 불어 등의 언어; 설치동안 업데이트가 컴퓨팅 시스템에 미칠 최소의, 높은 영향 등의 영향은 컴퓨팅 시스템의 재부팅 등을 요구하는 것을 제시하는 정보; 시스템 드라이버 또는 소프트웨어 어플리케이션과 같은 소프트웨어 업데이트에 의해 업데이트되는 소프트웨어의 타입; 소프트웨어 제공자에 대한 소프트웨어 업데이트의 중요성에 대응하는 중요 등급; 소프트웨어 제공자로부터의 관련 보안 게시; 및 소프트웨어 업데이트에 대한 업데이트 핸들러를 식별하기 위한 업데이트 핸들러 식별을 포함하는 소프트웨어 업데이트에 관련된 정보를 제공하지만, 이것으로 제한되는 것은 아니다. 상기 나열된 속성들의 여러가지 타일으로부터 보여질 수 있는 바와 같이, 업데이트 메타데이터 파일에는 0 이상의 Properties 엘리먼트(904)가 있을 수 있다.
LocalizedPropertiesCollection 엘리먼트(906)는, 업데이트 명칭; 컴퓨터 사용자에게 디스플레이하기 위해 의도된 소프트웨어 업데이트에 대한 설명; 소프트웨어 제공자로부터의 배포 노트; 최종 사용자 동의 및 관련 정보; 소프트웨어 업데이트를 삭제하기 위한 사용자 지시; 등과 같은 소프트웨어 업데이트에 관련된 언어 특정 정보를 제공하지만, 이것으로 제한되는 것은 아니다. 본 발명의 양태에 따라, 로컬화된 속성은 언어에 따라 그룹핑된다. 예를 들면, LocalizedPropertiesCollection 엘리먼트(906)는 복수의 정보를 포함할 수 있지만, 상기 정보의 영어 버전은 함께 그룹핑되고, 스페인어버전은 마찬가지로 그룹핑될 것이다. Properties 엘리먼트(904)와 마찬가지로, 업데이트 메타데이터 파일에는 0 이상의 LocalizedPropertiesCollection 엘리먼트(906)가 있을 수 있다.
Relationships 엘리먼트(908)는 현재 소프트웨어 업데이트가 다른 소프트웨어 업데이트와 갖는 관계에 관한 정보를 제공한다. 이 관계의 예로는, 필수적인 소프트웨어 업데이트, 대체 소프트웨어 업데이트 및 번들(bundle) 소프트웨어 업데이트가 있다. 필수 소프트웨어 업데이트 관계는 고유한 업데이트 식별자에 의해 식별된 다른 소프트웨어 업데이트가 현재 소프트웨어 업데이트를 설치하기 전에 클라이언트 컴퓨터 시스템 생에 설치되어야 한다는 것을 나타낸다. 복수의 필수 관계는 논리 연산 AND 및 OR과 같은 부울 연산자와 함께, 논리 문장으로 결합되어, 논리 문장의 평가가 클라이언트 컴퓨터 상의 설치에 대해 소프트웨어 업데이트의 적합성을 결정하도록 할 수 있다.
번들 소프트웨어 업데이트는 함께 설치되어야 하는 복수의 소프트웨어 업데이트를 식별한다. 일례로서, 번들 어플리케이션은 현재 소프트웨어 업데이트와 다른 소프트웨어 업데이트 간의 상호 의존성을 나타낼 수 있어, 고유한 업데이트 식별자에 의해 식별된, 번들로 식별된 업데이트들은 일부가 컴퓨터 시스템 상에 설치된다면 모두 설치되어야 한다. 상술한 필수 소프트웨어 업데이트에서와 같이, 번들 소프트웨어 업데이트의 엘리먼트는 부울 연산자와 함께 결합되어, 클라이언트 컴퓨터 상의 설치에 대한 번들 소프트웨어 업데이트의 적합성을 평가하기 위한 논리 문장을 형성할 수 있다. 반대로, 대체 소프트웨어 업데이트는 현재 소프트웨어 업데이트에 의해 대체된 다른 소프트웨어 업데이트를 식별한다. Properties 엘리먼트(904)에서와 같이, 업데이트 메타데이터 파일에는 0 이상의 Relationships 엘리먼트(908)가 있을 수 있다.
ApplicabilityRules 엘리먼트(912)는 소프트웨어 업데이트가 컴퓨팅 시스템 상의 설치에 적용가능하고/적용가능하거나 적당한 지를 결정하기 위한 규칙 또는 테스트를 제공한다. Relationships 엘리먼트(908)의 관계에 대해서는 일부 유사하지만, ApplicabilityRules 엘리먼트(912)는 다른 소프트웨어 업데이트에 특히 관련될 수도 있고 관련되지 않을 수도 있는 컴퓨팅 시스템의 조건을 테스트한다. 상기 식별된 다른 대부분의 엘리먼트들에서와 같이, 업데이트 메타데이터 파일에는 0 이상의 ApplicabilityRules 엘리먼트(912)가 있을 수 있다.
Files 엘리먼트(914)는 소프트웨어 업데이트와 관련된 파일들, 즉, 업데이트 페이로드, 뿐만 아니라 그러한 파일들에 관한 정보를 식별한다. 이 추가적인 정보로는, 업데이트 페이로드에 하나 또는 다수의 파일들이 있는 지의 여부; 파일이 획득될 수 있는 위치; 파일의 크기; 파일 이름; 파일 생성 일자; 등이 있지만, 이것으로 제한되는 것은 아니다. 본 기술분야에 숙련된 자는 단일 소프트웨어 업데이트가 다수의 방법으로 클라이언트 컴퓨터 상에 설치될 수 있음을 쉽게 인지할 것이다. 일례로서, 동일한 소프트웨어 업데이트는 존재하는 파일들 중 일부를 패치로 수정함으로써, 또는 대안적으로, 존재하는 파일을 더 새로운 버전으로 단순히 대체함으로써 설치될 수 있다. 따라서, 본 발명의 양태에 따라, Files 엘리먼트(914)의 업데이트 페이로드는 조재하는 파일에 대한 패치; 또는 패치와 대체 파일 양자를 포함 또는 참조할 수 있다. 업데이트 메타데이터 파일에는 0 이상의 Files 엘리먼트(914)가 있을 수 있다.
업데이트는 델타 패치 정보로 재기록되는 파일의 영역을 기술하는 델타 패치, 확장가능한 파일, 대체 파일 등과 같은 여러가지 포맷으로 제공될 수 있다. 컴퓨팅 시스템 상에서 소프트웨어 업데이트를 수행하기 위하여, 이러한 타입의 업데이트 각각은 특정 업데이트 핸들러를 요구한다. 따라서, HandlerSpecificData 엘리먼트(916)는 핸들러 지정 데이터/정보를 포함하기 위한 업데이트 메타데이터 파일 내의 위치를 제공한다. 예를 들어, 이 정보로는, 핸들러가 실행해야 하는 디렉토리, 핸들러로의 명령 라인 인수, 설치의 일부 양태가 실패하는 경우 취하는 액션, 설치가 성공하는 경우 취하는 액션 등이 있지만, 이것으로 제한되는 것은 아니다. 업데이트 메타데이터 파일은 0 이상의 HandlerSpecificData 엘리먼트(916)를 포함할 수 있다.
바람직한 실시예를 포함하여, 본 발명의 여러가지 실시예 및 양태가 도시되고 설명되었지만, 본 발명의 취지 및 범주를 벗어나지 않고 여러가지 변경을 행할 수 있음을 이해할 것이다. 예를 들어, 본 발명은 통신 네트워크 상에서 업데이트 배포 시스템을 통해 소프트웨어 업데이트를 전달하는 것으로 설명되었지만, 업데이트 메타데이터 뿐만 아니라, 업데이트 페이로드도 업데이트 서비스 노드로부터 컴팩트 디스크 또는 플로피 디스크와 같은 컴퓨터-판독가능 매체 상의 클라이언트 컴퓨터로 전달될 수 있다. 배재적인 속성 또는 권리가 요구되는 본 발명의 실시예는 다음의 청구범위로 정의된다.
본 발명은, 업데이트 서비스 노드로부터 자식 업데이트 서비스 노드 또는 클라이언트 컴퓨터로 업데이트 메타데이터를 전달하기 위한 태그-기반의 구조에 있어서, 로컬 배포 제어 및 다운로드 효율성 측면에서 상당한 이익을 제공한다.

Claims (25)

  1. 소프트웨어 업데이트에 대응하는 업데이트 메타데이터를 클라이언트 컴퓨터에 전달하기 위한 컴퓨터 구현 방법(computer-implemented method)으로서,
    컴퓨터를 이용하여, 소프트웨어 제품에 대응하는 소프트웨어 업데이트에 관한 정보에 대하여 동기화 요청을 클라이언트 컴퓨터로부터 수신하는 단계; 및
    상기 동기화 요청에 응답하여,
    상기 소프트웨어 제품에 대해 소프트웨어 업데이트가 사용 가능한지를 판정하는 단계;
    상기 클라이언트 컴퓨터 상의 설치에 사용 가능한 소프트웨어 업데이트에 대응하는 메타데이터를 저장하는 태그-기반 데이터 구조를 생성하는 단계;
    상기 태그-기반 데이터 구조를 상기 클라이언트 컴퓨터에 제공하는 단계를 포함하며,
    상기 태그-기반 데이터 구조는,
    상기 소프트웨어 업데이트를 고유하게(uniquely) 식별하는 메타데이터를 저장하는 태그-기반 식별자 엘리먼트;
    상기 소프트웨어 업데이트가 다른 소프트웨어 업데이트들에 대해 갖는 관계들을 식별하는 메타데이터를 저장하고, 동시에(coextensively) 설치되어야 하는 복수의 소프트웨어 업데이트를 식별하는 번들 정보를 포함하는 관계 엘리먼트 - 상기 복수의 소프트웨어 업데이트는 부울 연산자들(Boolean operators)과 함께 논리 문장으로 결합되어, 상기 논리 문장의 평가가 상기 클라이언트 컴퓨터 상의 설치에 대한 상기 복수의 소프트웨어 업데이트의 적합성을 결정하도록 함 -; 및
    상기 클라이언트 컴퓨터 상에 상기 식별된 소프트웨어 업데이트를 설치하기 위한 업데이트 핸들러를 식별하는 업데이트 핸들러 정보를 포함하는 상기 소프트웨어 업데이트에 관련된 일반 속성들을 식별하는 메타데이터를 저장하는 속성 엘리먼트;
    상기 소프트웨어 업데이트에 관련된 컴퓨터 사용자에 관한 언어 특정 정보를 식별하는 메타데이터를 저장하는 로컬화된 속성 엘리먼트;
    클라이언트 컴퓨터에 대한 상기 소프트웨어 업데이트의 적용성(applicability)을 결정하기 위한 규칙들을 식별하는 메타데이터를 저장하는 규칙 엘리먼트;
    상기 식별된 소프트웨어 업데이트의 페이로드 및 상기 소프트웨어 업데이트의 페이로드에 관련된 정보를 식별하는 메타데이터를 저장하는 파일 엘리먼트; 및
    상기 클라이언트 컴퓨터 상에 상기 식별된 소프트웨어 업데이트를 설치하기 위해 상기 속성 엘리먼트에서 식별된 상기 업데이트 핸들러를 실행하기 위한 정보를 식별하는 메타데이터를 저장하는 핸들러 엘리먼트
    의 태그-기반 엘리먼트들 중 적어도 하나의 추가적인 엘리먼트를 포함하는, 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 태그-기반 데이터 구조는 XML 데이터 구조인, 컴퓨터 구현 방법.
  3. 제1항에 있어서,
    상기 태그-기반 엘리먼트들은, 상기 태그-기반 데이터 구조 내에서, 상기 식별자 엘리먼트가 상기 태그-기반 데이터 구조 내에서 속성 엘리먼트 앞에 위치하고, 속성 엘리먼트가 상기 태그-기반 데이터 구조 내에서 로컬화된 속성 엘리먼트 앞에 위치하고, 로컬화된 속성 엘리먼트가 상기 태그-기반 데이터 구조 내에서 관계 엘리먼트 앞에 위치하고, 관계 엘리먼트가 상기 태그-기반 데이터 구조 내에서 규칙 엘리먼트 앞에 위치하고, 규칙 엘리먼트가 상기 태그-기반 데이터 구조 내에서 파일 엘리먼트 앞에 위치하고, 파일 엘리먼트가 상기 태그-기반 데이터 구조 내에서 핸들러 엘리먼트 앞에 위치하도록 배열되는, 컴퓨터 구현 방법.
  4. 제3항에 있어서,
    상기 식별자 엘리먼트는 상기 소프트웨어 업데이트를 고유하게 식별하는 고유 식별자 및 상기 소프트웨어 업데이트와 관련된 개정 번호(revision number)를 포함하는, 컴퓨터 구현 방법.
  5. 제3항에 있어서,
    상기 관계 엘리먼트는 상기 식별된 소프트웨어 업데이트가 설치되기 전에 설치되어야 하는 또다른 소프트웨어 업데이트를 식별하는 전제적 정보(prerequisite information)를 포함하는, 컴퓨터 구현 방법.
  6. 제5항에 있어서,
    상기 관계 엘리먼트는, 부울 연산자들과 함께 논리 문장으로 결합되는 복수의 소프트웨어 업데이트를 식별하는 정보를 더 포함하며, 상기 논리 문장의 평가가 상기 클라이언트 컴퓨터 상의 설치에 대해 상기 식별된 소프트웨어 업데이트의 적합성을 결정하도록 하는, 컴퓨터 구현 방법.
  7. 제3항에 있어서,
    상기 관계 엘리먼트는 상기 식별된 소프트웨어 업데이트에 의해 대체되는 적어도 하나의 다른 소프트웨어 업데이트를 식별하는 대체 정보를 포함하는, 컴퓨터 구현 방법.
  8. 제3항에 있어서,
    상기 관계 엘리먼트는 상기 식별된 소프트웨어 업데이트 이전에 설치되어야 하는 다른 소프트웨어 업데이트들을 식별하는 전제 정보, 동시에 설치되어야 하는 복수의 소프트웨어 업데이트를 식별하는 번들 정보, 및 상기 식별된 소프트웨어 업데이트에 의해 대체되는 적어도 하나의 다른 소프트웨어 업데이트를 식별하는 대체 정보를 포함하는, 컴퓨터 구현 방법.
  9. 제1항에 있어서,
    상기 파일 엘리먼트는 상기 클라이언트 컴퓨터 상에 존재하는 파일들을 패치하기 위한 상기 소프트웨어 업데이트의 페이로드를 식별하는 정보를 포함하는, 컴퓨터 구현 방법.
  10. 제1항에 있어서,
    상기 파일 엘리먼트는 상기 클라이언트 컴퓨터 상에 존재하는 파일들을 대체하기 위한 상기 소프트웨어 업데이트의 페이로드를 식별하는 정보를 포함하는, 컴퓨터 구현 방법.
  11. 제10항에 있어서,
    상기 파일 엘리먼트는 상기 클라이언트 컴퓨터 상에 존재하는 파일을 패치하고, 상기 클라이언트 컴퓨터 상에 존재하는 파일을 대체하기 위한 상기 소프트웨어 업데이트의 페이로드를 식별하는 정보를 더 포함하는, 컴퓨터 구현 방법.
  12. 소프트웨어 업데이트에 대응하는 업데이트 메타데이터를 클라이언트 컴퓨터에 전달하기 위한 컴퓨터 구현 방법(computer-implemented method)으로서,
    컴퓨터를 이용하여, 소프트웨어 제품에 대응하는 소프트웨어 업데이트에 관한 정보에 대하여 동기화 요청을 클라이언트 컴퓨터로부터 수신하는 단계; 및
    상기 동기화 요청에 응답하여,
    상기 소프트웨어 제품에 대해 소프트웨어 업데이트가 사용 가능한지를 판정하는 단계;
    상기 클라이언트 컴퓨터 상의 설치에 사용 가능한 소프트웨어 업데이트에 대응하는 메타데이터를 저장하는 태그-기반 데이터 구조를 생성하는 단계;
    상기 태그-기반 데이터 구조를 상기 클라이언트 컴퓨터에 제공하는 단계를 포함하며,
    상기 태그-기반 데이터 구조는,
    상기 소프트웨어 업데이트를 고유하게 식별하는 식별자 엘리먼트;
    상기 소프트웨어 업데이트가 다른 소프트웨어 업데이트들에 대해 갖는 관계들을 저장하고, 동시에(coextensively) 설치되어야 하는 복수의 소프트웨어 업데이트를 식별하는 번들 정보를 포함하는 관계 엘리먼트 - 상기 복수의 소프트웨어 업데이트는 부울 연산자들과 함께 논리 문장으로 결합되어, 상기 논리 문장의 평가가 상기 클라이언트 컴퓨터 상의 설치에 대한 상기 소프트웨어 업데이트의 적합성을 결정하도록 함 -; 및
    상기 클라이언트 컴퓨터 상에 상기 식별된 소프트웨어 업데이트를 설치하기 위한 업데이트 핸들러를 식별하는 업데이트 핸들러 정보를 포함하는 상기 소프트웨어 업데이트에 관련된 일반 속성들을 저장하는 속성 엘리먼트;
    상기 식별된 소프트웨어 업데이트의 페이로드 및 상기 소프트웨어 업데이트의 페이로드에 대해 기술하는 정보를 식별하는 파일 엘리먼트; 및
    상기 클라이언트 컴퓨터 상에 상기 식별된 소프트웨어 업데이트를 설치하기 위해 상기 속성 엘리먼트에서 식별된 상기 업데이트 핸들러를 실행하기 위한 정보를 저장하는 핸들러 엘리먼트
    의 태그-기반 엘리먼트들 중 적어도 하나의 추가적인 엘리먼트를 포함하고, 상기 태그-기반 엘리먼트들은 텍스트 기반 엘리먼트들인, 컴퓨터 구현 방법.
  13. 제12항에 있어서,
    상기 태그-기반 데이터 구조는 XML 데이터 구조인, 컴퓨터 구현 방법.
  14. 제12항에 있어서,
    상기 식별자 엘리먼트는 상기 소프트웨어 업데이트를 고유하게 식별하는 고유 식별자 및 상기 소프트웨어 업데이트와 관련된 개정 번호(revision number)를 포함하는, 컴퓨터 구현 방법.
  15. 제14항에 있어서,
    상기 관계 엘리먼트는 상기 식별된 소프트웨어 업데이트가 설치되기 전에 설치되어야 하는 또다른 소프트웨어 업데이트를 식별하는 전제적 정보(prerequisite information)를 포함하는, 컴퓨터 구현 방법.
  16. 제15항에 있어서,
    상기 관계 엘리먼트는, 부울 연산자들과 함께 논리 문장으로 결합되는 복수의 소프트웨어 업데이트를 식별하는 정보를 더 포함하여, 상기 논리 문장의 평가가 상기 클라이언트 컴퓨터 상의 설치에 대해 상기 식별된 소프트웨어 업데이트의 적합성을 결정하도록 하는, 컴퓨터 구현 방법.
  17. 제14항에 있어서,
    상기 관계 엘리먼트는 상기 식별된 소프트웨어 업데이트에 의해 대체되는 적어도 하나의 다른 소프트웨어 업데이트를 식별하는 대체 정보를 포함하는, 컴퓨터 구현 방법.
  18. 제14항에 있어서,
    상기 관계 엘리먼트는 상기 식별된 소프트웨어 업데이트 이전에 설치되어야 하는 다른 소프트웨어 업데이트들을 식별하는 전제 정보, 동시에 설치되어야 하는 복수의 소프트웨어 업데이트를 식별하는 번들 정보, 및 상기 식별된 소프트웨어 업데이트에 의해 대체되는 적어도 하나의 다른 소프트웨어 업데이트를 식별하는 대체 정보를 포함하는, 컴퓨터 구현 방법.
  19. 제14항에 있어서,
    상기 파일 엘리먼트는 상기 클라이언트 컴퓨터 상에 존재하는 파일들을 패치하기 위한 상기 소프트웨어 업데이트의 페이로드를 식별하는 정보를 포함하는, 컴퓨터 구현 방법.
  20. 제14항에 있어서,
    상기 파일 엘리먼트는 상기 클라이언트 컴퓨터 상에 존재하는 파일들을 대체하기 위한 상기 소프트웨어 업데이트의 페이로드를 식별하는 정보를 포함하는, 컴퓨터 구현 방법.
  21. 제20항에 있어서,
    상기 파일 엘리먼트는 상기 클라이언트 컴퓨터 상에 존재하는 파일을 패치하고, 상기 클라이언트 컴퓨터 상에 존재하는 파일을 대체하기 위한 상기 소프트웨어 업데이트의 페이로드를 식별하는 정보를 더 포함하는, 컴퓨터 구현 방법.
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
KR1020050005702A 2004-03-12 2005-01-21 업데이트 배포 시스템에서 업데이트 메타데이터를 배포시키기 위한 태그-기반 스키마 KR100942127B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/799,440 US7539686B2 (en) 2004-03-12 2004-03-12 Tag-based schema for distributing update metadata in an update distribution system
US10/799,440 2004-03-12

Publications (2)

Publication Number Publication Date
KR20050091998A KR20050091998A (ko) 2005-09-16
KR100942127B1 true KR100942127B1 (ko) 2010-02-16

Family

ID=34912620

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050005702A KR100942127B1 (ko) 2004-03-12 2005-01-21 업데이트 배포 시스템에서 업데이트 메타데이터를 배포시키기 위한 태그-기반 스키마

Country Status (16)

Country Link
US (1) US7539686B2 (ko)
EP (1) EP1585287A3 (ko)
JP (1) JP4907876B2 (ko)
KR (1) KR100942127B1 (ko)
CN (1) CN1668010A (ko)
AU (1) AU2005200328B2 (ko)
BR (1) BRPI0500296A (ko)
CA (1) CA2495339C (ko)
IL (1) IL166813A0 (ko)
MX (1) MXPA05001673A (ko)
MY (1) MY144440A (ko)
NO (1) NO20050535L (ko)
NZ (1) NZ538169A (ko)
RU (1) RU2378686C2 (ko)
SG (1) SG115727A1 (ko)
TW (1) TWI369869B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101491018B1 (ko) 2013-07-10 2015-02-06 에스케이플래닛 주식회사 클라우드 오픈 api 기반 토큰을 이용한 클라우드 서비스 점검 시스템, 클라우드 서비스 점검 방법 및 이를 위한 장치

Families Citing this family (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070169075A1 (en) * 2003-09-05 2007-07-19 David Lill Synchronizing and controlling software downloads, such as for utility meter-reading data collection and processing
US7266565B2 (en) 2003-09-24 2007-09-04 Tablecode Software Corporation Table-oriented application development environment
US7536434B1 (en) * 2004-09-30 2009-05-19 Avaya Inc. Global dynamic persistent information architecture
US7809763B2 (en) * 2004-10-15 2010-10-05 Oracle International Corporation Method(s) for updating database object metadata
US7475396B2 (en) * 2004-12-03 2009-01-06 International Business Machines Corporation Method and apparatus for defining, building and deploying pluggable and independently configurable install components
US20070043752A1 (en) * 2005-08-19 2007-02-22 Opnet Technologies, Inc. Disparate network model synchronization
US20070169079A1 (en) * 2005-11-08 2007-07-19 Microsoft Corporation Software update management
US20070203956A1 (en) * 2006-02-28 2007-08-30 Microsoft Corporation Metadata Customization Using Diffgrams
US8726267B2 (en) * 2006-03-24 2014-05-13 Red Hat, Inc. Sharing software certification and process metadata
US8775572B2 (en) 2006-06-23 2014-07-08 Microsoft Corporation Public network distribution of software updates
US7873957B2 (en) * 2006-07-27 2011-01-18 Microsoft Corporation Minimizing user disruption during modification operations
US7676586B2 (en) * 2006-10-05 2010-03-09 Microsoft Corporation Hierarchical federation metadata
GB0623917D0 (en) * 2006-11-30 2007-01-10 Ibm Method, apparatus and computer program for controlling retention of publications
GB0624577D0 (en) * 2006-12-08 2007-01-17 Skype Ltd Communication Systems
US8429626B2 (en) * 2007-02-15 2013-04-23 Microsoft Corporation Packaging content updates
CN101425922B (zh) * 2007-10-31 2011-09-28 国际商业机器公司 跟踪和定位web服务更新过程中的改变的方法和装置
JP4991668B2 (ja) * 2008-09-29 2012-08-01 株式会社東芝 コンピュータシステムおよび修正パッチ確認/適用方法
US8302088B2 (en) * 2008-10-15 2012-10-30 International Business Machines Corporation Analysis of effects of a software maintenance patch on configuration items of a CMDB
US8914783B2 (en) * 2008-11-25 2014-12-16 Fisher-Rosemount Systems, Inc. Software deployment manager integration within a process control system
US8898660B2 (en) * 2008-11-25 2014-11-25 Fisher-Rosemount Systems, Inc. Systems and methods to provide customized release notes during a software system upgrade of a process control system
WO2010082887A1 (en) * 2009-01-14 2010-07-22 Telefonaktiebolaget Lm Ericsson (Publ) An iptv device and a method adapted for such a device
US8832023B2 (en) * 2009-01-30 2014-09-09 Apple Inc. System for managing distributed assets and metadata
JP5321816B2 (ja) * 2009-03-27 2013-10-23 日本電気株式会社 コンピュータネットワークシステム及びその管理方法
US10282373B2 (en) 2009-04-17 2019-05-07 Excalibur Ip, Llc Subject-based vitality
WO2010129487A1 (en) * 2009-05-02 2010-11-11 Citrix Systems, Inc. Methods and systems for providing a consistent profile to overlapping user sessions
US9003387B2 (en) * 2009-09-25 2015-04-07 Fisher-Rosemount Systems, Inc. Automated deployment of computer-specific software updates
US9031987B2 (en) * 2009-09-30 2015-05-12 Red Hat, Inc. Propagation of data changes in distribution operations in hierarchical database
US8996453B2 (en) 2009-09-30 2015-03-31 Red Hat, Inc. Distribution of data in a lattice-based database via placeholder nodes
US8984013B2 (en) * 2009-09-30 2015-03-17 Red Hat, Inc. Conditioning the distribution of data in a hierarchical database
US20110078199A1 (en) * 2009-09-30 2011-03-31 Eric Williamson Systems and methods for the distribution of data in a hierarchical database via placeholder nodes
US8584113B2 (en) * 2009-11-09 2013-11-12 Bank Of America Corporation Cross-updating of software between self-service financial transaction machines
US9176898B2 (en) * 2009-11-09 2015-11-03 Bank Of America Corporation Software stack building using logically protected region of computer-readable medium
US20110113416A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Network-Enhanced Control Of Software Updates Received Via Removable Computer-Readable Medium
US20110113422A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Programmatic Creation Of Task Sequences From Manifests
US9122558B2 (en) * 2009-11-09 2015-09-01 Bank Of America Corporation Software updates using delta patching
US20110113420A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Distribution Of Software Updates
US8972974B2 (en) * 2009-11-09 2015-03-03 Bank Of America Corporation Multiple invocation points in software build task sequence
US20110154004A1 (en) * 2009-12-23 2011-06-23 genForma Corp Installing and Configuring Software and/or Hardware Components Using Metadata Representations of Component Interdependencies
US8315174B2 (en) * 2009-12-31 2012-11-20 Red Hat, Inc. Systems and methods for generating a push-up alert of fault conditions in the distribution of data in a hierarchical database
US8316120B2 (en) 2010-02-02 2012-11-20 Microsoft Corporation Applicability detection using third party target state
US20110238572A1 (en) * 2010-03-25 2011-09-29 Bank Of America Corporation Remote Control Of Self-Service Terminal
JP2011203971A (ja) * 2010-03-25 2011-10-13 Fuji Xerox Co Ltd 情報処理装置及びプログラム
CN101951400B (zh) * 2010-09-13 2013-01-02 烽火通信科技股份有限公司 一种家庭网络中应用终端的软件安装和升级方法及系统
US9354852B2 (en) 2010-12-23 2016-05-31 Microsoft Technology Licensing, Llc Satisfying application dependencies
US20120245984A1 (en) * 2011-03-21 2012-09-27 Sungil Lee Systems and methods for acquiring a captive customer base within a cloud environment
JP5790222B2 (ja) 2011-07-12 2015-10-07 株式会社リコー 通信装置、アップデート方法およびアップデートプログラム
US8613101B2 (en) 2011-09-12 2013-12-17 Microsoft Corporation Software distribution service federation
US9253164B2 (en) 2011-09-12 2016-02-02 Microsoft Technology Licensing, Llc Distribution of portions of content
US8839222B1 (en) * 2011-09-21 2014-09-16 Amazon Technologies, Inc. Selecting updates for deployment to a programmable execution service application
US8726263B2 (en) 2011-09-28 2014-05-13 Microsoft Corporation Detection and installation of software on a per-user basis
US8959504B2 (en) 2011-10-18 2015-02-17 Microsoft Corporation Update scanning
RU2580065C2 (ru) * 2011-12-01 2016-04-10 Тенсент Текнолоджи (Шэньчжэнь) Компани Лимитед Способ и система обновления программного обеспечения
US8825817B1 (en) * 2012-03-19 2014-09-02 Amazon Technologies, Inc. Using a template to update a stack of resources
JP5330565B2 (ja) * 2012-04-24 2013-10-30 株式会社東芝 コンピュータ
US9032386B1 (en) * 2012-07-30 2015-05-12 Adobe Systems Incorporated Product upgrade location identifier for software upgrade
KR20140057998A (ko) * 2012-11-05 2014-05-14 삼성전자주식회사 전자 장치에서 응용프로그램의 갱신 정보를 알리기 위한 방법 및 장치
US9489188B1 (en) * 2012-11-14 2016-11-08 Amazon Technologies, Inc. Tag-based deployment
US9531704B2 (en) 2013-06-25 2016-12-27 Google Inc. Efficient network layer for IPv6 protocol
US9191209B2 (en) 2013-06-25 2015-11-17 Google Inc. Efficient communication for devices of a home network
US9959107B2 (en) * 2013-06-28 2018-05-01 Samsung Electronics Co., Ltd. Method and apparatus for updating application
JP6173112B2 (ja) * 2013-08-09 2017-08-02 キヤノン株式会社 同意事項を通知するか判断するシステム、方法、及びプログラム
CN104378391A (zh) * 2013-08-12 2015-02-25 无锡知谷网络科技有限公司 软件更新方法、系统及设备
JP2015103106A (ja) * 2013-11-26 2015-06-04 株式会社リコー 通信装置、及び通信プログラム
JP2015103105A (ja) * 2013-11-26 2015-06-04 株式会社リコー 通信装置、通信システム、及び通信プログラム
WO2015172107A1 (en) 2014-05-09 2015-11-12 Nutanix, Inc. Mechanism for providing external access to a secured networked virtualization environment
US10210172B1 (en) * 2014-08-14 2019-02-19 Google Llc File system integration and synchronization between client and server
US9740473B2 (en) 2015-08-26 2017-08-22 Bank Of America Corporation Software and associated hardware regression and compatibility testing system
US11544049B2 (en) 2016-02-12 2023-01-03 Nutanix, Inc. Virtualized file server disaster recovery
US10382312B2 (en) 2016-03-02 2019-08-13 Fisher-Rosemount Systems, Inc. Detecting and locating process control communication line faults from a handheld maintenance tool
US11218418B2 (en) 2016-05-20 2022-01-04 Nutanix, Inc. Scalable leadership election in a multi-processing computing environment
US10560356B2 (en) * 2016-07-14 2020-02-11 International Business Machines Corporation Assuring data correctness in non-stable network environment
US11605037B2 (en) 2016-07-20 2023-03-14 Fisher-Rosemount Systems, Inc. Fleet management system for portable maintenance tools
US10554644B2 (en) 2016-07-20 2020-02-04 Fisher-Rosemount Systems, Inc. Two-factor authentication for user interface devices in a process plant
US10374873B2 (en) 2016-07-22 2019-08-06 Fisher-Rosemount Systems, Inc. Process control communication between a portable field maintenance tool and a process control instrument
US10375162B2 (en) 2016-07-22 2019-08-06 Fisher-Rosemount Systems, Inc. Process control communication architecture
US10599134B2 (en) 2016-07-22 2020-03-24 Fisher-Rosemount Systems, Inc. Portable field maintenance tool configured for multiple process control communication protocols
US10270853B2 (en) * 2016-07-22 2019-04-23 Fisher-Rosemount Systems, Inc. Process control communication between a portable field maintenance tool and an asset management system
US10585422B2 (en) 2016-07-22 2020-03-10 Fisher-Rosemount Systems, Inc. Portable field maintenance tool system having interchangeable functional modules
US10481627B2 (en) 2016-07-25 2019-11-19 Fisher-Rosemount Systems, Inc. Connection check in field maintenance tool
US10764083B2 (en) 2016-07-25 2020-09-01 Fisher-Rosemount Systems, Inc. Portable field maintenance tool with resistor network for intrinsically safe operation
US10505585B2 (en) 2016-07-25 2019-12-10 Fisher-Rosemount Systems, Inc. Portable field maintenance tool with a bus for powering and communicating with a field device
US10387385B1 (en) 2016-09-29 2019-08-20 Servicenow, Inc. System and method for batch database modification
US10728090B2 (en) 2016-12-02 2020-07-28 Nutanix, Inc. Configuring network segmentation for a virtualization environment
US11562034B2 (en) 2016-12-02 2023-01-24 Nutanix, Inc. Transparent referrals for distributed file servers
US10824455B2 (en) 2016-12-02 2020-11-03 Nutanix, Inc. Virtualized server systems and methods including load balancing for virtualized file servers
US11568073B2 (en) 2016-12-02 2023-01-31 Nutanix, Inc. Handling permissions for virtualized file servers
US11294777B2 (en) 2016-12-05 2022-04-05 Nutanix, Inc. Disaster recovery for distributed file servers, including metadata fixers
US11288239B2 (en) 2016-12-06 2022-03-29 Nutanix, Inc. Cloning virtualized file servers
US11281484B2 (en) 2016-12-06 2022-03-22 Nutanix, Inc. Virtualized server systems and methods including scaling of file system virtual machines
JP6667430B2 (ja) * 2016-12-27 2020-03-18 クラリオン株式会社 ソフトウェア更新装置、ソフトウェア更新システム
US11693827B2 (en) * 2016-12-29 2023-07-04 Microsoft Technology Licensing, Llc Syncing and propagation of metadata changes across multiple endpoints
JP6334776B1 (ja) * 2017-04-20 2018-05-30 三菱電機株式会社 電子制御装置
CN109213502B (zh) * 2017-06-30 2022-09-27 上海尚往网络科技有限公司 应用更新方法和装置
US11086826B2 (en) 2018-04-30 2021-08-10 Nutanix, Inc. Virtualized server systems and methods including domain joining techniques
US11194680B2 (en) 2018-07-20 2021-12-07 Nutanix, Inc. Two node clusters recovery on a failure
US11770447B2 (en) 2018-10-31 2023-09-26 Nutanix, Inc. Managing high-availability file servers
WO2020232707A1 (zh) * 2019-05-23 2020-11-26 深圳市大疆创新科技有限公司 分布式系统中通信协议版本号的更新
CN110162322A (zh) * 2019-05-27 2019-08-23 网宿科技股份有限公司 一种升级方法及装置
CN111581223B (zh) * 2020-04-11 2023-08-22 北京城市网邻信息技术有限公司 一种数据更新方法、装置、终端设备及存储介质
US11768809B2 (en) 2020-05-08 2023-09-26 Nutanix, Inc. Managing incremental snapshots for fast leader node bring-up
CN111930521B (zh) * 2020-09-23 2024-08-06 北京百度网讯科技有限公司 用于部署应用的方法、装置、电子设备及可读存储介质
US12117972B2 (en) 2021-08-19 2024-10-15 Nutanix, Inc. File server managers and systems for managing virtualized file servers
US12072770B2 (en) 2021-08-19 2024-08-27 Nutanix, Inc. Share-based file server replication for disaster recovery
US11755309B2 (en) * 2022-01-19 2023-09-12 Red Hat, Inc. Tagging packages in an application ecosystem

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199204B1 (en) 1998-01-28 2001-03-06 International Business Machines Corporation Distribution of software updates via a computer network
WO2002046909A1 (en) 2000-12-07 2002-06-13 Webputty Automatically deploy and upgrade an application based on markup language application definition
KR20020081974A (ko) * 2001-04-21 2002-10-30 엘지전자 주식회사 단말기를 위한 소프트웨어 다운로드 방법
US20030088684A1 (en) * 2001-05-25 2003-05-08 Fisher Matthew D. Rule-based system and method for downloading computer software over a network

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04635A (ja) * 1990-04-18 1992-01-06 Fujitsu Ltd ファイル更新方式
US6947571B1 (en) * 1999-05-19 2005-09-20 Digimarc Corporation Cell phones with optical capabilities, and related applications
US6151643A (en) * 1996-06-07 2000-11-21 Networks Associates, Inc. Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer
US6202207B1 (en) * 1998-01-28 2001-03-13 International Business Machines Corporation Method and a mechanism for synchronized updating of interoperating software
US6697948B1 (en) * 1999-05-05 2004-02-24 Michael O. Rabin Methods and apparatus for protecting information
US7051243B2 (en) * 2002-04-30 2006-05-23 Sun Microsystems, Inc. Rules-based configuration problem detection
US6711557B1 (en) * 2000-08-14 2004-03-23 Adobe Systems Incorporated Client-based background update monitoring
AU2001294677A1 (en) * 2000-09-22 2002-04-02 Patchlink.Com Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
US7003110B1 (en) * 2000-11-14 2006-02-21 Lucent Technologies Inc. Software aging method and apparatus for discouraging software piracy
US20040068721A1 (en) * 2000-11-17 2004-04-08 O'neill Patrick Network for updating firmware and / or software in wireless communication devices
US20020069192A1 (en) * 2000-12-04 2002-06-06 Aegerter William Charles Modular distributed mobile data applications
US20040015939A1 (en) * 2001-05-16 2004-01-22 Cheah Jonathon Y. Updateable memory module
US20030018964A1 (en) * 2001-07-19 2003-01-23 International Business Machines Corporation Object model and framework for installation of software packages using a distributed directory
CA2354443A1 (en) * 2001-07-31 2003-01-31 Ibm Canada Limited-Ibm Canada Limitee Method and system for visually constructing xml schemas using an object-oriented model
US7415539B2 (en) * 2001-09-28 2008-08-19 Siebel Systems, Inc. Method and apparatus for detecting insufficient memory for data extraction processes
US7526575B2 (en) * 2001-09-28 2009-04-28 Siebel Systems, Inc. Method and system for client-based operations in server synchronization with a computing device
US6993760B2 (en) * 2001-12-05 2006-01-31 Microsoft Corporation Installing software on a mobile computing device using the rollback and security features of a configuration manager
US20040006586A1 (en) 2002-04-23 2004-01-08 Secure Resolutions, Inc. Distributed server software distribution
US20040073903A1 (en) * 2002-04-23 2004-04-15 Secure Resolutions,Inc. Providing access to software over a network via keys
US20040003390A1 (en) * 2002-06-27 2004-01-01 Microsoft Corporation System and method for installing a software application in a non-impactfull manner
US7366460B2 (en) * 2003-01-23 2008-04-29 Dexterra, Inc. System and method for mobile data update
JP2003308273A (ja) * 2003-02-10 2003-10-31 Seiko Epson Corp ネットワーク上に存在するコンテンツを自動収集するシステム
US20040224674A1 (en) * 2003-04-07 2004-11-11 O'farrell Robert System and method for context sensitive mobile data and software update
US7574706B2 (en) * 2003-12-15 2009-08-11 Microsoft Corporation System and method for managing and communicating software updates
US7478381B2 (en) * 2003-12-15 2009-01-13 Microsoft Corporation Managing software updates and a software distribution service
US20080244555A1 (en) * 2007-03-29 2008-10-02 Welvaert Eugene F Bundling software updates

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199204B1 (en) 1998-01-28 2001-03-06 International Business Machines Corporation Distribution of software updates via a computer network
WO2002046909A1 (en) 2000-12-07 2002-06-13 Webputty Automatically deploy and upgrade an application based on markup language application definition
KR20020081974A (ko) * 2001-04-21 2002-10-30 엘지전자 주식회사 단말기를 위한 소프트웨어 다운로드 방법
US20030088684A1 (en) * 2001-05-25 2003-05-08 Fisher Matthew D. Rule-based system and method for downloading computer software over a network

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101491018B1 (ko) 2013-07-10 2015-02-06 에스케이플래닛 주식회사 클라우드 오픈 api 기반 토큰을 이용한 클라우드 서비스 점검 시스템, 클라우드 서비스 점검 방법 및 이를 위한 장치

Also Published As

Publication number Publication date
TWI369869B (en) 2012-08-01
MY144440A (en) 2011-09-15
US20050228798A1 (en) 2005-10-13
TW200533111A (en) 2005-10-01
IL166813A0 (en) 2006-01-15
CN1668010A (zh) 2005-09-14
BRPI0500296A (pt) 2005-11-08
KR20050091998A (ko) 2005-09-16
MXPA05001673A (es) 2005-09-14
NZ538169A (en) 2007-05-31
AU2005200328B2 (en) 2009-06-11
CA2495339C (en) 2013-04-30
NO20050535D0 (no) 2005-02-01
RU2378686C2 (ru) 2010-01-10
AU2005200328A1 (en) 2005-09-29
JP2005259115A (ja) 2005-09-22
AU2005200328A2 (en) 2005-09-29
SG115727A1 (en) 2005-10-28
US7539686B2 (en) 2009-05-26
RU2005101833A (ru) 2006-07-10
EP1585287A2 (en) 2005-10-12
NO20050535L (no) 2005-09-13
EP1585287A3 (en) 2006-05-03
JP4907876B2 (ja) 2012-04-04
CA2495339A1 (en) 2005-09-12

Similar Documents

Publication Publication Date Title
KR100942127B1 (ko) 업데이트 배포 시스템에서 업데이트 메타데이터를 배포시키기 위한 태그-기반 스키마
US7853609B2 (en) Update distribution system architecture and method for distributing software
AU2005222887B2 (en) Application programming interface for administering the distribution of software updates in an update distribution system
US20050076325A1 (en) Automatic software update of nodes in a network data processing system
IL166812A (en) Update distribution system architecture and method for distributing software
VASSILIADIS et al. Using Agents to Reduce Maintenance Cost of Complex Software Systems
GB2388214A (en) Updating a monitoring agent using a structured document
MXPA06010207A (en) Application programming interface for administering the distribution of software updates in an update distribution system

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated 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: 20130121

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140123

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150121

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160104

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 10