KR101278743B1 - 서버 팜에서의 솔루션 배치 - Google Patents

서버 팜에서의 솔루션 배치 Download PDF

Info

Publication number
KR101278743B1
KR101278743B1 KR1020077026783A KR20077026783A KR101278743B1 KR 101278743 B1 KR101278743 B1 KR 101278743B1 KR 1020077026783 A KR1020077026783 A KR 1020077026783A KR 20077026783 A KR20077026783 A KR 20077026783A KR 101278743 B1 KR101278743 B1 KR 101278743B1
Authority
KR
South Korea
Prior art keywords
solution
server
server farm
farm
deploying
Prior art date
Application number
KR1020077026783A
Other languages
English (en)
Other versions
KR20080027230A (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 KR20080027230A publication Critical patent/KR20080027230A/ko
Application granted granted Critical
Publication of KR101278743B1 publication Critical patent/KR101278743B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/085Retrieval of network configuration; Tracking network configuration history
    • H04L41/0853Retrieval of network configuration; Tracking network configuration history by actively collecting configuration information or by backing up configuration information
    • H04L41/0856Retrieval of network configuration; Tracking network configuration history by actively collecting configuration information or by backing up configuration information by backing up or archiving configuration information
    • 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 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62Establishing a time schedule for servicing the requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/28Timers or timing mechanisms used in protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/084Configuration by using pre-existing information, e.g. using templates or copying from other elements
    • H04L41/0843Configuration by using pre-existing information, e.g. using templates or copying from other elements based on generic templates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Finance (AREA)
  • Computer Hardware Design (AREA)
  • Accounting & Taxation (AREA)
  • Mathematical Physics (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Computer Security & Cryptography (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

서버 팜을 위한 솔루션들이 서버 팜 내의 집중화된 위치에 서브밋될 수 있도록 하는 시스템 및 방법이 제공된다. 서브밋된 솔루션은 서버 팜의 모든 서버를 위해 선택되고 자동적인 배치를 위해 예정될 수 있다. 배치된 솔루션은 서버 팜의 서버들로부터 철회될 수 있다. 서버 팜의 손상된 서버 또는 새로운 서버는 서버 팜 상에 배치된 솔루션과 동일한 솔루션을 갖도록 동기화될 수 있다.
솔루션 배치, 서버 팜, 중앙 데이터베이스, 타이머 서비스

Description

서버 팜에서의 솔루션 배치{SOLUTION DEPLOYMENT IN A SERVER FARM}
오늘날, 브라우저를 통해 사용자들에게 애플리케이션을 전송하기 위해서 인터넷이 널리 사용된다. 인터넷은 또한 개인 고객 및 기업들이 각종 상품과 서비스를 구매하기 위해 웹을 사용하는 전자 상거래에서도 사용된다. 사실, 몇몇 기업들은 오로지 웹상에서만 상품 및 서비스를 제공하는 한편 다른 기업들은 그들의 영역을 확장하기 위해 웹을 사용한다.
이들 및 기타 상업 활동들과 관련하여, 기업들 및 다른 콘텐트(content) 공급자들은 여러 사용자로부터의 요청을 처리하기 위해 서버를 사용한다. 이들 요청을 처리하는 데 있어서 다양한 아키텍처들이 사용된다. 종종, 서버들의 집합이 클러스터("서버 팜(server farm)")로 되어있는 분산 아키텍처가 요청을 처리하기 위해 사용된다. 이러한 서버 팜 아키텍처에서, 서버들의 집합은 사용자들에게 단일 서버처럼 보인다. 서버 팜으로 보내진 다양한 요청들을 처리하기 위해 서버 팜 내의 어떤 서버를 사용할지를 결정하기 위해 로드-균형 메커니즘(load-balancing mechanism)이 사용될 수 있다.
서버 팜 내의 다양한 서버들을 구성하고 유지하는 것은 역사적으로 과제였다. 주어진 서버 팜 내에 사용되는 서버의 수가 증가함에 따라 이 과제는 더욱 심화된다. 서버 팜 내의 서버들을 적절하게 유지하기 위해서 서버들은 때때로 업데 이트될 필요가 있다. 이 업데이트는 서버에 의해 제공된 데이터 및 서비스를 구성하는 것을 포함하는데, 이는 각 서버 내의 설정 및 서비스가 서로 일치함을 보장하고 서버 팜의 서버들에 존재하는 다양한 서비스 및 애플리케이션에 대한 실시간에 가까운 지식을 유지하기 위한 것이다.
유감스럽게도, 서버 관리를 수행하는 현재 기술들은 서버 내의 서버들에 대한 체계적이고 포괄적인 관리를 가능하게 하는 응집적 방법론을 제공하지 못한다. 예를 들어, 조직 내의 통상적인 인터넷 시스템은 고도로 신뢰할 수 있고 조정가능한 형식을 구현하기 위해 복수의 웹 서버를 통합시킨다. 이러한 팜 구현의 웹 서버들은 같은 논리적 컨텐트의 집합을 지원하기 때문에 서로 동일하게 구성되어야 한다. 그러나, 시간이 지남에 따라, 서버 팜은 특정 고객 요구조건들을 다루는 솔루션("고객 솔루션")으로 업데이트되어야 할 수 있다. 예를 들어, 서버 팜 내의 서버들에 새로운 애플리케이션 구성 요소들이 적용될 필요가 있을 수 있다. 하지만, 개별 서버는 고유의 논리 및 물리적 특성들을 가지고 있기 때문에 통상적으로 이 서버들의 관리자는 한 작업을 수행하고 이 작업이 서버 팜의 복수의 서버들에 균일하게 적용될 수 있도록 하는 능력이 없다. 따라서, 서버 팜의 관리자는 각 서버를 방문하고 각 서버에 개별적으로 고객 솔루션을 배치해야 한다.
고객 솔루션의 이러한 개별적인 배치는 여러 문제를 지닌다. 첫째로, 복수의 서버들이 같은 논리적 컨텐트를 지원하기 위해 사용된다면, 각 서버에 개별적으로 고객 솔루션을 배치하는 것은 일치하지 않는(inconsistent) 배치를 가져올 수 있다. 서버들 간에서의 솔루션의 일치하지 않는 배치는 같은 논리적 컨텐트의 바 람직하지 않는 동작을 일으킬 수 있다. 두 번째로, 관리자는 각 서버에 개별적으로 복수의 솔루션을 배치하는 중에 실수를 할 수 있다. 그 결과, 그 실수들은 서버 내에서 불일치 및 진단하기 어려운 문제들로 나타날 것이다. 복수의 서버들이 그들의 배치된 솔루션 상태와 관련해서 서로 일치한다는 것을 관리자가 보장하기 어렵다. 따라서, 서버 팜의 각 서버를 위해 애플리케이션 설정 및 솔루션과 같은 모든 구성 데이터(configuration data)를 중앙 집중적(centrally)으로 저장하는 것이 요구된다. 또한, 중앙 집중적으로 저장된 구성 데이터가 요청에 따라 자동으로 모든 서버들에 일관된 방식으로 배치될 수 있도록 하는 것이 바람직하다.
본 발명은 서버 팜 전체에 솔루션을 배치하기 위한 시스템 및 방법을 제공함으로써 위에 제시된 요구들을 해결한다. 본 발명의 한 양상은 서버 팜 내의 모든 구성 데이터의 마스터 카피(master copy)인 구성 데이터베이스를 제공한다. 구성 데이터베이스는 서버 팜을 위한 솔루션들을 포함하는 논리적 객체를 수집하는 솔루션 저장소(solution store)를 포함할 수 있다. 이 논리적 객체들은 솔루션을 위한 바이너리(binary)뿐 아니라, 솔루션을 위한 상태들(예를 들어, 서버 팜에 솔루션이 배치되었는지 혹은 배치되지 않았는지)과 같은 솔루션과 관련된 정보를 포함한다.
본 발명의 다른 양상은 솔루션 저장소에 솔루션을 서브밋(submit)하기 위한 다수의 메커니즘을 제공한다. 이러한 메커니즘은 솔루션 저장소에 솔루션을 서브밋하기 위해 커맨드-라인(command-line) 도구 또는 웹 인터페이스를 사용하는 것일 수 있다. 웹 인터페이스는 서버 팜으로부터 멀리 떨어진 시스템상에 있을 수 있다. 바람직하게, 각 서브밋된 솔루션은, 솔루션의 개발자가 구성 데이터베이스의 스키마를 이해하거나 변경하지 않고 솔루션을 솔루션 저장소에 더할 수 있도록 하는 구성 객체 모델을 확장한다. 솔루션을 서브밋하는 것은 솔루션 저장소에 대한 특정 액세스 권한을 필요로 할 수 있다. 서브밋된 솔루션은 솔루션이 논리적으로 정확하고, 바이러스가 없으며, 또는 다른 방식으로 서버 팜 환경과 호환 가능하다는 것을 보장하기 위해서 몇몇 유효성 검사를 거쳐야 할 수 있다. 유효성 검사를 통과하지 못하는 모든 솔루션은 서버 팜 전체에 배치되지 않는다.
또한 본 발명의 다른 양상은 서버 팜의 관리자가 서브밋된 솔루션의 목록을 검토하고, 서브밋된 솔루션 중 하나 이상을 서버 팜 내의 모든 서버들에 배치할지를 선택할 수 있도록 허락한다. 일단 솔루션이 선택되고 나면 솔루션의 배치는 즉시 발생할 수 있다. 또한, 솔루션의 배치는, 예를 들어, 서버 팜의 사용량이 적은 자정(midnight)과 같은 추후의 시간에 발생하도록 지연될 수도 있다.
서버 팜의 각 서버에 있는 타이머 서비스는 복수의 서버를 포함하는 서버 팜 전체에 솔루션을 배치하는 데 사용된다. 타이머 서비스는 두 단계를 통해 솔루션을 배치할 수 있다. 첫 번째 단계에서, 타이머 서비스는 구성 데이터베이스로부터 솔루션 번들을 검색하고, 솔루션 번들을 언팩(unpack)하고, 솔루션 파일들을 서버 상의 지정된 디렉터리에 저장한다. 두 번째 단계에서, 타이머 서비스는 솔루션 파일을 서버에 설치한다. 타이머 서비스보다 높은 권한을 가진 시스템 서비스("어드민 서비스(Admin service)")가 서버 시스템의 특권 영역(privileged area)에 솔루션 파일들을 설치하는 데 사용될 수 있다. 솔루션의 설치를 완료할 때, 타이머 서비스는 구성 데이터베이스에 설치 완료 메시지를 보낸다. 바람직하게, 모든 서버에 솔루션이 성공적으로 설치되면, 구성 데이터베이스는 솔루션의 상태를, 예를 들어, "배치되어야 함"에서 "배치됨"으로 업데이트한다. 다음, 각 서버는 솔루션 파일의 임의의 사용자 지정 솔루션 코드를 실행한다.
요약하면, 본 발명은 솔루션의 개발자들이 서버 팜을 위한 솔루션을 서버 팜의 집중화된 위치에 서브밋할 수 있게 하는 한편, 서버 팜의 관리자들이 솔루션을 배치할 것인지 또 언제 배치할 것인지를 독립적으로 선택할 수 있게 하는 시스템 및 방법을 제공한다. 따라서, 서버 팜을 위한 솔루션은 일관되게 그리고 자동으로 서버 팜의 모든 서버들에 배치될 수 있다.
발명의 상세한 설명은 아래의 실시예에서 더 상세히 설명되는 개념들의 선택된 개념을 간략한 형식으로 소개하기 위해 제공된 것이다. 이 발명의 상세한 설명은 청구된 본 발명의 주요 특징 또는 본질적 특징들을 식별하도록 의도된 것이 아니며, 또한 이것은 청구된 본 발명의 범위를 결정하는 데 있어 보조로 사용되도록 의도된 것이 아니다.
본 발명의 신규한 특징들은 첨부된 청구항에 제시된다. 하지만, 본 발명 자체뿐 아니라, 바람직한 사용 방법, 더 나아간 목적 및 이점들은 이어지는 예시적인 실시예의 상세한 설명을 첨부된 도면과 함께 읽으며 참조하였을 때 가장 잘 이해될 것이다.
도 1은 본 발명의 양상들이 구현될 수 있는 예시적인 데이터 프로세싱 시스 템의 네트워크를 도시하는 블록도이다.
도 2는 도 1에서 사용하기에 적합한 예시적인 서버 팜을 도시하는 블록도이다.
도 3은 솔루션이 서버 팜의 집중화된 위치에 서브밋되는 예시적인 서버 팜을 도시하는 블록도이다.
도 4는 솔루션이 서버 팜의 각 서버로 배치되는 예시적인 서버 팜을 도시하는 블록도이다.
도 5A-5B는 서버 팜에서의 솔루션 배치를 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 1은 본 발명의 예시적인 실시예가 구현될 수 있는 데이터 프로세싱 시스템들의 네트워크(100)의 도식적 표현을 도시한다. 데이터 프로세싱 시스템들의 네트워크(100)는 네트워크(102)를 포함하는데 이것은 데이터 프로세싱 시스템들의 네트워크(100) 내의 서로 연결된 각종 장치 및 컴퓨터 사이에 통신 링크를 제공하기 위해 사용되는 매체이다. 네트워크(102)는 유선 또는 무선 통신 링크, 광섬유 케이블 및 이와 유사한 것 등과 같은 연결을 포함할 수 있다.
도 1에 도시된 것과 같이, 데이터 프로세싱 시스템들의 네트워크(100)는 적어도 하나의 서버 팜(104)과 하나 이상의 클라이언트(108-112)를 포함하며, 이들은 모두 네트워크(102)에 연결되어 있다. 서버 팜(104)은 일반적으로 요청을 처리하기 위한 단일 서버 또는 "가상의(virtual)" 서버로 나타나는 서버들의 집합을 포함 한다. 클라이언트(108, 110, 및 112)는 서버 팜(104)의 클라이언트이다. 이 클라이언트(108, 110, 및 112)는, 예를 들어, 개인용 컴퓨터 또는 네트워크 컴퓨터일 수 있다. 일반적으로, 서버 팜(104)은 클라이언트(108-112)에게 부팅 파일, 운영 체제 이미지, 애플리케이션, 웹 콘텐트와 같은 데이터를 제공한다. 데이터 프로세싱 시스템들의 네트워크(100)는 추가적인 서버, 클라이언트, 및 도시되지 않은 기타 장치들을 포함할 수 있다.
도시된 예에서, 데이터 프로세싱 시스템들의 네트워크(100)는 인터넷이며, 여기서 네트워크(102)는 서로 통신하기 위해 TCP/IP 프로토콜 제품군을 사용하는 네트워크 및 게이트웨이의 전세계적 컬렉션(worldwide collection)을 나타낸다. 인터넷의 중심에는 주 노드들 사이 또는 호스트 컴퓨터들 사이의 고속 데이터 통신 회선의 백본(backbone)이 있다. 이들 노드 또는 호스트 컴퓨터들은 데이터 및 메시지를 라우트하는 수천 개의 상업, 정부, 교육, 및 기타 컴퓨터 시스템을 포함한다. 데이터 프로세싱 시스템들의 네트워크(100)는 또한, 예를 들어, 인트라넷, 인터넷, 근거리 통신망(LAN), 또는 원거리 통신망(WAN)과 같은 다수의 다양한 네트워크 유형으로 구현될 수 있다. 도 1은 예시로서 의도된 것이며, 본 발명에 대한 구조적인 제한으로서 의도된 것이 아니다.
도 2는 본 발명의 예시적인 실시예에 따른 서버 팜(104)의 블록도이다. 도 2에 도시된 것과 같이, 서버 팜(104)은 서버(202A, 202B, 202C)와 같은 다수의 서버를 포함하며, 이들 각각은 통신 시스템(212)을 통해 서로 통신한다. 통신 시스템(212)은 서버 팜(104)으로 보내진 요청 및 응답의 라우팅을 처리하는 데 사용된 다. 통신 시스템(212)은, 예를 들어, 버스, 네트워크, 공유 메모리, 또는 이와 유사한 것 등과 같은 것을 포함하는 다양한 형태를 취할 수 있다.
서버 팜(104)은 통신 시스템(212)에 연결되고 네트워크(102)로부터 서버 팜(104)으로 보내진 요청들을 수신하는 데 사용되는 로드 관리자(load-manager)(214)를 포함할 수 있다. 요청들은 클라이언트(108-112)(도 1)로부터 수신된 요청들을 포함할 수 있으며, 예를 들어, 웹 페이지, 파일, 또는 다른 콘텐트에 대한 요청을 포함할 수 있다. 로드 관리자(214)는 프로세싱을 위해 요청을 서버(202A-202C)에 배포하도록 동작한다. 본질적으로, 로드 관리자(214)는 서버 팜(104)의 서버(202A-202C)들 중 어떤 것도 서버 팜에 대한 요청으로 인해 불필요하게 부담을 갖지 않을 것을 보장하도록 동작한다.
본 발명의 실시예에서, 서버 팜(104)은 서버 팜을 위해 모든 구성 데이터를 저장하는 구성 데이터베이스(218)를 포함한다. 본 발명의 실시예에서, 구성 데이터베이스(218)는 서버 팜의 모든 구성 데이터의 마스터 카피이며, 따라서, 서버 팜(104) 내의 서버들의 집합 전체에서 동일한 정보를 사용할 수 있게 한다. 구성 데이터베이스(218)는 구성 데이터가 서버 팜(104)의 각 서버(202A-202C)들에게로 송신될 수 있도록 통신 시스템(212)에 동작상 연결된다. 구성 데이터베이스(218)는 각 서버(202A-202C)의 구성 설정들을 관리하는 데 사용된다. 따라서, 구성 데이터베이스(218)는 서버 팜(104)의 다양한 서버(202A-202C)들에 추가되고/거나 변경되어야 할 모든 구성 설정을 위한 중앙 리포지토리(repository)로서 동작한다. 구성 데이터베이스(218)를 제공하는 것은 서버(202A-202C)의 구성 설정을 수동으로 업데이트 및/또는 추가해야 할 필요를 없앤다. 서버 토폴로지에 대한 정보를 저장하는 것 외에, 구성 데이터베이스(218)는 또한 보안 정책, 안티바이러스 정의(definition), 언어 설정 등과 같은 애플리케이션-특정(application-specific) 설정들을 저장할 수 있다. 본 발명의 실시예에서, 구성 데이터는 서버 팜(104)의 서버에 적용가능한 하나 이상의 솔루션을 저장할 수 있다. 솔루션은 특정 콘텐트 또는 서비스를 제공함에 있어 서버에게 지시를 내릴 수 있는 애플리케이션 코드, 정의, 및 국지적인 자원을 포함하는 번들 파일을 포함한다. 바람직하게, 도 3에 도시된 것과 같이, 구성 데이터베이스(218)는 솔루션 저장소(300)라 불리는 별개의 유닛을 포함할 수 있다. 솔루션 저장소(300)는 논리 객체의 집합을 포함한다. 각 논리 객체는 솔루션뿐 아니라, 솔루션이 배치를 위해 선택되었는지, 혹은 솔루션이 배치되었는지 등과 같은 각 솔루션의 상태와 관련된 상태 정보를 나타내는 바이너리 파일을 포함한다.
서버 팜(104)은 또한 적어도 하나의 콘텐트 저장소(220)를 포함할 수 있다. 서버 팜(104)의 다른 동작 요소들과 유사하게, 콘텐트 저장소(220)는 통신 시스템(212)에 동작상 연결되어 콘텐트 저장소(220) 내에 저장된 정보가 서버 팜(104)의 다양한 컴포넌트에 배치될 수 있도록 허락한다. 본 발명의 예시적인 실시예에서, 콘텐트 저장소(220)는 서버 팜(104)의 서버들을 위해 데이터를 포함한다. 이러한 데이터는 문서, 데이터 항목, 토론, 태스크 등을 포함한다. 콘텐트 저장소(220)는 하나 이상의 서버(202A-202C)의 주어진 구성 변경과 특별히 관련된 콘텐트를 제공하기 위해 구성 데이터베이스(218)와 함께 동작한다. 본 발명의 예시적 인 실시예에서, 콘텐트 저장소(220)는 구성 데이터베이스(218)에 인터페이스하지 않는다. 구성 데이터베이스(218)는 어떤 콘텐트 저장소가 서버를 위한 데이터를 저장하는지에 관한 맵(map)을 포함한다. 따라서, 콘텐트 저장소가 서버 팜(104)의 특정 서버를 위한 콘텐트를 포함하는지 알기 위해 서버 팜(104) 내의 각 콘텐트 저장소(220)를 쿼리할 필요가 없다.
본 발명의 예시적인 실시예에서, 서버 팜(104)은 임의로 확장가능하다. 이것은 서버 팜(104)이 서버(202A-202C) 이외의 복수의 서버들로 임의로 확장될 수 있음을 포함한다. 또한, 서버 팜(104)은 서버 팜(104) 내의 복수의 서버들을 위해 데이터를 저장하기 위해서 복수의 콘텐트 저장소(220)를 포함할 수 있다.
구체적으로, 본 발명의 예시적인 실시예들은 솔루션이 복수의 전송 메커니즘을 통해 구성 데이터베이스(218) 및/또는 솔루션 저장소(300)에 더해질 수 있도록 한다. 도 3은 솔루션이 구성 데이터베이스(218)에 서브밋되고 추가될 수 있는 예시적인 전송 메커니즘을 도시한다. 한 예시적인 전송 메커니즘은 커맨드-라인 인터페이스(301)이다. 다른 예시적인 전송 메커니즘은 웹 인터페이스(304)이다. 웹 인터페이스(304)는 서버 팜 외부에 있을 수 있으며, 네트워크(102)를 통해 구성 데이터베이스(218)와 통신한다. 이러한 웹 인터페이스(304)는 솔루션을 서브밋하기 위한 원격 경험을 제공한다. 솔루션을 구성 데이터베이스(218)로 통합시키기 위한 다른 대안적인 전송 메커니즘은 서버 팜(104)을 위한 솔루션의 자동화된 서브밋 및 배치를 용이하게 하기 위해 원격 프로시저 호출(remote procedure call) 또는 SOAP 인터페이스를 사용하는 것을 포함한다.
본 발명의 예시적인 실시예에서, 서브밋된 솔루션은 구성 데이터베이스(218)의 임의적인 확장을 가능하게 하는 구성 객체 모델(302)을 확장한다. 구성 객체 모델(302)은 사용자로 하여금 구성 데이터베이스(218)의 스키마를 이해하거나 변경할 것을 요구하지 않으면서, 사용자가 서버 팜(104)을 위해 구성 데이터를 확장 또는 업데이트할 수 있도록 한다. 본 발명의 예시적인 실시예에서, 구성 객체 모델(302)은 .Net 객체-기반 클래스를 포함한다. 사용자는 특정 구성 데이터로 기본 클래스(base class)의 하위 클래스를 만들거나 기본 클래스를 인스턴스화함으로써 기본 클래스를 확장할 수 있다. 다음, 이러한 데이터는 구성 데이터베이스(218)에 통합된다. 따라서, 사용자는 구성 데이터베이스(218)에 다양한 데이터 유형을 추가하기 위해 구성 객체 모델(302)만 통과하면 된다. 사용자는 구성 데이터베이스(218)의 스키마를 이해하거나 변경할 필요가 없다. 본 발명의 예시적인 실시예에서, 애플리케이션을 위한 구성 정보를 포함하는 객체들은, 예를 들어, PersistedObject라 불리는 기본 클래스로부터 얻어지거나 또는 이 기본 클래스에 포함된다. 업데이트될 때, 이 클래스는 "persisted" 속성으로 표시된 모든 XML 필드 안으로 직렬화(serialize)되고, XML 블랍(blob)을 구성 데이터베이스(218)에 기입할 것이다. 기본 클래스는 기본 유형들, 다른 PersistedObject들, 또는 이 둘 중 하나의 모음인 모든 구성원들을 직렬화하기 위한 코드를 포함한다. 이러한 설계는 서버 팜(104)을 위한 구성 데이터를 포함하는 새로운 객체들이 필요에 따라 구성 데이터베이스(218)에 추가될 수 있도록 허락한다.
본 발명의 예시적인 실시예에서, 전송 메커니즘과 무관하게, 구성 데이터베 이스(218)로 솔루션을 서브밋하는 개발자 또는 관리자는 구성 데이터베이스(218)를 액세스하기 위한 특정 권한을 가질 필요가 있다. 이 특정 권한이 결여되었을 경우 개발자 또는 관리자는 솔루션을 구성 데이터베이스(218)에 서브밋할 수 없다. 또한, 본 발명의 예시적인 실시예에서, 서브밋된 솔루션은 솔루션이 논리적으로 정확하고, 바이러스가 없으며, 또는 다른 방식으로 서버 팜(104)과 호환 가능하다는 것을 보장하는 특정 유효성 검사를 통과했을 때에만 배치될 것이다.
이와 같이, 구성 데이터베이스(218) 및/또는 솔루션 저장소(300)는 개발자 및/또는 서버 팜(104)의 관리자들에 의해 서브밋된 솔루션을 저장하기 위한 집중화된 위치를 제공한다. 구성 데이터베이스(218)에 솔루션을 서브밋하는 것은 구성 데이터베이스(218)로부터 솔루션을 배치하는 능력으로부터 독립적으로 보호될 수 있다. 이러한 분리는 서버 팜(104)의 관리자들이 개발자들로 하여금 솔루션을 서브밋할 수 있게 함과 동시에 배치하기 전에 서브밋을 독립적으로 감사(audit)하는 능력을 유지할 수 있도록 한다.
본 발명의 실시예들은 주어진 솔루션을 서버 팜(104)과 같은 서버 팜 내의 복수의 서버들에게 자동으로 배치한다. 본 발명의 실시예들은 구성 데이터베이스(218)로부터 서버 팜(104)의 서버로 솔루션을 쿼리하고 풀(pull)하기 위한 풀-기반 메커니즘을 제공한다. 본 발명의 예시적인 실시예에서, 이러한 풀-기반 메커니즘은 서버 팜(104)의 각 서버에 포함된 타이머 서비스를 통해 실현된다. 타이머 서비스는 어떤 계류 중인 변경을 동기화(synchronize)하기 위해 구성 데이터베이스(218)를 쿼리한다. 이러한 계류 중인 변경들은 솔루션 저장소(300) 또는 전체 서버 팜(104)에 걸쳐 실행되고 있는 타이머 작업의 집합의 모든 변경을 포함한다. 이러한 풀-기반 메커니즘을 사용하는 것은 구성 데이터베이스(218)와 통신하기 위해 서버(202A)와 같은 서버에 추가적인 TCP/IP 포트를 개방해야 하는 필요를 막는다. 추가적인 개방 포트를 요구하지 않음으로써, 해커, 바이러스, 또는 다른 형태의 공격에 잠재적인 통로를 노출하지 않아 서버에 보다 적은 위험이 초래된다. 도 4는 구성 데이터베이스(218)로부터 솔루션을 쿼리하고 풀하기 위한 풀-기반 메커니즘의 예시적인 실시예를 도시한다. 도 4에 도시된 것과 같이, 서버(202A)는 타이머 서비스(402)를 포함한다. 동작상, 타이머 서비스(402)는, 만약 있다면, 어떤 솔루션이 서버 팜(104)으로 또 따라서 서버(202A)로 배치되어야 하는지를 결정하기 위해 구성 데이터베이스(218) 및/또는 솔루션 저장소(300)를 쿼리한다.
본 발명의 실시예에서, 서버 팜(104)의 관리자는 솔루션 저장소(300) 내의 서브밋된 솔루션의 목록을 검토할 수 있다. 관리자는 하나 이상의 서브밋된 솔루션을 배치하도록 선택할 수 있고, 서버 팜(104)의 서버들의 집합 또는 전체 서버 팜(104)을 위해 그렇게 하도록 선택할 수 있다.
본 발명의 실시예에서, 관리자는 또한 적당할 때 바로 솔루션을 배치("즉각 배치(immediate deployment)")하도록 선택하거나 추후의 시간에 배치("지연된 배치(delayed deployment)")하도록 선택할 수 있다. 서버 팜(104)에 하나의 서버만 있을 때 또는 솔루션 저장소(300) 내의 솔루션의 지연된 배치가 가능하지 않을 때, 솔루션 저장소(300) 내의 솔루션의 배치는 즉각적으로 발생한다. 즉각 배치에는 두가지 유형이 있다. 원-서버(one-server) 서버 팜의 경우, 즉각 배치는 관리자가 배치 요청을 송신한 곳과 동일한 시스템에서 발생한다. 타이머 서비스(402)와 같은 풀-기반 메커니즘이 필요하지 않다. 멀티-서버(multi-server) 서버 팜(104)의 경우, 즉각 배치는 먼저 타이머 서비스(402)를 통신 메커니즘으로서 사용하여 서버 팜(104)의 다른 서버들 상의 타이머 서비스가 배치를 시작하도록 통보한다. 관리자가 멀티-서버 팜(104)에서의 배치를, 예를 들어, 서버 팜(104)의 사용이 적은 자정이 될 때까지 지연시키고자 할 때, 솔루션의 배치는 지연된 배치라 불린다. 타이머 서비스(402)는 지연된 배치에서 사용된다.
본 발명의 예시적인 실시예에서, 타이머 서비스(402)는 두 단계를 통해 솔루션의 배치를 수행한다. 첫 번째 단계에서, 타이머 서비스(402)는 서버(202A)가 구성 데이터베이스로부터 솔루션 번들을 검색하고, 솔루션 번들을 언팩(unpack)하고, 솔루션 파일들을 서버(202A) 상의 지정된 디렉터리에 저장하도록 명령한다. 서버 팜(104)의 모든 서버들이 균등하게 솔루션을 배치하고, 어떤 실패도 발생하지 않으면, 타이머 서비스(402)는 두 번째 단계를 개시한다. 두 번째 단계 중에, 타이머 서비스(402)는 솔루션 파일을 설치하고, 서버(202A)를 위해 임의의 사용자 지정 솔루션 코드를 실행하고, 구성 데이터베이스(218)의 구성 정보를 업데이트한다. 서버 팜(104) 내의 하나 이상의 서버가 솔루션을 적절하게 배치하는 데 실패하면 구성 데이터베이스(218)의 구성 정보는 영향을 받지 않는다.
본 발명의 예시적인 실시예에서, 타이머 서비스(402)는 솔루션을 배치하기 위해 제한된 권한을 사용한다. 이러한 제한된 권한은 타이머 서비스(402)가 통신하고 구성 데이터베이스(218)를 업데이트할 수 있도록 하지만, 타이머 서비스(402) 가 실행되고 있는 서버(202A)의 엔터티(entity)를 조작할 수 없게 한다. 이러한 분리는 타이머 서비스(402)가 필요 이상의 보안 권한을 받지 않도록 한다. 하지만, 서버 내의 특권 영역에 솔루션 파일을 설치하는 것과 같은 동작에서는 타이머 서비스(402)의 제한된 권한만으로 충분하지 않다. 이러한 경우, 타이머 서비스(402)는 어드민 서비스(404)라 불리는 제2 서비스와 통신한다. 어드민 서비스(404)는 서버(202A)에 대해 더 많은 권한을 가지고 있으며, 서버(202A)의 특권 영역에 솔루션 파일을 설치할 수 있다.
본 발명의 몇몇 실시예들은 또한 관리자가 구성 데이터베이스(218)로부터 업데이트된 솔루션을 풀하고, 서버(202A)와 같은 서버 팜(104)의 특정 서버에 이 솔루션을 적용할 수 있도록 하는 동기화 메커니즘을 제공한다. 이 메커니즘은 서버가 서버 팜(104) 내의 다른 서버의 설정들과 동기화되도록, 관리자가 서버 팜(104)의 특정 서버를 수리하거나, 서버 팜(104)에 방금 결합된 새로운 서버를 준비시킬 수 있도록 한다. 동기화 메커니즘은 솔루션 저장소(300) 내의 배치된 솔루션의 집합과 특정 서버에 국지적으로 배치된 파일 및 변경들의 집합을 비교하고, 결손된 파일 또는 변경을 솔루션 저장소(300)로부터 다운로드한다. 동기화 메커니즘은 서버의 상태가 서버 팜(104)의 모든 서버들에 대해 지정된 솔루션 저장소(300)의 상태와 일관되도록 함으로써 서버의 상태를 수리하는 데 사용될 수 있다. 동기화 메커니즘은 또한 관리자가 서버 팜(104)의 모든 서버들에 솔루션을 배치하기 위해 타이머 서비스(402)를 이용하지 않고, 하나 이상의 서버를 업데이트하도록 명시적으로 선택할 수 있게 한다.
본 발명의 예시적인 실시예에서, 관리자는 또한 서버 팜(104)의 모든 서버에 배치된 솔루션을 철회(retract)하도록 선택할 수 있다. 솔루션의 철회는 위에 설명된 솔루션 배치의 역(inverse)이다. 철회 동작은 서버 팜(104)의 서버들이 하나 이상의 배치된 솔루션을 제거할 것을 요청한다. 바람직하게, 철회 동작은 구성 데이터베이스(218)로부터 솔루션을 제거하는 것을 포함하지 않는다.
도 5A-5B는 서버 팜의 서버들로 솔루션을 배치하기 위한 예시적인 프로세스(500)를 도시하는 흐름도를 포함한다. 본 발명의 몇몇 실시예에서, 솔루션이 서버 팜의 구성 데이터베이스에 서브밋되면, 솔루션은 검증을 받는다. 솔루션의 검증은 솔루션이 논리적으로 정확한지, 바이러스가 없는지, 또는 다른 방식으로 서버 팜 환경과 호환가능한지를 결정하는 것을 포함한다. 따라서, 프로세스(500)는 임의의 서브밋된 솔루션을 검증하는 것으로부터 시작한다. 블록(502)을 보자. 프로세스(500)는 검증이 성공적이었는지를 결정하기 위해 계속된다. 결정 블록(504)을 보자. 만약 검증이 실패했다면, 프로세스(500)는 연결점 A로 이어진다. 만약 결정 블록(504)에 대한 대답이 '예'라면, 이것은 검증이 성공적이었다는 뜻으로, 솔루션은 배치를 위해 준비된 것이다. 대안적으로, 서브밋된 솔루션은 솔루션이 서버 팜에 배치되기 전에 검증 프로세스를 거친다.
위에 언급된 것과 같이, 솔루션 배치는 관리자가 배치할 솔루션을 선택함과 동시에 즉시 발생할 수 있다. 솔루션 배치는 또한 서버 팜의 사용이 적은 자정과 같은 추후의 시간에 예정될 수 있다. 프로세스(500)는 관리자와 같은 사용자가 솔루션의 배치를 예정할 수 있도록 한다. 블록(506)을 보자. 솔루션이 서버 팜의 모든 서버에 배치된다. 이어서 프로세스(500)는 서버 팜의 각 서버에 솔루션을 배치하기 위해 결정 블록(508)으로 시작해서 결정 블록(518)으로 끝나는 루프를 통과한다. 이 루프에서, 프로세스(500)는 먼저 서버가 도 4에 도시된 타이머 서비스(402)와 같은, 서버에서 실행되고 있는 타이머 서비스로부터 호출을 수신했는지를 결정한다. 결정 블록(508)을 보자. 만약 대답이 '아니오'라면, 프로세스(500)는 더 이상 진행되지 않는다. 만약 결정 블록(508)에 대한 대답이 '예'라면, 이것은 서버가 타이머 서비스로부터 솔루션을 배치하라는 호출을 수신하였음을 의미하고, 프로세스(500)는 서버가 서버 팜을 위해 솔루션을 집중적으로 저장하는 구성 데이터베이스로부터 솔루션을 검색하도록 진행된다. 블록(510)을 보자. 서버는 다운로드된 솔루션에 포함된 파일들을 서버 내의 적절한 디렉터리로 분해(explode)한다. 블록(512)을 보자. 필요한 경우에, 프로세스(500)는 도 4에 도시된 어드민 서비스(404)와 같은, 서버 내의 어드민 서비스로 하여금 솔루션을 위한 설치 프로세스를 수행하도록 할 수 있다. 설치 프로세스는 솔루션 파일을 적절한 디렉터리로 카피하고, 적절한 솔루션 구성들을 설정한다. 설치 프로세스를 완료함과 동시에, 타이머 서비스는 솔루션이 배치되고 서버에 설치되었음을 나타내는 메시지를 구성 데이터베이스로 송신한다. 블록(516)을 보자. 다음, 프로세스(500)는 서버 팜의 또 다른 서버에 솔루션을 배치할 필요가 있는지 검사한다. 결정 블록(518)을 보자. 만약 대답이 '예'라면, 프로세스(500)는 그 다른 서버에 대해 솔루션의 배치를 시작할 수 있는지 확인하기 위해 결정 블록(508)으로 다시 되돌아간다. 만약 결정 블록(518)에 대한 대답이 '아니오'라면, 솔루션이 배치되어야할 서버 팜의 서 버가 더 이상 없다는 뜻으로, 프로세스(500)는 연결점 B로 이어진다.
본 발명의 실시예에서, 솔루션이 검증을 통과해야지만 서버 팜의 모든 서버에 솔루션이 배치된다. 그러므로, 연결점 A(도 5B)에서, 솔루션이 유효성 검사를 통과하는 데 실패했을 때, 솔루션의 검증이 실패했음을 알리기 위해, 예를 들어, 서버 팜 상에 솔루션을 배치할 것을 요청한 관리자와 같은 사용자에게 메시지가 송신된다. 블록(520)을 보자. 따라서, 서버 팜의 서버 상에 존재하는 모든 솔루션 파일은 삭제되지만, 바람직하게 구성 데이터베이스는 솔루션 번들을 계속 보유한다. 블록(522)을 보자. 다음, 프로세스(500)는 종료되고 솔루션은 서버 팜의 어떠한 서버에도 배치되지 않는다.
반대로, 솔루션이 서버 팜의 모든 서버에 성공적으로 배치되고 설치되었을 때, 서버는 임의의 사용자 지정 솔루션 코드를 실행하고 구성 데이터베이스는 솔루션과 관련하여 자신의 데이터를 업데이트한다. 예를 들어, 구성 데이터베이스 내의 솔루션의 상태는 "배치되어야 함"에서 "배치됨"으로 변경될 수 있다. 따라서, 연결점 B에서, 서버 팜의 서버들에 솔루션이 성공적으로 설치됨과 동시에 프로세스(500)는 솔루션과 관련하여 구성 데이터베이스를 업데이트하도록 진행된다. 블록(524)을 보자. 다음, 프로세스(500)는 서버 팜의 모든 서버들이 솔루션과 관련된 임의의 사용자 지정 코드를 실행할 수 있도록 진행된다. 다음으로, 프로세스(500)는 종료된다.
본 발명의 예시적인 실시예들이 도시되고 설명되었지만, 본 발명의 정신 및 범위를 벗어나지 않는 다양한 변경들이 만들어질 수 있음이 이해되어야 한다. 독 점적인 소유권 또는 권리가 청구되는 본 발명의 실시예들은 다음과 같이 정의된다.

Claims (23)

  1. 복수의 서버를 포함하는 서버 팜(server farm)에서 솔루션(solution)을 배치(deploy)하기 위한 방법으로서,
    스키마를 포함하는 중앙 데이터베이스에 상기 서버 팜에 대한 솔루션을 저장하는 단계 - 각각의 솔루션은,
    애플리케이션 실행가능 코드,
    정의(definitions), 및
    특정 컨텐츠 및 서비스 중 적어도 하나를 제공하도록 상기 서버 팜 내의 서버에 지시하기 위한 지역화된 웹 인터페이스 리소스(localized Web interface resources)
    를 포함함 - ;
    구성 객체 모델(configuration object model)을 이용하여 상기 중앙 데이터베이스의 상기 스키마를 확장(extend)하는 단계;
    상기 서버 팜에 배치될 솔루션에 대해 상기 중앙 데이터베이스에 쿼리하는 단계; 및
    상기 중앙 데이터베이스에 쿼리하는 단계에 응답하여, 적어도 하나의 솔루션을 상기 복수의 서버에 배치하는 단계 - 상기 복수의 서버의 각각은 상기 복수의 서버에 상기 적어도 하나의 솔루션을 자동으로 배치하기 위한 타이머 서비스(timer service)를 포함하고, 상기 솔루션의 각각은 상기 중앙 데이터베이스의 스키마의 변경없이 상기 중앙 데이터베이스로 상기 솔루션이 서브밋(submit)되는 것을 허가하는 상기 구성 객체 모델을 확장하며, 상기 적어도 하나의 솔루션을 배치하는 단계는,
    상기 중앙 데이터베이스로부터 상기 적어도 하나의 솔루션을 인출(retrieve)하도록 상기 서버 팜 내의 서버에 지시하는 단계,
    상기 적어도 하나의 솔루션을 언팩(unpack)하는 단계,
    상기 적어도 하나의 솔루션을 상기 서버 팜 내의 서버 내의 적어도 하나의 특정 디렉토리에 저장하는 단계,
    적어도 하나의 실패가 발생했는지 판정하는 단계, 및
    적어도 하나의 실패가 발생하지 않은 것으로 판정하는 것에 응답하여,
    상기 적어도 하나의 솔루션을 설치하는 단계,
    사용자 지정 솔루션 코드(custom solution codes)를 실행하는 단계, 및
    상기 구성 객체 모델에서 구성 정보를 업데이트하는 단계
    를 포함함 -
    를 포함하는,
    서버 팜에서 솔루션을 배치하기 위한 방법.
  2. 제1항에 있어서,
    상기 중앙 데이터베이스로 솔루션을 서브밋하기 위한 인터페이스를 더 포함하는, 서버 팜에서 솔루션을 배치하기 위한 방법.
  3. 제2항에 있어서,
    상기 인터페이스는 커맨드-라인 도구(command-line tool) 및 웹 인터페이스로 이루어진 인터페이스의 그룹에서 선택되는, 서버 팜에서 솔루션을 배치하기 위한 방법.
  4. 제3항에 있어서,
    상기 웹 인터페이스는 상기 서버 팜의 외부에 있는, 서버 팜에서 솔루션을 배치하기 위한 방법.
  5. 제1항에 있어서,
    상기 타이머 서비스는 상기 적어도 하나의 솔루션을 예정된 시간에 배치하는, 서버 팜에서 솔루션을 배치하기 위한 방법.
  6. 제1항에 있어서,
    상기 타이머 서비스는 상기 적어도 하나의 솔루션이 성공적으로 검증을 통과한 후에 상기 적어도 하나의 솔루션을 배치하는, 서버 팜에서 솔루션을 배치하기 위한 방법.
  7. 제6항에 있어서,
    상기 검증은 상기 적어도 하나의 솔루션이 배치에 대한 미리 정의된 기준을 만족하는지를 판정하는, 서버 팜에서 솔루션을 배치하기 위한 방법.
  8. 제6항에 있어서,
    상기 서버 팜 내의 서버는 미리 정의된 특권 레벨(privilege level)을 갖는 상기 서버 팜 내의 서버 상의 영역에 상기 인출된 적어도 하나의 솔루션을 설치하기 위한 제2 서비스를 더 포함하는, 서버 팜에서 솔루션을 배치하기 위한 방법.
  9. 삭제
  10. 삭제
  11. 적어도 하나의 서버를 포함하는 서버 팜에서 솔루션 배치를 위한 컴퓨터로 구현된 방법으로서,
    상기 서버 팜에 대해 서브밋된 솔루션을 중앙 데이터베이스에 저장하는 단계 - 각각의 솔루션은 구성 객체 모델 및 상기 중앙 데이터베이스의 스키마를 확장하고, 각각의 솔루션은 애플리케이션 실행가능 코드, 정의, 및 특정 컨텐츠와 서비스 중 적어도 하나를 제공하도록 상기 서버 팜 내의 서버에 지시하기 위한 지역화된 웹 인터페이스 리소스를 포함하며, 상기 서브밋된 솔루션의 각각은 상기 중앙 데이터베이스의 상기 스키마의 변경없이 상기 중앙 데이터베이스로 상기 솔루션이 서브밋되는 것을 허가하는 상기 구성 객체 모델을 확장함 - ;
    요청 수신시에 상기 적어도 하나의 서버에 배치하기 위한 상기 솔루션 중 적어도 하나를 식별하는 단계;
    상기 솔루션 중 상기 적어도 하나를 검증하는 단계; 및
    상기 솔루션 중 상기 적어도 하나를 상기 적어도 하나의 서버에 배치하는 단계 - 상기 적어도 하나의 솔루션을 상기 적어도 하나의 서버에 배치하는 단계는,
    상기 중앙 데이터베이스로부터 상기 적어도 하나의 솔루션을 인출하도록 상기 서버 팜 내의 서버에 지시하는 단계,
    상기 적어도 하나의 솔루션을 언팩하는 단계,
    상기 적어도 하나의 솔루션을 상기 서버 팜 내의 서버 내의 적어도 하나의 특정 디렉토리에 저장하는 단계,
    적어도 하나의 실패가 발생했는지 판정하는 단계, 및
    적어도 하나의 실패가 발생하지 않은 것으로 판정하는 것에 응답하여,
    상기 적어도 하나의 솔루션을 설치하는 단계,
    사용자 지정 솔루션 코드를 실행하는 단계, 및
    상기 구성 객체 모델에서 구성 정보를 업데이트하는 단계
    를 포함함 -
    를 포함하는,
    적어도 하나의 서버를 포함하는 서버 팜에서 솔루션 배치를 위한 컴퓨터로 구현된 방법.
  12. 제11항에 있어서,
    상기 서버 팜에 대해 서브밋된 솔루션을 중앙 데이터베이스에 저장하는 단계는 인터페이스로부터 상기 서브밋된 솔루션을 받아들이는 단계를 포함하는, 적어도 하나의 서버를 포함하는 서버 팜에서 솔루션 배치를 위한 컴퓨터로 구현된 방법.
  13. 제12항에 있어서,
    상기 인터페이스는 커맨드-라인 도구(command-line tool) 및 웹 인터페이스로 이루어진 인터페이스의 그룹에서 선택되는, 적어도 하나의 서버를 포함하는 서버 팜에서 솔루션 배치를 위한 컴퓨터로 구현된 방법.
  14. 제13항에 있어서,
    상기 웹 인터페이스는 상기 서버 팜의 외부에 있는, 적어도 하나의 서버를 포함하는 서버 팜에서 솔루션 배치를 위한 컴퓨터로 구현된 방법.
  15. 제11항에 있어서,
    상기 적어도 하나의 서버에 상기 적어도 하나의 솔루션을 배치하는 단계는 예정된 시간에 상기 적어도 하나의 솔루션을 배치하는 단계를 포함하는, 적어도 하나의 서버를 포함하는 서버 팜에서 솔루션 배치를 위한 컴퓨터로 구현된 방법.
  16. 제11항에 있어서,
    상기 적어도 하나의 서버에 상기 적어도 하나의 솔루션을 배치하는 단계는 상기 적어도 하나의 솔루션이 검증을 성공적으로 통과한 이후에 행해지는, 적어도 하나의 서버를 포함하는 서버 팜에서 솔루션 배치를 위한 컴퓨터로 구현된 방법.
  17. 제16항에 있어서,
    상기 검증은 상기 적어도 하나의 솔루션이 배치에 대한 미리 정의된 기준을 만족하는지를 판정하는, 적어도 하나의 서버를 포함하는 서버 팜에서 솔루션 배치를 위한 컴퓨터로 구현된 방법.
  18. 제17항에 있어서,
    상기 서버 팜 내의 서버 상의 특권 영역(privileged areas)에 상기 적어도 하나의 솔루션을 설치하기 위한 특권을 갖는 상기 서버 팜 내의 서버 상의 제2 서비스를 이용하여, 상기 서버 팜 내의 서버 상에 상기 적어도 하나의 솔루션을 설치하는 단계를 더 포함하는, 적어도 하나의 서버를 포함하는 서버 팜에서 솔루션 배치를 위한 컴퓨터로 구현된 방법.
  19. 제18항에 있어서,
    상기 적어도 하나의 솔루션이 성공적으로 배치되었는지를 지시하도록 상기 중앙 데이터베이스를 업데이트하는 단계를 더 포함하는, 적어도 하나의 서버를 포함하는 서버 팜에서 솔루션 배치를 위한 컴퓨터로 구현된 방법.
  20. 제11항에 있어서,
    철회 요청의 수신시 상기 적어도 하나의 서버로부터 상기 적어도 하나의 솔루션을 제거하는 단계를 더 포함하는, 적어도 하나의 서버를 포함하는 서버 팜에서 솔루션 배치를 위한 컴퓨터로 구현된 방법.
  21. 제11항에 있어서,
    상기 서버 팜 내의 서버를 상기 적어도 하나의 서버에 배치된 상기 적어도 하나의 솔루션과 동기화하는 단계를 더 포함하고,
    상기 서버 팜 내의 서버는 상기 적어도 하나의 서버 중 하나 및 상기 서버 팜에 대한 새로운 서버로 이루어지는 서버의 그룹에서 선택되는, 적어도 하나의 서버를 포함하는 서버 팜에서 솔루션 배치를 위한 컴퓨터로 구현된 방법.
  22. 삭제
  23. 삭제
KR1020077026783A 2005-06-30 2006-05-08 서버 팜에서의 솔루션 배치 KR101278743B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/172,439 US7558857B2 (en) 2005-06-30 2005-06-30 Solution deployment in a server farm
US11/172,439 2005-06-30
PCT/US2006/017589 WO2007005107A2 (en) 2005-06-30 2006-05-08 Solution deployment in a server farm

Publications (2)

Publication Number Publication Date
KR20080027230A KR20080027230A (ko) 2008-03-26
KR101278743B1 true KR101278743B1 (ko) 2013-06-25

Family

ID=37591087

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077026783A KR101278743B1 (ko) 2005-06-30 2006-05-08 서버 팜에서의 솔루션 배치

Country Status (9)

Country Link
US (1) US7558857B2 (ko)
EP (1) EP1889167A4 (ko)
JP (1) JP2009500717A (ko)
KR (1) KR101278743B1 (ko)
CN (1) CN101189595B (ko)
BR (1) BRPI0611588A8 (ko)
MX (1) MX2007015189A (ko)
RU (1) RU2417416C2 (ko)
WO (1) WO2007005107A2 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7769004B2 (en) * 2003-09-26 2010-08-03 Surgient, Inc. Network abstraction and isolation layer for masquerading machine identity of a computer
US8176408B2 (en) * 2005-09-12 2012-05-08 Microsoft Corporation Modularized web provisioning
US7979789B2 (en) * 2005-12-19 2011-07-12 Microsoft Corporation System and method of replacing a delegate component associated with a delegate modular software component at software execution time
US8078728B1 (en) * 2006-03-31 2011-12-13 Quest Software, Inc. Capacity pooling for application reservation and delivery
US7689718B2 (en) * 2007-01-31 2010-03-30 International Business Machines Corporation Channel subsystem server time protocol commands and system therefor
US8194674B1 (en) 2007-12-20 2012-06-05 Quest Software, Inc. System and method for aggregating communications and for translating between overlapping internal network addresses and unique external network addresses
US8418139B2 (en) * 2008-04-18 2013-04-09 International Business Machines Corporation System and method for updating initialization parameters for application software from within a software development environment
CN102207859A (zh) * 2010-03-31 2011-10-05 国际商业机器公司 解决方案部署方法、设备和系统
CN102457472B (zh) * 2010-10-18 2014-12-31 上海幻维数码创意科技有限公司 一种可供动画制作团队使用的插件控制方法及装置
US8417737B2 (en) 2010-10-20 2013-04-09 Microsoft Corporation Online database availability during upgrade
US8386501B2 (en) 2010-10-20 2013-02-26 Microsoft Corporation Dynamically splitting multi-tenant databases
US9075661B2 (en) 2010-10-20 2015-07-07 Microsoft Technology Licensing, Llc Placing objects on hosts using hard and soft constraints
US8751656B2 (en) 2010-10-20 2014-06-10 Microsoft Corporation Machine manager for deploying and managing machines
US8799453B2 (en) 2010-10-20 2014-08-05 Microsoft Corporation Managing networks and machines for an online service
US8296267B2 (en) 2010-10-20 2012-10-23 Microsoft Corporation Upgrade of highly available farm server groups
US8850550B2 (en) 2010-11-23 2014-09-30 Microsoft Corporation Using cached security tokens in an online service
US9721030B2 (en) 2010-12-09 2017-08-01 Microsoft Technology Licensing, Llc Codeless sharing of spreadsheet objects
WO2013022411A1 (en) * 2011-08-10 2013-02-14 Google Inc. Coordinating software deployment
US8533804B2 (en) 2011-09-23 2013-09-10 Loyal3 Holdings, Inc. User login with redirect to home network
US8468129B2 (en) 2011-09-23 2013-06-18 Loyal3 Holdings, Inc. Asynchronous replication of databases of peer networks
EP2966836B1 (en) * 2014-07-08 2017-09-06 Giesecke+Devrient Mobile Security GmbH Secure Element Causing a Delay for Use in a Network
CN105701114B (zh) * 2014-11-27 2019-04-05 英业达科技有限公司 解决方案搜寻系统的操作方法及解决方案搜寻系统
US10116502B2 (en) * 2016-02-23 2018-10-30 Salesforce.Com, Inc. System and method for providing configuration settings to services in a cloud infrastructure
CN112860342B (zh) * 2021-02-10 2024-03-12 北京百度网讯科技有限公司 微服务配置的方法、装置、设备、系统以及存储介质
US20230362234A1 (en) * 2022-05-04 2023-11-09 Microsoft Technology Licensing, Llc Method and system of managing resources in a cloud computing environment

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717924A (en) * 1995-07-07 1998-02-10 Wall Data Incorporated Method and apparatus for modifying existing relational database schemas to reflect changes made in a corresponding object model
US20020004824A1 (en) 2000-05-17 2002-01-10 Cuan William G. Method and apparatus for automatically deploying data and simultaneously Executing computer program scripts in a computer network

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06110715A (ja) * 1992-09-25 1994-04-22 Hitachi Ltd 仮想計算機システムにおける計算機資源の動的割付け方法
JPH113261A (ja) * 1997-06-13 1999-01-06 N T T Data:Kk 情報提供システム、情報通信装置、記録媒体
US7058704B1 (en) 1998-12-01 2006-06-06 Network Appliance, Inc.. Method and apparatus for implementing a service-level agreement
US7181539B1 (en) * 1999-09-01 2007-02-20 Microsoft Corporation System and method for data synchronization
US6947992B1 (en) * 2000-05-01 2005-09-20 International Business Machines Corporation Maintaining HTTP session affinity in a cluster environment
JP4712279B2 (ja) * 2000-06-20 2011-06-29 テラスプリング・インコーポレーテッド 拡張可能コンピューティングシステムの制御方法および装置
US20040003266A1 (en) * 2000-09-22 2004-01-01 Patchlink Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
US7631107B2 (en) * 2002-06-11 2009-12-08 Pandya Ashish A Runtime adaptable protocol processor
US7020706B2 (en) 2002-06-17 2006-03-28 Bmc Software, Inc. Method and system for automatically updating multiple servers
US8140677B2 (en) * 2002-11-21 2012-03-20 International Business Machines Corporation Autonomic web services hosting service
US20050080891A1 (en) * 2003-08-28 2005-04-14 Cauthron David M. Maintenance unit architecture for a scalable internet engine
US7925738B2 (en) * 2003-12-18 2011-04-12 Hewlett-Packard Development Company, L.P. Analytical cache performance model for a media server
CN100377554C (zh) * 2004-05-25 2008-03-26 华中科技大学 一种集群服务器的负载均衡方法
US7899907B2 (en) * 2004-06-30 2011-03-01 Siebel Systems, Inc. Access and synchronization with enterprise applications using remote hosted solution
US8392545B2 (en) * 2004-07-01 2013-03-05 Nokia Corporation Device management system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717924A (en) * 1995-07-07 1998-02-10 Wall Data Incorporated Method and apparatus for modifying existing relational database schemas to reflect changes made in a corresponding object model
US20020004824A1 (en) 2000-05-17 2002-01-10 Cuan William G. Method and apparatus for automatically deploying data and simultaneously Executing computer program scripts in a computer network

Also Published As

Publication number Publication date
WO2007005107A2 (en) 2007-01-11
CN101189595A (zh) 2008-05-28
KR20080027230A (ko) 2008-03-26
US20070005769A1 (en) 2007-01-04
CN101189595B (zh) 2011-03-09
JP2009500717A (ja) 2009-01-08
WO2007005107A3 (en) 2007-09-20
BRPI0611588A2 (pt) 2010-09-21
MX2007015189A (es) 2008-02-19
EP1889167A2 (en) 2008-02-20
RU2007147631A (ru) 2009-06-27
US7558857B2 (en) 2009-07-07
EP1889167A4 (en) 2009-02-04
BRPI0611588A8 (pt) 2017-09-19
RU2417416C2 (ru) 2011-04-27

Similar Documents

Publication Publication Date Title
KR101278743B1 (ko) 서버 팜에서의 솔루션 배치
US10430204B2 (en) System and method for cloud provisioning and application deployment
US9350610B2 (en) System and method for configuration management service
US7409463B2 (en) On-demand active role-based software provisioning
US8234639B2 (en) Autonomic auto-configuration using prior installation configuration relationships
US8904003B2 (en) Method and system for delegated job control across a network
US20120102480A1 (en) High availability of machines during patching
KR20050120643A (ko) 비-침해 자동 오프사이트 패치 지문채취 및 업데이팅시스템 및 방법
JP2015534167A (ja) クラウドコンピューティング環境で使用するサービス管理エンジンを提供するためのシステムおよび方法
US20040260765A1 (en) System and method for distribution of software licenses in a networked computing environment
US7619761B2 (en) Extensible and distributed job execution service in a server farm
US9086942B2 (en) Software discovery by an installer controller
US20100312879A1 (en) Plug-in provisioning integration in a clustered environment
EP2438709B1 (en) Network element integration
US20090254579A1 (en) Deploying directory instances
CN115344273A (zh) 一种基于货架系统来运行应用软件的方法及系统
US20230239374A1 (en) Managing deployment of cloud-native network functions (cnfs)
Smith et al. There and Back Again: A Case Study of Configuration Management of HPC
Medina et al. Provisioning the SharePoint Farm to AWS Using Terraform and Ansible
Downar Wiki-WS as a C2 NIWA Web Service Management Platform
Preston et al. Pulling It All Together: Continuous Provisioning with Chef and Azure
Dayley Novell ZENworks for Desktops 4 Administrator's Handbook
Thakker et al. Preparing the Hosts for Provisioning
Krum et al. Getting Started with Puppet
Guide Unicenter® Desktop and Server Management

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160517

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170522

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee