KR20070003926A - 업데이트 분배 시스템에서 소프트웨어 업데이트의 분배를관리하기 위한 애플리케이션 프로그래밍 인터페이스 - Google Patents

업데이트 분배 시스템에서 소프트웨어 업데이트의 분배를관리하기 위한 애플리케이션 프로그래밍 인터페이스 Download PDF

Info

Publication number
KR20070003926A
KR20070003926A KR1020067018656A KR20067018656A KR20070003926A KR 20070003926 A KR20070003926 A KR 20070003926A KR 1020067018656 A KR1020067018656 A KR 1020067018656A KR 20067018656 A KR20067018656 A KR 20067018656A KR 20070003926 A KR20070003926 A KR 20070003926A
Authority
KR
South Korea
Prior art keywords
update
service node
interface
update service
call
Prior art date
Application number
KR1020067018656A
Other languages
English (en)
Other versions
KR101086122B1 (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 KR20070003926A publication Critical patent/KR20070003926A/ko
Application granted granted Critical
Publication of KR101086122B1 publication Critical patent/KR101086122B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1425Reconfiguring to eliminate the error by reconfiguration of node membership
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1229Printer resources management or printer maintenance, e.g. device status, power levels
    • G06F3/123Software or firmware update, e.g. device firmware management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

업데이트 서비스 노드상에서의 소프트웨어 업데이트의 분배를 관리하기 위한 애플리케이션 프로그래밍 인터페이스(API)가 제공된다. 이 API는 관리자가 업데이트 서비스 노드상에서 이용가능한 소프트웨어 업데이트를 분배하는 규칙을 확립할 수 있는 복수의 인터페이스 호출을 제공한다.
API, 소프트웨어 업데이트 분배 시스템, 프로그래밍

Description

업데이트 분배 시스템에서 소프트웨어 업데이트의 분배를 관리하기 위한 애플리케이션 프로그래밍 인터페이스{APPLICATION PROGRAMMING INTERFACE FOR ADMINISTERING THE DISTRIBUTION OF SOFTWARE UPDATES IN AN UPDATE DISTRIBUTION SYSTEM}
본 발명은 소프트웨어 및 컴퓨터 네트워크에 관한 것으로, 특히 본 발명은 업데이트 분배 시스템에서 소프트웨어 업데이트의 분배를 관리하기 위한 애플리케이션 프로그래밍 인터페이스에 관한 것이다.
거의 모든 상업적으로 이용가능한 소프트웨어 제품들은 소프트웨어의 특성을 개정 또는 업데이트하기 위한 연속적인 개정 프로세스를 경험한다. 소프트웨어 제품의 개정마다 새로운 파일을 추가하기, 기존의 파일을 새로운 개정판으로 교체하기, 안 쓰는 파일을 삭제하기, 또는 이들 행위(action)들의 다양한 조합을 빈번히 필요로 한다. 소프트웨어 제품의 오래된 파일을 교체하기, 새로운 파일을 추가하기, 및 안 쓰는 파일을 삭제하기에 대한 처리는 이하에서 "제품 업데이트하기"라 지칭될 것이고; 이진 파일, 데이터 파일, 업데이트 명령어들, 메타데이터, 데이터베이스 데이터, 시스템 레지스트리 설정, 보안 설정 등을 포함하는, 제품 업데이트시에 사용되는 데이터 컬렉션(collection)은 이하에서 보다 단순히 "업데이트"라 지칭될 것이다.
문제를 해결하거나, 보안을 강화하거나, 또는 새로운 특성을 추가하기 위해, 일단 소프트웨어 제공자가 소프트웨어 제품의 업데이트를 생성하면, 소프트웨어 제공자는 해당 업데이트가 그 고객 측에서 널리 이용가능할 수 있길 원할 것이다. 상당히 자주, 예를 들어 업데이트가 제품의 결함을 정정하거나 치명적인 보안 문제를 해결하기에 관한 것일 경우, 소프트웨어 제공자는 해당 업데이트가 가능한 빨리 고객의 컴퓨터에 설치되길 원할 것이다. 실로, 대다수의 소프트웨어 제공자는 소프트웨어 업데이트를 그들의 고객에게 가능한 빨리 문제없이 분배하고자하는 사업 동기를 가진다.
컴퓨터 산업은 네트워크, 특히 인터넷에 접속된 컴퓨터의 수에 있어서 폭발적인 성장을 경험했다. 이런 폭발적인 성장으로 인해, 또 인터넷으로의 접속을 통해 이용가능한 통신 능력으로 인해, 인터넷은 소프트웨어 제공자가 그들의 고객에게 업데이트를 분배하는데 에 중요한 필수 채널이 되었다. 실제로, 인터넷은 여러 소프트웨어 제공자가 소프트웨어 업데이트를 그들의 고객에게 제공하는 주요 분배 채널이 되었다. 인터넷을 통해 소프트웨어 업데이트를 분배하는 것은, 인터넷을 통한 전자적 업데이트 분배가 소프트웨어 업데이트가 이용가능할 때 고객이 이를 가능한 빨리 획득하도록 해주고 그들의 총 비용을 감소시키기 때문에, 종종 소프트웨어 제공자에게 최대의 관심사가 된다. 더욱더 빈번히, 이들 소프트웨어 업데이트는 어떤 사용자의 개입 없이, 인터넷을 통해 자동으로 실행된다.
현재 인터넷은 소프트웨어 제공자로부터 소프트웨어 업데이트를 분배하기 위 한 수단(conduit)으로서 일반적으로 이용되지만, 다수의 문제가 자주 발생한다. 두 가지 이런 문제는 (1)업데이트 분배 하부 구조/자원에 관한 효율성, 및 (2) 소프트웨어 업데이트의 분배 및 설치에 대한 관리 제어를 포함한다.
분배 자원의 효율성에 관하여, 인터넷을 포함하는 네트워크는 대역폭이라 하는 한정된 양의 통신 자원만을 소유한다. 한정된 양의 통신 대역폭은, 예컨대 마이크로소프트사의 운영 체제인 Windows® 계열(family) 및 그 관련 상품 등의, 특별히 인기있는 소프트웨어 제품의 소프트웨어 업데이트에 관련해서 빈번히 병목현상을 야기시킨다. 이런 병목현상은 소프트웨어 업데이트가 인터넷 전반에 걸쳐 분산된 다수의 다운로드 위치에서 이용가능할 때조차도 존재한다. 이런 병목현상이 발생하는 한 가지 이유는 인터넷에 의해 이용가능하게 된 비구조화된 액세스 모델 때문이다. 예를 들어, 컴퓨터 A에서의 제1 사용자가 소프트웨어 제품의 최신 다운로드를 요청하는 경우, 다운로드는 제1 사용자의 ISP(independent service provider)를 통과한다. 또한, 요청은 단일의, 개별화된 액세스로서 취급되어, 그 요청은 임의 다른 네트워크 트래픽 및/또는 요청과는 관계없는 독립적으로 취급되는 것을 의미한다. 이와 같이, 또한 우연히 동일한 ISP를 가지는, 컴퓨터 B에서의 제2 사용자가 제1 사용자와 동일한 다운로드를 요청하는 경우, 제2 사용자로부터의 요청은 또한 단일의, 개별화된 액세스로서 취급된다. 이런 예에서, 동일한 다운로드는 동일한 하부 구조를 통해 두 차례 전송될 것인데, 왜냐하면 각 요청이 따로이 취급되었기 때문이다. 분명히, 사용자 수가 상당히 증가하는 경우, 한정된 통신 대역폭은 병목현상이 될 것이다. 아주 일반적인 이런 예에서, 다운로드가 로컬 위 치에 캐쉬되어, 각 사용자 요청이 로컬 캐쉬로부터 만족되면, 훨씬 더 효과적일 것이다.
분배의 제어에 관련하여, 많은 조직은, 특히 대규모 조직은 그들 컴퓨터로의 업데이트의 분배를 제어하기 위한 합법적 이유를 가진다. 예를 들어, 공교롭게도 일부 업데이트는 소프트웨어 제품의 "침입(break)" 특성인, 주로 버그라 칭하는 결함을 가지거나 야기시킨다. 이들 침입 특성은 사소한 것일 수 있지만, 너무 자주 그것들은 사업상의 임무에 결정적인 특성을 방해할 수 있다. 사업체는 임무에 결정적인 특성을 잃을 여지를 제공할 수 없기 때문에, 책임 사업체는 먼저 그들의 나머지 컴퓨터에 업데이트를 배포하기 이전에 일정 기간 동안 제어된 환경 내에서 각 소프트웨어 업데이트를 평가하고 테스트할 것이다. 평가 기간 동안 조직은 업데이트가 임무에 결정적인 특성에 악영향을 미치는지의 여부를 검증하게 된다. 업데이트가 어떤 임무 결정적인 특성을 실망시키지 않을 것이라고 충분히 판정된 이후에만, 업데이트가 조직의 나머지 컴퓨터에 분배되도록 허가된다. 분명히, 대다수의 조직은 그들 컴퓨터상에서 소프트웨어 업데이트의 설치에 대한 제어를 실행해야 한다.
사업체 또는 조직이 종종 소프트웨어 업데이트의 분배를 제어할 필요가 있는 또 다른 이유는 조직의 컴퓨터들 간에서의 일관성을 보장하기 위해서이다. 정보 서비스 부문에서는, 워드 프로세서용 또는 운영 체제용이든지 간에, 모든 컴퓨터가 동작하는 표준화된 타겟 플랫폼을 가지는 것이 매우 중요하다. 표준 없이, 소프트웨어와 컴퓨터의 유지 관리는 불필요하게 복잡하고 어려울 수 있다.
로컬 제어가 중요한 또 다른 이유는 과금(billing) 목적을 위해서이다. 대규모의 조직에서, 소프트웨어를 컴퓨터상에 개별적으로 설치하거나, 조직 내의 각각의 컴퓨터마다 특정 소프트웨어 제품의 라이센스를 개별적으로 유지하는 것은 종종 비효율적이다. 대신에, 단일 사이트 라이센스에 의해 조직은 수많은 컴퓨터상에 소프트웨어 제품을 실행시키게 된다. 따라서, 조직은 사이트 라이센스 하에서 제품을 실행시키는 컴퓨터의 수를 보고하도록 요구받을 수 있거나, 사이트 라이센스 하에서 제품을 실행시키는 컴퓨터의 수를 제한할 필요가 있을 수 있다. 이런 이유 모두가 소프트웨어 업데이트 분배에 대한 로컬 제어를 요구한다.
소프트웨어 업데이트 분배에 관련된 다양한 상기 식별된 문제의 관점에서, 소프트웨어 업데이트의 분배에 대한 제어를 제공할 뿐만 아니라, 그들의 분배 효율성을 증가시킬, 확장된 소프트웨어 업데이트 분배 아키텍처가 필요로 된다. 본 발명은 종래의 발견된 이들 문제 및 다른 문제들을 해결한다.
본 발명에 양상에 따르면, 업데이트 서비스 노드가 제공되며, 이 업데이트 서비스 노드는 업데이트 서비스 노드상에서의 소프트웨어 업데이트의 분배를 관리하기 위한 애플리케이션 프로그래밍 인터페이스를 가진다. 업데이트 서비스 노드는 소프트웨어 업데이트를 저장하기 위한 업데이트 저장소를 포함한다. 업데이트 서비스 노드는, 또한 업데이트 웹 서비스를 포함하며, 이 웹 서비스를 통해 업데이트 서비스 노드는 통신 네트워크를 통해 부모 업데이트 서비스 노드로부터 소프트웨어 업데이트를 획득하고, 또한 업데이트 서비스 노드는 통신 네트워크를 통해 자식 업데이트 서비스 노드에 소프트웨어 업데이트를 분배한다. 또한, 업데이트 서비스 노드는 관리 애플리케이션 프로그래밍 인터페이스(API)를 포함하고, 이 관리 API를 통해 관리자는 자식 업데이트 서비스 노드와 클라이언트 컴퓨터로의 소프트웨어 업데이트의 분배에 대한 제어를 확립하고, 이 관리 API는 관리자가 상기 규칙을 설정하는데 이용되는 복수의 인터페이스 호출을 드러내는 객체이다.
본 발명의 추가적인 양상에 따르면, 업데이트 서비스 노드상에서의 소프트웨어 업데이트의 분배를 관리하기 위한 애플리케이션 프로그래밍 인터페이스(API)가 제공된다. API는 소프트웨어 업데이트 관리 구성 값을 판독하여 업데이트 서비스 노드에 기록하기 위한 구성 인터페이스 객체(configuration interface object)를 되돌려주는 구성 획득(get configuration) 인터페이스 호출을 포함한다. API는 또한 업데이트 서비스 노드상에 규정된 서브스크립션 인터페이스 객체(subscription interface object)를 되돌려주는 서브스크립션 획득(get subscription) 인터페이스 호출을 포함한다. API는 또한 업데이트 인터페이스 객체(update interface object)를 되돌려주는 업데이트 획득(get update) 인터페이스 호출-업데이트 인터페이스 객체는 업데이트 획득(get update) 인터페이스 호출에 전달되는 업데이트 식별자에 대응함-뿐 아니라, 업데이트 인터페이스 객체들을 포함하는 업데이트 컬렉션(update collection) 객체를 되돌려주는 업데이트들 획득(get updates) 인터페이스 호출-업데이트 인터페이스 객체는 업데이트들 회득(get updates) 인터페이스 호출에 전달되는 값들에 대응함-도 포함한다. API는 또한 클라이언트 컴퓨터 객체(client computer object)를 되돌려주는 컴퓨터 획득(get computer) 인터페이스 호출-클라이언트 컴퓨터 객체는 컴퓨터 획득(get computer) 인터페이스 호출에 식별되었던, 또한 업데이트 서비스 노드와 연관된 클라이언트 컴퓨터에 대응함-과, 클라이언트 컴퓨터 객체들을 포함하는 컴퓨터 컬렉션 객체를 되돌려주는 컴퓨터들 획득(get computers) 인터페이스 호출-클라이언트 컴퓨터 객체는 업데이트 서비스 노드와 연관된 클라이언트 컴퓨터들에 대응함-도 포함한다. 또한, API는 타겟 그룹은 그룹 획득(get group) 인터페이스 호출에 식별되었던 타겟 그룹 객체를 되돌려주는 그룹 획득(get group) 인터페이스 호출과, 타겟 그룹 객체들을 포함하는 타겟 그룹 컬렉션(target group collection) 객체를 되돌려 주는 그룹들 획득(get groups) 인터페이스 호출-타겟 그룹 객체는 업데이트 서비스 노드상에서의 타겟 그룹들에 대응함-을 포함한다.
본 발명의 다른 양상에 따르면, 소프트웨어 업데이트를 분배하기 위한 소프트웨어 업데이트 분배 시스템이 제공된다. 소프트웨어 업데이트 분배 시스템은 업데이트 서비스 노드, 및 그 업데이트 서비스 노드와 연관된 관리 애플리케이션 프로그래밍 인터페이스(API)를 포함한다. 관리 API는 소프트웨어 업데이트의 분배를 제어하기 위한 복수의 인터페이스 호출을 드러내는 인터페이스 객체이다. 관리 API는, 소프트웨어 업데이트 관리 구성 값을 판독하여 업데이트 서비스 노드에 기입하기 위한, 구성 인터페이스 객체를 되돌려주는 구성 획득(get configuration) 인터페이스 호출을 포함한다. API는 또한 업데이트 서비스 노드상에 규정된 서브스크립션 인터페이스 객체를 되돌려주는 서브스크립션 회득(get subscription) 인터페이스 호출을 포함한다. API는 또한 업데이트 인터페이스 객체를 되돌려주는 업데이트 획득(get update) 인터페이스 호출-업데이트 인터페이스 객체는 업데이트들 획득(get update) 인터페이스 호출에 전달되는 업데이트 식별자에 대응함-뿐만 아니라, 업데이트 인터페이스 객체들을 포함하는 업데이트 컬렉션 객체를 되돌려주는 업데이트들 획득(get updates) 인터페이스 호출-업데이트 인터페이스 객체는 업데이트들 획득(get updates) 인터페이스 호출로 전달되는 값들에 대응함-도 포함한다. API는 또한 클라이언트 컴퓨터 객체를 되돌려주는 컴퓨터 획득(get computer) 인터페이스 호출-클라이언트 컴퓨터 객체는 컴퓨터 획득(get computer) 인터페이스 호출에서 식별되었던, 또한 업데이트 서비스 노드에 연관된 클라이언트 컴퓨터에 대응함-과, 클라이언트 컴퓨터 객체들을 포함하는 컴퓨터 컬렉션 객체를 되돌려주는 컴퓨터들 획득(get computers) 인터페이스 호출-클라이언트 컴퓨터 객체는 업데이트 서비스 노드에 연관된 클라이언트 컴퓨터들에 대응함-을 포함한다. 또한, API는 그룹 획득(get group) 인터페이스 호출에서 식별되었던 타겟 그룹 객체를 되돌려주는 그룹 획득(get group) 인터페이스 호출과, 타겟 그룹 객체들을 포함하는 타겟 그룹 컬렉션 객체를 되돌려주는 그룹들 획득(get groups) 인터페이스 호출-타겟 그룹 객체는 업데이트 서비스 노드상에서의 타겟 그룹들에 대응함-을 포함한다.
본 발명의 전술된 양상 및 많은 부수적인 이점은 이하의 상세한 설명을 참조하여 더욱 잘 이해되듯이, 첨부된 도면에 관련하여 취해질 때, 더욱 쉽사리 인식될 것이다.
도 1은 본 발명의 양상에 따라 구성된 예시적인 업데이트 분배 시스템의 도 면.
도 2는 본 발명의 양상에 따라 구성된 업데이트 서비스 노드의 예시적인 논리적 컴포넌트를 도시하는 블록도.
도 3은 본 발명의 양상에 따라 구성된 루트 업데이트 서비스 노드의 예시적인 논리적 컴포넌트를 도시하는 블록도.
도 4는 본 발명의 양상에 따라, 부모 업데이트 서비스 노드로부터 자식 업데이트 서비스 노드에 소프트웨어 업데이트를 제공할 때에, 부모 업데이트 서비스 노드와 자식 업데이트 서비스 노드 사이의 예시적인 교환을 도시하는 블록도.
도 5는 자식 업데이트 서비스 노드상에서 실행되는 그 부모 업데이트 서비스 노드로부터의 업데이트를 주기적으로 획득하기 위한 예시적인 루틴을 도시하는 흐름도.
도 6은 도 5의 예시적인 루틴에 사용되기 적합하며, 부모 업데이트 서비스 노드로부터 업데이트 카탈로그를 획득하기 위한 예시적인 서브루틴의 흐름도.
도 7은 도 5의 예시적인 루틴에 사용되기 적합하며, 부모 업데이트 서비스 노드로부터 소프트웨어 업데이트를 획득하기 위한 예시적인 서브루틴의 흐름도.
도 8은 자식 업데이트 서비스 노드로부터의 업데이트 요청을 처리하기 위한 예시적인 루틴의 흐름도.
도 9는 소프트웨어 업데이트를 클라이언트 컴퓨터에 분배하도록 업데이트 서비스 노드를 구성하는 것에 관련하여 관리 API를 이용하는 방법을 예시하는 도면.
도 10은 업데이트 서비스 노드상에서의 소프트웨어 업데이트의 분배를 관리 하기 위한 소정의 관리 API 호출을 예시하는 블록도.
본 발명의 양상에 따르면, 소프트웨어 업데이트를 분배하기 위한 계층구조 방식으로 조직화된 업데이트 분배 시스템이 제공된다. 도 1은 본 발명의 양상에 따라 구성된 예시적인 업데이트 분배 시스템(100)의 도면이다. 본 발명에 따르면, 예시된 업데이트 분배 시스템(100) 등의 업데이트 분배 시스템의 "상부(top)"에는, 루트 업데이트 서비스 노드(102)가 있다. 소프트웨어 제공자(110) 등의 소프트웨어 제공자는 루트 업데이트 서비스 노드(102)에 업데이트를 제출함으로써, 그들의 소프트웨어 업데이트를 업데이트 분배 시스템(100)을 통해 분배한다. 본 발명의 양상에 따르면, 소프트웨어 제공자(110) 등의 소프트웨어 제공자는 그들의 소프트웨어 업데이트를 루트 업데이트 서비스 노드(102)에 인터넷(108) 등의 네트워크를 통해 제출할 수 있다.
예시적인 업데이트 분배 시스템(100) 등의 계층구조의 업데이트 분배 시스템은 루트 업데이트 서비스 노드(102) 이외에 적어도 하나의 다른 업데이트 서비스 노드를 포함할 가능성이 있을 것이다. 도 1에 예시된 바와 마찬가지로, 예시적인 업데이트 분배 시스템(100)은 루트 업데이트 서비스 노드(102)와, 2개의 추가적인 업데이트 서비스 노드, 즉 업데이트 서비스 노드(104) 및 업데이트 서비스 노드(106)를 포함한다. 본 발명에 따르면, 각각의 계층구조의 업데이트 분배 시스템은 루트 업데이트 서비스 노드(102) 바로 아래에 트리형 구조로 조직화되어 있다. 달리 말하면, 업데이트 분배 시스템의 각각의 업데이트 서비스 노드는 0 또는 1개 이상의 자식 업데이트 서비스 노드를 가진다. 따라서, 예시적인 업데이트 분배 시스템(100)에서는 각각의 부모 업데이트 서비스 노드, 즉 루트 업데이트 서비스 노드(102)와 업데이트 서비스 노드(106)가 단지 하나의 자식을 갖는 것으로 도시하고 있지만, 이는 예시하기 위함이고, 본 발명에 대해 제한하려는 것으로서 해석되어서는 안 된다. 루트 업데이트 서비스 노드(102)를 제외하고, 업데이트 분배 시스템의 각각의 업데이트 서비스 노드는 하나의 부모 업데이트 서비스 노드를 가진다. 따라서, 도 1에 도시된 바와 같이, 업데이트 서비스 노드(104)는 루트 업데이트 서비스 노드(102)에 대한 자식 노드이고, 업데이트 서비스 노드(106)는 업데이트 서비스 노드(104)에 대한 자식 노드이다. 인식할 수 있는 바와 같이, 루트 업데이트 서비스 노드(102)를 제외한 각각의 업데이트 서비스 노드는 자식 업데이트 서비스 노드와 부모 업데이트 서비스 노드 모두가 될 수 있다.
예시적인 업데이트 분배 시스템(100)에 예시된 바와 같이, 루트 업데이트 서비스 노드(102)는 인터넷(108)을 통해 업데이트 서비스 노드(104)와 통신한다. 그러나, 이는 다만 예로서 이해되어야 하고, 본 발명에 대해 제한하는 것으로서 해석되어서는 안 된다. 업데이트 분배 시스템의 각각의 업데이트 서비스 노드는 일부 통신 네트워크를 통해 단지 그 부모 및/또는 자식과 통신할 수 있을 필요가 있다. 따라서, 업데이트 서비스 노드(104)는 그 부모인 루트 업데이트 서비스 노드(102)와 인터넷(108)을 통해 통신하면서, 이것은 업데이트 서비스 노드(106) 등의 그 자식 업데이트 서비스 노드들과 LAN(124)을 통해 번갈아 통신할 수 있다.
또한 도 1에 도시된 바와 같이, 업데이트 서비스 노드(106)는 LAN(124)의 서 브-네트워크(126) 내에 존재한다. 예로서, LAN(124)은 조직의 총괄적인 회사 네트워크에 대응할 수 있으며, 업데이트 서비스 노드(104)는 그 부모인 루트 업데이트 서비스 노드(102)로의 접속을 통한, 업데이트 분배 시스템(100)으로의 회사의 링크를 나타낸다. 또한, 서브-네트워크(126)는 테스트/평가 그룹, 원격으로 위치된 오피스, 또는 임무 결정적인 그룹 등의, 회사 네트워크 내의 식별가능한 컴퓨터 그룹에 대응할 수 있다. 본 발명의 양상에 따라, 보다 상세히 기술하자면, 업데이트 서비스 노드(104)의 관리자는 업데이트 서비스 노드(106), 및 궁국적으로는 클라이언트 컴퓨터로의 업데이트의 분배를 제어할 수 있다.
루트 업데이트 서비스 노드(102)와 업데이트 서비스 노드들(104 및 106)을 포함하는 각각의 업데이트 서비스 노드는 소프트웨어 업데이트를 그 자식 업데이트 노드들뿐 아니라 클라이언트 컴퓨터 모두에 분배하도록 구성되어 있음을 인식해야 한다. 도 1에 도시된 바와 같이, 예시적인 업데이트 분배 시스템(100)은 클라이언트 컴퓨터들(112 내지 122)을 포함한다. 루트 업데이트 서비스 노드(102)를 포함하는 각각의 업데이트 서비스 노드는 업데이트를 로컬 구성 정보에 따라 자식 업데이트 서비스 노드와 클라이언트 컴퓨터들에 분배한다. 일 실시예에 따르면, 관리자는 그룹을 규정하고, 업데이트 분배 규칙을 이들 그룹과 연관시킨다. 각각의 업데이트 서비스 노드는 적어도 하나의 분배 그룹을 가진다.
업데이트 분배 시스템이 동작하는 방법을 예시하기 위한 한 예로서, LAN(124)이 사업체 조직의 회사 네트워크에 대응한다고 가정한다. 본 발명의 일 실시예에 따르면, 업데이트 서비스 노드(104)의 관리자는 회사 네트워크(124)에 대 한 복수의 분배 그룹을 규정할 수 있는데, 이 복수의 분배 그룹은 업데이트 서비스 노드(104)와 클라이언트 컴퓨터들(114 내지 118)을 포함하는 일반 회사 그룹뿐만 아니라, 일반 회사 네트워크(124)에 대한 업데이트의 적합성을 평가하기 위한, 업데이트 서비스 노드(106) 및 클라이언트 컴퓨터들(120 및 122)을 포함하는 서브-네트워크(126)에 대응하는 평가 그룹을 포함한다.
평가 그룹에 관련하여, 관리자는 멤버로서 업데이트 서비스 노드(106)를 포함하고, 업데이트가 이용가능하게 될 때 즉시 평가 그룹의 멤버에게 분배되도록 하는 규칙을 그 그룹과 연관시킨다. 또한, 일반 회사 그룹에 관련하여, 관리자는 클라이언트 컴퓨터들(114 내지 118)을 추가하고, 관리자에 의해 특별히 허가되는 경우 업데이트가 일반 회사 그룹 멤버들에게만 분배되도록 하는 규칙을 연관시킨다. 또한 자식 업데이트 서비스 노드(106)의 관리자는 클라이언트 컴퓨터들(120 및 122)로 이루어지는 디폴트 그룹을 평가 서브-네트워크(126)에 생성하고, 이곳에 임의 새로운 소프트웨어 업데이트가 즉시 분배될 수 있는 것으로 한다.
상기 예를 진행하여, 소프트웨어 제공자(110)는 소프트웨어 업데이트를 루트 업데이트 서비스 노드(102)에 제출한다. 루트 업데이트 서비스 노드(102)에서 설정된 규칙에 따라, 업데이트는 최종적으로 회사 업데이트 서비스 노드(104)에 분배된다. 일단 그 업데이트를 수신하면, 관리자에 의해 설정된 규칙에 따라, 회사 업데이트 서비스 노드(104)는 업데이트를 평가 그룹의 멤버들에게 분배하나(오직 자식 업데이트 서비스 노드(106)로서 규정됨), 업데이트를 그 그룹에 분배하도록 하는 특정 인증을 기다리는 일반 회사 그룹에게는 그 업데이트를 허락하지 않는다.
상기 예를 진행하여, 일단 업데이트를 수신하면, 평가 업데이트 서비스 노드(106)가 각각의 규정된 그룹에 관련하여 업데이트를 처리한다. 이런 예에서, 평가 업데이트 서비스 노드(106)는 단 하나의 그룹을 가진다. 그러나, 이전에 언급된 바와 같이, 실제 구현예에서는, 복수의 그룹이 규정될 수 있고, 각각의 그룹은 연관된 분배 규칙의 고유한 세트를 가진다. 이 예의 경우, 평가 업데이트 서비스 노드(106)는 즉시 업데이트가 클라이언트 컴퓨터들(120 및 122)에 분배될 수 있도록 해준다. 클라이언트 컴퓨터들(120 및 122)은 현재 업데이트될 수 있고, 평가 기간/처리가 개시될 수 있다.
상기 예를 진행하여, 회사 업데이트 서비스 노드(104)의 관리자가 업데이트가 회사 전체 네트워크(124)에 걸쳐 분배되기에 적합하다고 충분히 만족하게 되면, 관리자는 업데이트가 일반 회사 그룹의 멤버들에게 분배되도록 명시적으로 허가한다. 회사 업데이트 서비스 노드(104)는 이에 대응하여 업데이트가 클라이언트 컴퓨터들(114 내지 118)에서 이용가능하도록 해준다. 평가 업데이트 서비스 노드(106)가 또한 일반 회사 그룹에 포함될 수 있음을 이해해야 한다. 그러나, 평가 업데이트 서비스 노드(106)는 이미 업데이트되었기 때문에, 추가적인 업데이트-관련 행위가 평가 서브-네트워크(126)에 업데이트를 분배하기 위해 필요하지는 않는다.
상기 예에서 인식할 수 있는 바와 같이, 본 발명은 로컬 분배 제어 및 다운로드 효율성의 관점에 있어 상당한 이점을 제공한다. 로컬 분배 제어에 대한 전술된 양상 이외에, 또한 통신 대역폭의 절약이 상당히 실현된다. 예를 들어, 도 1에 도시된 예시적인 회사 네트워크(124)는 5대의 클라이언트 컴퓨터를 포함하지만, 소프트웨어 제공자의 업데이트는 루트 업데이트 서비스 노드(102)로부터 회사 업데이트 서비스 노드(104)로 단 한번만 다운로드 되었다. 분명하게, 업데이트 서비스 노드에 의해 서비스되는 클라이언트 컴퓨터의 수가 증가할 때, 부모 업데이트 서비스 노드와 자식 업데이트 서비스 노드 사이의 통신 대역폭 사용은 일정하게 유지되고, 이로써 달리 사용되었을 통신 대역폭 양을 상당히 줄이게 된다. 또한 업데이트 분배 시스템은 확장성 및 규모성이 있다. 업데이트 분배 시스템은 적어도 2가지 방법으로, 즉 임의 개수의 자식 업데이트 서비스 노드가 부모 업데이트 서비스 노드에 추가됨으로써, 및 자식 업데이트 서비스 노드가 또한 부모 업데이트 서비스 노드가 될 수 있음으로써, 확장가능하다. 그러므로, 업데이트 분배 시스템의 각각의 서브-트리는 개별적 요구사항을 만족시키도록 맞춰질 수 있다.
도 2는 본 발명의 양상에 따라 구성된, 회사 업데이트 서비스 노드(104)(도 1을 참조) 또는 평가 업데이트 서비스 노드(106)(도 1을 참조) 등의 업데이트 서비스 노드(200)의 예시적인 논리적 컴포넌트를 도시하는 블록도이다. 도 2에 도시된 바와 같이, 업데이트 서비스 노드(200)는 업데이트 웹 서비스(202), 클라이언트 업데이트 모듈(204), 자식 업데이트 모듈(206), 및 보고 모듈(208)을 포함한다. 예시적인 업데이트 서비스 노드(200)는 또한 인증/허가 모듈(210), 관리 애플리케이션 프로그래밍 인터페이스(API)(212), 업데이트 콘텐츠 저장소(214), 관리 사용자 인터페이스(218), 및 업데이트 정보 저장소(216)를 포함한다.
업데이트 웹 서비스(202)는 클라이언트 컴퓨터들, 자식 업데이트 서비스 노 드들, 및 부모 업데이트 서비스 노드가 업데이트 서비스 노드와 통신할 수 있도록 해주는, 공통의 웹 서비스 세트를 제공한다. 예를 들어, 도 1을 참조해보면, 자식/평가 업데이트 서비스 노드(106)가 부모/회사 업데이트 서비스 노드(104)로부터 소프트웨어 업데이트를 획득하기 위해, 클라이언트는 부모의 업데이트 웹 서비스(202)를 통해 통신한다. 마찬가지로, 루트 업데이트 서비스 노드(102) 등의 부모 업데이트 서비스 노드가 업데이트를 포함하여, 그 자식 업데이트 서비스 노드(104)에 전달할 정보를 가질 때, 부모 업데이트 서비스 노드는 자식의 업데이트 웹 서비스(202)를 통해 통신한다.
본 발명의 실제 실시예에서는, 일반적으로 웹 서비스 인터페이스로서 지칭되며, 업데이트 웹 서비스(202)에 의해 제공되는 공통의 웹 서비스 세트가 이하의 호출들, 즉 부모 업데이트 서비스 노드로부터 인증 구성 정보를 획득하기 위한 GetServerAuthConfig; 부모 업데이트 서비스 노드 구성 정보 및 속성을 획득하기 위한 GetConfigData 및 GetServerConfigData; 부모 업데이트 서비스 노드로부터 허가 토큰을 획득하기 위한 GetServerCookie; 부모 업데이트 서비스 노드로부터 업데이트 리스트를 획득하기 위한 GetRevisionIdList; 부모 업데이트 서비스 노드로부터 업데이트 메타 데이터 및 업데이트 페이로드를 획득하기 위한 GetUpdateData; 및 업데이트 서비스 노드상에서 발생된 업데이트 활동을 그 부모 업데이트 서비스 노드에 보고하기 위한 ReportEvents를 포함한다.
클라이언트 업데이트 모듈(204)은 업데이트 서비스 노드상에 저장된 업데이트 및 업데이트들 정보에 관련하여 클라이언트 컴퓨터와 업데이트 서비스 노 드(200) 사이의 통신을 처리한다. 업데이트-관련된 통신은 클라이언트 요청에 응답하여 업데이트를 분배하기와, 클라이언트 컴퓨터에 이용가능한 소프트웨어 제품 및 그 관련 업데이트의 리스트를 제공하기를 포함하나, 이에만 한정되지는 않는다. 클라이언트 업데이트 모듈(204)은 또한 클라이언트 컴퓨터가 관련된 분배 규칙에 따라 특정 업데이트를 획득하도록 허가되는지 여부에 대한 판정을 담당하고, 클라이언트 컴퓨터가 액세스하도록 허가된다는 업데이트-관련된 정보로써 클라이언트 컴퓨터에 응답한다.
자식 업데이트 모듈(206)은 부모 업데이트 서비스 노드와 그 자식 업데이트 서비스 노드 사이의 업데이트-관련된 통신을 처리한다. 업데이트-관련된 통신은 자식 업데이트 서비스 노드로부터의 업데이트 요구에 응답하기뿐만 아니라, 자식 업데이트 서비스 노드에서 이용가능한 소프트웨어 제품과 그 관련 업데이트의 리스트를 식별하기를 포함하나, 이에만 한정되지는 않는다. 다운스트림 업데이트 모듈(206)은 자식 업데이트 서비스 노드가 관련 분배 규칙에 따라 특정 업데이트를 획득하도록 허가되는지 여부에 대한 판정을 담당하고, 자식 업데이트 서비스 노드가 액세스하도록 허가된다는 업데이트-관련된 정보로써 자식 업데이트 서비스 노드에 응답한다.
보고 모듈(208)은 어느 그룹이 특정 업데이트를 수신했는지 하지 않았는지, 어느 클라이언트 컴퓨터가 업데이트를 다운로드/설치했는지 하지 않았는지, 어떤 업데이트가 업데이트 서비스 노드상에서 이용가능한지 등의 업데이트-관련된 보고서를 생성한다. 이들 보고서는 내부적으로는, 관리자 등에 의해 이용될 수 있고, 또한 부모의 업데이트 서비스 인터페이스(202)를 통해, 부모 업데이트 서비스 노드에 제출될 수 있다. 전술된 바와 같이, 어느 클라이언트 컴퓨터가 과금 목적 또는 유지관리 목적 등을 위해 특정 업데이트가 설치되도록 했는가를 회사가 판정하는 것이 종종 필요하다. 보고 모듈(208)에 의해 생성된 정보/보고서는 이들 보고서에 기초할 수 있다.
인증/허가 모듈(210)은 인증하기, 즉 특정 클라이언트 컴퓨터 또는 자식 업데이트 서비스 노드의 ID를 판정하기, 및 클라이언트 컴퓨터 또는 자식 업데이트 서비스 노드가 업데이트 서비스 노드(200)에서 이용가능한 업데이트를 액세스하도록 허가되는가 여부에 대한 판정을 담당할 수 있다. 업데이트 서비스 노드상에서의 업데이트를 액세스하도록 인증 및 허가된 이들 클라이언트 컴퓨터와 자식 업데이트 서비스 노드에 대해, 인증/허가 모듈(210)은 업데이트 획득에 관련하여 사용되어야 하는 허가 토큰을 발행한다. 허가 토큰의 발행 및 사용은 도 4A 및 도 4B에 관련하여 이하에 보다 상세히 기술된다.
관리 API(212)는 업데이트 서비스 노드(200)에 대한 제어를 실행하고, 업데이트가 최종적으로 저장 및 분배되도록 해주는 애플리케이션 인터페이스를 나타낸다. 업데이트 웹 서비스(202)가 다양한 업데이트-관련 요청을 클라이언트 컴퓨터와 자식 업데이트 서비스 노드로부터 수신하는 경우, 이들 요청들은 결국은 호출들로 분해되어 직접적으로 관리 API(212)로 전달되거나, 클라이언트 업데이트 모듈(204)과 클라이언트 업데이트 모듈(206)을 통해 간접적으로 전달된다. 관리 API(212)를 사용하도록 적절히 구성되는 업데이트 서비스 노드(200)상에 설치된 일 부 다른 프로그램 또는 관리 사용자 인터페이스(218)에 관련하여, 관리자는 자식 업데이트 서비스 노드와 클라이언트 컴퓨터뿐만 아니라 그 업데이트 서비스 노드에 대한 업데이트 처리의 모든 양상을 궁극적으로 제어한다. 관리 API의 실제 실시예는 명세서의 부록으로 첨부되어 있고, 도 9-XX에 관련하여 이하에 보다 상세히 기술되어 있다.
관리 사용자 인터페이스(218)를 통해, 관리자는 관리 API(212)에 의해, 업데이트 서비스 노드(200)를 구성 및 관리할 수 있다. 따라서, 관리 사용자 인터페이스(218)를 통해, 관리자는 그룹들을 생성, 수정, 및 삭제할 뿐 아니라 각 그룹에 대한 규칙을 연관시킨다. 또한, 관리 사용자 인터페이스(218)를 이용하여, 관리자는 클라이언트 컴퓨터 또는 자식 업데이트 서비스 노드가 어느 그룹에 속하는지 설정한다. 관리 사용자 인터페이스(218)를 통해, 관리자는 또한 클라이언트 컴퓨터 또는 자식 업데이트 서비스 노드로의 업데이트의 분배를 명시적으로 허가할 수 있고, 주기적으로 그 부모 업데이트 서비스 노드에게 새로운 업데이트에 대해 질의하도록 업데이트 서비스 노드를 구성할 수 있으며, 보고 매개변수를 구성하고, 내부 보고서를 볼 수 있다. 전술된 바와 같이, 관리 사용자 인터페이스(218)에 의해 관리자가 업데이트 서비스 노드(200)의 양상에 대한 제어를 실행할 수 있게 되지만, 업데이트 서비스 노드(200)상에 존재하는 다른 애플리케이션이, 관리 API(212)로 동작하도록 적절히 적응되어, 관리 사용자 인터페이스(218) 대신 사용될 수 있다.
전술된 바와 같이, 본 발명의 일 실시예에 따르면, 업데이트 서비스 노드(200)는 업데이트 콘텐츠 저장소(214)와 업데이트 정보 저장소(216)를 포함한다. 업데이트 콘텐츠 저장소(214)는 이진 파일, 및 패치 파일 등의 소프트웨어 업데이트를 나타내는 실제 파일을 저장한다. 대조적으로, 업데이트 정보 저장소(216)는 업데이트 콘텐츠 저장소(214)에 저장된 업데이트 파일을 포함하여, 업데이트 서비스 노드(200)상에서 이용가능한 업데이트들에 대응하는 메타데이터와 정보를 저장한다. 일 실시예에 따르면, 업데이트 콘텐츠 저장소(214)와 업데이트 정보 저장소(216)는 모두 관계형 데이터베이스이다. 예시적인 업데이트 서비스 노드(200)가 2개의 데이터 저장소를 가진 것으로 도시되어 있지만, 본 발명은 이에만 한정되어서는 안 된다. 다른 실시예에서, 업데이트 콘텐츠 저장소(214)와 업데이트 정보 저장소(216)는 하나의 정보 저장소로 결합될 수 있다.
본 발명의 양상에 따르면, 소프트웨어 업데이트는, 그 업데이트가 업데이트 콘텐츠 저장소(214)에 물리적으로 저장되어 있지 않을지라도, 업데이트 서비스 노드(200)상에서 "이용가능하여" 클라이언트 컴퓨터와 자식 업데이트 서비스 노드에 제공될 수 있다. 보다 구체적으로는, 업데이트 서비스 노드(200)상에서 실제 업데이트 파일을 즉시 다운로드하여 저장하기보다는 오히려, 부모 업데이트 서비스 노드상에서의 또는 다른 곳에서의 업데이트 파일을 참조하고 있는 링크를 업데이트 서비스 노드상에 대신 저장할 수 있다. 따라서, 클라이언트 컴퓨터가 업데이트를 요청하거나 자식 업데이트 서비스 노드가 실제 업데이트를 요청하는 경우, 업데이트를 부모 업데이트 서비스 노드로부터 다운로드하여, 클라이언트 컴퓨터 또는 자식 업데이트 서비스 노드에 전달하기 위해 미리 업데이트 콘텐츠 저장소(214)에 저장한다. 당업자는 이런 유형의 업데이트 액세스를 JIT(just-in-time) 다운로드라 함을 인식할 것이다. 이런 방식으로, "이용가능한" 업데이트는 이것이 실제로 요청될 때까지는 다양한 네트워크 채널을 통해 분배될 필요가 없다. 본 발명의 양상에 따르면, 업데이트 서비스 노드(200)의 관리자는 JIT 방식으로 소프트웨어 업데이트를 획득할지를 선택적으로 결정할 수 있다.
도 2에 대한 전술한 설명은 예시적인 업데이트 서비스 모듈(200)의 다양한 컴포넌트를 예시하고 있지만, 업데이트 서비스 모듈의 다른 컴포넌트가 또한 존재할 수 있음을 인식해야 한다. 또한, 전술된 컴포넌트는 논리적 컴포넌트로 이해되어야 하고, 반드시 실제 컴포넌트는 아님을 이해해야 한다. 실제 구현예에서는, 상기 식별된 컴포넌트가 구현예 결정에 따라 다른 컴포넌트와 결합될 수 있고/거나 다같이 결합될 수 있다. 또한, 업데이트 서비스 노드(200)가 네트상의 서버 컴퓨터로서 보일 수 있지만, 실제 구현예에서는, 업데이트 서비스 노드가 임의 여러 유형의 컴퓨팅 장치상에 구현될 수 있음을 인식해야 한다. 예를 들어, 각각의 업데이트 서비스 노드(200)는 하나의 독립형 컴퓨터 시스템상에, 또는 다수의 컴퓨팅 장치를 포함하는 분산 컴퓨팅 시스템상에 구현 및/또는 설치될 수 있다.
도 3은 본 발명의 양상에 따라 구성되어, 도 1에 예시된 루트 업데이트 서비스 노드(102) 등의 루트 업데이트 서비스 노드(300)의 예시적인 논리적 컴포넌트를 예시하는 블록도이다. 업데이트 서비스 노드(200)(도 2를 참조)의 논리적 컴포넌트와 유사한, 루트 업데이트 서비스 노드(300)는 업데이트 웹 서비스(202), 자식 업데이트 모듈(206), 및 인증/허가 모듈(210)을 포함한다. 또한, 예시적인 루트 업데이트 서비스 노드(300)는 관리 API(212), 업데이트 콘텐츠 저장소(214) 및 업 데이트 정보 저장소(216)를 포함한다. 선택적으로, 루트 업데이트 서비스 노드(300)는 또한 클라이언트 업데이트 모듈(204), 보고 모듈(208), 및 관리 사용자 인터페이스(218)를 포함할 수 있다.
클라이언트 업데이트 모듈(240)은 루트 업데이트 서비스 노드가 소프트웨어 업데이트를 직접 클라이언트 컴퓨터에 제공하는지에 따라, 루트 업데이트 서비스 노드(300)의 선택적인 컴포넌트가 된다. 예를 들어, 도 1을 참조하여, 루트 업데이트 서비스 노드(102)는 클라이언트 컴퓨터(112)에 직접 서비스하는 루트 업데이트 서비스 노드로서 선택적인 클라이언트 업데이트 모듈(204)을 포함할 것이다. 그러나, 루트 업데이트 서비스 노드(300)가 클라이언트 컴퓨터에 직접 서비스하지 않을 경우, 클라이언트 업데이트 모듈(204)은 생략될 수 있다.
보고 모듈(208)은 루트 업데이트 서비스 노드(300)의 경우 선택적이 되는데, 왜냐하면 루트 업데이트 서비스 노드가 업데이트 보고서를 제공할 부모 업데이트 서비스 노드를 가지고 있지 않기 때문이다. 그러나, 업데이트 보고서가 루트 업데이트 서비스 노드의 관리자에게는 바람직하다는 점에서, 보고 모듈(308)은 선택적으로 포함될 수 있다.
업데이트 서비스 노드(200)(도 2를 참조)에 포함된 논리적 컴포넌트를 포함하는 것 이외에, 루트 업데이트 서비스 노드(300)는 또한 소프트웨어 제공자 인터페이스(302)를 포함한다. 소프트웨어 제공자 인터페이스(302)는 통신 인터페이스를 제공하고, 통신 인터페이스에 의해 소프트웨어 제공자(110)(도 1을 참조)는 소프트웨어 업데이트를 직접적으로는 루트 업데이트 서비스 노드(300)에, 또는 간접 적으로는 예시적인 업데이트 분배 시스템(100)에 제출한다.
도 2의 업데이트 서비스 노드(300)와 유사한, 도 3의 상기 상세한 설명은 예시적인 루트 업데이트 서비스 노드(300)의 다양한 컴포넌트를 예시한다. 그러나, 루트 업데이트 서비스 모듈의 다른 컴포넌트가 또한 존재할 수 있음을 인식해야 한다. 또한, 전술된 컴포넌트는 논리적 컴포넌트이고, 반드시 실제 컴포넌트는 아님을 이해해야 한다. 실제 구현예에서는, 상기 식별된 컴포넌트가 구현예 결정에 따라 다른 컴포넌트와 결합되고/거나 다같이 결합될 수 있다. 또한, 루트 업데이트 서비스 노드(200)가 네트워크상의 서버 컴퓨터로서 보일 수 있지만, 실제 구현예에서는, 업데이트 서비스 노드가 임의 개수의 컴퓨팅 장치상에 구현될 수 있다. 예를 들어, 루트 업데이트 서비스 노드(300)는 하나의 독립형 컴퓨터 시스템상에, 또는 대안으로 다수의 컴퓨팅 장치를 포함하는 분산 컴퓨팅 시스템상에, 구현 및/또는 설치될 수 있다.
업데이트가 루트 업데이트 서비스 노드로부터 업데이트 분산 시스템(100) 전역에 분배되는 방법을 더 잘 이해하기 위하여, 부모 업데이트 서비스 노드와 자식 업데이트 서비스 노드 사이의 예시적인 교환이 보장되는 예시가 있다. 도 4는 본 발명의 양상에 따라, 소프트웨어 업데이트를 부모 업데이트 서비스 노드로부터 자식 업데이트 서비스 노드에 전달할 때의 부모 업데이트 서비스 노드(402)와 자식 업데이트 서비스 노드(404) 사이의 예시적인 교환(400)을 도시하는 블록도이다. 인식할 수 있는 바와 같이, 예시적인 도면(400)은 절반으로 나누어지고, 그 좌측 절반은 부모 업데이트 서비스 노드(402)의 동작 및 단계에 대응하고, 그 우측 절반 은 자식 업데이트 서비스 노드(404)의 행위 및 단계에 대응한다.
도 4에 대해 논의하기 위해서는, 부모 업데이트 서비스 노드(402)가 업데이트 분산 시스템(100)의 루트 업데이트 서비스 노드이거나 아닐 수 있음을 또한 이해해야 한다. 또한, 이런 논의를 위해서, 자식 업데이트 서비스 노드(404)가 소프트웨어 업데이트를 수신하도록 관리자에 의해 명시적으로 허가받지 않는 한, 소프트웨어 업데이트를 수신할 수 없도록, 부모 업데이트 서비스 노드(402)는 관리자에 의해 구성되었다고 가정한다.
예시적인 교환(400)에 도시된 바와 같이, 단계(406)에서 시작하여, 부모 업데이트 서비스 노드(402)는 소프트웨어 제공자(110)로부터 소프트웨어 업데이트를 부모 업데이트 서비스 노드가 루트 업데이트 서비스 노드인 경우는 직접적으로, 그렇지 않으면 업데이트 분산 시스템(100)을 통해 간접적으로 수신한다. 부모 업데이트 서비스 노드(402)가 소프트웨어 업데이트를 소프트웨어 제공자(110)로부터 수신한 이후의 임의 시점에서, 자식 업데이트 서비스 노드(404)는 부모 업데이트 서비스 노드로부터 소프트웨어 업데이트를 획득하기 위한 처리를 시작한다.
일 실시예에 따르면, 자식 업데이트 서비스 노드(404)는 부모 업데이트 서비스 노드로부터 이용가능한 소프트웨어 업데이트를 주기적으로 자동 획득하도록 구성될 수 있다. 보다 구체적으로, 관리자는 관리 사용자 인터페이스(218)를 통해, 부모 업데이트 서비스 노드상에서 이용가능한 최신 소프트웨어 업데이트를 주기적으로 자동 획득하도록 자식 업데이트 서비스 노드(404)를 선택적으로 구성할 수 있다. 한 예로서, 관리자는 자동 업데이트 처리가 개시되는 날의 시각을 지정할 뿐 만 아니라, 그 부모 업데이트 서비스 노드(402)로부터 최신 소프트웨어 업데이트를 날마다 및/또는 시간마다 획득하도록 자식 업데이트 서비스 노드(404)를 구성할 수 있다. 다른 주기적인 스케줄 및 기준이 이용될 수도 있다. 마찬가지로, 관리자는 관리 사용자 인터페이스(218)를 통해 업데이트 처리를 수동으로 개시할 수 있다.
업데이트 처리를 시작하기 위해, 단계(408)에서, 자식 업데이트 서비스 노드(404)는 부모 업데이트 서비스 노드(402)에 의한 자신의 인증 및 허가를 구한다. 부모 업데이트 서비스 노드(402)에 의한 인증 및 허가받기에 의해 허가된 업데이트 서비스 노드에만 업데이트 분배를 제한하는, 소프트웨어 업데이트의 분배에 대한 제어의 요소를 제공하게 된다. 인증 및 허가 기술은 공지되어 있으며, 이들 중 일부는 자식 업데이트 서비스 노드를 부모 업데이트 서비스 노드(402)에 의한 인증 및 허가받는데 이용될 수 있다. 본 발명은 어느 한 기술에 제한되지는 않는다.
정식으로 부모 업데이트 서비스 노드(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)"라 한다. 각 소프트웨어 제품에 대한 업데이트 앵커는 전형적으로 업데이트 정보 저장소(216)(도 2를 참조)에 저장된다. 일 실시예에서, 업데이트 앵커는 개정 번호 와 그 개정 번호에 관련된 날짜를 포함한다.
업데이트 동기화 요청에 응답하여, 단계(420)에서, 부모 업데이트 서비스 노드(402)는, 있다면, 어느 새로운 업데이트가 자식 업데이트 서비스 노드(404)용으로 이용가능한지를 판정한다. 전술된 바와 같이, 이 판정은 자식 업데이트 서비스 노드(404)가 업데이트 앵커일 뿐 아니라 멤버인 그룹 또는 그룹들과, 특정 소프트웨어 업데이트에 연관된 특정 규칙에 기초한다. 이 예에서, 이전에 기술된 바와 같이, 이전에 수신된 소프트웨어 업데이트는 자식 업데이트 서비스 노드(404)용으로 명시적으로 허가되지는 않았다. 따라서, 단계(406)에서 수신된 소프트웨어 업데이트는 자식 업데이트 서비스 노드(404)에 대해 "이용가능한" 것으로 판정되지 않는다. 이에 따라, 단계(422)에서, 업데이트 리스트는 단계(406)에서 수신된 소프트웨어 업데이트를 식별함 없이, 자식 업데이트 서비스 노드(404)에 되돌려진다. 본 발명의 양상에 따르면, 업데이트 리스트는 동기화 요청에 따라 부모 업데이트 서비스 노드(402)상에서 "이용가능한" 업데이트 전체를 식별한다. 일 실시예에서, 업데이트 리스트는 업데이트에 연관된 고유한 식별자에 의한 각각의 "이용가능한" 업데이트 정보를 식별한다.
단계(424)에서, 업데이트 리스트가 비어 있기 때문에, 즉 어떤 업데이트도 부모 업데이트 서비스 노드(402)상에서 현재 "이용가능하지" 않기 때문에, 자식 업데이트 서비스 노드(404)의 업데이트 처리가 소정의 시간 동안 단순히 지연 또는 비활성화된다. 현재의 예에 따르면, 이런 지연 기간 동안, 단계(426)에서, 부모 업데이트 서비스 노드(402)에서의 관리자는 단계(406)에서 수신된 소프트웨어 업데 이트가 자식 업데이트 서비스 노드(404)에 분배되도록 허가한다.
단계(428)에서(도 4B를 참조), 자식 업데이트 서비스 노드(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)는 두 부분으로, 즉 업데이트 메타데이터를 획득하기, 및 이하에서 업데이트 페이로드로 지칭되는 업데이트 콘텐츠 또는 파일을 획득하기에 의해, 부모 업데이트 서비스 노드(402)로부터 소프트웨어 업데이트를 획득한다. 본 발명의 추가적인 양상에 따르면, 업데이트 메타데이터는 업데이트를 고유하게 식별하는 업데이트 식별자, 소프트웨어 업데이트에 연관된 개정 번호 정보, 소프트웨어 업데이트가 우선순위, 언어 특정 정보, 다른 소프트웨어 업데이트와의 관계성, 다운로딩 목적지에 대한 업데이트 페이로드의 위치, 설치 핸들러 루틴에 대해 고려되어야 하는지 여부 등을 포함하여, 소프트웨어 업데이트의 관련 양상을 기술하지만 이에만 한정되지는 않는다.
전체 소프트웨어 업데이트를 두 부분으로, 즉 업데이트 메타데이터와 업데이트 페이로드로, 다운로드하는 것이 종종 유익한 몇 가지 이유는 업데이트 페이로드가 업데이트 메타데이터 보다 실제적으로 더 크고, 업데이트 페이로드가 항상 즉시 필요로 되지는 않기 때문인데, 즉, 만약 언젠가 이것이 필요하면, 클라이언트 컴퓨터상에 설치되도록 요구되기 때문이다. 따라서, 본 발명의 일 실시예에 따르면, 업데이트 페이로드가 필요할 때에만, 업데이트 메타데이터와는 별도로 다운로드된다. 당업자는 이런 다운로딩 기술을 레이지 다운로딩(lazy downloading)으로서 또는 JIT 다운로딩으로서 인식할 것이다. 본 발명의 양상에 따르면, 관리자는 JIT 방식으로, 또는 업데이트 메타데이터를 획득하자마자 즉시, 업데이트 페이로드를 획득하도록 업데이트 서비스 노드를 구성할 수 있다. 또한, 다른 실시예에서, 업데이트 메타데이터와 업데이트 페이로드가 공동으로 다운로드될 수 있다.
도 4B에 도시된 바와 같이, 업데이트 리스트에서 식별된 업데이트로, 단계(444)에서, 자식 업데이트 서비스 노드(404)는 업데이트 리스트의 그 고유한 식별자에 따라 "이용가능한" 소프트웨어 업데이트의 메타데이터를 요청한다. 부모 업데이트 서비스 노드(402)와의 대부분의 다른 통신 교환에서와 마찬가지로, 업데이트 요청은 허가 토큰과 함께 제출된다. 예시된 실시예에서, 모든 업데이트 메타데이터는 본 발명의 다른 양상(도시 생략)에 따라 한번 액세스로 다운로드되지만, 업데이트 메타데이터가 둘 이상의 액세스로 다운로드될 수 있음을 인식해야 한다. 예를 들어, 제1 액세스로, 적용 규칙과 다른 소프트웨어 업데이트에 대한 의존성 등의, 소프트웨어 업데이트가 적용가능하고/거나 바람직한지 여부를 판정하는데 필요한 업데이트 메타데이터의 요소만이 먼저 다운로드된다. 업데이트가 적용가능하고/거나 바람직하다고 판정된 이후에, 업데이트 메타데이터의 나머지가 획득될 수 있다. 응답으로, 단계(446)에서, 부모 업데이트 서비스 노드(402)는 소프트웨어 업데이트의 업데이트 메타데이터를 자식 업데이트 서비스 노드(404)에 되돌려주고, 자식 업데이트 서비스 노드는 업데이트 메타데이터를 업데이트 정보 저장소(216)에 순서대로 저장한다.
일 실시예에서, 업데이트 메타데이터는 특정 업데이트에 연관된 고유한 식별자; 업데이트의 크기 등의 업데이트에 대한 기술, 업데이트에 의해 처리될 문제, 개정/앵커 정보 등; 업데이트가 이전 업데이트가 설치될 것을 요구하는지, 업데이 트가 별로로 설치되어야 하는지, 업데이트가 다른 이용가능한 업데이트를 폐기하는지 등의 업데이트 적용 규칙; 최종 사용자 라이센스 동의 데이터; 및 업데이트 페이로드가 부모 업데이트 서비스 노드(402)상에 저장되지 않는 경우 업데이트 페이로드를 액세스하고/거나 위치찾기 하기 위한 URL 정보를 포함하나, 이에만 한정되지는 않는다.
선택적으로, 단계(448)에서, 자식 업데이트 서비스 노드(404)는 부모 업데이트 서비스 노드(402)로부터 업데이트 페이로드를 다운로드하려는 요청을 제출한다. 응답으로, 단계(450)에서, 부모 업데이트 서비스 노드(402)는 업데이트 페이로드를 자식 업데이트 서비스 노드(404)에 되돌려주고, 자식 업데이트 서비스 노드는 이것을 업데이트 콘텐츠 저장소(214)에 순서대로 저장한다.
업데이트 활동이 현재 자식 업데이트 서비스 노드(404)상에서 발생했기 때문에, 단계(452)에서, 자식 업데이트 서비스 노드는 방금 발생한 업데이트 활동을 간략화한 업데이트 보고서를 생성하여 부모 업데이트 서비스 노드(402)에 제출한다. 그 후, 자식 업데이트 서비스 노드(404)는 업데이트 처리가 실행되도록 스케줄되는 그 다음 시점까지(도시 생략), 다시 지연된다.
당업자는 전술된 단계가 예시하기 위한 것이고, 단계 및 상황들의 일 특정 예시적인 세트를 반영하고 있음을 인식할 것이다. 분명히, 다른 단계가 또한 특정한 상세 및 상황에 따라 발생할 수 있고, 이는 전술된 단계에 다른 변형을 가져올 것이다. 또한, 자식 업데이트 서비스 노드(404)는 부모 업데이트 서비스 노드(402)로부터 "이용가능한" 최신 소프트웨어 업데이트를 획득하면서, 이 자식 업 데이트 서비스 노드는 자신의 자식 업데이트 서비스 노드로부터의 업데이트 요청을 처리할 수 있음을 이해해야 한다. 따라서, 상기 일련의 단계는 예시적인 것으로만 인식해야 하고, 본 발명을 제한하는 것으로서 인식해서는 안 된다.
도 5는 도 1의 회사 업데이트 서비스 노드(104) 등의 자식 업데이트 서비스 노드상에서 실행되는 그 부모 업데이트 서비스 노드로부터 업데이트를 주기적으로 획득하기 위한 예시적인 루틴(500)을 도시하는 흐름도이다. 블록(502)에서 시작하여, 자식 업데이트 서비스 노드는 부모 업데이트 서비스 노드로부터 "이용가능한" 업데이트의 동기화된 업데이트 리스트를 획득한다. 부모 업데이트 서비스 노드로부터 "이용가능한" 업데이트의 동기화된 업데이트 리스트는 도 6에 관련하여 하기에 기술되어 있다.
도 6은 도 5의 예시적인 루틴(500)에 이용되기 적합하며, 부모 업데이트 서비스 노드로부터 "이용가능한" 업데이트의 동기화된 업데이트 리스트를 획득하기 위한 예시적인 서브루틴(600)의 흐름도이다. 블록(602)에서 시작하여, 도 4A 및 도 4B에 관련하여 이전에 언급된 바와 같이, 자식 업데이트 서비스 노드는 부모 업데이트 서비스 노드에 의한 자신의 인증 및 허가를 구하고, 정식 인증 및 허가에 응답하여, 허가 토큰을 수신한다. 블록(604)에서, 허가 토큰에 관련하여, 자식 업데이트 서비스 노드는 부모 업데이트 서비스 노드와의 통신 매개변수를 확립한다. 통신 매개변수를 확립함으로써, 부모와 자식 업데이트 서비스 노드들은 부모와 자식 모두가 이해하는 공통 베이스(base)를 정식으로 확립하게 된다. 통신 매개변수는 통신 업데이트 프로토콜 또는 버전; 및 제품 그푸핑(grouping) 등을 포함하나, 이에만 한정되지는 않는다.
부모 업데이트 서비스 노드와의 통신 매개변수를 확립한 이후에, 블록(606)에서, 자식 업데이트 서비스 노드는 부모 업데이트 서비스 노드가 업데이트를 제공/분배하는 소프트웨어 제품을 기술하고 있는 제품 업데이트 카탈로그를 획득한다. 블록(608)에서, 자식 업데이트 서비스 노드는 현재 업데이트가 요구되는 이들 소프트웨어 제품의 업데이트를 선택한다. 블록(610)에서, 자식 업데이트 서비스 노드는 자식 업데이트 서비스 노드상에서의 기존의 업데이트와 개정을 식별하는, 선택된 소프트웨어 제품에 연관된 "앵커"와, 허가 토큰을 포함하는 업데이트 동기화 요청을 부모 업데이트 서비스 노드에 제출한다.
업데이트 동기화 요청에 응답하여, 블록(612)에서, 자식 업데이트 서비스 노드는 현재 자식 업데이트 서비스 노드상에 저장된 것이 무엇인지에 따라, 부모 업데이트 서비스 노드상에서 "이용가능한" 소프트웨어 업데이트에 의해 동기화되는 업데이트 리스트를 부모 업데이트 서비스 노드로부터 획득한다. 전술된 바와 같이, 업데이트 리스트는 자식 업데이트 서비스 노드에서 "이용가능한", 부모 업데이트 서비스 노드상에서의 이들 소프트웨어 업데이트를 고유한 식별자에 의해 식별한다. 그 후, 예시적인 서브루틴(600)이 종료된다.
도 5를 다시 참조해보면, 부모 업데이트 서비스 노드로부터 동기화된 업데이트 리스트를 획득한 이후에, 판정 블록(504)에서, 임의 소프트웨어 업데이트가 현재 부모 업데이트 서비스 노드로부터 다운로드되도록 "이용가능한지"에 대한 판정이 행해진다. 이 판정은 임의 업데이트 식별자가 동기화된 업데이트 리스트에 나 열되어 존재하는지에 따라 행해진다. 다운로드되는 현재 "이용가능한" 소프트웨어 업데이트가 존재하지 않을 경우, 예시적인 루틴(500)은 지연 블록(510)으로 진행하고, 여기서 예시적인 루틴은 다음 업데이트 주기가 발생할 때까지 지연/비활성화된다. 또한, 부모 업데이트 서비스 노드로부터 다운로드되는 "이용가능한" 업데이트가 존재하는 경우, 블록(506)에서, 자식 업데이트 서비스 블록은 부모 업데이트 서비스 노드로부터 업데이트를 획득한다. 부모 업데이트 서비스 노드로부터 "이용가능한" 업데이트를 획득하기는 도 7에 관련하여 하기에 기술되어 있다.
도 7은 도 5의 예시적인 루틴에 이용되기 적합하며, 부모 업데이트 서비스 노드로부터 "이용가능한" 소프트웨어 업데이트를 획득하기 위한 예시적인 서브루틴(700)의 흐름도이다. 블록(702)에서 시작하여, 업데이트 리스트에서 제1 업데이트 식별자를 선택한다. 블록(704)에서, 자식 업데이트 서비스 노드는 부모 업데이트 서비스 노드로부터 선택된 업데이트 식별자에 대응하는 메타데이터를 획득하고, 이를 업데이트 정보 저장소(216)에 저장한다.
일 실시예에 따르면, 블록(706)에서, 자식 업데이트 서비스 노드는 부모 업데이트 서비스 노드로부터 선택된 업데이트 식별자에 대응하는 업데이트 페이로드를 획득하고, 그 업데이트 페이로드를 업데이트 콘텐츠 저장소(214)에 저장한다. 선택적으로, 업데이트 콘텐츠가 자식 업데이트 서비스 노드에 즉시 다운로드될 필요는 없다. 전술된 바와 같이, 자식 업데이트 서비스 노드는 업데이트를 부모 업데이트 서비스 노드로부터 JIT 방식으로 다운로드하도록 선택적으로 구성될 수 있다. 이런 선택적인 처리에 따라, 도 7에 도시된 바와 같이, 블록(704)에서 블 록(706)까지 진행하기 보다는, 예시적인 서브루틴(700)이 선택적으로 블록(704)에서 블록(708)까지 진행할 수 있다.
판정 블록(708)에서, 선택된 업데이트 식별자의 업데이트 메타데이터와 선택적으로 업데이트 페이로드를 획득한 이후에, 업데이트 리스트에 더 이상의 추가적인 업데이트 식별자가 존재하는지 여부에 대한 판정이 행해진다. 추가적인 업데이트 식별자가 존재하면, 블록(710)에서, 업데이트 리스트에서 다음 업데이트 식별자가 선택되고, 서브루틴(700)은 추가 처리를 위해 블록(704)으로 되돌아간다. 루틴(700)은, 판정 블록(708)에서 업데이트 리스트에 더 이상의 업데이트 식별자가 존재하지 않는다고 판정할 때까지, 계속되고, 그 뒤에 예시적인 서브루틴(700)이 종료된다.
도 5로 다시 되돌아가 보면, 부모 업데이트 서비스 노드로부터 "이용가능한" 업데이트를 획득한 이후에, 블록(508)에서, 자식 업데이트 서비스 노드는 업데이트 활동을 부모 업데이트 서비스 노드에 보고한다. 그 후, 지연 블록(510)에서, 예시적인 루틴(500)은 다음 업데이트 주기 때까지 소정의 시간 동안 지연/비활성화되고, 그런 다음 상기 식별된 업데이트 과정을 반복하기 위해 블록(502)으로 진행한다.
도 5에 도시된 바와 같이, 판정 블록(504)에서, 부모 업데이트 서비스 노드상에서 "이용가능한" 업데이트가 존재하지 않는 경우라도, 자식 업데이트 서비스 노드는 그 업데이트 활동을 부모 업데이트 서비스 노드에 보고하도록 선택적으로 구성될 수 있다. 이런 다른 구성에 따르면, 이용가능한 업데이트가 존재하지 않을 경우, 예시적인 루틴(500)은 업데이트 활동을 보고하기 위해 블록(508)으로 진행할 수 있다.
도 8은 부모 업데이트 서비스 노드상에 구현되며, 자식 업데이트 서비스 노드로부터의 업데이트 동기화 요청에 응답하여 "이용가능한" 업데이트를 식별하는 동기화된 업데이트 리스트를 생성하기 위한 예시적인 루틴(800)의 흐름도이다. 블록(802)에서 시작하여, 부모 업데이트 서비스 노드는 "이용가능한" 업데이트를 식별하는 업데이트 리스트에 대한 업데이트 동기화 요청을 자식 업데이트 서비스 노드로부터 수신한다. 블록(804)에서, 업데이트 동기화 요청에서 식별된 제1 소프트웨어 제품이 선택된다.
판정 블록(806)에서, 식별된 소프트웨어 제품에 대한 이용가능한 업데이트가 존재하는지에 대한 판정이 행해진다. 이 판정은 업데이트 정보 저장소(216)에 저장된 소프트웨어 제품의 메타데이터에 따라, 자식 업데이트 서비스 노드에 의해 제공된 업데이트 앵커에 따라, 자식 업데이트 서비스 노드가 속하는 그룹에 관련된 분배 규칙에 따라 행해진다. 이 판정에 따라, "이용가능한" 업데이트가 존재하는 경우, 블록(808)에서, 그 "이용가능한" 업데이트에 관련된 고유한 업데이트 식별자가 업데이트 리스트에 기입된다. "이용가능한" 업데이트의 고유한 업데이트 식별자를 업데이트 리스트에 기입한 이후에, 판정 블록(810)에서, 업데이트 동기화 요청에서 식별되는 더 이상의 추가적인 소프트웨어 제품이 존재하는지에 대한 판정이 행해진다. 업데이트 동기화 요청에서 추가적인 업데이트 소프트웨어 제품이 존재하는 경우, 블록(814)에서, 부모 업데이트 서비스 노드는 업데이트 동기화 요청에 서 식별된 다음 소프트웨어 제품을 선택하고, 선택된 소프트웨어 업데이트에 대해 "이용가능한" 업데이트가 존재하는지 판정하기 위해 판정 블록(806)으로 되돌아간다. 또한, 업데이트 동기화 요청에서 식별된 소프트웨어 제품이 더 이상 존재하지 않을 경우, 블록(814)에서, 업데이트 리스트를 자식 업데이트 서비스 노드에 되돌려준다. 그 후, 예시적인 서브루틴(800)은 종료된다.
전술된 바와 같이, 업데이트 서비스 노드는 관리 사용 인터페이스(218)를 통해, 관리 API(212)에 의해 관리되거나, 일부 다른 장착된 유사 모듈에 의해 관리된다. 관리 API(212)가 동작하는 방법을 더 잘 이해하기 위해, 도 9는 소프트웨어 업데이트를 클라이언트 컴퓨터에 분배하도록 업데이트 서비스 노드를 구성하는 것에 관련하여 관리 API를 이용하는 방법을 예시하는 도면이다.
도 9에 도시된 바와 같이, 관리자는 관리 API를 사용하여 서브스크립션(904) 및 그룹(906)을 생성한다. 업데이트 서비스 노드는, 업데이트 처리(908) 동안, 클라이언트 컴퓨터(912 내지 922) 등의 클라이언트 컴퓨터에 업데이트를 분배하기 위해, 업데이트 서비스 노드에 이용가능한 업데이트(902) 뿐만 아니라, 서브스크립션(904) 및 그룹(906)을 이용한다.
당업자가 인식하는 바와 같이, 관리자는 업데이트의 클래스뿐만 아니라 특정 제품 또는 제품군에 대한 업데이트에 대한 서브스크립션을 생성한다. 예를 들어, 제품은 마이크로소프트사의 인터넷 익스플로러 제품일 수 있고, 서브스크립션은 이용가능한 업데이트를 기다리고 있는 이 제품을 나타낼 것이다. 마찬가지로, 제품군은 전형적으로 마이크로소프트사의 오피스 등의 여러 제품을 제품군으로서 나타 낼 것이며, 수많은 식별가능한 제품들을 포함한다. 서브스크립션은 또한 전형적으로 클라이언트 컴퓨터상에 다운로드되도록 승인된 업데이트의 타입을 식별한다. 예를 들어, 업데이트의 타입은 결정적인, 엄격한, 일반적인 등일 수 있다.
본 발명의 일 실시예에 따르면, 클라이언트 컴퓨터는 그룹으로 조직화되고, 서브스크립션 및 업데이트는 그룹에 적용된다. 실제 실시예에서, 각 클라이언트 컴퓨터는 두 그룹, 즉 전체 컴퓨터 그룹과 다른 하나의 그룹에 속한다. 이 실제 실시예에 따르면, 업데이트 서비스 노드는 전체 컴퓨터 그룹과 다른 하나의, 지정되지 않은 컴퓨터 그룹을 규정했다. 관리 API(212)를 통해, 관리자는 임의 개수의 다른 그룹을 규정하고, 클라이언트 컴퓨터를 그룹에 지정하는데 자유롭게 된다. 클라이언트 컴퓨터를 그룹에 지정하는데 실패하면, 그 클라이언트 컴퓨터는 지정되지 않은 그룹에 남게 된다. 요는, 이 실시예에 따르면, 클라이언트 컴퓨터가 전체 컴퓨터 그룹과 다른 하나의 그룹에 속한다는 것이다. 그룹은 임의 개수의 클라이언트 컴퓨터를 포함할 수 있다. 소프트웨어 업데이트를 적용하기 위한, 클라이언트 컴퓨터의 그룹은 박스(910, 924, 및 926)으로 도 9에 예시되어 있다.
실제 실시예에 따르면, 관리 API(212)는 마이크로소프트사의 윈도우 소프트웨어 업데이트 서비스가 구성 및 관리되는 인터페이스이다. 이 실시예에서, 관리 API(212)는 일반적으로 인터페이스 객체 IUpdateServer를 통해 액세스되거나 구현된다. IUpdateSever 인터페이스 객체의 실제 실시예의 설명이 표 1로서 이 섹션 마지막에 나열된다. 이 IUpdateServer 인터페이스 객체는 2004년 3월 12일 출원된 미국 가출원 제60/553,042호의 일부로서 포함된 관리 API 문서의 일부이고, 그 전 체 내용이 참조로서 본원에 인용된다. 그러나, 표 1에서 식별된 다양한 인터페이스 호출이 도 10에 관련하여 하기에 일반적으로 기술되어 있다.
도 10은 업데이트 서비스 노드상에서의 소프트웨어 업데이트의 분배를 관리하기 위한 소정의 관리 API 호출을 예시하는 블록도이다. IUpdateServer(1002) 객체에 대한 액세스로, 호출자는 업데이트 서비스 노드 구성 정보(1004), 현재 서브스크립션 정보(1006), 현재 승인 규칙(1008), 업데이트 서비스 노드 상태 정보(1010), 업데이트들 획득(get updates)(1012), 클라이언트 컴퓨터들 획득(get client computers)(1014), 및 그룹들 획득(get groups)(1016)을 획득하기 위한 인터페이스 호출을 작성할 수 있다.
구성 정보 인터페이스 호출(1004)은 이용가능한 언어, 부모 업데이트 서비스 노드 누구인가, 및 그 부모 업데이트 서비스 노드의 위치, 프록시 서버 및 주소, 업데이트 서비스 노드가 그 부모 업데이트 서비스 노드와 업데이트를 동기화하는 방식(mode)을 포함하여 업데이트 서비스 노드의 구성가능한(및 판독가능한) 값에 대한 액세스를 제공하나, 이에만 한정되지는 않는다. 실제 실시예에서, 첨부된 부록에 기술된 바와 같이, 구성 정보 인터페이스 호출(1004)은 IUpdateServer 객체상의 "GetConfiguration"이고, 이는 업데이트 서비스 노드의 IConfiguration 인터페이스 객체의 인스턴스를 되돌려준다. IConfiguration 인터페이스 객체는 상기 가출에 포함된 통합 API에 보다 상세히 기술되어 있다.
서브스크립션 정보 인터페이스 호출(1006)은 다음 서브스크립션 시도(예컨대, 특정 업데이트를 클라이언트 컴퓨터에 다운로딩하기)가 완료될 때의 최신 서브 스크립션 시도의 상태, 서브스크립션 동기화 빈도 등을 포함하여 서브스크립션 정보에 대한 액세스를 제공하나, 이에만 한정되지는 않는다. 실제 실시예에서, 서브스크립션 정보를 획득하기 위한 적어도 2가지 다른 인터페이스 호출이 존재한다. IUpdateServer 객체상의 "GetSubscription" 인터페이스 호출은 업데이트 서비스 노드상에서의 특정 서브스크립션에 대응하는 ISubscription 인터페이스 객체를 되돌려주고, "GetSubscription" 인터페이스 호출은 ISubscription 인터페이스 객체의 컬렉션을 되돌려준다. 또한, 서브스크립션은 "CreateSubscription" 인터페이스 호출을 이용하여 생성되고, 이는 업데이트 서비스 노드상에 비어 있는 서브스크립션을 생성한다. ISubscription 인터페이스 객체에 대한 상세는 상기 가출원에 포함된 API에 기술되어 있다.
업데이트 서비스 노드 상태 인터페이스 호출(1010)은 현재 이용되는 업데이트, 이용가능한 업데이트 등의 업데이트 서비스 노드 상태에 대한 액세스를 제공하나, 이에만 한정되지는 않는다. 실제 실시예에서, "GetUpdateSummary" 인터페이스 호출은 업데이트 서비스 노드의 총 업데이트 요약 정보를 기술하는 요약 컬렉션 객체를 되돌려준다. 이 인터페이스 호출에 관한 상세는 상기 가출원에 포함된 API에 기술되어 있다.
업데이트들 획득(get updates) 인터페이스 호출(1012)은 이용가능한 소프트웨어 업데이트에 관한 정보의 액세스를 제공한다. 보다 구체적으로는, 인터페이스 호출이 시스템에서 이용가능한 모든 소프트웨어 업데이트에 대한 액세스를 제공한다. 실제 실시예에서, 업데이트 정보를 획득하기 위한 다수의 인터페이스 호출이 존재한다. "GetUpdate" 인터페이스 호출은 시스템상의 특정 업데이트에 관한 정보를 제공하는 IUpdate 객체를 되돌려준다. 또한, "GetUpdates" 인터페이스 호출은 시스템에서 이용가능한 IUpdate 객체들의 컬렉션을 되돌려준다. 이들 인터페이스 호출에 관한 추가적인 상세는 상기 가출원에 포함된 API에 제공되어 있다.
컴퓨터들 획득(get computers) 인터페이스 호출(1014)은 업데이트 서비스 노드에 연관된 클라이언트 컴퓨터들의 액세스를 제공한다. 실제 실시예에서, 다양한 클라이언트 컴퓨터에 관한 정보를 액세스하기 위한 적어도 2가지 인터페이스 호출은 인터페이스 호출에서 식별되는 클라이언트 컴퓨터에 대응하는 IComputer 객체를 되돌려주는 "GetComputer" 인터페이스 호출과, 업데이트 서비스 노드에 연관된 모든 클라이언트 컴퓨터들을 포함하는 컬렉션인 IComputer 객체들의 컬렉션을 되돌려주는 "GetComputers" 인터페이스 호출을 포함하나, 이에만 한정되지는 않는다. 상기에서, IUpdateServer상의 이런 인터페이스 호출들에 관한 추가적인 상세는 상기 가출원에 포함된 API에 기술되어 있다.
그룹 획득(get group) 인터페이스 호출(1016)은 업데이트 서비스 노드상에 규정된 그룹들에 대한 액세스를 제공한다. 전술된 바와 같이, 실제 실시예에서, 각 클라이언트 컴퓨터는 전체 컴퓨터 그룹과 다른 하나의 그룹에 속한다. 클라이언트 컴퓨터를 그룹에 지정하지 않는 경우, 해당 클라이언트 컴퓨터는 지정되지 않은 그룹을 디폴트로 가진다. 적어도 이런 실제 실시예에서, 인터페이스 호출에 전달되는 그룹 식별자에 대응하는 ITargetGroup 객체를 되돌려주는 "GetTargetGroup" 인터페이스 호출과, 업데이트 서비스 노드상에 규정된 전체 그룹에 대응하는 ITargetGroup 객체들의 컬렉션을 되돌려주는 "GetTargetGroups" 인터페이스 호출을 포함하여, 여러 인터페이스 호출이 이용가능하나, 이에만 한정되지는 않는다.
당업자는 인터페이스 호출의 일부가 기술되어 있지만, 그것들은 인터페이스 호출을 총망라하는 세트가 아님을 이해할 것이다. 사실, 첨부된 부록에 예시되어 있는 바와 같이, 관리 API의 실제 실시예가 수많은 인터페이스 호출을 포함하고, 그들 중 대부분은 구체적으로 기술되어 있지 않다.
이하의 표, 즉 표 1에 관하여, 축약어 WUS는 Windows Update Server의 두문자어이다.
Figure 112006065734577-PCT00001
Figure 112006065734577-PCT00002
Figure 112006065734577-PCT00003
Figure 112006065734577-PCT00004
Figure 112006065734577-PCT00005
본 발명의 바람직한 실시예를 포함하는 다양한 실시예가 예시 및 기술되었지만, 다양한 변경이 본 발명의 정신 및 범위 내에서 본원에 행해질 수 있음을 인식할 것이다.
독점적인 속성 또는 특권을 주장하는 본 발명의 실시예는 이하에 정의된다.

Claims (18)

  1. 업데이트 서비스 노드상에서의 소프트웨어 업데이트의 분배를 관리하기 위한 애플리케이션 프로그래밍 인터페이스를 가지는 업데이트 서비스 노드로서, 상기 애플리케이션 프로그래밍 인터페이스는
    소프트웨어 업데이트를 저장하기 위한 업데이트 저장소,
    상기 업데이트 서비스 노드가 통신 네트워크를 통해 부모 업데이트 서비스 노드로부터 소프트웨어 업데이트를 획득하고, 또 상기 업데이트 서비스 노드가 상기 통신 네트워크를 통해 소프트웨어 업데이트를 자식 업데이트 서비스 노드에 분배하도록 해주는 업데이트 웹 서비스, 및
    관리자가 클라이언트 컴퓨터와 자식 업데이트 서비스 노드로의 소프트웨어 업데이트 분배에 대한 제어를 설정하도록 해주는 관리 애플리케이션 프로그래밍 인터페이스(API)-상기 관리 API는 상기 관리자가 상기 규칙을 확립하도록 해주는 복수의 인터페이스 호출을 드러내는 객체임-
    를 포함하는 업데이트 서비스 노드.
  2. 제1항에 있어서,
    상기 관리 API는 소프트웨어 업데이트 관리 구성 값을 판독하여 상기 업데이트 서비스 노드에 기입하기 위한 구성 인터페이스 객체를 되돌려주는 구성 획득(get configuration) 인터페이스 호출을 드러내는 업데이트 서비스 노드.
  3. 제2항에 있어서,
    상기 구성 인터페이스 객체는 IConfiguration 인터페이스 객체인 업데이트 서비스 노드.
  4. 제2항에 있어서,
    상기 관리 API는 서브스크립션 획득(get subscription) 인터페이스 호출을 드러내며, 상기 서브스크립션 획득 인터페이스 호출은 이 호출에 전달되는 서브스크립션 식별자에 대응하는 서브스크립션 인터페이스 객체를 되돌려주는 업데이트 서비스 노드.
  5. 제4항에 있어서,
    상기 서브스크립션 인터페이스 객체는 ISubscription 인터페이스 객체인 업데이트 서비스 노드.
  6. 제4항에 있어서,
    상기 관리 API는 상기 업데이트 서비스 노드상에 규정된 서브스크립션 컬렉션 인터페이스 객체를 되돌려주는 서브스크립션들 획득(get subscriptions) 인터페이스 호출을 드러내는 업데이트 서비스 노드.
  7. 제4항에 있어서,
    상기 관리 API는 업데이트 획득(get update) 인터페이스 호출을 드러내며, 상기 업데이트 획득 인터페이스 호출은 이 호출에 전달되는 업데이트 식별자에 대응하는 업데이트 인터페이스 객체를 되돌려주는 업데이트 서비스 노드.
  8. 제7항에 있어서,
    상기 업데이트 인터페이스 객체는 IUpdate 인터페이스 객체인 업데이트 서비스 노드.
  9. 제7항에 있어서,
    상기 관리 API는 업데이트들 획득(get updates) 인터페이스 호출을 드러내며, 상기 업데이트들 획득 인터페이스 호출은 이 호출에 전달되는 값에 대응하는 업데이트 인터페이스 객체들을 포함하는 업데이트 컬렉션 객체를 되돌려주는 업데이트 서비스 노드.
  10. 제9항에 있어서,
    상기 업데이트들 획득(get updates) 인터페이스 호출에 전달되는 상기 값은 배치된(deployed) 상태 객체를 포함하고, 은폐된 업데이트 불(Boolean) 값을 배제하는 업데이트 서비스 노드.
  11. 제9항에 있어서,
    상기 관리 API는 컴퓨터 획득(get computer) 인터페이스 호출을 드러내며, 상기 컴퓨터 획득 인터페이스 호출은 이 호출에 식별되었던, 또한 상기 업데이트 서비스 노드에 연관된 클라이언트 컴퓨터에 대응하는 클라이언트 컴퓨터 객체를 되돌려주는 업데이트 서비스 노드.
  12. 제11항에 있어서,
    상기 클라이언트 컴퓨터 객체는 IComputer 객체인 업데이트 서비스 노드.
  13. 제11항에 있어서,
    상기 관리 API는 상기 업데이트 서비스 노드에 연관된 클라이언트 컴퓨터들에 대응하는 클라이언트 컴퓨터 객체들을 포함하는 컴퓨터 컬렉션 객체를 되돌려주는 컴퓨터들 획득(get computers) 인터페이스 호출을 드러내는 업데이트 서비스 노드.
  14. 제13항에 있어서,
    상기 관리 API는 그룹 획득(get group) 인터페이스 호출을 드러내며, 상기 기룹 획득 인터페이스 호출은 이 호출에서 식별되었던 타겟 그룹 객체를 되돌려주는 업데이트 서비스 노드.
  15. 제14항에 있어서,
    상기 관리 API는 상기 업데이트 서비스 노드상에서의 타겟 그룹들에 대응하는 타겟 그룹 객체들을 포함하는 타겟 그룹 컬렉션 객체를 되돌려주는 그룹들 획득(get groups) 인터페이스 객체를 드러내는 업데이트 서비스 노드.
  16. 제1항에 있어서,
    상기 관리 API는 IUpdateServer 인터페이스 객체인 업데이트 서비스 노드.
  17. 업데이트 서비스 노드상에서의 소프트웨어 업데이트의 분배를 관리하기 위한 애플리케이션 프로그래밍 인터페이스(API)로서,
    소프트웨어 업데이트 관리 구성 값을 판독하여 상기 업데이트 서비스 노드에 기입하기 위한 구성 인터페이스 객체를 되돌려주는 구성 획득(get configuration) 인터페이스 호출,
    상기 업데이트 서비스 노드상에 규정된 서브스크립션 인터페이스 객체를 되돌려주는 서브스크립션 획득(get subscription) 인터페이스 호출,
    업데이트 인터페이스 객체를 되돌려주는 업데이트 획득(get update) 인터페이스 호출-상기 업데이트 인터페이스 객체는 업데이트 획득 인터페이스 호출에 전달되는 업데이트 식별자에 대응함-,
    업데이트 인터페이스 객체들을 포함하는 업데이트 컬렉션 객체를 되돌려주는 업데이트들 획득(get updates) 인터페이스 호출-상기 업데이트 인터페이스 객체는 업데이트들 획득 인터페이스 호출에 전달되는 값들에 대응함-,
    클라이언트 컴퓨터 객체를 되돌려주는 컴퓨터 획득(get computer) 인터페이스 호출-상기 클라이언트 컴퓨터 객체는 컴퓨터 획득 인터페이스 호출에서 식별되었던, 또한 상기 업데이트 서비스 노드에 연관된 클라이언트 컴퓨터에 대응함-,
    클라이언트 컴퓨터 객체들을 포함하는 컴퓨터 컬렉션 객체를 되돌려주는 컴퓨터들 획득(get computers) 인터페이스 호출-상기 클라이언트 컴퓨터 객체는 상기 업데이트 서비스 노드에 연관된 클라이언트 컴퓨터들에 대응함-,
    그룹 획득(get group) 인터페이스 호출에 식별되었던 타겟 그룹 객체를 되돌려주는 그룹 획득 인터페이스 호출, 및
    타겟 그룹 객체들을 포함하는 타겟 그룹 컬렉션 객체를 되돌려주는 get groups 인터페이스 호출-상기 타겟 그룹 객체는 상기 업데이트 서비스 노드상에서의 타겟 그룹들에 대응함-
    을 포함하는 애플리케이션 프로그래밍 인터페이스.
  18. 소프트웨어 업데이트를 분배하기 위한 소프트웨어 업데이트 분배 시스템으로서,
    업데이트 서비스 노드와,
    상기 업데이트 서비스 노드에 연관된 관리 애플리케이션 프로그래밍 인터페이스(API)를 포함하고, 상기 관리 API는 소프트웨어 업데이트의 분배를 제어하기 위한 복수의 인터페이스 호출을 드러내는 인터페이스 객체이며, 상기 관리 API는
    소프트웨어 업데이트 관리 구성 값을 판독하여 상기 업데이트 서비스 노드에 기입하기 위한 구성 인터페이스 객체를 되돌려주는 구성 획득(get configuration) 인터페이스 호출,
    상기 업데이트 서비스 노드상에 규정된 서브스크립션 인터페이스 객체를 되돌려주는 서브스크립션 획득(get subscription) 인터페이스 호출,
    업데이트 인터페이스 객체를 되돌려주는 업데이트 획득(get update) 인터페이스 호출-상기 업데이트 인터페이스 객체는 업데이트 획득 인터페이스 호출에 전달되는 업데이트 식별자에 대응함-,
    업데이트 인터페이스 객체들을 포함하는 업데이트 컬렉션 객체를 되돌려주는 업데이트들 획득(get updates) 인터페이스 호출-상기 업데이트 인터페이스 객체는 업데이트들 획득 인터페이스 호출에 전달되는 값들에 대응함-,
    클라이언트 컴퓨터 객체를 되돌려주는 컴퓨터 획득(get computer) 인터페이스 호출-상기 클라이언트 컴퓨터 객체는 컴퓨터 획득 인터페이스 호출에서 식별되었던, 또한 상기 업데이트 서비스 노드에 연관된 클라이언트 컴퓨터에 대응함-,
    클라이언트 컴퓨터 객체들을 포함하는 컴퓨터 컬렉션 객체를 되돌려주는 get computers 인터페이스 호출-상기 클라이언트 컴퓨터 객체는 상기 업데이트 서비스 노드에 연관된 클라이언트 컴퓨터들에 대응함-,
    그룹 획득(get group) 인터페이스 호출에 식별되었던 타겟 그룹 객체를 되돌려주는 그룹 획득(get group) 인터페이스 호출, 및
    타겟 그룹 객체들을 포함하는 타겟 그룹 컬렉션 객체를 되돌려주는 get groups 인터페이스 호출-상기 타겟 그룹 객체는 상기 업데이트 서비스 노드상에서의 타겟 그룹들에 대응함-
    을 포함하는 소프트웨어 업데이트 분배 시스템.
KR1020067018656A 2004-03-12 2005-03-11 업데이트 분배 시스템에서 소프트웨어 업데이트의 분배를관리하기 위한 애플리케이션 프로그래밍 인터페이스 KR101086122B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US55304204P 2004-03-12 2004-03-12
US60/553,042 2004-03-12
PCT/US2005/008111 WO2005089209A2 (en) 2004-03-12 2005-03-11 Application programming interface for administering the distribution of software updates in an update distribution system

Publications (2)

Publication Number Publication Date
KR20070003926A true KR20070003926A (ko) 2007-01-05
KR101086122B1 KR101086122B1 (ko) 2011-11-25

Family

ID=34994199

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067018656A KR101086122B1 (ko) 2004-03-12 2005-03-11 업데이트 분배 시스템에서 소프트웨어 업데이트의 분배를관리하기 위한 애플리케이션 프로그래밍 인터페이스

Country Status (10)

Country Link
US (1) US8245218B2 (ko)
EP (1) EP1723541B1 (ko)
JP (1) JP4916432B2 (ko)
KR (1) KR101086122B1 (ko)
CN (2) CN101902494B (ko)
AU (1) AU2005222887B2 (ko)
BR (1) BRPI0508244B1 (ko)
CA (1) CA2555446C (ko)
RU (1) RU2386218C2 (ko)
WO (1) WO2005089209A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100825322B1 (ko) * 2007-01-31 2008-04-28 엘에스산전 주식회사 듀얼 포트 이더넷 상의 다수의 제어 모듈용 펌웨어 동시 업데이트 장치 및 업 데이트 방법
KR20180007483A (ko) * 2016-07-13 2018-01-23 (주)누리봄 단말 Native UI를 사용하는 동적 UI 배포 시스템 및 방법

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9134989B2 (en) 2002-01-31 2015-09-15 Qualcomm Incorporated System and method for updating dataset versions resident on a wireless device
US9092286B2 (en) * 2002-12-20 2015-07-28 Qualcomm Incorporated System to automatically process components on a device
US8626146B2 (en) 2003-10-29 2014-01-07 Qualcomm Incorporated Method, software and apparatus for performing actions on a wireless device using action lists and versioning
US7634548B2 (en) * 2005-04-02 2009-12-15 Microsoft Corporation Distributed service deliver model
US20060224623A1 (en) * 2005-04-02 2006-10-05 Microsoft Corporation Computer status monitoring and support
US8533700B1 (en) 2006-04-11 2013-09-10 Open Invention Networks, Llc Workstation uptime, maintenance, and reboot service
US8762418B1 (en) * 2006-05-31 2014-06-24 Oracle America, Inc. Metadata that allows refiltering and data reclassification without accessing the data
US8935380B2 (en) * 2006-09-22 2015-01-13 Oracle America, Inc. Automated product knowledge catalog
US8196134B2 (en) 2007-02-08 2012-06-05 Microsoft Corporation Network service for a software change catalog
JP4946592B2 (ja) 2007-04-20 2012-06-06 株式会社日立製作所 ダウンロード装置および方法、コンテンツ送受信システムおよび方法
US8762984B2 (en) 2007-05-31 2014-06-24 Microsoft Corporation Content distribution infrastructure
JP5065482B2 (ja) 2007-06-19 2012-10-31 クゥアルコム・インコーポレイテッド 無線環境においてデータセットを同期するための方法および機器
EP2015173A1 (en) * 2007-07-05 2009-01-14 Hewlett-Packard Development Company, L.P. Method of maintaining software updates by means of dependency expressions
JP4930279B2 (ja) * 2007-08-22 2012-05-16 日本電気株式会社 サーバ、構成情報配布元配布認証方法、エージェント、構成情報配布先配布認証方法、プログラムおよび構成情報配布システム
US20090327288A1 (en) * 2008-06-29 2009-12-31 Microsoft Corporation Content enumeration techniques for portable devices
JP4826834B2 (ja) * 2008-08-07 2011-11-30 日本電気株式会社 通信システム、接続装置、情報通知方法、プログラム
US9031987B2 (en) * 2009-09-30 2015-05-12 Red Hat, Inc. Propagation of data changes in distribution operations in hierarchical database
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
US8996453B2 (en) 2009-09-30 2015-03-31 Red Hat, Inc. Distribution of data in a lattice-based database via placeholder nodes
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
US8875038B2 (en) * 2010-01-19 2014-10-28 Collarity, Inc. Anchoring for content synchronization
US9110690B2 (en) * 2010-04-28 2015-08-18 General Electric Company Systems, methods, and apparatus for deploying application code change configurations for multiple target controllers
US8898658B2 (en) * 2010-06-29 2014-11-25 Cisco Technology, Inc. Dynamic web resource provisioning
US9118505B2 (en) * 2010-11-05 2015-08-25 Blackberry Limited System and method for controlling updates on a mobile device
US9423920B2 (en) * 2010-12-22 2016-08-23 Sap Se System and method for modifying user interface elements
JP5655685B2 (ja) * 2011-04-14 2015-01-21 カシオ計算機株式会社 端末装置及びプログラム
KR101907009B1 (ko) * 2011-10-21 2018-10-12 삼성전자주식회사 디지털 상품을 설치하기 위한 장치 및 방법
US9032385B2 (en) 2011-12-28 2015-05-12 Lg Electronics Inc. Mobile terminal and control method thereof
US9262149B2 (en) 2012-04-12 2016-02-16 International Business Machines Corporation Managing incrementally applied system updates
US8667486B2 (en) * 2012-06-26 2014-03-04 Google Inc. Automatic provisioning of a software platform to a device ecosystem
US9110755B2 (en) * 2012-08-10 2015-08-18 Microsoft Technology Licensing, Llc Aggregation of update sets
CN103020180A (zh) * 2012-11-28 2013-04-03 北京奇虎科技有限公司 一种基于控制节点部署程序的方法和装置
WO2014094875A1 (en) * 2012-12-21 2014-06-26 Telefonaktiebolaget L M Ericsson (Publ) Security information for updating an authorization database in managed networks
US10362112B2 (en) * 2014-03-06 2019-07-23 Verizon Patent And Licensing Inc. Application environment for lighting sensory networks
CN104811772A (zh) * 2015-03-17 2015-07-29 四川长虹电器股份有限公司 第三方视频内容整合推送的方法
US10725758B2 (en) * 2015-03-17 2020-07-28 Automotive Data Solutions, Inc. Telematics system
US10362113B2 (en) * 2015-07-02 2019-07-23 Prasenjit Bhadra Cognitive intelligence platform for distributed M2M/ IoT systems
US10250437B2 (en) * 2015-10-29 2019-04-02 Arista Networks, Inc. Method and system for configuring network devices
US10432461B2 (en) 2015-12-04 2019-10-01 T-Mobile Usa, Inc. Peer-to-peer distribution of radio protocol data for software defined radio (SDR) updates
RU2649292C2 (ru) * 2016-06-24 2018-03-30 Акционерное общество "Лаборатория Касперского" Способ формирования списка агентов обновлений
RU2634183C1 (ru) * 2016-09-08 2017-10-24 Акционерное общество "Лаборатория Касперского" Способ рассылки обновлений
US10404664B2 (en) 2016-10-25 2019-09-03 Arm Ip Limited Apparatus and methods for increasing security at edge nodes
US10572240B2 (en) * 2016-12-19 2020-02-25 Vmware Inc. Operating system update management for enrolled devices
US10362482B2 (en) 2016-12-21 2019-07-23 T-Mobile Usa, Inc. Network operation and trusted execution environment
JP6536618B2 (ja) * 2017-04-20 2019-07-03 富士通株式会社 情報処理装置、情報処理システム、及び制御プログラム
US10445503B2 (en) * 2017-07-14 2019-10-15 Google Llc Secure persistent software updates
EP3665566A4 (en) * 2017-08-08 2021-04-21 Crypto4A Technologies Inc. SECURE MACHINE-EXECUTED CODE DEPLOYMENT AND EXECUTION PROCESS AND SYSTEM
KR102417004B1 (ko) 2017-09-19 2022-07-07 삼성전자주식회사 전자 장치의 소프트웨어의 업데이트를 관리하기 위한 장치 및 방법
CN108390914B (zh) * 2018-01-23 2020-07-28 阿里巴巴集团控股有限公司 一种服务更新方法及装置、系统
US10409586B1 (en) * 2018-02-16 2019-09-10 Wipro Limited Method and system for developing and delivering an update on human machine interface (HMI) application
CN112567819B (zh) * 2018-08-09 2024-08-30 Lg电子株式会社 在无线通信系统中发送wus的方法及其设备
JP7255105B2 (ja) * 2018-08-30 2023-04-11 ブラザー工業株式会社 アプリケーションプログラムおよびデータ転送システム
CN110896404B (zh) * 2018-09-12 2021-09-14 华为技术有限公司 数据处理的方法、装置和计算节点
CN110225078B (zh) * 2019-04-26 2022-05-13 深圳法大大网络科技有限公司 一种应用服务更新方法、系统及终端设备
US12074943B2 (en) * 2019-05-29 2024-08-27 Roche Diagnostics Operations, Inc. Techniques for providing data packages to analytical devices
US10785106B1 (en) 2019-07-29 2020-09-22 Microsoft Technology Licensing Llc Configuration change control for computing environments
CN111581223B (zh) * 2020-04-11 2023-08-22 北京城市网邻信息技术有限公司 一种数据更新方法、装置、终端设备及存储介质
US20240143303A1 (en) * 2022-10-26 2024-05-02 Microsoft Technology Licensing, Llc Deployment sequencing for dependent updates

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282712B1 (en) * 1995-03-10 2001-08-28 Microsoft Corporation Automatic software installation on heterogeneous networked computer systems
JP3762049B2 (ja) * 1997-06-27 2006-03-29 キヤノン株式会社 撮像装置及び撮像方法及びその撮像方法を記録した記録媒体
JP3617997B2 (ja) * 1997-11-14 2005-02-09 三菱電機株式会社 データ更新方式
JPH11232083A (ja) * 1998-02-17 1999-08-27 Toshiba Corp コンピュータシステムおよびリソース管理方法
JP3671759B2 (ja) 1999-08-26 2005-07-13 株式会社日立製作所 ソフトウェア配布方法およびシステム
JP3870701B2 (ja) * 2000-03-10 2007-01-24 株式会社日立製作所 コンピュータの階層情報管理方法および装置ならびにその処理プログラムを記録した記録媒体
US20030061323A1 (en) * 2000-06-13 2003-03-27 East Kenneth H. Hierarchical system and method for centralized management of thin clients
US7086050B2 (en) * 2000-08-04 2006-08-01 Mcafee, Inc. Updating computer files
US20020174034A1 (en) * 2001-05-17 2002-11-21 International Business Machines Corporation Method and apparatus for a distributed web commerce system
CN1350230A (zh) * 2001-12-03 2002-05-22 复旦大学 病毒库主动分发系统
US7617289B2 (en) * 2002-02-22 2009-11-10 Bea Systems, Inc. System and method for using a data replication service to manage a configuration repository
JP2004005413A (ja) * 2002-03-25 2004-01-08 Sourcenext Corp ユーザサポートサーバ、構成認識システム、ユーザサポートシステム、構成認識方法及びユーザサポート方法
US20030200300A1 (en) * 2002-04-23 2003-10-23 Secure Resolutions, Inc. Singularly hosted, enterprise managed, plural branded application services
US7178144B2 (en) * 2002-04-23 2007-02-13 Secure Resolutions, Inc. Software distribution via stages
US7478385B2 (en) * 2003-01-17 2009-01-13 National Instruments Corporation Installing software using programmatic component dependency analysis
US7913246B2 (en) * 2003-10-27 2011-03-22 American Power Conversion Corporation System and method for updating a software program
US7519964B1 (en) * 2003-12-03 2009-04-14 Sun Microsystems, Inc. System and method for application deployment in a domain for a cluster
US7853609B2 (en) * 2004-03-12 2010-12-14 Microsoft Corporation Update distribution system architecture and method for distributing software

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100825322B1 (ko) * 2007-01-31 2008-04-28 엘에스산전 주식회사 듀얼 포트 이더넷 상의 다수의 제어 모듈용 펌웨어 동시 업데이트 장치 및 업 데이트 방법
KR20180007483A (ko) * 2016-07-13 2018-01-23 (주)누리봄 단말 Native UI를 사용하는 동적 UI 배포 시스템 및 방법

Also Published As

Publication number Publication date
EP1723541A2 (en) 2006-11-22
JP2007529078A (ja) 2007-10-18
CN101902494B (zh) 2013-05-29
CA2555446A1 (en) 2005-09-29
EP1723541B1 (en) 2017-05-03
BRPI0508244B1 (pt) 2017-10-10
EP1723541A4 (en) 2008-12-31
KR101086122B1 (ko) 2011-11-25
RU2006136022A (ru) 2008-04-20
US8245218B2 (en) 2012-08-14
WO2005089209A3 (en) 2006-09-08
CN101069172A (zh) 2007-11-07
CA2555446C (en) 2013-06-18
CN101902494A (zh) 2010-12-01
RU2386218C2 (ru) 2010-04-10
JP4916432B2 (ja) 2012-04-11
BRPI0508244A (pt) 2007-07-31
AU2005222887B2 (en) 2010-07-01
WO2005089209A2 (en) 2005-09-29
US20070143390A1 (en) 2007-06-21
CN100580653C (zh) 2010-01-13
AU2005222887A1 (en) 2005-09-29

Similar Documents

Publication Publication Date Title
KR101086122B1 (ko) 업데이트 분배 시스템에서 소프트웨어 업데이트의 분배를관리하기 위한 애플리케이션 프로그래밍 인터페이스
KR101159338B1 (ko) 소프트웨어를 배포하는 업데이트 배포 시스템 아키텍처 및방법
KR100942127B1 (ko) 업데이트 배포 시스템에서 업데이트 메타데이터를 배포시키기 위한 태그-기반 스키마
US7178144B2 (en) Software distribution via stages
IL166812A (en) Update distribution system architecture and method for distributing software
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
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: 20141017

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 8