KR100570141B1 - 복수의 애플리케이션 레벨 사용자를 위한 접속 제공 방법, 시스템, 및 기록 매체 - Google Patents

복수의 애플리케이션 레벨 사용자를 위한 접속 제공 방법, 시스템, 및 기록 매체 Download PDF

Info

Publication number
KR100570141B1
KR100570141B1 KR20037017243A KR20037017243A KR100570141B1 KR 100570141 B1 KR100570141 B1 KR 100570141B1 KR 20037017243 A KR20037017243 A KR 20037017243A KR 20037017243 A KR20037017243 A KR 20037017243A KR 100570141 B1 KR100570141 B1 KR 100570141B1
Authority
KR
South Korea
Prior art keywords
application
level
user
resource class
resource
Prior art date
Application number
KR20037017243A
Other languages
English (en)
Other versions
KR20040019033A (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
Priority to US09/921,868 priority Critical
Priority to US09/921,868 priority patent/US7174379B2/en
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Priority to PCT/GB2002/001368 priority patent/WO2003014928A2/en
Publication of KR20040019033A publication Critical patent/KR20040019033A/ko
Application granted granted Critical
Publication of KR100570141B1 publication Critical patent/KR100570141B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network-specific arrangements or communication protocols supporting networked applications
    • H04L67/20Network-specific arrangements or communication protocols supporting networked applications involving third party service providers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network-specific arrangements or communication protocols supporting networked applications
    • H04L67/22Tracking the activity of the user
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Application independent communication protocol aspects or techniques in packet data networks
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32High level architectural aspects of 7-layer open systems interconnection [OSI] type protocol stacks
    • H04L69/322Aspects of intra-layer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Aspects of intra-layer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer, i.e. layer seven

Abstract

ASP 서버팜 내에서, 애플리케이션을 사용하기 위한 요청들은, 그 애플리케이션이나 그 컴포넌트의 사용가능한 그러한 인스턴스들의 최소 부하로서 식별되는 것인 애플리케이션의 특정 실행 인스턴스(또는 그의 적절한 컴포넌트)로 지향된다. 그러한 인스턴스들의 수는 그 애플리케이션이나 컴포넌트를 위한 요청들의 수에 응답하여 동적으로 증가되거나 감소된다. 요청들은 클라이언트-기초 당 지향되거나(첫번째 측면에 따라서) 또는 인스턴스가 조절되며(두번째 측면에 따라서), 애플리케이션의 인스턴스들 및/또는 그의 컴포넌트들이 사용자의 특정 그룹 또는 사용자의 사용을 위해서 유보된다. 이러한 방식의 운영은 개별적인 사용자들 또는 사용자들의 그룹들에 대한 서비스 약속의 준수를 용이하게 한다. 인스턴스 및 사용자의 각 조합에 대해서 현재 배정된 자원과 현재 소비되는 자원의 기록이 유지되며, 애플리케이션의 인스턴스들이나 그 컴포넌트들에 의해서 서비스되는 요청들에 의해 인스턴스들에 배치되는 부하 요인들에 따른다. 전술한 구성은 애플리케이션에 대한 요청들의 예측되는 범위에 따라 사용자에 대한 서비스 약속이 구성되도록 허용하며, 이러한 예측된 범위내에서 하나 이상의 서로 다른 대역을 가지는 서비스 요청 레이트들에 대해 과금이 된다. 요청이 서비스되지 못하는 경우 페널티 레이트가 과금된다(사용자를 위해서).
서버팜, 서브팜, 애플리케이션, 요청, 자원 클래스, 인스턴스, 지향, 모니터링

Description

복수의 애플리케이션 레벨 사용자를 위한 접속 제공 방법, 시스템, 및 기록 매체{MANAGING SERVER RESOURCES FOR HOSTED APPLICATIONS}

본원 발명은 제3 주체(third party)들에 대한 호스팅되는(hosted) 애플리케이션들에 대한 접속을 제공하는 서버 자원들을 관리하는 것에 관련한 것이고, 특히 이에 한정되지는 않지만, 애플리케이션 서비스 제공자에 의해서 운영되는 서버들의 자동화된 관리에 관련된 것이다.

애플리케이션 서비스 제공자(application service provider, ASP)는 종종 서버팜(server farm)이라 칭해지는 공유 컴퓨팅 인프라스트럭쳐를 사용하여 복수의 고객[즉, 클라이언트 조직(organsation)들]을 위한 애플리케이션을 호스팅(host)한다. ASP는 규모의 경제(중복, 첨두 부하 취급, 기술적 숙련도 등)의 장점을 가지고 있고, 또한 고객들이 복잡한 정보 기술 관리보다는 핵심 경쟁력(competency)에 초점을 맞추게 하는 장점을 가지고 있다. 이러한 컴퓨팅 인프라스트럭쳐가 ASP에 의해서 소유되고 고객들 사이에서 공유되므로, ASP는 그 자원들의 사용을 개선하기 위한 충분한 기회를 가지게 되고 따라서 비용 면에서 효율적인 서비스를 제공하는 기회를 가진다.

위의 관점에서, 경제적, 기술적 및 경쟁적 이유를 위해서 ASP들을 통해서 사용자가 그들의 애플리케이션들을 아웃소싱(outsourcing)하도록 협조하기 위한 명백한 경향이 존재한다. 현재, 대부분의 ASP들은 특정 서버들이 개별적인 고객들에 전용되는(dedicated) 것인 웹 호스팅과 같은 간단한 서비스들을 제공한다. 다른 ASP들은 이러한 서비스들을 제공하는 것을 관리하는 매우 단순한 서비스 레벨 보증서(Service Level Agreement, SLA)를 가지며 서버들이 상대적으로 정적인 방식으로 공유된다.

머신 사용을 개선하기 위한 현존하는 한 가지 접근법은 고객들 사이에서 전체 머신의 배정(allocation) 및 배정해제(deallocation)에 관련된 것이다. 이러한 접근법은 고객이 고객의 처분에 의해서 머신들의 수의 상한과 하한 면에서 그들의 필요를 특정하는 것을 요구하며, 이는 고객이 기술적으로 지식이 있어야 한다는 것을 암시한다. 이것은 대규모 기업 고객들에 대해서는 합리적인 제안이지만, 중소 규모 기업들에 대해서는 일반적으로 적절한 것이 아니다.

캘리포니아 서니베일에 위치한 엔심 코포레이션(Ensim Corporation)에 의해서 개선된 배열이 제안되었다. 이 제안된 배열은 머신 분할(fraction)의 개념을 사용한 애플리케이션 호스팅을 제공한다. 엔심의 해결책은 사설 서버(private server, PS)들이라 칭하는 것을 지원하는 것에 의해서 서버팜을 가로지르는 애플리케이션들의 배치(deploy)를 관리하는 것뿐만이 아니라, ASP들이 고객들 사이에 서버 자원들을 안전하게 공유하도록 허용한다. 각 PS는 물리적 서버 상에서 지원되는 임의의 재고(off-the-shelf) 애플리케이션들을 실행할 수 있다. 엔심의 시스템은 또한 고장난 PS들을 복원하기 위한 기초적 관리를 제공하며, 고객들을 PS들 및 머 신들 상에서 이동시키고 PS 자원들을 수동으로(manually) 증가시킨다. 단일 콘솔로부터, ASP들은 복수의 PS들을 관리하고 제공할 수 있다. 호스팅되는 애플리케이션들은 단지 웹-호스팅 준비된 것만을 필요로 하고, 더 이상의 변경을 필요로 하지 않는다.

다양한 장점에도 불구하고, 엔심에 의해 제안된 이러한 배열은 많은 제한점을 가진다. 각 PS가 물리적 서버 자원들의 최소 사용가능성을 보증한다는 점에서 PS들은 상대적으로 정적이다. 그 결과, 엔심에 의해서 제공된 이 해결책은 여전히 그 자원들의 사용에 있어서 비효율적이다. 또한, 시스템 관리가 콘솔을 통해서 수동으로 수행되어야만 한다.

이러한 관점에서 볼 때, 기존의 기술들에 관련된 이러한 그리고 다른 문제점을 개선하기 위한 시도들을 위해서 애플리케이션을 호스팅하기 위한 개선된 해결책이 명백하게 필요하다.

고객들은 종종 그들의 ASP들로부터 전용 하드웨어를 요구하지 않는다. 그들의 직원(staff)의 요구사항은 통상적으로 충분히 적어서, 복수의 고객들의 요구사항이 서버팜 내의 단일 머신 상에서 그들을 호스팅하는 것에 의해서 동시에 만족될 수 있다. 따라서, 분할화 호스팅(즉, 머신들의 분할부들만을 특정 고객에 대해서 배정하는 것)이 일반적으로 바람직하다. 이것은 클라이언트들 사이에서 고가의 머신들 및 소프트웨어의 비용 부담을 공유하면서 최고급 서비스들의 제공을 허용한다. 이러한 측면에서, 분할화 호스팅을 제공하기 위한 유연성있는 체제가 후술하는 "가상"서버들의 개념을 사용하여 제공된다.

한 애플리케이션으로 지향(direct)되는 요청들은, 그러한 컴포넌트(component)들 또는 그 애플리케이션의 사용가능한 그러한 인스턴스(instance)들 중 최소의 부하가 걸리는 것으로 식별된 것인, 그 애플리케이션의 특정 실행 인스턴스로(또는 적절한 컴포넌트로) 포워딩(forward)된다. 그러한 인스턴스들의 수 및/또는 용량은 그 애플리케이션 또는 그 컴포넌트에 대한 요청들의 다양한 수에 응답하여 동적으로 증가하거나 감소할 수 있다.

요청들이 지향되거나 또는 인스턴스들이 클라이언트-기초 당(per client-basis)으로 조절(adjust)된다. 즉, 애플리케이션의 인스턴스들 및/또는 그 컴포넌트들은 고객 또는 특정 고객들의 그룹의 개별적인 사용을 위해서 예정(reserve)된다. 이러한 방식의 동작은 각각의 엔터티(entity)들에 서비스 약속에 순응(compliance)하도록 촉진한다. 어플리케이션의 인스턴스들이나 컴포넌트들에 의해서 서비스되는 요청들에 의한 인스턴스들 상에 위치하는 부하 요인(factor)에 의하여, 인스턴스와 고객의 각 조합에 대해서 현재 배정된 자원들과 현재 소비된 자원들의 기록(record)이 유지된다.

고객과의 서비스 레벨 보증서는 애플리케이션의 요청들의 예상되는 범위에 의하여 구체화되며, 이러한 예상되는 범위 내의 하나 이상의 서로 다른 대역들 내에서 요청 레이트(rate)를 서비스하기 위해 요금이 부과된다. 인프라스트럭쳐가 요청들을 서비스하지 못할 때는 페널티(penalty) 레이트가 부과된다(고객들을 위해서).

바람직한 실시예는 복수의 고객들의 첨두 부하를 취급하고 또한 그 SLA들이 위반되지 않았다는 것을 보증하기 위해 필요한 자원들의 감소하는 것에 의해서 ASP의 자원 사용을 개선한다. 반드시 제공되야 하는 예비 용량은 고객들의 수에 따라 선형적으로 증가하는 것이 아니고 복수의 고객들에 대해서 거의 일정하게 유지된다. 이럼에도 불구하고, 고장의 위험성은 제한되어 있으며, 이는 서로 다른 일치하는(즉, 동일한 시간에서 발생하는) 사용들로부터의 요구의 급상승(surge) 가능성이 현저하지는 않지만 이미-작은 가능성들의 곱셈에 의해서 현출될 수 있기 때문이다.

전술한 시스템은 최적화된 자원 배정과 자동화된 시스템 관리와 필요-기초한 자원들의 공유(소프트웨어 뿐만 아니라 하드웨어도)를 통해서 ASP의 수익을 최대화한다.

설명된 기술들은, 고객들이 사용을 원하는 애플리케이션들 및 예상되는 사용 레벨들의 면에서, 편리하게 고객들이 그들의 고-레벨 요구사항들 만을 특정할 수 있다. 고객은 ASP가 그 밑에 있는 자원들에 관한 모든 결정을 하도록 할 수 있다. ASP는 서로 다른 머신들의 분할들을 고객에게 배정할 수도 있고, 부하 및 고장들의 변화에 응답하여 같이 시간상에서 증가 또는 감소하는 가상 서버를 구성할 수 있다.

도 1은 ASP 호스팅 시스템의 서로 다른 기능적 컴포넌트들의 개요도.

도 2는 도 1의 ASP 호스팅 시스템의 아키텍쳐의 개요도.

도 3은 전역 의사 결정자 컴포넌트[global decision maker component]에 의해서 진행되기 이전에, 도 1의 시스템 내에서 집합된(aggregated) 데이터 흐름들이 어떻게 취급되는 가를 나타낸 개요도.

도 4는 도 1의 시스템 내에서 레벨 2a 집합자(aggregator)에 대한 알고리즘을 개요적으로 나타내는 흐름도.

도 5는 도 1의 시스템 내에서 어떻게 들어오는(incoming) 요청들이 분배되는 가를 나타낸 개요도.

도 6은 도 1의 시스템의 서로 다른 가상 부분(portion)들을 위한 부하 분배의 개요도.

도 7a 및 도 7b는 에이전트(agent) 및 집합자 각각에 대해서, 도 1의 시스템 내에서 고장 검출을 위한 알고리즘을 개요적으로 나타내는 흐름도.

도 8은 도 1의 시스템 내에서 부하 분배를 위한 알고리즘을 개요적으로 나타내는 흐름도.

도 9는 도 1의 시스템을 구현하기 위해 사용될 수 있는 예시적인 컴퓨터 시스템의 개요도.

서버 자원들을 관리하기 위한 기술들 및 배열들이 ASP에 의해서 제공되는 서비스들과 관련하여 설명되고, 여기서 사용자들(ASP의 고객들 또는 클라이언트들)은 ASP에 의해서 운영되는 복수의 네트워킹된 머신들 상에서 호스팅되는 하나 이상의 애플리케이션들에 접속할 수 있다. 통상적으로 특정 물리적 사이트(site)에서 국부 영역 네트워크(LAN)에 의해서 연결되는 것인 이러한 네트워킹된 머신들의 모임(collection)은 서버팜으로 칭해진다.


애플리케이션 호스팅

서버팜은 자원들의 모임으로 볼 수 있다. 이러한 것은 하드웨어(컴퓨터, 전원 공급, 네트워킹 장치류, 등) 뿐만 아니라 ASP가 그 잠재적인 고객들에게 유용하다고 생각하는 소프트웨어(애플리케이션, 표준 미들웨어, 운영 체제)를 포함한다. 컴퓨터들은 이질적(heterogeneous)일 수도 있으며, 광범위하게 다른 성능을 가질 수도 있다. 예컨대, ASP는 저-용량 웹사이트들을 호스팅하기 위한 단순한 개인용 컴퓨터 서버들을 제공할 수 있으며 또한 복잡한 회계적 또는 과학적 분석을 수행하기 위한 고성능 메인프레임들을 제공할 수도 있다.

유사하게, ASP에 의해서 제공되는 소프트웨어는 단순한 제작툴(워드프로세싱, 스프레드쉬트)에서 특화된 도메인(체스와 같은 대화형 게임, 기상 예측과 같은 과학적 계산 등)을 위한 복잡한 알고리즘 및 완전-보장(full-pledged) 애플리케이션(급료 계산, 전자상거래 웹-사이트)들까지 다양할 수 있다.

가상 서버들 및 가상 서버팜

애플리케이션은 자원 클래스(class)들의 세트로 간주될 수 있다. 이 가상 서버 유형이라는 용어는 그러한 자원 클래스들의 세트를 칭하는데 사용된다. 예컨대, 웹-기반의 소매점 애플리케이션은 다음과 같이 구성될 수 있다.

- 전단(front-end) 컴포넌트 <웹 서버>;

- 미들웨어 컴포넌트 <전자상거래 서버>; 및

- 후단(back-end) 컴포넌트 <데이터베이스 서버>.

따라서, 통상적으로 ASP 클라이언트들에 의해서 필요하게 되는 애플리케이션들은 개념적으로 자원 클래스들의 세트로 개념적으로 분리(partition)되어 있다. 자원 클래스는 특정 유형의 자원의 기능(functionality)과 특성(property)들을 캡슐화(encapsulate)한다. 예를 들어:

- DB2TM 서버는 자원 클래스<데이터베이스 서버>의 인스턴스이다.

- WebSphereTM 상거래 서버(WCS)는 자원 클래스<전자상거래 서버>의 인스턴스이다.

자원 클래스는 서로 다른 인스턴스들을 가질 수 있다 -예컨대, <데이터베이스 서버> 클래스는 DB2 서버에 부가하여 오라클 및 사이베이스 서버들을 포함할 수 있다. 그러나, 이러한 인스턴스들은 공유된 관계 데이터베이스들에 대한 원격 접속을 제공하는 것인 공통 기능을 공유한다.

가상 서버는 곧 가상 서버 유형의 인스턴스이다. 예컨대, ASP 고객의 웹-상점 애플리케이션은 ApacheTM 웹서버와, WebSphereTM 상거래 서버와 DB2TM 데이터베이스 서버로 구성된다. 이러한 애플리케이션이 ASP의 서버팜 상에서 배치될 때, 여기에는 각 자원 클래스의 복수의 인스턴스가 존재하여 모든 들어오는 요청들이 시간적으로 적절한 형태로 취급되는 것이 가능하도록 하는 것에 주의하자.

ASP는 예컨대 ApacheTM 전단의 5개의 인스턴스들과 WCSTM의 2개의 인스턴스들 과 DB2TM의 하나의 인스턴스를 웹-상점상에서 주어진 현재 부하를 가정하여 실행하는 것을 결정할 수도 있다. 가상 서버의 런타임(run-time) 구현(embodiment)은 따라서 가상 서버 유형 내에 포함된 각 자원 클래스의 (가능하게는 복수의) 인스턴스들로 구성된다.

따라서, 클라이언트의 애플리케이션 요구사항은 가상 서버 유형의 상세사항(specification)으로 변환될 수 있다. 다음 단계는 자원 인스턴스들을 서버팜 내에서 사용가능한 물리적 머신들 상으로 매핑(map)하냐를 결정하는 것이다.

이어지는 설명에서, 클라이언트들 사이에 머신들을 공유하는 ASP의 문맥 내에서, 머신 분할은 단일 클라이언트에 배정된 자원의 세트로 정의되며, 모두 동일한 물리적 머신 상에 존재한다.

이하 상세히 설명되듯이, 가상 서버의 자원 인스턴스들은 머신 분할 내에서 모두 공존하지만, 일반적으로는 ASP는 가상 서버를 서로 다른 머신들 상의 머신 분할들의 세트 상으로 매핑한다. 예컨대, 고객의 웹 상점을 나타내는 가상 서버는, 한 머신의 분할 상에서의 2개의 ApacheTM 서버와 1개의 WCSTM의 서버와, 다른 머신 상의 3개의 ApacheTM 서버와 1개의 WCSTM의 서버와, 세 번째 머신 상의 DB2 서버를 실행하는 것에 의해서 지원될 수 있다. 이러한 것은 ASP가 그 머신들 상에서 부하를 분배하도록 허용한다. 이후, 만약 고객 웹상점의 부하가 매우 낮다면, ASP는 하나의 ApacheTM 및 WCSTM 서버를 포함하는 하나의 머신 분할과 DB2TM을 실행하는 두 번 째 분할로 가상 서버를 재구성할 수 있다.

한 접근법은 특정 자원 클래스들을 위한 머신들을 전용(dedicate)하는 것이다. 예컨대, 고객의 가상 서버는, 전단 웹서버들을 실행되는 하나의 머신과 상거래 서버를 실행되는 다른 머신과 데이터베이스 서버를 실행하는 세 번째 머신의 분할로, 매핑할 수 있다. 이러한 것은 ASP의 유지 작업을 단순화하여 따라서 머신이 전용된 애플리케이션의 사용량 계측을 모니터링하는 데 있어 다른 애플리케이션의 간선을 줄이는 장점이 있다. 물리적 머신이 특정 자원 클래스에 전용되는 이러한 접근법은 바람직한 실시예에서 채택된 접근법이다.

가상 서버들과 머신 분할들의 복합 개념을 사용하여 모델링되고 관리되는 것인 ASP의 서버 웨어하우스(warehouse)는 가상 서버팜으로 칭해진다. 가상 서버팜의 목적은 ASP 자원들의 효율적이고 자동화된 관리를 제공하는 것이고, 여기서 자원들은 최적 또는 준-최적 형태로 요구시(on demand) 고객들에게 배정되고, 동시에 고객의 서비스 레벨 보증서에서 특정된 것인 약속된 서비스 표준을 유지한다.

서비스 레벨 보증서

ASP의 고객들은 바람직하게는 ASP 자원들의 기술적인 상세사항으로부터 바람직하게 보호된다. 이러한 것이 ASP가, 전문 기술적 파라미터들을 참조하는 것을 요구하지 않고 이해해야할 상세한 기술적 지식을 요구하지 않는 고객과 서비스 레벨 보증서을 협상할 수 있도록 허용한다고 인식된다. 그러나, 그러한 서비스 레벨 보증서들은 여전히 고객의 서비스 요구사항을 얻는데 적절하다. 고객은 단지 어떤 애플리케이션이 고객이 호스팅되는 것을 원하는 지와 그 애플리케이션 상에서 예상되는 수요 또는 부하를 지시할 뿐이다.

본원 명세서에서 설명된 실시예와 관련되어 제공될 수 있는 서비스 레벨 보증서들은 그 애플리케이션의 히트(hit)의 개념에 기초한다. 히트는 그 애플리케이션의 사용을 요청하는 것을 나타낸다. 히트들은 통상적으로 그의 가중치(weight), 즉 히트가 그 애플리케이션에 부과하는 계산 부하에 따라 변한다. 또한, 실제 자원 사용은 애플리케이션 벤치마킹(benchmarking)에서 얻어지는 예상되는 사용과 정확히 정합하지 않을 수 있다. 설명된 실시예에서는 이러한 실제 행동(behaviour)과 예상된 행동과의 차이와 같은 다소의 변형을 처리할 수 있다. 그럼에도 불구하고, 히트들은 적절히 행동한다고 가정하며, 즉 그들이 가중치가 한정(bound)된다는 것으로 가정한다.

고객은 애플리케이션이 배치되기 위해 예상되는 요청들의 레이트 면에서 그들의 요구사항을 특정한다. 이러한 히트 레이트의 서로 다른 값들은 서로 다른 시간 주기에 대해서 특정될 수도 있다. 히트-레이트의 특정에 기초하여, 고객 및 ASP는 서비스 레벨 보증서의 요금을 협상할 수 있다. 가격책정 모델은 바람직하게는 시스템과 독립적이다. 시스템은 다양한 시스템 스킴들에 대해서 지원을 가능하게 한다. 예컨대, 어떤 서비스가 제공되던지 간에, ASP는 고객으로부터 월 일정 레이트를 청구할 수 있으며, 또는 ASP는 서로 다른 시간에 애플리케이션이 사용되는 사용자의 수를 기초로 하여 청구할 수도 있다. 일관성(consistency)을 위해서, 서비스 레벨 보증서는 다음과 같은 파라미터들을 포함한다고 가정하다.


- 가능하다면 평균 히트 레이트를 지원하고 수신하는 것이 예상되는 고객 애플리케이션의 히트들의 범위.

- 이러한 범위의 부-범위(sub-range)들에 대해서 고객이 지불하기로 약속한 요금.

- 최소 요구사항이 지켜지지 못할 때 고객에게 ASP가 지불해야 하는 페널티 요금.

이러한 유형의 단순화된 서비스 레벨 보증서는 고객들이, 어떤 하드웨어가 사용되는지 얼마나 많은 서버가 배치되는지 그리고 다른 그러한 상세한 기술적 상세사항의 기술적 세부사항의 세부적인 지식보다는, 그 애플리케이션이 접하게 될 부하의 양에 대하여 생각할 수 있도록 요구한다. 교대로, ASP는 고객 요구사항의 이러한 기능적 상세사항을, 서비스 레벨 보증서 내에서 고객의 요구를 만족할 수 있는 것인 자원의 특정 세트로, 이송(transfer)하는 것이 가능하다. 이러한 이송을 얻기 위하여, ASP는 바람직하게는 아래 직접적으로 설명한 유형의 벤치마킹 데이터를 참조한다.

벤치마킹

특정 애플리케이션을 지원하는 머신의 용량은 그 머신 상에서 실행될 때 그 애플리케이션의 히트-레이트로 측정된다. 모든 호스팅되는 애플리케이션은 중앙 처리 장치(CPU) 사이클, 임의 접근 메모리(RAM) 요구사항, 디스크 공간 사용 등과 같 은 머신의 물리적 자원들의 소비에 관한 정보를 얻기 위해서 우선 벤치마킹된다. 벤치마킹의 이러한 프로세스는 다음의 두 개의 레벨로 수행된다. (a) 모든 최종-사용자 애플리케이션들은 벤치마킹된다. (b) 최종-사용자 애플리케이션의 빌딩 블록(building block)을 구성하는 모든 소프트웨어 자원 클래스들은 개별적으로 벤치마킹된다.

이러한 후자의 개별적인 자원 클래스 벤치마킹 프로세스는 주어진 히트레이트에 대해 필요한 물리적 자원들을 결정한다. 이러한 정보는 히트레이트에 의하여 요구가 만들어질 때마다 클라이언트의 애플리케이션의 구성(constituent) 자원 클래스들에 대해서 배정될 실제 물리적 자원의 양을 결정하는 데 요구된다. 주어진 히트 레이트를 지원하기 위해서, 다른 측면에서 최종-사용자 애플리케이션들의 벤치마킹 정보는 필요한 서로 다른 구성 자원 클래스들의 양을 제공한다. 이러한 정보는 최종-사용자 애플리케이션의 소프트웨어 컴포넌트들 사이의 관계를 설정하고, 이것은 애플리케이션 상의 부하가 이러한 개별적인 컴포넌트들 상의 부하로 번역되는 비율을 나타낸다.

다수의 대중적인 애플리케이션들에 있어서, 그러한 벤치마킹 정보는 관련된 개발자들로부터 이미 사용가능한 것이다. 만약 벤치마킹 정보가 사용가능하지 않으면, ASP는 스스로 적절한 테스트 및 실험에 의해서 이 정보를 생성한다. 대안적으로, 필요한 물리적 자원들의 약간의 자유로운 초기 예측에 기초하여 자원들을 배정한 후 애플리케이션이 배치될 수 있다. 실제 자원 사용은 실험적인 기간 상에서 학습될 수 있으며 배정은 시행 및 오류의 프로세스에 의해서 이에 따라 조절될 수 있 다.

개괄(overview)

도 1은 ASP 관리 시스템의 기능적 컴포넌트를 소개한다. 이러한 기능적 컴포넌트들은 개괄적으로 아래에 직접적으로 간단하게 설명된다. 이러한 컴포넌트들은 시스템에 의해서 제어되는 것인 하나 이상의 네트워킹된 머신들 상에서 존재한다. 도 1에서, 표시된 기능적 컴포넌트들 사이의 정보의 흐름은 이러한 기능적 컴포넌트들 사이의 화살표에 의해서 지시된다. 기능적 컴포넌트들 사이의 상호작용(interaction)은 아래에 설명된다.

자원 관리자

그 에이전트와 함께 자원 관리자(150)는 집합적으로 분배된 컴포넌트이다. 이 에이전트들은 서버팜 내에서 물리적 머신들 상에서 분배된다. 핵심 컴포넌트- 자원 관리자(150)는 그 고유의 머신 상에서 위치하게 되는 단일 엔터티이다.

부하 분배자

각 가상 서버팜 내에서 각 서브-팜(sub-farm)에 대한 하나의 중앙화된 부하 분배자(110)가 있다.

전역 의사 결정자(GDM)

전역 의사 결정자(140)는 단일 중앙화된 엔터티이다.

부하 모니터(monitor)

부하 모니터(130)는 도 1에서 제시된 바와 같이 가상 서버팜 내의 모든 물리적 머신들을 통해서 분배된다.

집합자

집합자(120)는 아래와 같은 서로 다른 컴포넌트를 가진다.

- 레벨 1 집합자는 서버팜을 통하여 분배된다. 이러한 컴포넌트의 각 인스턴스는 하나 이상의 서브-팜들 또는 팜의 고객의 그룹들에 대해서 책임이 있다. 이러한 구현 결정은 부하 정보 생성에 대한 해당하는 서브-팜(들)의 크기에 의존한다.

- 레벨 2a 집합자는, 레벨 1 집합자(들)에 의해서 생성된 부하에 따라서, 분배된 엔터티 또는 중앙화된 엔터티일 수 있다. 분배된 경우, 각 인스턴스는 고객들의 그룹을 취급한다.

- 레벨 2b 집합자는 유사하게, 레벨 1 집합자(들)에 의해서 생성된 부하에 따라서, 분배된 엔터티 또는 중앙화된 엔터티일 수 있다. 분배된 경우, 각 인스턴스는 자원 클래스들의 그룹을 취급한다.

구성 저장소(repository)

구성 저장소(160)는 중앙화된 데이터베이스이다.

시스템 아키텍쳐 개괄

도 1에 표시된 시스템 아키텍쳐가 이제 좀더 상세하게 설명된다. ASP는 여러 고객들을 호스팅하고, 사용자들은 인터넷을 통해서 ASP 인프라스트럭쳐로 접속한다. 서버팜에 합류(join)하면서, 고객은 서비스 레벨 보증서에 서명(sign)하며, 여기에는 그의 요구사항들에 대한 정보가 포함되어 있다. 이것은 고객의 가상 서버를 초기화하는데 사용된다.

고객의 애플리케이션은 자원 클래스들로 분할되며[전술한 바와 갈이 웹 서버들과 상거래 서버들과 데이터베이스 서버들의 계층화된(tiered) 층들과 같이], 각각의 클래스는 임의의 주어진 시간에서 실행되는 복수의 인스턴스들을 가질 수 있다. 물리적 머신들 상의 다양한 자원 인스턴스들의 레이아웃과 고객의 애플리케이션에 대한 상세한 정보는 구성 저장소(160)에 의해서 동적으로 유지된다.

벤치마킹 정보와 애플리케이션 특성을 사용하여, 고-레벨 고객 요구사항들은 자원 클래스 요구사항[per resource class requirement]으로 변환된다. 시스템은 많은 서브-팜들을 가질 수 있고, 각각은 자원 클래스의 복수의 인스턴스들로 구성된다. 특정 서브-팜에 대한 트래픽은 그 서브-팜의 부하 분배자(110)를 통하여 공급되고, 이것은 그 밑의 서로 다른 인스턴스들 간에 균등하게 부하를 분배하도록 시도한다.

각 자원 인스턴스는 연관된 부하 모니터(130)를 가지고, 이는 그 성능 상에서 연속적으로 메트릭스(metrics)를 수집하는 것이다. 이러한 정보는 부하 분배자(110)에 대해서 사용가능하도록 만들어지고, 이 부하 분배자는 이 정보를 사용하여 부하를 분산한다. 모니터링된 정보는 또한 집합자(120)에게로 공급되고, 집합자는 약간의 의미있는 형태로 메트릭스를 축적하고 정규화한다. 이러한 것은 메트릭스가 각 자원 클래스 상에서 전역적으로 사용되게 하고, 또한 각 고객에 의해 사용되게 한다. 이러한 후자의 사용은 고객의 서비스 레벨 보증서 내에서 설정되고 허용되는 범위와 비교된다. 이러한 숫자들에 기초하여, 집합자(120)는 각 고객에 대한 현재의 자원 배정에 대해서 어떠한 변경이 필요한 지를 결정하고 이러한 것들을 전역 의사 결정자(140)에 제안한다.

전역 의사 결정자(140)는 생성된 수익, 자원 사용 또는 현재 배정의 불안(perturbation)과 같은 특정 파라미터들을 최적화하기 위한 관점에서 다양한 고객들에 대한 자원 배정을 재-계산한다. 이러한 새로운 배정은 자원 관리자(150)에게로 제공되고, 여기서 변경된 배정 계획의 실제 구현을 책임진다. 자원 관리자(150)는 또한 구성 저장소(160)를 갱신하고, 변경이 완료된 후, 구성 저장소는 서버팜을 위한 중앙 구성 저장장치이다.

서버팜의 운영 구조

가상 서버팜의 운영이 자원 사용 및 배정을 관리하는 컴포넌트들을 참조로 하여서 이제 제시된다.

부하 모니터

논리적 모니터 I는 모니터링된 데이터(mI0, mI1, ... ,mIn)(또는 모니터 이벤트들)의 시간-순서 시퀀스를 나타낸다. 논리적 모니터들의 세트는 동적인 세트이다. 두가지 종류의 모니터들이 있다 - 히트레이트 모니터들과 머신 부하 모니터들이다. 각 자원 인스턴스에 대해서, 각 종류에 대해서 정확히 하나의 모니터가 존재한다. 각 모니터에 대한 첫 번째 모니터 이벤트(0th 이벤트)는 일관성 및 단순성의 목적을 위해서 미리 정의된다. 그러한 초기화는 그 애플리케이션 상에서 초기에 예상되는 부하에 기초한다. 어떤 시간에서도, 각 모니터는 자원 인스턴스를 조회(query)할 수도 있는 모듈들에 대한 하나의 "최종(latest)" 모니터 이벤트를 버퍼링할 책임이 있다. 그들의 값들의 영구 기록을 유지할 필요가 없으므로, 노후(old)된 모니터 이벤트들은 폐기된다.

집합자

집합자(120)는 집합자들의 두 개의 레벨에 관련된다. 레벨 1 집합자들은 모니터 데이터를 수집하고 집합한다. 각 클라이언트 및 자원 클래스 쌍에 대해서, 하나의 레벨 1 집합자가 존재한다.

클라이언트 및 자원 클래스로부터 대응되는 인스턴스들로부터의 모든 모니터링된 데이터는 단일 집합자에 송신된다. 집합자는 이 데이터를 인스턴스 당 히트레이트(중요하지 않음) 및 인스턴스 당 히트 가중치로 변환한다. 집합자는 이 집합자 와 관련된 각각의 모니터로부터 하나의 "최종" 모니터 이벤트를 얻는다. 미리 정의된 것인 사용가능한 모니터 이벤트가 항상 존재하므로, 비록 어떠한 새로운 모니터 이벤트도 생성되지 않았다고 하더라도, 최종 모니터 이벤트를 수집하는 프로세스는 여전히 잘 정의되는 것이고 또한 비-블로킹(non-blocking)이다. 모든 모니터 이벤트들이 이 프로세스 내에서 사용된다는 보증은 없으며, 따라서 집합 수행 중에, 주어진 모니터의 시퀀스 내의 일부 이벤트들은 생략될 수 있다.

히트 가중치를 계산하는 데 있어서, 집합자는 모니터 이벤트들을 수집하는 프로세스가 신속하다는 것과 모든 수집된 데이터가 시간 내에서 나란히 배치되어(collocated) 계산된 결과가 의미가 있다는 것을 가정한다. 레벨-1 집합자의 출력은 레벨-1 이벤트들의 세가지 종류로 구성된다.

- 첫 번째 이벤트는 클라이언트에 대응하는 각 애플리케이션에 대해서 얼마나 많은 부하가 존재하는가에 관한 부하-분배자에게도 다시 공급되는 부하 요인이다.

- 두 번째 이벤트는, 클라이언트에 대해서 모든 자원 클래스들을 통해서 데이터를 수집하고 집합하며 클라이언트에 대한 현재 배정들과 히트-레이트 모니터들로부터 얻어진 현재 데이터에 기초하여 클라이언트에 대한 요구 산출(projection)을 만드는 것인 레벨-2a 집합자에게 송신되는, 신규 히트 레이트이다.

- 세 번째 이벤트는, 레벨-2b 집합자에게 송신되는 신규 히트 가중치이고, 이것은 각 인스턴스에 대한 정정 요인을 계산하고 이들을 클라이언트에 대한 전체 정정 요인들(자원 클래스 당 하나)로 집합한다.

요약하면, 고객에 대해서, 집합(aggregation)은 모니터 시퀀스 데이터의 슬라이스(slice)들을 검색(look up)하고, 이 데이터를 클라이언트에 대한 클래스별(class-by-class) 가중치 정정 요인들과 클라이언트에 대한 산출된 배정 요구와 부하 분배자들을 위한 피드백 이벤트들로 변환한다.

부하 분배자

서버팜은 복수의 내부 서브팜들로 나누어지고, 여기서 각 서브팜은 팜의 자원 클래스에 대응한다. 그 자원 클래스에 대응하는 애플리케이션 인스턴스들은 서브팜 내에 포함되고, 애플리케이션 인스턴스들을 위한 들어오는 부하는 인스턴스들 사이에서 분배된다. 각 서브팜에 대해서 하나의 부하 분배자(110)가 존재한다. 서버팜의 게이트웨이는 들어오는 히트들을 분배자 또는 개별적인 전단 서브팜들로 고객의 정체(identity)에 기초하여 라우팅(routing)한다. 전단 서브팜들은 중간 계층 및/또는 전단 컴포넌트들이 의존하는 후단 자원 클래스들 상에서 내부 부하를 생성한다. 부하는 미들/후단 자원 클래스들에 대응하는 서브팜들에 대해서 생성된 내부 히트들에 관한 것이다. 내부 히트들은 내부 서브팜들의 부하 분배자(110)에 대해서 라우팅된다.

서브팜 기능들을 위한 부하 분배자(110)는 다음과 같다. 들어오는 히트들의 클라이언트가 식별되고, 이어서 어떠한 서브팜 애플리케이션 인스턴스가 그 히트를 취급하기에 가능하도록 그 클라이언트에 배정될 충분한 배정된 용량을 가지는 가를 결정한다. 만약 그 히트에 대해서 어떠한 배정된 예비 용량도 존재하지 않으면, 이 후 히트는 버려지거나, 또는 지연된 처리를 위해서 큐(queue)된다.

부하 분배자(110)는 인스턴스들의 현재 세트를 추적하여 배정된 용량들과 현재 부하들에 대해서 분배자가 히트들을 분배하도록 한다. 각 부하 분배자(110)는 레벨 1 집합자들로부터 최종 부하 정보를 판독하는 것에 의해서 그 정보를 갱신한다. 부하 정보는 따라서 이전에 모니터들과 같은 모듈들에 대해서 설명한 유닛 용량의 버퍼 내에서 저장된다. 버퍼들은 예측되는 초기 부하들에 기초하여 미리 정의된 부하들을 사용하여 초기화될 수 있다. 최종 부하 정보 이외에도, 각 부하 분배자(110)는 최종 자원 배정 정보를 얻는 것이 필요하며, 이는 부하 분배자(110)가 구성 저장소(160)로부터 얻는다.

전역 의사 결정자

하나의 전역 의사 결정 프로세스가 존재한다. 이 프로세스는 모든 클라이언트들에 대한 요구들의 주어진 "최종" 세트이다. 이러한 목적을 위해서, 레벨-2a 집합자들은 그 들의 데이터에 대해서 모니터들에 의해서 수행된 유닛-용량 최종 요구 버퍼를 유지할 수 있다. 버퍼들은 그 곳에서 "최종 요구"가 어떤 시간에도(모니터들 내에서와 같이) 유효하도록 아웃세트(outset)에서 미리-정의된 요구들과 함께 초기화되어야 한다. 전역 의사 결정자(140)는, 최종 요구들의 세트 상에서 호출(invoke)될 때, 서버팜을 위한 배정 계획을 계산한다. 배정 계획은 전역 의사 결정자(140)의 유닛-용량 출력 버퍼들 상에서 사용가능하도록 된다. 모니터들과 집합자들의 유닛-용량 출력 버퍼들과는 달리, 전역 의사 결정자(140)의 출력 버퍼는 미리-정의된 배정과 같이 초기화되지는 않는다. 따라서 전역 의사 결정자(140)에 의존하는 임의의 모듈은 어떠한 "최종" 배정 계획도 사용가능하지 않은 경우 블록(block)하도록 준비되어야 한다. 배정 계획을 생성하는 프로세스 내에서, 전역 의사 결정자(140)는 구성 저장소(160)내에 저장된 정보를 사용한다.

자원 관리자

자원 관리자(150)는 전역 의사 결정자(140)에 의해서 만들어진 최종 배정 계획 상에서 수행하는 단일 프로세스이다. 자원 관리자(150)는 다음과 같은 태스크들을 책임진다.

- 배정 당 애플리케이션 인스턴스들을 생성함.

- 모니터들을 생성하고 초기화함.

- 그들의 모니터들과 함께 폐기된 애플리케이션 인스턴스들을 파괴함.

- 애플리케이션 용량들을 축소/확대하기 위한 임의의 OS-레벨 기술들을 인터페이스함.

- 위의 변경들에 따라서 집합자들을 변경함[예컨대, 모니터는 변경된 것으로부터 데이터를 얻어서 설정하고 연결이 집합자들로부터 분배자들로 그리고 또한 전역 의사 결정자(140)로 변경함].

- 부하 분배자들(110) 및 서브팜들의 생성/삭제를 처리함.

자원 관리자(150)는 자원들의 가상 세계와 머신들 및 프로세스들의 실제적인 세상 사이의 다리(bridge)이다. 전역 의사 결정자(140)는 추상적인 용어에서 팜-범위(farm-wide) 자원 배정을 계산하여, 그들의 요청-서빙(serving) 용량들에 의하여 자원 인스턴스들을 서로 다른 클라이언트에 지정(assign)한다. 이러한 배정 계획은 물리적 머신들 및 프로세스들 상에서 수행되는 행동(action)들로 번역되어서 원하는 구성에 도달한다. 자원 관리자는 그들의 에이전트와 함께 이러한 태스크들을 수행한다.

일반적으로 서브팜들은 정적이며, 이는 주어진 클라이언트에 대한 서브팜으로부터 하나의 애플리케이션 인스턴스들이 필요되는 한 어떠한 서브팜도 계속 존재할 수 있기 때문이다. 서브팜들은 신규 자원 클래스들을 가지는 신규 클라이언트들의 추가나 노화 자원 클래스들을 노화 클라이언트의 삭제에 의존하여 삭제되거나 생성된다. 자원 관리자(150)는 모든 위의 활동들(activities)이 클라이언트들과 그들의 히트들이 관련되는 한 투명하게 발생하도록 보장하여야 한다. 그러한 위의 활동들에 대해서는 서버팜의 정지(stoppage) 또는 시간종료(timeout)가 없다. 서브팜 생성 및 삭제에 대해서, 이것은 생성은 서브팜에 대한 임의의 히트 도착들보다 선행(precede)되야 하고 삭제는 그 서브팜에 대한 임의의 히트 도착들보다 후행(succeed)되야 하는 것을 의미한다.

구성 저장소

구성 저장소(160)는 서버팜을 위한 중앙 저장장치로서 행동한다. 이것은 다 음과 같은 정보를 저장한다.

- 하드웨어 정보

- 소프트웨어 정보: 의존사항, 필요한 하드웨어 등.

- 머신 용량 테이블: 서로 다른 자원 클래스들(애플리케이션들)에 대한 벤치마킹 정보, 참조 히트들의 다양한 수에 대한 k-개 요인의 집합[k-tuple].

- 배정 테이블: 서비스될 수 있는 실제 히트들에 의해서 각 클라이언트들에 대한 서버팜 내에서의 현재 배정 그리고 다양한 자원 클래스 인스턴스들에 대한 히트 가중치.

- 애플리케이션 특성 테이블: 애플리케이션들을 구성하는 다양한 자원 클래스들에서 참조 히트들에 의해서 호스팅된 애플리케이션들에 대한 벤치마킹 정보

- 모든 고객들을 위한 SLA 정보

- 시스템 컴포넌트를 위한 구성 정보. 모든 시스템 관리 컴포넌트는 초기화시 예컨대, 정보를 송신해야할 컴포넌트들의 주소와 같은 정보를 판독함.

후술하는 단순한 스위핑(sweep) 스케줄(schedule)을 유지하는 것에 있어서, 중앙화된 구성 저장소(160)에 대한 접속들 사이의 논쟁(contention)/의존도(dependency)는 다음의 광의의 정책을 사용하여 단순화될 수 있다. 스케줄링될 스위핑들의 주어진 세트 내에서[모니터들은 집합자들에 의해 이어지고, 전역 의사 결정자(140)가 이어지며, 자원 관리자(150)가 이어짐], 데이터가 스케줄 내에서 이어지는 모듈에 의해서 사용될 것이 아닌 한 어떠한 모듈도 데이터를 구성 저장소(160)에 데이터를 기록하지 않는다.

다른 말로 하면, 데이터는 데이터를 사용하는 최종 모듈까지 모듈로부터 모듈로 메시지-전달 방식으로 전달되며, 이후 만약 데이터가 이후 사용될 것이라면 그 모듈은 데이터를 구성 저장소(160)에 기록한다. 그 예로써, 히트 가중치들이 집합자들에 의해서 전역 의사 결정자(140)에게로 전달될 때, 전역 의사 결정자(140)는 그 배정 계획과 함께 히트 가중치들을 자원 관리자(150)에게 전달하거나, 또는 자원 관리자는 이후 자원 관리자(150)와 이후의 스케줄에 의해서 사용하도록 히트 가중치들과 배정 계획을 구성 저장소(160)에 기록한다. 이러한 전술한 정책들에 이어서, 전역 의사 결정자(140)는 더 이상의 구성 저장소 기록을 수행하지 않으며, 모든 것을 자원 관리자(150)에 남겨 두어서, 데이터에 기초한 모든 기록이 이것으로 전달되도록 한다.

전술한 정책을 가정하면, 현재 스케줄에 대한 데이터를 위해서 구성 저장소에 대해 어떠한 판독 접속도 발생하지 않는다. 모든 판독 접속은 이전의 긴 스케줄(또는 초기화 같은 일부 다른 선행 이벤트) 내에서 저장된 데이터를 위한 것이고, 여기서는 의존도들 사이에 어떠한 데드록(deadlock)도 존재하지 않으며, 논쟁 문제도 단순하다(판독만 됨). 이것은 또한 모니터링과 집합과 부하 분배 단독으로 관련된 최단 스케줄들에 대해서 사실이고, 전역 의사 결정자(140) 또는 자원 관리자(150)의 호출(invocation)들 사이에서 여러 번 실행될 수 있다.

스케줄링

하나의 단순환 스케줄은 모니터링 스위핑과 이어지는 집합 스위핑과 전역 의사 결정자(140) 계획 계산과 이후 자원 관리자에 의한 계획 배치를 가지는 것이다. 이 후에 이 사이클이 반복된다.

계획 계산과 배치가 상대적으로 느린 프로세스들이므로, 전술한 것과 같은 사이클은 상대적으로 큰 시간 주기를 요구한다. 모니터링, 부하 정보를 부하 분배자(110)에 다시 공급하는 집합은 상대적으로 작은 시간 주기를 요구할 수도 있다. 이러한 것을 장만하기 위해서, 부하 분배자(110)에 대한 피드백의 복수의 사이클들은 전역 의사 결정자(140)에 관하여 사이클 당 실행된다. 따라서, 모니터 시퀀스 내에서 이벤트들의 대부분은 단지 적은 소수의 유도(guiding) 계획 재계산을 가지고 피드백을 부하 분배자(110)에게로 향하게 할 수 있다. 이러한 스킴의 단순하고, 선택적인 변화는, 소수의 유도 계획 재계산을 또한 다른 모니터 이벤트들로부터 계산된 평균을 포함하도록 한다.

가상 서버팜의 구현

가상 서버팜 시스템의 개별적인 컴포넌트들의 구현은 이제 도 1을 참조로 하여 상세하게 설명된다. 그러한 가상 서버들 및 가상 서버팜의 하나의 예는 도 2에 도시된다.

도 2는 ASP 호스팅 해결책의 아키텍쳐를 나타낸다. 서버팜의 게이트웨이는 들어오는 히트들을 분배자들(210 및 240)에 개별적인 전단 서브팜들(212 및 242) 각각을 위해서 라우팅한다. 도 2에서, 가상 서버 1(실선으로 표시됨)은 서브팜들(212, 222 및 232)내의 자원들의 인스턴스들로 구성되고, 가상 서버 2(점선으로 표시됨)는 서브팜들(242, 222 및 232)내의 자원들의 인스턴스들로 구성되고, 가상 서버 3(점선으로 표시됨)은 서브팜들(212, 252 및 262)내의 자원들의 인스턴스들로 구성된다. 히트들은 개별적인 부하 분배자들(210, 220, 230, 240, 250, 260)에 의해서 그러한 서브팜들(212, 222, 232, 242, 252, 262) 각각에 대해서 도시된 바와 같이 분배된다.

부하 모니터

부하 모니터(130)는 다양한 자원 클래스 인스턴스들에 의한 자원 사용을 모니터링하기 위해서 사용된다. 이 정보는 서비스 레벨 보증서에 따른 배정 내에서의 변경을 결정하는데 사용되며 다양한 자원 클래스 인스턴스들을 통해 부하를 균형화(balancing)하기 위함이다.

각 클라이언트는 그 애플리케이션이 요구하는 것인 자원 클래스의 인스턴스를 가진다. 이 인스턴스들은 다음과 같은 방법으로 실제 구현상으로 매핑될 수 있다.

- 자원 클래스의 분리된 물리적 인스턴스는 각 클라이언트에 대해서 존재한다. 특정 클라이언트에 대응하는 복수의 그러한 인스턴스는 복수의 물리적 머신들 상에 존재할 수도 있다.

- 서로 다른 클라이언트들에 대응하는 인스턴스들은 동일한 물리적 머신 상에 존재할 수도 있다.

- 단일 물리적 자원 인스턴스가 복수의 클라이언트들을 서비스한다. 각 클라이언트에 의한 자원의 사용은 인스턴스 그 자체 또는 외부 엔터티에 의해서 제한된다.

국부적으로, 부하 모니터(130)는 클라이언트를 위한 자원 클래스의 각 인스턴스를 위해서 존재한다. 그러나, 실제 시스템에서, 물리적 머신 당 단일 부하 모니터는 그 머신 상의 모든 애플리케이션 인스턴스들에 대한 부하 정보를 모니터링하고 보고한다.

모니터들의 두 가지 유형이 있다.

- 각 애플리케이션 인스턴스에 대해서 단위 시간당 히트들의 수를 측정하는 히트-레이트 모니터.

- 각 애플리케이션 인스턴스에 의해서 소비되는 실제 물리적 자원들을 측정하는 머신 부하 모니터. 이것은 중앙 처리 유닛 사이클, 필요한 메모리 용량 등과 같은 파라미터들로 구성되는 k 차원의 벡터일 수 있다.

부하 분배자(110)는 클라이언트의 각 애플리케이션 인스턴스에 대한 히트 레이트를 그에 포워딩되는 히트들의 수를 집합시킴으로써 측정한다. 부하 분배자(110)는 따라서 부하 모니터로도 동작한다.

머신 부하 모니터는 다음과 같은 기술들을 이용하여 구현될 수 있다.

- UNIX 에서의 ps 또는 top 과 같은 부하 정보를 제공하는 기존의 일부 시스템 프로그램들을 사용하는 것에 의해서.

- UNIX 에서의 /proc 파일 시스템과 같은 밑에 있는 운영 시스템에 의해서 제공되는 정보를 사용하는 것에 의해서.

- TivoliTM 부하 모니터링 시스템과 같은 기존의 임의의 부하 모니터링 기술.

- 만약 존재한다면, 애플리케이션에 의해서 제공되는 부하 정보.

부하 모니터(130)는 레벨 1 집합자에 의해서 선택된 유닛 버퍼 내에서 최종 부하 정보를 유지한다.

부하 정보는 또한 자원 사용에 따라서 클라이언트에 요금을 부과하는데 사용될 수 있다. 또한, 시간 주기 동안 도달하는 요청들의 세트에 의해서 생성되는 부하를 모니터링하는 것에 의해서 귀중한 정보가 획득될 수 있다. 그러한 정보는 시스템의 미세-조절(fine-tuning)과 더 좋은 정책의 설계를 위해서 모아질 수 있다.

부하 분배자(LD-n)는 VSF 시스템의 이어지는 컴포넌트들과 상호작용하여서 전에 리스트된 모든 태스크들을 실행한다.


레벨 1 부하 집합자

LD-n 은 레벨 1 부하 집합자에게로 Sjk를 송신하고 Ljk를 수신하며 그로부터 각 클라이언트에 대한 인스턴스의 사용가능 상태를 수신한다.

자원 관리자

LD-n은 자원 관리자(150)로부터 다음에 관련된 메시지들을 수신한다.

- 기존 인스턴스의 폐쇄(shutdown)

- 클라이언트들에 대해 배정된 용량들과 인스턴스의 생성.

- 인스턴스 내에서 클라이언트들에 대한 배정된 용량의 변경.

- 새로운 배정들로 변경하기 위한 "switch plan" 메시지.

LD-n을 자원 클래스(i)의 서브팜을 위한 부하 분배자라 하자. t를 그 값이 0에서 Tu 사이인 타이머라고 하자. t는 시스템 클럭에 기초하여 증가된다. 타이머는 부하 분배자에 대해서 국부적이다. 시동(start-up)에서 그리고 서브팜 생성 도중에서, 모든 클라이언트들에 대한 인스턴스의 각각의 Ljk 및 Sjk를 0으로 가정한다. 클라이언트 k 당 각 인스턴스 j의 Hjk는 자원 관리자로부터 수신된 값으로 초기화된다. t를 0으로 초기화한다. LD-n은, 자원 관리자(150)에 의해서 정보를 받은 대로 클라이언트 당 인스턴스들의 각각의 Hjk 배정에 기초하여, 들어오는 요청들을 포워딩하는 것을 시작한다.

집합자

집합자(120)는 모니터링 에이전트로부터 부하 정보를 수집하고 효율적인 의사-결정을 위해서 다양한 레벨에서 집합한다.

도 3은 집합된 데이터 흐름이 취급되는 방식을 개요적으로 나타낸다. 도 3을 참조로 하며, 집합자(120)는 다음의 부-컴포넌트(sub-component)들로 구성된다.

레벨 1 집합자(322) : 부하 정보(각 애플리케이션 인스턴스들에 대한 현재 들어오는 히트레이트와, 각 애플리케이션에 의해서 자원들의 현재 소비를 나타내는 자원 사용 k-개 요인의 집합)를 부하 모니터들(130)(R1, R2, R3)로부터 수신하고 사용자 당 및 자원 클래스 당 기초하여 정보를 집합한다. 집합자(120)는 아래에 주어진 식들을 사용하여 다음 파라미터들을 계산한다.

- 신규 히트 레이트: 특정 사용자를 위한 특정 자원 클래스의 각 인스턴스에 대해서 히트 레이트를 부가하는 것에 의해서 얻어지는 사용자 당 및 특정 자원 클래스 당 기초한 집합 히트 레이트.

- 신규 히트 가중치: 각 자원 클래스 인스턴스에 대한 히트의 가중치. 레벨 1 집합자(322)는 이러한 정보와 대응 히트레이트를 레벨 2b 집합자 (326)로 송신한다.

- 부하 요인: 각 자원 클래스 인스턴스에 대해 소비된 것인 배정된 자원들의 분할이다. 이 정보는 부하 분배자(110)로 송신된다.

히트의 가중치 = max( i(서비스된 히트들의 실제 수에 대한 자원 사용 i) /(참조 히트에 대한 자원 사용 i * 서비스된 실제 히트들의 실제 수) )

여기서, i = CPU, 메모리 등으로 구성된 k-개 요인의 집합임.

부하 요인 = (서비스된 히트들의 수*현재 히트의 가중치)/(배정된 실제 히트들*배정된 히트의 가중치)

머신 상의 특정 자원에 대한 참조 히트에 의한 자원 사용( 전술한 바와 같이 CPU, 메모리 등으로 구성된 k-개 요인의 집합)은 구성 저장소(160)내의 벤치마킹 정보로부터 얻어진다. 이것에 부가하여, 각 자원 인스턴스에 대해 배정된 히트들의 수와 그들의 배정된 가중치는 또한 구성 저장소(160)로부터 판독된다.

레벨 2 집합자(324, 326): 레벨 1 집합자(322)로부터 집합된 부하 정보를 수신하고 사용자들의 각 자원 클래스에 대한 자원 요구사항들 내에서의 변경들을 계산하고 이를 요구에 따라 전역 의사 결정자(140)에게 송신한다. 새로운 자원 요구 사항들이 현재 배정과 다르고 클라이언트의 SLA들과 일치되는 경우 변경들이 요구된다. 이러한 사용자들의 이러한 요구들은 참조 히트들의 수로서 송신된다(증가되도록 또는 감소되도록).

전술하였듯이, 이러한 요구들은 각 클라이언트와 그 클라이언트의 애플리케이션을 구성하는 각 자원 클래스들을 위해서 송신된다. 이러한 요구들은 두가지 유형의 요청들로 구성된다. 요구 중 하나는 자원 클래스 상에 들어오는 히트 레이트 내에서 변화가 있을 때마다 발생하며, 시스템은 이러한 변화에 응답하여 그 자원 배정을 조절할 필요가 있다. 이러한 요구들이 식별되고, 인증(verify)되고 레벨 2 집합자(324)에 의해서 발생된다. 레벨 2 집합자(324)는 도 3에서 전역 의사 결정자(140)에 대비하여 국부적 의사 결정자로 참조된다.

두 번째 유형의 요구(정정 요인으로 불리는)는 들어오는 히트들의 가중치가 참조 히트들과 다를 때마다 발생될 필요가 있고 자원 배정은 이러한 변경을 구현하기 위하여 정정될 필요가 있다. 이러한 요구들은 식별되고 레벨 2 집합자(326)에 의해서 발생된다.

레벨 2 집합자(324): 각 자원 클래스 상의 클라이언트의 현재 히트 레이트를 지시하는 부하 정보의 부분을 수신한다. 이러한 정보와 현재 자원 배정 정보[구성 저장소(160)로부터 얻어짐]에 기초하여, 집합자(120)는 클라이언트를 위해서 배정(가능하게는 무효일 수 있는)에서 요구되는 변경들을 계산한다.

도 4는 신규 자원 요구들을 계산하는데 사용되는 알고리즘의 흐름도이다. 이것은 서로 다른 클라이언트들에 대해 서로 다를 수 있는 4개의 구성 파라미터들(a, b, g 및 d)을 사용한다. 이 파라미터는 과도부하(overload) 트리거(trigger)를 나타내며 즉, 클라이언트의 부하가 그 현재 배정의 요인 a 내에 도달할 때, b로 표시되는 증가의 양은 그 클라이언트에 대해서 요구된다. 파라미터들(g 및 d)은 과소부하(underload)에 대응한다. 이러한 파라미터들(a, b, g 및 d)은 상수이거나 또는 현재 부하, 현재 배정 및 SLA 한계들의 함수이며, 이 경우 파라미터들은 시스템 성능을 개선하기 위하여 조절(tune)될 수도 있다. 그러나, b를 계산한 후, 집합자는 배정 내에서 요구된 증가가 클라이언트의 SLA와 일치하는 것을 인증하고 단지 이후 이러한 요구를 전역 의사 결정자(140)에게로 송신한다.

유사하게, 만약 변경이 부정적이면, 즉 배정이 감소되어야 하면, 감소가 SLA에 따라 최소 자원 배정 레벨을 넘어서지 않는지를 집합자는 확인할 필요가 있다.

도 4의 알고리즘의 동작은 전에 설명하였듯이 간단하다. 단계 410에서, 현재 부하는 현재 배정과 비교되고, 파라미터 a에 의해 곱해진다. 만약 현재 부하가 작으면, 이는 곧 단계 420에서 현재 부하가 현재 배정에 파라미터 g를 곱한 것보다 작은지 확인된다. 어떠한 경우든, 만약 현재 부하가 크거나 또는 작거나 각각의 경우, 이는 이후 단계 430 및 440에서 각각 현재 부하가 최소 및 최대 자원 요구사항들 사이에 있는지 확인된다.

만약 현재 부하가 현재 배정에 a를 곱한 것보다 크다면, 그리고 이 자원 요구사항 범위의 바깥이면, 이는 단계 450에서 현재 부하가 최소 자원 요구사항에 동 일한 파라미터 a를 곱한 것보다 큰 지 확인된다. 만약 그렇다면, 최대 자원 배정 및 현재 배정에 파라미터 b를 더한 것 중 더 작은 것으로 신규 배정이 결정된다. 현재 부하가 단계 430에서 자원 요구사항 범위 내에 있다면, 최대 자원 배정 및 현재 배정에 파라미터 b를 더한 것 중 더 작은 것으로 신규 배정이 또한 결정된다.

유사하게, 만약 현재 부하가 현재 배정에 g를 곱한 것보다 크다면, 그리고 이 자원 요구사항 범위의 바깥이면, 이는 단계 460에서 현재 부하가 최소 자원 요구사항에 동일한 파라미터 g를 곱한 것보다 큰 지 확인된다. 만약 그렇다면, 최소 자원 배정 및 현재 배정에 파라미터 d를 뺀 것 중 더 큰 것으로 신규 배정이 결정된다. 현재 부하가 단계 440에서 자원 요구사항 범위 내에 있다면, 최소 자원 배정 및 현재 배정에 파라미터 d를 뺀 것 중 더 큰 것으로 신규 배정이 또한 결정된다.

만약, 대신에, 단계 450 또는 단계 460에서, (i) 현재 배정이 최소 자원 배정에 파라미터 a를 곱한 것보다 더 크거나(단계 450에서) 또는 (ii) 현재 배정이 최대 자원 요구사항에 파라미터 d를 곱한 것보다 더 큰 경우(단계 460)라면, 신규 배정은 단순하게 최소 자원 요구사항이다.

더구나, 만약 요구사항 내에서의 변경이 클라이언트의 애플리케이션에 대한 전단(front end)으로서 행동하는 자원 클래스에 대응한다면, 이후 이 요구(demand)는 애플리케이션 레벨 요구이고 서로 다르게 취급된다. 다른 말로 하면, 그러한 요청은 번역되어서, 클라이언트의 애플리케이션의 모든 자원 클래스들을 위한 히트들의 적절한 수로 구성되는 복합(compound) 요청으로 된다. 밑에 있는(underlying) 자원 클래스들에 대한 대응 히트 요구를 계산하기 위해서, 집합자는 그 애플리케이 션의 자원 클래스들의 현재 대응 비율(ratio)을 그 클라이언트를 위해서 계산한다.

그 애플리케이션의 전단 자원 클래스에 도달하는 각 히트들에 대한 밑에 있는 자원 클래스들에서 생성되는 참조 히트들의 수를, 애플리케이션의 대응 비율은 특정한다. 이 정보는 각 자원 클래스를 위한 클라이언트의 현재 히트 레이트를 획득하고 그 값들을 비교하는 것에 의해서 계산될 수 있다. 시스템 초기화에서, 이러한 비율은 벤치마킹 정보로부터 얻어지고 구성 저장소에서 저장된다. 새롭게 계산된 비율에서 현저한 변경이 있다면, 곧 구성 저장소 내의 노후된 값은 신규 값으로 변경된다. 일단 구성 비율이 얻어지면, 집합자는 곧 이 비율을 사용하여 그 애플리케이션의 모든 자원 클래스들을 위한 적절한 자원 요구들을 생성한다.

레벨 2b 집합자(326) : 각 클라이언트를 위한 각 자원 클래스 인스턴스에 대한 참조 히트들로서 정정 요인을 계산한다. 레벨 2b 집합자(326)는 레벨 1 집합자로부터 각 자원 클래스 인스턴스에 대한 대응 가중치와 함께 현재 히트 레이트를 수신한다. 집합자(120)는 이전 히트-가중치를 구성 저장소(160)로부터 얻고 이후 이하의 식을 사용하여 정정 요인을 계산한다.

정정 요인 = (신규 히트 가중치 - 이전 히트 가중치)*배당된 참조 히트들의 수

이러한 정정 요인들을 각 클라이언트를 위한 각 자원 클래스의 모든 인스턴 스들을 통하여 집합하여, 또한 요구 내에서의 전체 변경을 계산한다. 이러한 요구들은 곧 전역 의사 결정자(140)에게 현재 배정, 현재 히트-가중치 및 각 자원 클래스 인스턴스를 위한 정정 요인과 함께 포워딩된다.

부하 분배자

부하 분배자(110)는 이에 라우팅된 요청들을 그 요청의 클라이언트 정체성에 따라서 적절한 애플리케이션 인스턴스로 매핑한다. 서브팜 내에서의 인스턴스들에 의해서 생성된 요청들은 다음-레벨 부하 분배자에 의해서 다음-레벨 서브팜들 중 하나로 라우팅된다.

도 5는 어떻게 들어오는 요청들이 분배되는가를 개요적으로 나타낸다. 도 5에 도시된 바와 같이, 들어오는 요청들은 레벨-1 부하 분배자(512)에서 수신된다. 이러한 요청들은 레벨-1 부하 분배자(512)에 의해서 예컨대 인스턴스 1, 2 및 3(522, 524 및 526)을 호스팅하는 것인 자원 클래스 1을 위한 서브팜 1(540)로 분배된다. 자원 클래스 1을 위한 서브팜 1(540)에서 처리된 후, 요청들은 레벨-2 부하 분배자 2(514)로 전달된다. 이러한 요청들은 차례로 레벨-2 부하 분배자(514)에 의해서 예컨대 인스턴스 1 및 2(532, 534)를 호스팅하는 것인 자원 클래스 1을 위한 서브팜 1(560)로 분배된다.

도 6은 들어오는 요청들의 흐름을 개요적으로 표현한다. 도 6에서, 클라이언트 C에 속하는 요청 R이 LD-1(610)에 의해서 수신된다고 하자. 요청 R은 서브팜 S1(612)내의 클라이언트 C에 속하는 최소-부하 인스턴스 I에 포워딩된다. 요청 R을 처리한 후, 인스턴스 I는 다음-층(tier) 자원을 위해서 내부 요청(들)을 생성할 수도 있다. 다음 층 자원의 인스턴스들은 서브팜 S2(622)의 부분이다. 그러한 요청들은 LD-2[620, 즉 LD-1(610)의 다음-레벨 분배자]에 의해서 서브팜 S2(622)내의 클라이언트 C를 위해서 층-2 자원의 최소 부하 인스턴스로 포워딩된다. 도 6에 도시되었듯이, 요청들은 이런 방식으로 다른 부하 분배자 LD-4(640) 및 LD-5(650)로 개별적인 서브팜들 S4(642) 및 S5(652) 내에서 클라이언트 C에 속하는 최소 부하 인스턴스들로 전달된다.

부하 분배자(110)는 단위 시간 간격(Tu)을 가지며, 이는 히트 레이트를 계산하는 것에 대한 것이다. 이는 들어오는 요청들에 대해서 FIFO 큐를 가진다. 각 부하 분배자는 또한 2개의 2-차원 테이블을 가진다-각각의 행은 그 서브팜 내의 자원 인스턴스에 대응하고 각각의 열은 클라이언트에 대응한다. 이러한 테이블 중 하나는 전역 의사 결정자(140)에 의한 자원 배정에 대해서 정적이고 RAT(자원 배정 테이블)이라고 불린다. 다른 테이블은 동적이고 RCT(자원 소비 테이블)로 명명된다. RAT 내의 엔트리는 Hjk이고 이는 시간 간격 Tu 동안에 클라이언트 k에 대한 j번째 인스턴스에 의해서 제공될 배정된 히트들이다. RCT 내의 엔트리는 (Sjk, Ljk)이다. Sjk는 현재 시간 간격 Tu 동안에 클라이언트 k에 대한 j번째 인스턴스로 송신되는 히트들의 수다. Ljk는 현재 시간 간격 Tu 동안에 클라이언트 k에 대한 j번째 인스턴스의 부하 정보(부하 요인)이다.

부하 분배자 LD-n에 의해서 최선(best-effort)의 방식으로 인스턴스들 간에 히트들을 분배하기 위해서 수행되는 태스크들이 이하에 설명된다.

- 수신된 각 요청에 대해서, 최소 부하 인스턴스(m)를 검색하고 히트를 여기로 포워딩한다.

- 현재 시간 간격에서 클라이언트 당 인스턴스에 대해 포워딩되는 히트들의 수를 추적하고 이 정보를 레벨 1 집합자에게 송신한다.

- RAT와 RCT로부터 결함 인스턴스들을 제거한다.

- 자원 관리자에 의해서 구현되는 신규 자원 배정 계획에 따라 인스턴스에 대한 배정된 용량을 갱신하고 신규 배정에 따라서 요청들을 포워딩하기 시작한다.

- 폐쇄(shut down)된 인스턴스에 대해서 요청들을 포워딩하는 것을 중지하고 신규로 생성된 인스턴스에 대해서 요청들을 포워딩하기 시작한다.

- 만약 요청 FIFO 큐가 비어있지 않으면, 곧 큐의 윗부분에서 요청을 처리(포워딩/드롭)한다.

전역 의사 결정자

전역 의사 결정자(140)는 시스템의 컴포넌트로서 그 입력으로서 클라이언트 SLA들과 함께 현재 시스템 상태를 취하고 그 출력으로서 신규 자원 배정 계획을 생성한다. 전역 의사 결정자(140)는 다음 정보를 입력으로서 수신한다.

- 참조 히트들에 의한, 레벨 2a 집합자(324)에 의해서 유지되는 유닛 출력 버퍼로부터의 자원 요구들. <자원 클래스, 클라이언트> 집합에 대한 요구가 이 주기 내에서 무효(null)인 경우, 출력 버퍼는 노후 값[플래그가 이러한 진부(staleness)를 나타냄]을 포함하고 그리고 무시된다.

- 참조 히트들에 의한, 레벨 2b 집합자(326)에 의해서 유지되는 유닛 출력 버퍼로부터의 정정 요인 요구들. 위와 같이 입력이 이전 주기에 속하는 경우 입력은 무시된다.

- 대응 비율. 시스템 초기화에서, 클라이언트 벤치마킹 정보는 클라이언트에 의해서 사용되는 자원 클래스들 사이의 상호관련성(interdependence)이 있는 경우 대응 비율을 정의한다. 이 비율은 자원들을 배정하는데 사용된다. 애플리케이션이 특정 자원 클래스에 대해서 그 요구들을 허용하지 못할 경우 그 애플리케이션의 다른 자원 클래스들의 대응 자원들을 유보하는 것이 의미가 없기 때문에 이것은 중요하다. 이 비율은 시간상에서 현저하게 변화할 수 있다. 그 값은 집합자들에 의해서 갱신되고 구성 저장소 내에 저장된다. 전역 의사 결정자(140)는 이 값을 구성 저장소(160)로부터 판독한다.

- 다른 클라이언트-특정 애플리케이션 정보[구성 저장소(160)로부터 획득됨].

- 배정될 각 자원 클래스의 최대 및 최소 양(SLA들로부터 얻어지며 0일수 있음.

- 클라이언트에 대한 자원 클래스 내에서 허용되는 인스턴스들의 최대 수.

- 자원 클래스의 기존의 인스턴스를 폐쇄하거나 신규 인스턴스를 시작하는 비용을 나타내는 수(양수, 0 또는 음수일 수 있음).

- 한 머신에서 다른 머신으로 자원 인스턴스를 이동하는 비용을 나타내는 수

- [구성 저장소(160)로부터 얻어질 수 있는] 인프라스트럭쳐 정보.

- 그 밖에 그리고 각 자원 클래스에 대해 사용가능한 머신들의 추상(abstract) 식별 (이름들).

- 자원 클래스에 대한 각 머신의 용량. 이것은 O/S 오버헤드, 애플리케이션 오버헤드에 대하여 계산한 후 부하에서 작은 임시 변동을 취급하도록 소정의 초과 용량을 남긴 후에 계산된다.

- 그러한 머신들 각각에 허용되는 인스턴스들의 수의 한계(만약 있다면).

- 실제 히트들의 레이트에 의해 특정되는, 팜 내부의 머신들 상에서 각 클라이언트의 현존 배정. 이러한 것들과 함께 히트-가중치들이 또한 공급된다. 이러한 두 개의 곱은 참조 히트들에 의한 배정을 주게 된다.

- 클라이언트의 SLA들로부터의 과금(charging) 정보. 이것은 SLA에 일치하지 않는 다양한 상황에서 지불해야 하는 페널티 요금을 포함한다.

시스템 내에서의 결함이 존재시 머신의 용량의 감소를 가져올 수 있다(0으로 까지). 전역 의사 결정자(140)는 그러한 결함들에 의한 사용가능한 용량의 감소가 구성 저장소(160)에 반영되었다고 가정한다.

GDM 해결(solver) 알고리즘은 전술한 요구들에 응답하여 머신들에 대한 부하 의 배정들을 결정한다. 호스팅의 비용은 시스템의 혼합 정수 선형 프로그래밍 모델을 사용하여 최소화된다. 선형 모델이 설명될 것이며, 이러한 모델에 대한 해결 방법이 이어진다.

선형 프로그래밍 모델

이 모델(선형 프로그래밍을 사용하는)의 목적은 다양한 자원 클래스들에서 클라이언트 요구들에 대해서 머신들의 공급을 정합하는 것이다. 복수 유형의 머신들과 서로 다른 양을 지불하는 클라이언트들을 가정하면, 이 모델은 이송(transportation) 문제(선형 프로그래밍의 영역에 있어서)이고, 수요 및 공급은 이익을 최대화하기 위해서 정합된다. 추가적인 주요 복잡함은 단일 자원 클래스에 대해 지정될(assigned) 각 머신에 대한 요구사항이다.

초과 배정은 낭비가 되므로, 기껏해야 요구되는 용량이 공급된다(수학식 2를 참조). 또한, 시스템이 충분한 용량을 가지지 못한 경우, 이러한 것은 최소 우선권을 통해서 클라이언트들에 기인한 요구의 일부를 버리는 것을 허용한다.

공급 제약조건(constraint)(아래의 수학식 3, 4 참조)은 두 개의 제약조건들로 변경된다. 한가지 제약조건은 각 머신에 단일 자원 클래스를 지정하는 것이다. 다른 제약조건은 그 자원 클래스 내의 요구만이 그에 배정되는 것을 허용하는 것이다.

단일 자원 클래스 내에서 단일 클라이언트의 요구사항이 확산될 머신들의 수 그리고 단일 머신 상에서 존재할 수 있는 클라이언트들의 수에 있어서의 제한이 모 델링된다. 첫째로, 단일 머신 상에서 클라이언트들의 많은 수를 지원하여 발생하는 오버헤드들을 제한하는 것이다. 둘째는, 클라이언트가 확산되는 머신들의 수가 증가하면서 복수의 인스턴스들을 관리하는 것이 더 어려워지기 때문이다(수학식 5, 6 참조)

다음 제약조건은 서로 다른 자원 클래스들로부터의 자원들에 대한 요구사항이 서로 의존하고 있는 경우(예컨대, 한 자원 클래스가 다른 클래스를 호출하는 경우), 배정되는 양들은 할당(proportion)대로(수학식 7 참조) 된다는 것이다. 비록 선형 모델이 정확한 것은 아니지만, 선형 모델은 두 개의 자원들 사이의 실제 의존성의 근사를 표현한다.

모델의 실험에 있어서, 이러한 문제는, 모든 클라이언트들의 최소 요구들을 만족하기 위해 충분한 자원들이 있는 한, 항상 쉬운 해결책을 가지고 있는 것이 명백하다. 수학식 7을 만족시키기 위해서, 병목(bottleneck) 자원 클래스의 사용가능한 용량에 따라 자원 클래스들에 관계되는 배정들은 감소될 것이다.

최종적으로, SLA에 따라서 약속된 각 클라이언트의 최소 요구사항에 대한 제약조건은 항상 충족된다(수학식 8). 임의의 시간에서의 머신들의 공급은 이러한 제약조건의 실현을 보장하기에 충분한 것이다. 그러나, 주요 시스템 결함과 같은 경우들에 있어서, 이러한 것은 유지되지 않을 수도 있다. 최소 요구사항들은 대응 비율 내에서 또한 있어야 한다.

전술한 모델에 대해서 가능한 배정이 결정되고 동시에 다음의 비용 모델에 의해 최적화된다.

우선, 클라이언트들은 그들의 SLA, 사용한 머신들 그리고 이용한 자원 클래스들에 따른 것인 자원 사용의 유닛(유닛들은 참조 히트들이다)당 과금이 된다. 과금은 또한 그 시간에 클라이언트가 사용한 "범위"에 따른다. 예컨대, 만약 과금 유닛들이 과금 사이클 내에서 히트들의 전체 수라면, 곧 첫 번째 A 유닛들은 다음 A 유닛들 보다 더 낮은 레이트로 과금될 수 있는 그러한 식이다(아래의 수학식 1 첫 번째 부분 참조). 또한 클라이언트가 히트들에 대해 지불하는 실제 양을 반영하기 위해서, 참조 히트들의 히트-가중치에 따라서 과금이 가중될 수도 있다.

두 번째로, 머신으로부터 클라이언트를 추가(설정 비용)하거나 제거("청소" 비용)하는 시스템 비용이 있다(수학식 1의 두 번째 부분 참조).

세 번째로, 자원 클래스 상의 클라이언트의 인스턴스들의 수가 많아지면, 시스템이 데이터 일관성을 관리하기 위해서 더 많은 비용이 든다(수학식 1의 세 번째 부분 참조)

최종적으로, 시스템이 시스템 결함과 같이 어떠한 이유로던 클라이언트의 최소 요구사항을 취급하지 못하는 경우의 페널티 요금이 있다. 자원들이 모들 클라이언트들의 최소 요구들을 만족하는데 충분하지 않은 경우, 페널티 요금이 모델에 부가되고, 이 경우, 이러한 제약조건(수학식 8)은 폐기되고 모델이 이러한 것이 없이 대신에 페널티 요금을 가지고 다시 계산된다. 선형 프로그래밍에서 페널티 요금을 부과하는 표준 모델이 있으며, 이러한 것은 설명의 편의를 위해서 생략되었다(예컨대 [12] 참조).

상세한 모델 설명은 일부 표기 부호의 사용을 필요로 한다. 이하의 부호들은 변수들(해결되어야 할 값들) 또는 GDM 계산기(solver)에 대한 입력들(시스템에 대 한 데이터)을 나타낼 수도 있다. 첨자 i, j, k 는 1에서 Ni, Nj, Nk 각각까지의 정수를 취하며, Ni는 시스템 상의 클라이언트들 전체 수이며, Nj는 자원 클래스들의 전체 수이며, Nk는 머신들의 전체 수이다.

명확하게 하면, 다음은 입력들을 나타낸다.

Aijk - 현재 배정

Cij - 대응 비율

Dij - 요구

Ljk - 머신 상의 클라이언트의 최대 수

Mjk - 클라이언트가 존재하는 것인 머신들의 최대 수

Minij - 요구

Ni - 클라이언트들의 수

Nj - 자원 클래스들의 수

Nk - 머신들의 수

Pijk - 과금된 요금

Sjk - 자원 클래스들에 대한 머신 용량

Tijk - 인스턴스들을 부가 또는 제거하는 것에 대한 페널티 요금

Uij - 인스턴스들의 수에 대한 페널티 요금

Vijk - 히트-가중치 요구

Yijk - 머신들 상의 현재 인스턴스들

다음의 부호는 변수들을 나타낸다.

Bijk - 클라이언트에 대한 배정

Zijk - 머신 상의 인스턴스의 배정

Rjk - 자원 클래스에 대한 머신의 배정

Dij가 자원 클래스 j를 위해서 클라이언트 i 에 의한 전체 요구를 나타낸다고 하자. Dij는 참조 히트 유닛들 내에서 집합자들(2a 및 2b)로부터의 요구들의 합이고, 특정 클라이언트들에 대해서 임의의 최대 허용되는 부하들에 따라서 절삭(truncated)된다. Dij는 자원들의 배정이 감소하는 것에 대한 요청이면 음수일 수도 있다. 구성 저장소로부터 머신 k, 자원 클래스 j상의 클라이언트 i에 대해서, 참조 히트들에 의한 현재 배정 Aijk가 얻어진다.

Pijk가 클라이언트 i, 자원 클래스 j, 머신 k 조합에 대해서 배정된 자원 Bijk의 유닛 당 과금의 합을 나타낸다고 하자. 이러한 클라이언트의 부가 또는 제거의 시스템 비용은 각 그러한 변경에 대해서 Tijk의 레이트로서 함께 과금된다. Uij가 이러한 인스턴스들 사이의 일관성을 유지하는 시스템 비용을 나타낸다고 하자.

Figure 112003050739270-pct00001

여기서, {0,1}인 Yijk는 Aijk>0인지를 나타내고, {0,1}인 Zijk는 Bijk >0인지를 나타낸다. Sjk가 자원 클래스 j에 대한 머신 k의 용량 즉 머신이 지원할 수 있는 자원 클래스 j의 참조 히트들의 수를 나타낸다고 하자. 그러면 그 중의 두 번째가 제약조건인 다음 식들이 얻어진다

Yijk >= Aijk/Sjk, Zijk >= Bijk/Sjk

요구 제약조건은,

Figure 112003050739270-pct00002
, 모든 i, j에 대해서

각 머신 k는 j번째 자원 클래스 Sjk에 대한 용량만큼 배정될 수 있다. {0,1}인 변수 Rjk는 자원 클래스 j가 머신 k상에 존재하는지를 나타낸다.

Figure 112003050739270-pct00003
, 모든 j,k에 대해서

단지 하나의 자원이 하나의 머신 상에 배정된다.

Figure 112003050739270-pct00004
, 모든 k에 대해서

각 머신 상의 인스턴스들의 수에서 한계 Ljk가 존재한다.

Figure 112003050739270-pct00005
, 모든 j, k에 대해서

주어진 자원 클래스 상에서 각 클라이언트들에 대해서 인스턴스들의 수에 대해 다른 한계 Mij가 존재한다.

Figure 112003050739270-pct00006
, 모든 i, j에 대해서

Cjj'가 대응 비율(자원 클래스 j의 사용에 대해서 자원 클래스 j'의 사용의 비율로서 이전에 정의됨)을 나타낸다고 하자. 배정들이 대응 비율 Cjj'에 대응된다는 것을 보증하기 위해서, 다음을 만족한다.

Figure 112003050739270-pct00007
, 모든 종속변수 j, j'에 대해서

각 클라이언트는 최소로 배정되어야 한다

Figure 112003050739270-pct00008
, 모든 i,j에 대해서

전술한 제약조건들에 추가로 다음의 단순화가 수행되어서 변수의 수를 감소시킬 수 있다. 일부 클라이언트-자원 조합들은 단지 머신들의 특정 세트 내에서 존재한다. 대응 Bijk'는 전술한 세트들이 아닌 모든 k' 머신에 대해서 제거된다. 또한, 특정 자원 클래스에 지정되는 모든 머신 k'에 대해서, 대응 Rjk''는 1로 설정되고, 다른 Rjk'들은 k가 k,'가 아니도록 0으로 설정된다.

전술한 문제점들은 우선 수학식 8의 이어지는 최소에 대해서 해결된다.

Minij = maximum( SLA에 의해 특정되는 최소, (Sk Aijk+SkV ijk) )

여기서 Sk Aijk+SkVijk는 현재 배정과 역시 참조 히트들에 의한 그 대응 히트-가중치 요구 Vijk의 합을 나타낸다. 이러한 옵션은 모든 클라이언트에 대해서 더 높은 품질의 서비스를 지원하며, 이는 시스템 내에서 기존의 배정들이 유지될 수 있기 때문이다. 이러한 것이 가능하지 않은 경우, 원래의 수학식 8로 대체될 것이다. 만약 실행불가능이면, 제약조건은 전술한 바와 같이 최소 자원 요구사항을 만족하지 못한 페널티 요금에 의해서 대체된다.

전술한 문제점들은 일반적으로 정확한 방식으로 해결하기가 어렵다. 그러나, 이러한 것들은 표준 선형 프로그래밍 기술들, 문제점 선형 프로그래밍 완화(relaxation) 및 칼럼 생성 기술들이며, 전술한 바에 대해서 효율적으로 근사적인 해결책을 생성할 수 있는 것이다. 단순한 발견적 방법(heuristic)은 선형 프 로그래밍 완화를 통한 해결책을 생성하기 위한 것이고 이후 통합적인 변수들을 라운드 오프된(rounded off) 그러나 실행가능한 값들로 설정한 후에 단순화된 문제점을 다시 해결한다. 사전처리 모듈의 추가는 해결책의 속도 향상을 위해서 변수들이나 제약조건들을 제거할 수 있다. 최선의 해결책을 이후 얻기 위해서 짧은 시간동안 해결책 처리는 중지된다.

일단 신규 배정 계획이 얻어지면, 자원 관리자는 신규 배정을 실행하도록 명령된다. 전역 의사 결정자(140)가 자원 관리자(150)에게로 전달하는 정보는 머신들 상의 지배적인 히트-가중치들과 함께 가상 서버팜 내에서 머신들 상의 자원 배정의 클라이언트-방향(wise) 리스트로 구성된다. 이러한 배정은 참조 히트들에 의해서 특정된다. 성공적인 실행을 위해서, 제공될 수 있는 실제 히트들에 의한 것인 배정의 신규값(참조 히트에 의한 배정을 대응 히트 가중치로 나누는 것에 의해서 얻어짐)으로서, 자원 관리자(150)는 구성 저장소(160)를 갱신한다. 히트 가중치들의 값 역시 갱신된다.

자원 관리자

자원 관리자 에이전트(RM 에이전트)는 머신이 부팅될 때 자동적으로 실행되는 프로그램으로서, 서버팜 내의 각 머신 상에 인스톨된다. RM 에이전트는 그 머신 상의 자원 인스턴스들을 관리하기 위해서 자원 관리자(150)에 의해서만이 사용될 수 있는 인터페이스를 제공한다. 팜 내에서 사용가능한 자원의 각 유형에 대해서, 적절한 세트의 저-레벨 시작 및 종료 명령들이 팜의 구성 저장소(160)내에 등록된 다. 서브팜내의 각 머신이 단지 자원의 한가지 유형만을 호스팅하기 때문에, RM 에이전트는 단지 하나의 세트의 시작 및 종료 명령들만을 학습할 필요가 있다. 그 머신상에 호스팅되는 자원의 유형을 알면, RM 에이전트는 구성 저장소(160)에 질의하는 것에 의해서 적절한 명령들을 획득한다. 일단 이러한 것이 실행되었으면, 에이전트는 구성 저장소(160)내에 그 위치를 등록하여서 자원 관리자(150)가 필요시 통신할 수 있도록 하게 한다.

서브팜 내의 머신은 자원의 복수의 인스턴스들을 호스팅할 수도 있다. 각 인스턴스에 대해서 그 머신상에서 유일한 식별자가 주어진다. 이러한 것은 단순히 운영 시스템의 프로세스 식별자(pid)를 인스턴스 ID로서 사용하여 구현될 수도 있다. 각 인스턴스는 복수의 클라이언트들로부터의 히트들을 지원할 수도 있고, 각 클라이언트는 그 인스턴스의 서로 다른 최대 히트 레이트로 배정될 수도 있다. 머신에 대한 RM 에이전트는 따라서 각 인스턴스에 대한 테이블을 유지하며, 클라이언트 당 이러한 히트-레이트 배정들을 포함한다. 에이전트는 RM에 대한 다음의 추상 인터페이스를 나타낸다.

startup( ), instanceID 리턴함.

이 startup() 명령은 에이전트가 그 머신상의 자원의 인스턴스를 시작하고 ID를 그에 대해 지정하도록 요청한다.

shutdown(instanceID)

이 shutdown() 명령은 에이전트가 특정 자원 인스턴스를 종료하도록 요청한다.

setAllocation(instanceID, clientName, hitRate)

이 setAllocation() 명령은 히트-레이트에 의해서 특정 자원에 대한 클라이언트의 자원 배정을 설정한다.

이러한 연산 중 하나가 요청될 때, 에이전트는 이를 실행하도록 시도하고 곧 그의 성공 또는 실패를 자원 관리자(150)에 보고한다. 이러한 연산들 각각의 구현은 아래에 상세히 설명한다.

자원 관리자(150)는, 전역 의사 결정자(140)에 의해서 준비되는 배정 계획을 구현하기 위해서, 가상 서버팜의 다른 컴포넌트 뿐만 아니라 그 에이전트의 행동들을 조율하는 중앙 엔터티이다. 이것은 배정들의 두 개의 사본- 팜의 현재 상태를 반영하는 현재 계획과 전역 의사 결정자(140)에 의해서 제공되는 신규 계획-을 유지한다. 팜 시작 시에, 현재 배정은 초기화되어서 어떠한 자원도 어떠한 클라이언트에 배정되지 않았다는 것을 나타낸다. 자원 관리자(150)는, 새로운 배정 계획이 생성되었는지 여부를 결정하기 위해서, 전역 의사 결정자(140)의 출력 버퍼를 검사하는 것에 의해서 시작한다. 만약 계획이 생성되지 않았으면, 그러한 계획이 사용가능할 때까지 단순히 기다린다.

전역 의사 결정자(140)의 배정 계획은 3차원 테이블의 형태로 정의된다. 각 클라이언트에 대해서, 계획은 필요로 하는 모든 자원 클래스의 인스턴스 각각에 대해서 갱신된 배정들을 리스팅한다. 배정들은 히트-레이트에 의해서 통상적으로 표현된다. 전역 의사 결정자(140)가 신규 계획을 생성하는 것으로 실행되었을 때, 자원 관리자(150)를 호출하고 그 계획을 구현을 위해서 파라미터로서 제공한다. 자원 관리자(150)는 곧 자원 인스턴스 축을 따라서 3차원 계획 테이블을 스캔한다. 각 자원 인스턴스에 대해서, 각 클라이언트에 대한 현재 배정과 신규 배정을 비교한다. 몇 가지 경우들이 가능하다.

I. 현재 및 신규 배정이 동일한 경우

I. 현재 = 0, 신규는 0이 아닌 경우

I. 현재는 0이 아니고 신규 = 0인 경우

I. 현재 및 신규가 0이 아니고 현재와 신규가 동일하지 않은 경우

경우 I

어떠한 행동도 자원 관리자(150)에 의해서 취해질 필요가 없다.

경우 II

신규 자원 인스턴스는 이미 존재하지 않으면 즉 그 인스턴스의 모든 다른 클라이언트들이 또한 현재 0 배정이 아니면 생성되어야 할 수 있다. 자원 관리자(150)는 RM 에이전트 상에서 startup() 연산을 호출한다. 구성 저장소(160)내의 주소를 검색하여서 적절한 에이전트를 배치한다. 에이전트는 자원의 시작 스크립트를 사용하는 것에 의해서 인스턴스를 생성하기 위해서 응답한다. 각 인스턴스는 연관된 모니터를 가져야 한다. 따라서, RM 에이전트는 새로운 모니터를 생성하거나 또는 그 머신상의 기존의 모니터에 신규 인스턴스를 모니터링하는 책임을 지정한다. 이러한 태스크들이 성공적으로 완료되면, 승인 메시지를 자원 관리자(150)에 송신하고, 곧 에이전트의 setAllocation() 연산을 사용하여 클라이언트의 히트-레이트 배정을 신규 값으로 초기화한다. RM 에이전트는 곧 그 서브팜의 부하 분배자(110)에게로 메시지를 송신하여, 신규 인스턴스의 생성을 알려주고, 따라서 들어오는 요청들이 그에 의해서 제공되도록 한다.

경우 III

자원 인스턴스들은 더 이상 필요하지 않으면 즉 그 인스턴스의 모든 다른 클라이언트들이 또한 0 배정으로 감소되면 삭제될 수도 있다. 자원 관리자(150)는 곧 적절한 RM 에이전트 상에 shutdown 연산을 호출하여 인스턴스 ID를 제공한다. 에이전트는 우선 서브팜의 부하 분배자(110)에게 자원 인스턴스가 더 이상 사용가능하지 않다는 것을 알려주어서, 후속 히트들이 그 인스턴스로 라우팅되지 않도록 한다. 에이전트는 이후 자원의 shutdown 스크립트를 사용하여 인스턴스를 삭제하고, 연관된 모니터를 사용불가능하게 하고, 그 인스턴스를 보유하는 내부 데이터 테이블을 삭제한다. 자원 클래스에 의해서 제공되는 shutdown 스크립트는 인스턴스를 즉시 삭제할 필요는 없다. 인스턴스는 이미 수신된 임의의 요청들을 제공하는 것을 계속 진행할 수도 있으나 그 이후에 들어오는 요청들은 거부한다. 일단 계속중인 요청들이 제공되면, 인스턴스는 곧 깨끗하게 종료된다.

경우 IV

자원 인스턴스의 배정은 변경될 필요가 있다. 자원 관리자(150)는 이러한 것을 얻기 위해서 RM 에이전트상의 setAllocation 연산을 사용한다. 에이전트는 그 내부 테이블들을 갱신하여서 신규 최소 히트-레이트를 지시한다. 또한 이러한 배정을 강화할 필요가 있다. 이러한 목적으로, 서브팜의 부하 분배자(110)에게 메시지를 송신하여, 자원 인스턴스 상의 클라이언트에 대한 신규 배정을 나타낸다. 부하 분배자(110)는 클라이언트에 들어오는 요청들을 조절하여 이러한 배정된 한계 이상의 자원의 사용을 방지할 책임이 있다. 이 경우에 대해서 몇 가지 부가적인 경우들이 있다.

경우 IV-A

이 경우에서, 신규 > 현재, 즉 배정이 증가된 경우이다. 통상적으로, 전역 의사 결정자(140)가 특정 인스턴스의 배정을 증가시킬 때, 이는 또한 클라이언트의 애플리케이션에 의해서 요구되는 다른 자원 클래스들의 배정도 증가시킬 필요가 있다. 대응되는 (n+1)번째-계층(tier)을 증가시키지 않는 n번째-계층의 자원 인스턴스의 증가는 효력이 없다-이는 단지 (n+1)번째 계층 인스턴스가 또한 확장될 때까지 초과 요청들을 조절할 뿐이다. 경우 IV-A에서 메시지를 개별적인 에이전트들에 송신하는데 관련된 예측할 수 없는 지연 때문에, 부하 분배자(110)는 즉각적으로 이러한 인스턴스의 사용을 증가시킬 수는 없다. 모든 종속 자원 인스턴스들이 또한 그 메시지들을 수신할 때까지 기다려야 한다. 따라서 RM 에이전트가 자원 관리자(150)에게 승인 메시지들을 다시 송신하는 것이 필요하며, 이러한 것은 배리 어(barrier) 동기화를 효율적으로 구현한다. 모든 에이전트가 그들의 인스턴스들이 확장되었다고 확인한 후, 자원 관리자는 "스위치 계획" 메시지를 모든 부하 분배자들(110)에게 발급한다. 이 메시지의 수신후, 부하 분배자들(110)은 신규하고 증가된 배정으로 스위칭할 수 있다.

또한, 운영-시스템 레벨 메카니즘이 클라이언트들 사이에서 머신을 분할하는데 사용가능하다면, RM 에이전트는 이에 인터페이싱하는 책임을 가진다. 그러한 분할 메카니즘들은 통상적으로 그의 CPU 사용과, 디스크 공간, 네트워크 대역폭 및 다른 유사한 OS-레벨 자원들에 의해서 각 애플리케이션상의 엄격한 경계들을 강화한다. 이러한 것은 자원들의 과도-소비뿐만 아니라 애플리케이션 서로간의 보안 격리를 제공한다. 클라이언트의 배정 내에서의 변경이 주어지면, RM 에이전트는 운영 시스템에 그에 따라서 머신 분할을 축소 또는 확장하도록 요청한다. 그러나, 만약 그러한 메카니즘이 사용가능하지 않으면, 시스템은 기능을 계속하고, 이것은 독립적인 조절-기반 메카니즘이 어떠한 경우에도 배정 한계를 강화하기 때문이다.

일단 RM 에이전트들이 요청된 재배정을 수행하면, 자원 관리자(150)는 신규 배정 계획을 구성 저장소(160)에 위탁(commit)한다.

서브팜 생성 및 제거

자원 관리자(150)는 또한 전체 서브팜들을 생성하고 삭제하는 것을 책임진다. 클라이언트가 도착하고 서버 팜 상에서 현재 사용가능하지 않은 자원 클래스의 사용을 요청할 때, 신규 서브-팜이 그 자원 클래스의 인스턴스들을 실행하기 위해 서 생성돼야만 한다. 자원 관리자(150)는 구성 저장소(160)에 질의하여서, 인스톨된 자원 클래스를 가지는 자유(free) 풀 내에서 사용가능한 머신들을 찾는다. 이후 이들을 신규 서브-팜의 일부로서 지정하고, 부하 분배자(110)의 인스턴스를 생성하여 이 서브-팜에 들어오는 요청들을 관리한다. 어떠한 자원 인스턴스들도 실제적으로 이 단계에서 생성되지는 않는다. 이전에 구획(outlined)된 대로 인스턴스들이 생성되며, 전역 의사 결정자(140)는 0이 아닌 히트-레이트들을 이에 배정한다.

일부 단계에서, 서브-팜은 더 이상 필요하지 않을 수 있고, 이는 어떠한 클라이언트도 그에 인스톨된 자원 클래스를 필요로 하지 않기 때문이다. 전역 의사 결정자(140)는 그 서브-팜에 전용된 머신들을 다시 요청하도록 결정할 수도 있고, 이는 이들을 과중한 부하가 걸리는 일부 다른 서브-팜들을 위해서 재사용하기 위함이다. 이후 자원 관리자(150)에게 서브-팜들을 제거하도록 요청한다. 자원 관리자(150)는 그 에이전트들을 사용하여 그 서브-팜 상에서 실행될 수도 있는 임의의 자원 인스턴스들(그리고 그의 모니터들)을 종료하고, 팜의 부하 분배자(110)의 종료 연산을 또한 호출한다. 일단 팜이 비활성으로 되면, 팜 내의 각 머신의 상태를 변경하는 구성 저장소(160)를 갱신하여 다시 자유 풀 내에서 사용가능하다는 것을 나타낸다.

부하 분배자(110)는 들어오는 히트들을 클라이언트에 지정된 특정 자원 인스턴스들에 분배하여서, 동일한 자원 클래스의 다른 인스턴스들이 상대적으로 부하가 덜 걸리는 상태에서 단일 인스턴스가 과도부하로 되는 것을 방지한다. 이는 또한 전역 의사 결정자(140)에 의해서 그들에 배정되는 용량에 따라서 클라이언트들에 의해서 사용되는 것을 제어한다. 동일한 자원 클래스의 인스턴스들의 세트를 포함하는 각 서브팜에 대해서, 하나의 부하 분배자(110)가 사용된다.

결함의 취급

본원 명세서에서 설명된 모델은 서브팜들 내에서 머신 오류들을 취급하도록 구현된다. 심박(heartbeat) 메카니즘이 머신이 결함이 있는지 결정하기 위해서 사용된다. 결함있는 머신이 식별되면, 메카니즘은 집합자(120)에게 이를 알린다. 결함 통지의 수신시, 집합자들은 이 통지를 시스템 어드미니스트레이터(administrator)에게 포스팅(post)한다. 집합자들은 영향이 있는 부하 분배자들(120)에게 히트들을 결함있는 머신으로 지향시키는 것을 중지하도록 알린다. 이 정보는 일반 부하 피드백 정보와 함께 부하 분배자들로 전달된다. 이는 이후 부하 분배자들까지 전달되어, 히트들을 가능한 한 다른 머신들로 송신하도록 하고, 취급되지 못할 일부 히트들은 조절하도록 한다.

집합자들(120)은 변경되어서 결함 데이터를 전역 의사 결정자(140)로 전달하여, 전역 의사 결정자(140)가 결함있는 머신을 그 배정 계획들에서 제거할 수 있도록 한다. 배정 계획을 준비하기 이전에, 전역 의사 결정자(140)는 머신들의 자유 풀의 최종 상태를 모으고(사용될 수 있는 풀에 부가된 신규 또는 신규로 고정된 머신들이 있을 수 있다), 모든 결함있는 머신들이 제거되었는지를 고려한다.

신규 계획 배치의 일부로서의 자원 관리자(150)는 제거돼야 하는 것인 머신들 상의 애플리케이션 인스턴스들을 삭제한다. 자원 관리자(150)는 머신을 종료하 고, 시스템 어드미니스트레이터 콘솔에게 머신들이 삭제되어 고정되었다는 것을 알린다.

심박 메카니즘은 다음과 같이 머신 상에서 결함들을 발견하는데 사용된다. 에이전트는 주기적으로 머신 상의 애플리케이션 인스턴스들을 폴링(poll)/핑(ping)하여서 그들의 사용가능 상태를 요청한다. 만약 오류가 없다면 애플리케이션들은 일정 시간 간격 내에서 이러한 에이전트에 대해 응답하도록 구성되어야 하고, 에이전트는 이후 이러한 응답들을 다음의 문맥-종속 규칙들에 기초하여 대조한다. 머신이 결함이 있으면 애플리케이션 인스턴스 중 어떠한 것도 응답하지 않는다. 머신이 결함이 없고 애플리케이션 인스턴스들 중 X 퍼센트 이하가 결함이 있으면 이 머신의 부하를 취급하기 위한 부하 분배자(110)에 대해서 사용가능한 대체 머신들이 없다. 머신이 결함이 있고 애플리케이션 인스턴스의 Y 퍼센트 이상이 결함이 있으면 이 머신을 대체하기 위한 자유 풀 내에서 사용가능한 머신들이 있다. 이 규칙들은 불연속이거나 또는 잘 정의된 순서로 적용되어서 결정적인 대답이 머신에 대해서 도달하도록 한다. X 및 Y와 같은 파라미터는 애플리케이션/문맥에 종속적이고, 문맥-종속 정보의 나머지 부분들은 에이전트를 위해서 자원 관리자(150)에 의해 작성된 전역 의사 결정자(140)의 각 신규 배치마다 갱신된다. 원격 에이전트와 그 애플리케이션 인스턴스들 사이에 생성되는 네트워크 트래픽을 감소시키기 위해서, 원격 에이전트들은 허용되지 않을 수도 있다(즉 에이전트를 인스턴스들과 대조한다). 이 경우, 국부적 에이전트는 그 결함 결정을 관련된 집합자(120)와 주기적으로 통신하여(너무 길게 걸리지 않고, 즉 시간 만료가 없이), 집합자(120)가 국부적 에이전트 를 신뢰할 수 있도록 한다. 만약 국부적 에이전트가 시간 만료되면, 곧 관련된 집합자들은 오류있는 머신들로 추정하여야 하고 그에 따라 처리한다. 모든 집합자들(120)이 공통 프로세스에 의해서 구현되기 때문에, 단지 하나의 추정만이 모든 집합자들에 의해서 도달되고 따라서 일관성이 유지된다. 국부적 에이전트에 의존하지 않는 경우, 원격 에이전트는 집합자들과 대조하여 집합자들(120)내의 통신 비용을 감소시키도록 할 수 있다.

심박 메카니즘이 결함들에 대해 핑하는 주기는 부하 모니터들이 스케줄링되는 주기와는 독립적이다. 집합자들(120)에 필요한 모든 것은 최종 결함 정보를 얻는 것이고 이후 이를 다른 모듈로 부하 정보와 함께 송신하다.

도 7a는 국부적 에이전트에 의해서 머신 상의 결함을 발견하는 것을 나타내는 흐름도이다. 도 7b는 에이전트 입력에 기초하여 결함 결정을 이끄는 집합자의 활동을 동시에 나타낸다. 도 7a에서, 단계 710에서 에이전트는 머신 상의 애플리케이션 인스턴스들을 핑하여 결함을 테스트한다. 다음으로 단계 720에서 애플리케이션 인스턴스들로부터의 응답이 전술한 문맥-종속 규칙에 따라서 에이전트에 의해서 평가된다. 평가는 에이전트가 머신 상에 결함이 있는지 여부의 결론을 내도록 한다. 그리고 단계 730에서, 에이전트는 이 결정을 집합자들과 통신한다.

도 7b는 집합자에 의한 머신상의 결함 검출의 처리를 나타내는 흐름도이다. 도 7b에서, 집합자는 동시에 머신상에서 결함 결정에 따라서 에이전트에 대한 주기적인 통신을 청취한다. 단계 740에서, 집합자는 에이전트로부터의 결함-관련 통신(도 7a의 단계 730에 대응)을 얻는다. 만약 에이전트로부터의 통신이 지연되면, 이 후 단계 750에서, 집합자는 에이전트에 의해 보고되는 머신이 결함이 있다고 결론내도록 분기한다(단계 760).

만약 에이전트로부터의 통신이 지연되지 않으면, 이후 집합자는 통신의 내용을 살펴보아서, 머신에 대한 에이전트의 결정을 찾는다. 단계 770에서, 에이전트가 머신의 결함을 결정하였다면, 이후 집합자는 머신이 결함이 있다고(단계 760) 또는 머신이 결함이 없다고(단계 780) 분기한다. 도 7b의 단계들은 머신상의 에이전트로부터의 다음 통신이 기대될 때 다시 반복된다.

부하 분배

도 8은 전술한 부하 분배자에 관련된 프로세스를 나타내는 흐름도이다.

요청의 수신시(단계 820) : 부하 분배자는 수신된 요청을 단계 860과 같이 큐의 끝부분에 부가한다.

요청의 처리: 단계 812에서 부하 분배자는 요청 R을 큐의 머릿부분으로부터 제거한다. 요청 R로부터, 부하 분배자는 요청이 의미하는 자원에 대한 클라이언트 C를 식별한다. 이후 그 요청이 포워딩될 수 있는지 그 클라이언트 자원의 인스턴스를 찾아본다. 그러한 인스턴스는 레벨 1 부하 집합자로부터 수신된 부하 정보(부하 요인)에 대해서 최소 부하가 걸리는 것이다. 이는 단계 814와 같이 수행된다. 만약 단계 870에서 인스턴스의 배정된 용량이 완전히 소비되면(부하 요인이 1과 같거나 또는 더 크면), 이후 단계 890에서 이 요청을 폐기한다. 그렇지 않으면, 단계 891과 같이 요청을 인스턴스에 포워딩하고 그 인스턴스에 송신된 요청들의 카운트를 1만큼 증가시킨다. 부하 분배자는 이 카운트를 시간 간격 dT(dT는 Tu보다 작음) 후에 레벨 1 부하 집합자로 송신하고 또는 단계 891에서와 같이 그 각 요청 후에 이를 그 인스턴스로 포워딩한다. 이것이 구현-레벨 파라미터이고 부하 분배자(110)의 시작 시에 구성 가능하여야만 하는 것이다.

자원 관리자로부터 메시지의 수신시(단계 830): 만약 단계 850에서 인스턴스가 종료되었다는 것을 메시지가 나타내면, 이후 부하 분배자는 그 인스턴스로 요청을 포워딩하는 것을 중단한다. 만약 메시지가 인스턴스내의 클라이언트에 대한 배정이 단계 850에서 감소되었다는 것을 나타내면, 이후 즉시 신규 배정을 고려한다. 만약 신규 인스턴스가 생성되었거나 또는 인스턴스 내에서 클라이언트에 대한 배정이 증가되었다면, 배리어 메시지-단계 850에서와 같이 자원 관리자로부터의 "스위치 계획"-를 수신할 때까지 신규 값(들)은 부하 분배자에 의해서 사용되지 않는다. 신규 인스턴스 메시지는 생성된 신규 인스턴스와, 0이 아닌 용량이 그에 배정된 클라이언트와, 히트 레이트들에 의한 대응 배정들에 대한 정보를 포함한다. 단계 850과 같이 "스위치 계획" 메시지 후에, 두 테이블 모두에서 각 신규 클라이언트에 대한 열을 가지고 있지 않는 클라이언트들이 있을 수도 있다. 유사하게, 클라이언트의 RAT 열 내에서 모든 엔트리들이 0이 되면, 곧 그 클라이언트의 RAT 및 RCT 열은 제거된다.

레벨 1 부하 집합자로부터의 메시지의 수신시: 단계 840에서와 같이 메시지가 인스턴스의 클라이언트에 대한 부하 요인을 포함하면, 이후 부하 분배자는 자원 소비 테이블(RCT)내의 그 값을 갱신한다. 인스턴스가 다운(down)이라는 것을 메시지가 나타내면, 이후 그 인스턴스로 요청들을 포워딩하는 것을 중단하며, 이 인스턴스를 단계 840에서 RAT 및 RCT 모두에서 제거한다.

시스템 초기화

시스템 초기화시, 시스템 관리 컴포넌트들[전역 의사 결정자(140), 집합자(120), 부하 모니터들(130), 자원 관리자(150) 등]을 실행하도록 지정된 것인 머신이 시작되어서 미리 정의된 스크립트를 실행한다. 이러한 스크립트들은 개별적인 시스템 관리 컴포넌트들을 시작하고 초기화한다. 모든 머신에 대해서 균일한 파일 시스템 뷰(view)가 제공되며 모든 애플리케이션들이 인스톨된 것인 분산 파일 시스템이 사용가능하다.

고객들의 초기 세트가 서버팜에 하나씩 부가되고 다음과 같이 신규 고객을 추가하기 위한 절차가 이어진다.

신규 고객이 서버팜에 합류할 때, 이 정보가 이미 사용가능하지 않으면 이는 실험적인 설정 상에 호스팅되어서 그 애플리케이션들을 벤치마킹하며, 이 정보가 구성 저장소에 저장된다. 다음으로, (가상) 서브팜들이 고객에 대해서 구성되고 예 상되는 부하-요구들에 대해서 초기화된다. 전역 의사 결정자(140)는 이후 이에 따라서 자원들을 배정할 수 있다. 자유 풀 단독으로 이를 지원하지 못하면 이 고객은 거부된다. 일단 전역 의사 결정자(140)가 배정 계획을 계산하면, 이는 자원 관리자(150)에 의해서 배치될 수 있으며, 머신들을 가지는 신규 서브팜의 배치도 포함한다.

컴퓨터 하드웨어 및 소프트웨어

도 9는 본원 명세서에서 설명된 기술들을 구현하는 프로세스 내에서의 단계들을 실행하는 데 사용될 수 있는 것인 컴퓨터 시스템(900)의 개요도이다. 컴퓨터 시스템(900)은 전술한 기술들을 수행하는 것을 지원하기 위해서 프로그래밍된 것인 컴퓨터 소프트웨어를 실행하는 목적으로 제공된다. 이 컴퓨터 소프트웨어는 컴퓨터 시스템(900) 상에 인스톨된 적절한 운영 시스템 하에서 실행된다.

이 컴퓨터 소프트웨어는 명령어들에 의해서 특정된 소정의 기능들을 실행하기 위해서 컴퓨터 시스템(900)을 명령하는 것인 컴퓨터 시스템(900)에 의해서 해석될 수 있는 프로그램된 논리적 명령어들의 세트에 관련된다. 이 컴퓨터 소프트웨어는 임의의 언어, 코드 또는 표기법으로 기록된 표현일 수 있고, 다른 언어, 코드 또는 표기법으로의 변환 후 또는 직접적으로 특정 기능들을 수행하기 위한 호환성있는 정보 처리 시스템을 의도한 명령어들의 세트를 포함한다.

이 컴퓨터 소프트웨어는 적절한 컴퓨터 언어로 된 문장들을 포함하는 컴퓨터 프로그램에 의해서 프로그램된다. 이 컴퓨터 프로그램은 컴파일러를 사용하여 운영 시스템에 의한 실행에 적절한 이진 포맷을 가지는 컴퓨터 소프트웨어로 처리된다. 이 컴퓨터 소프트웨어는 전술한 기술들의 프로세스의 특정 단계를 실행하는 다양한 소프트웨어 컴포넌트들, 또는 코드 수단들에 관련된 방식으로서 프로그래밍된다.

컴퓨터 시스템(900)의 컴포넌트들은, 컴퓨터(920)와, 입력 장치들(910, 915)과, 비디오 디스플레이(970)를 포함한다. 컴퓨터(920)는 프로세서(940)와, 메모리 모듈(950)과, 입력/출력(I/O) 인터페이스들(960, 965)과, 비디오 인터페이스(945)와, 저장 장치(955)를 포함한다.

프로세서(940)는, 운영 시스템을 실행하고 컴퓨터 소프트웨어가 운영 시스템 하에서 실행되는 것인, 중앙 처리 유닛(CPU)이다. 메모리 모듈(950)은 RAM(random access memory) 및 ROM(read-only memory)를 포함하는 것이고, 프로세서(940)의 지시하에서 사용된다.

비디오 인터페이스(945)는 비디오 디스플레이(990)에 연결되고 비디오 디스플레이(970)상에 디스플레이를 위한 비디오 신호들을 제공한다. 컴퓨터(930)를 운영하기 위한 사용자 입력이 입력 장치들(910, 915)로부터 제공되고, 키보드(910) 및 마우스(915)를 포함한다. 저장 장치(955)는 디스크 드라이브 또는 다른 적절한 비휘발성 저장 매체를 포함한다.

컴퓨터(920)의 컴포넌트들 각각은 버스(930)에 연결되고, 버스는 데이터, 주소 및 제어 버스들을 포함하여서, 이러한 컴포넌트들이 버스(930)를 통하여 서로 통신하도록 허용한다.

컴퓨터 시스템(900)은, 통신 채널(985)을 사용하여 인터넷으로 표시된 네트 워크(980)로, 하나 이상의 유사한 컴퓨터들과 입력/출력(I/O) 인터페이스(965)를 통하여 연결될 수 있다.

컴퓨터 소프트웨어 프로그램은 컴퓨터 프로그램 제품으로 제공될 수도 있고, 이동 저장 매체에 기록될 수도 있다. 이 경우, 컴퓨터 소프트웨어 프로그램은 저장 장치(962)로부터 컴퓨터 시스템(900)에 의해서 접속된다. 대안적으로, 컴퓨터 소프트웨어는 컴퓨터(920)에 의해서 네트워크로부터 직접적으로 접속될 수도 있다. 어떠한 경우든지, 프로그램된 컴퓨터 소프트웨어를 컴퓨터(920)상에서 실행하게 운영하도록, 사용자는 키보드(910)와 마우스(915)를 사용하여 컴퓨터 시스템(900)과 상호작용할 수 있다.

컴퓨터 시스템(900)은 도시를 위한 목적으로 설명되었다. 컴퓨터 시스템의 다른 구성들 또는 유형들이 전술한 기술을 구현하기 위해서 또한 동등하게 사용될 수 있다. 전술한 것은 단지 전술한 기술들을 구현하기에 적절한 컴퓨터 시스템의 특정 유형의 예일 뿐이다.

ASP 서버팜 내에서, 애플리케이션을 사용하기 위한 요청들은, 그 애플리케이션이나 그 컴포넌트의 사용가능한 그러한 인스턴스들의 최소 부하로서 식별되는 것인 애플리케이션의 특정 실행 인스턴스(또는 그의 적절한 컴포넌트)로 지향된다. 그러한 인스턴스들의 수는 그 애플리케이션이나 컴포넌트를 위한 요청들의 수에 응답하여 동적으로 증가되거나 감소된다. 요청들은 클라이언트-기초 당 지향되거나(첫번째 측면에 따라서) 또는 인스턴스가 조절되며(두번째 측면에 따라서), 애플리케이션의 인스턴스들 및/또는 그의 컴포넌트들이 사용자의 특정 그룹 또는 사용자의 사용을 위해서 유보된다. 이러한 방식의 운영은 개별적인 사용자들 또는 사용자들의 그룹들에 대한 서비스 약속의 준수를 용이하게 한다. 인스턴스 및 사용자의 각 조합에 대해서 현재 배정된 자원과 현재 소비되는 자원의 기록이 유지되며, 애플리케이션의 인스턴스들이나 그 컴포넌트들에 의해서 서비스되는 요청들에 의해 인스턴스들에 배치되는 부하 요인들에 따른다. 전술한 구성은 애플리케이션에 대한 요청들의 예측되는 범위에 따라 사용자에 대한 서비스 보증서가 구성되도록 허용하며, 이러한 예측된 범위내에서 하나 이상의 서로 다른 대역을 가지는 서비스 요청 레이트들에 대해 과금이 된다. 요청이 서비스되지 못하는 경우 페널티 레이트가 과금된다(사용자를 위해서).

Claims (19)

  1. 복수의 네트워킹된(networked) 머신들 상에서 집합적으로(collectively) 실행되는 복수의 자원 클래스 컴포넌트(component)들을 포함하는 애플리케이션에 대한 복수의 애플리케이션 레벨 사용자들을 위한 접속을 제공하는 방법으로서,
    애플리케이션을 사용하기 위한 애플리케이션 레벨 사용자들로부터 들어오는(incoming) 요청들의 흐름을 수신하는 단계와,
    상기 애플리케이션을 사용하기 위한 각각의 애플리케이션 레벨 사용자들로부터 들어오는 요청들을 서비스하기 위해서, 상기 애플리케이션 레벨 사용자들 각각에 대해서, 하나 이상의 머신들 상에서 상기 애플리케이션에 대한 각 자원 클래스 컴포넌트의 하나 이상의 애플리케이션 인스턴스들의 개별적인 세트를 제공하는 단계와,
    상기 들어오는 요청들 각각을 적절한 자원 클래스 컴포넌트의 특정 애플리케이션 인스턴스로 지향(direct)시키는 단계와,
    상기 애플리케이션의 상기 자원 클래스 컴포넌트들의 상기 애플리케이션 인스턴스들에 의해서 서비스되는 요청들의 수를 상기 애플리케이션 레벨 사용자들 각각에 대하여 모니터링하는 단계와,
    각 자원 클래스 컴포넌트들에 대해 모니터링된 요청들의 수에 응답하여 하나 이상의 자원 클래스 컴포넌트들의 애플리케이션 인스턴스들의 수를 변화시키는 단계와,
    상기 모니터링된 서비스되는 요청들의 수에 기초하여, 개별 애플리케이션 레벨 사용자들로부터 수신된 요청들의 현재 레이트의 기록을 유지하는 단계와,
    하나 이상의 자원 클래스 컴포넌트들의 애플리케이션 인스턴스들의 변화된 수에 응답하여, 상기 각 자원 인스턴스에 대하여 할당된 가중치 및 각 자원 인스턴스에 대하여 할당된 히트들의 수에 대응하는 히트-가중치들을 사용하여, 상이한 자원 클래스 컴포넌트들의 일부를 특정 애플리케이션 레벨 사용자에 집합적이며 자동적으로 할당하는 단계
    를 포함하는 복수의 애플리케이션 레벨 사용자들을 위한 접속을 제공하는 방법.
  2. 제 1항에 있어서,
    개별적인 애플리케이션 레벨 사용자들로부터의 상기 들어오는 요청들 각각을 각 자원 클래스 컴포넌트의 하나 이상의 애플리케이션 인스턴스들의 개별적인 세트로부터의 적절한 자원 클래스 컴포넌트의 특정 애플리케이션 인스턴스로 지향시키는 단계를 더 포함하고,
    상기 특정 애플리케이션 인스턴스는 상기 개별적인 세트들로부터의 상기 적절한 자원 클래스 컴포넌트의 애플리케이션 인스턴스들의 최소 부하로서 식별되는 것인 복수의 애플리케이션 레벨 사용자들을 위한 접속을 제공하는 방법.
  3. 제 1항에 있어서,
    상기 각 자원 클래스 컴포넌트의 애플리케이션 인스턴스들을 제공하는 단계는,
    상기 애플리케이션을 사용하기 위해서 들어오는 요청들을 서비스하도록 복수의 머신들 상에서 하나 이상의 자원 클래스 컴포넌트의 하나 이상의 애플리케이션 인스턴스를 개시하는 단계와,
    상기 애플리케이션을 사용하기 위해서 들어오는 요청들을 서비스하도록 복수의 머신들 상에서 하나 이상의 자원 클래스 컴포넌트의 하나 이상의 애플리케이션 인스턴스들을 종료하는 단계
    를 더 포함하는 것인 복수의 애플리케이션 레벨 사용자들을 위한 접속을 제공하는 방법.
  4. 제 1항에 있어서,
    상기 애플리케이션을 사용하기 위한 애플리케이션 레벨 사용자들로부터의 요청들은 FIFO(first-in-first-out)를 기초로 상기 적절한 자원 클래스 컴포넌트의 특정 애플리케이션 인스턴스에 의해서 실행되도록 큐 안에 저장되는 것인 복수의 애플리케이션 레벨 사용자들을 위한 접속을 제공하는 방법.
  5. 제 1항에 있어서,
    개별적인 애플리케이션 레벨 사용자들에 대한 서비스 의무(obligations)의 기록(record)을 유지하는 단계를 더 포함하는 복수의 애플리케이션 레벨 사용자들을 위한 접속을 제공하는 방법.
  6. 제 5항에 있어서,
    각 자원 클래스 컴포넌트에 대한 요청들의 상기 모니터링되는 수에 응답하여 각 자원 클래스 컴포넌트의 애플리케이션 인스턴스들의 수를, 상기 각 애플리케이션 레벨 사용자들에 대하여, 변화시키는 단계를 더 포함하고,
    개별적인 애플리케이션 레벨 사용자들에 대한 상기 서비스 의무가 최소한 만족되는 것인 복수의 애플리케이션 레벨 사용자들을 위한 접속을 제공하는 방법.
  7. 삭제
  8. 제 1항에 있어서,
    상기 하나 이상의 자원 클래스 컴포넌트들의 애플리케이션 인스턴스들의 수를 변화시키는 단계는, (i) 개별적인 애플리케이션 레벨 사용자들로부터 수신되는 요청들의 상기 기록된 현재 레이트에 적어도 부분적으로 기초하고, (ⅱ) 요청 레이트들에서의 변화들을, 상기 요청 레이트들을 서비스하기 위해 요구되는 상기 하나 이상의 자원 클래스 컴포넌트들의 애플리케이션 인스턴스들의 대응되는 수에서의 요금(charge)들과 상호연관(correlate)시키는 소정의 정보에 적어도 부분적으로 기초하는 것인 복수의 애플리케이션 레벨 사용자들을 위한 접속을 제공하는 방법.
  9. 제 1항에 있어서,
    하나 이상의 상기 애플리케이션 레벨 사용자는 조직체(organization)이고,
    상기 요청들은 상기 개별적인 조직체과 관련된 개인(individual)들에 의해서 생성되는 것인 복수의 애플리케이션 레벨 사용자들을 위한 접속을 제공하는 방법.
  10. 제 1항에 있어서,
    복수의 네트워킹된 머신들 상에서 집합적으로 실행되는 복수의 자원 클래스 컴포넌트들을 포함하는 애플리케이션에 대한 접속을 제공하기 위해서 애플리케이션 레벨 사용자에게 요금을 부과하는 과금(charging) 구조를 정의하는 단계를 더 포함하며,
    상기 과금 구조를 정의하는 단계는,
    애플리케이션 레벨 사용자로부터 요청들의 예상되는 최소 레이트로부터, 애플리케이션 레벨 사용자로부터의 요청들의 예상되는 최대 레이트까지, 애플리케이션을 사용하기 위한 애플리케이션 레벨 사용자의 요청들의 레이트의 예상되는 범위를 정의하는 단계와,
    상기 예상되는 범위 내의 하나 이상의 부범위(subrange)들에 대한 요청들의 서비스 레이트들과 관련된 서비스 요금을 정의하는 단계와,
    상기 애플리케이션 레벨 사용자로부터의 하나 이상의 요청들이 서비스되지 않는 경우, 및 상기 애플리케이션 레벨 사용자로부터의 요청들의 상기 레이트가 상기 예상되는 요청들의 최대 레이트를 초과하지 않을 때 상기 하나 이상의 서비스되지 않는 요청들이 주기 내에서 발생하는 경우, 애플리케이션 레벨 사용자를 위해서 지불가능한 페널티 요금(penalty charge)을 정의하는 단계
    를 포함하는 것인 복수의 애플리케이션 레벨 사용자들을 위한 접속을 제공하는 방법.
  11. 제 10항에 있어서,
    상기 서비스 요금은 상기 애플리케이션 레벨 사용자로부터 상기 각 요청들을 위한 유닛 비용(unit cost)으로서 정의되는 것인 복수의 애플리케이션 레벨 사용자들을 위한 접속을 제공하는 방법.
  12. 제 11항에 있어서,
    상기 유닛 비용은, 상기 요청이 서비스되는 물리적 머신, 상기 요청을 서비스하는데 관련되는 상기 자원 클래스 컴포넌트(들), 또는 상기 요청을 서비스하는데 관련되는 계산의 복잡도에 따라서 변화하는 것인 복수의 애플리케이션 레벨 사용자들을 위한 접속을 제공하는 방법.
  13. 복수의 네트워킹된 머신들 상에서 집합적으로 실행되는 복수의 자원 클래스 컴포넌트들을 포함하는 애플리케이션에 대한 복수의 애플리케이션 레벨 사용자들을 위한 접속을 제공하는 방법으로서,
    애플리케이션을 사용하기 위한 애플리케이션 레벨 사용자들로부터 들어오는 요청들의 흐름을 수신하는 단계와,
    상기 애플리케이션을 사용하기 위한 각각의 애플리케이션 레벨 사용자들로부터 들어오는 요청들을 서비스하기 위해서, 상기 애플리케이션 레벨 사용자들 각각에 대해서, 하나 이상의 머신들 상에서 상기 애플리케이션에 대한 각 자원 클래스 컴포넌트의 하나 이상의 애플리케이션 인스턴스들의 개별적인 세트를 제공하는 단계와,
    상기 애플리케이션의 상기 자원 클래스 컴포넌트들의 상기 애플리케이션 인스턴스들에 의해서 서비스되는 요청들에 의해 현재 소비되는 자원들 및 현재 사용가능한 자원들을 상기 각 애플리케이션 레벨 사용자들에 대하여 모니터링하는 단계와,
    개별적인 애플리케이션 레벨 사용자들에 대해 현재 사용가능한 자원들의 기록, 및 개별적인 애플리케이션 레벨 사용자들에 의해서 현재 소비되는 자원들의 기록을 유지하는 단계와,
    각 자원 클래스 컴포넌트의 상기 하나 이상의 애플리케이션 인스턴스들의 개별적인 수들을 조정하는 단계와,
    하나 이상의 자원 클래스 컴포넌트들의 애플리케이션 인스턴스들의 변동하는 수에 응답하여, 상기 각 자원 인스턴스에 대하여 할당된 가중치 및 각 자원 인스턴스에 대하여 할당된 히트들의 수에 대응하는 히트-가중치들을 사용하여, 상이한 자원 클래스 컴포넌트들의 일부를 특정 애플리케이션 레벨 사용자에 집합적이며 자동적으로 할당하는 단계를 포함하고,
    상기 자원들의 기록 모두는 각 자원 클래스 컴포넌트들의 하나 이상의 애플리케이션 인스턴스에 대하여 유지되며,
    각 자원 클래스 컴포넌트의 상기 애플리케이션 인스턴스들은, (i) 개별적인 애플리케이션 레벨 사용자들로부터 현재 소비되는 자원들 및 현재 사용가능한 자원들의 상기 기록에 적어도 부분적으로 기초하고, (ⅱ) 상기 자원 클래스 컴포넌트들의 상기 애플리케이션 인스턴스들에 대한 서비스 요청들에 필요한 각 자원 클래스 컴포넌트들의 수를 추정하는(estimate) 소정의 정보에 적어도 부분적으로 기초하여, 각 애플리케이션 레벨 사용자에 대하여 조정되는 것인 복수의 애플리케이션 레벨 사용자들을 위한 접속을 제공하는 방법.
  14. 복수의 네트워킹된 머신들 상에서 집합적으로 실행되는 복수의 자원 클래스 컴포넌트들을 포함하는 애플리케이션에 대한 복수의 애플리케이션 레벨 사용자들을 위한 접속을 제공하는 시스템으로서,
    애플리케이션을 사용하기 위한 애플리케이션 레벨 사용자들로부터 들어오는 요청들의 흐름을 수신하기 위한 수단과,
    상기 애플리케이션을 사용하기 위한 각각의 애플리케이션 레벨 사용자들로부터 들어오는 요청들을 서비스하기 위해서, 상기 애플리케이션 레벨 사용자들 각각에 대해서, 하나 이상의 머신들 상에서 상기 애플리케이션에 대한 각 자원 클래스 컴포넌트의 하나 이상의 애플리케이션 인스턴스들의 개별적인 세트를 제공하기 위한 수단과,
    상기 들어오는 요청들 각각을 적절한 자원 클래스 컴포넌트의 특정 애플리케이션 인스턴스로 지향시키기 위한 수단과,
    상기 애플리케이션의 상기 자원 클래스 컴포넌트들의 상기 애플리케이션 인스턴스들에 의해서 서비스되는 요청들의 수를 상기 각 애플리케이션 레벨 사용자들에 대하여 모니터링하기 위한 수단과,
    각 자원 클래스 컴포넌트들에 대해 모니터링된 요청들의 수에 응답하여 하나 이상의 자원 클래스 컴포넌트들의 애플리케이션 인스턴스들의 수를 변화시키기 위한 수단과,
    서비스된 요청들의 상기 모니터링된 수에 기초하여, 개별 애플리케이션 레벨 사용자들로부터 수신된 요청들의 현재 레이트의 기록을 유지하기 위한 수단과,
    하나 이상의 자원 클래스 컴포넌트들의 애플리케이션 인스턴스들의 변화된 수에 응답하여, 상기 각 자원 인스턴스에 대하여 할당된 가중치 및 각 자원 인스턴스에 대하여 할당된 히트들의 수에 대응하는 히트-가중치들을 사용하여, 상이한 자원 클래스 컴포넌트들의 일부를 특정 애플리케이션 레벨 사용자에 집합적이며 자동적으로 할당하기 위한 수단
    을 포함하는 복수의 애플리케이션 레벨 사용자들을 위한 접속을 제공하는 시스템.
  15. 복수의 네트워킹된 머신들 상에서 집합적으로 실행되는 복수의 자원 클래스 컴포넌트들을 포함하는 애플리케이션에 대한 접속을 복수의 애플리케이션 레벨 사용자들에게 제공하기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체로서,
    애플리케이션을 사용하기 위한 애플리케이션 레벨 사용자들로부터 들어오는 요청들의 흐름을 수신하기 위한 코드 수단과,
    상기 애플리케이션을 사용하기 위한 각각의 애플리케이션 레벨 사용자들로부터 들어오는 요청들을 서비스하기 위해서, 상기 애플리케이션 레벨 사용자들 각각에 대해서, 하나 이상의 머신들 상에서 상기 애플리케이션에 대한 각 자원 클래스 컴포넌트의 하나 이상의 애플리케이션 인스턴스들의 개별적인 세트를 제공하기 위한 코드 수단과,
    상기 들어오는 요청들 각각을 적절한 자원 클래스 컴포넌트의 특정 애플리케이션 인스턴스로 지향시키기 위한 코드 수단과,
    상기 애플리케이션의 상기 자원 클래스 컴포넌트들의 상기 애플리케이션 인스턴스들에 의해서 서비스되는 요청들의 수를 상기 각 애플리케이션 레벨 사용자들에 대하여 모니터링하기 위한 코드 수단과,
    각 자원 클래스 컴포넌트들에 대한 요청들의 상기 모니터링된 수에 응답하여 하나 이상의 자원 클래스 컴포넌트들의 애플리케이션 인스턴스들의 수를 변화시키기 위한 코드 수단과,
    상기 모니터링된 서비스된 요청들의 수에 기초하여, 개별 애플리케이션 레벨 사용자들로부터 수신된 요청들의 현재 레이트의 기록을 유지하기 위한 코드 수단과,
    하나 이상의 자원 클래스 컴포넌트들의 애플리케이션 인스턴스들의 변화된 수에 응답하여, 상기 각 자원 인스턴스에 대하여 할당된 가중치 및 각 자원 인스턴스에 대하여 할당된 히트들의 수에 대응하는 히트-가중치들을 사용하여, 상이한 자원 클래스 컴포넌트들의 일부를 특정 애플리케이션 레벨 사용자에 집합적이며 자동적으로 할당하기 위한 코드 수단
    을 포함하는 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체.
  16. 제 14항에 있어서,
    복수의 네트워킹된 머신들 상에서 집합적으로 실행되는 복수의 자원 클래스 컴포넌트들을 포함하는 애플리케이션에 대한 접속을 제공하기 위해서 애플리케이션 레벨 사용자에게 요금을 부과하는 과금 구조를 정의하는 수단을 더 포함하며,
    상기 과금 구조를 정의하는 수단은,
    애플리케이션 레벨 사용자로부터 요청들의 예상되는 최소 레이트로부터, 애플리케이션 레벨 사용자로부터의 요청들의 예상되는 최대 레이트까지, 애플리케이션을 사용하기 위한 애플리케이션 레벨 사용자의 요청들의 레이트의 예상되는 범위를 정의하는 수단과,
    상기 예상되는 범위 내의 하나 이상의 부범위들을 위한 요청들의 서비스 레이트들과 관련된 서비스 요금을 정의하는 수단과,
    상기 애플리케이션 레벨 사용자로부터의 하나 이상의 요청들이 서비스되지 않는 경우, 및 상기 애플리케이션 레벨 사용자로부터의 요청들의 상기 레이트가 요청들의 상기 예상되는 최대 레이트를 초과하지 않을 때 상기 하나 이상의 서비스되지 않는 요청들이 주기 내에서 발생하는 경우, 애플리케이션 레벨 사용자를 위해서 지불가능한 페널티 요금을 정의하는 수단
    을 포함하는 것인 복수의 애플리케이션 레벨 사용자들을 위한 접속을 제공하는 시스템.
  17. 제 15항에 있어서,
    복수의 네트워킹된 머신들 상에서 집합적으로 실행되는 복수의 자원 클래스 컴포넌트들을 포함하는 애플리케이션에 대한 접속을 제공하기 위해서 애플리케이션 레벨 사용자에게 요금을 부과하는 과금 구조를 정의하는 코드 수단을 더 포함하며,
    상기 과금 구조를 정의하는 코드 수단은,
    애플리케이션 레벨 사용자로부터 요청들의 예상되는 최소 레이트로부터, 애플리케이션 레벨 사용자로부터의 요청들의 예상되는 최대 레이트까지, 애플리케이션을 사용하기 위한 애플리케이션 레벨 사용자의 요청들의 레이트의 예상되는 범위를 정의하는 코드 수단과,
    상기 예상되는 범위 내의 하나 이상의 부범위들을 위한 요청들의 서비스 레이트들과 관련된 서비스 요금을 정의하는 코드 수단과,
    상기 애플리케이션 레벨 사용자로부터의 하나 이상의 요청들이 서비스되지 않는 경우, 및 상기 애플리케이션 레벨 사용자로부터의 요청들의 상기 레이트가 요청들의 상기 예상되는 최대 레이트를 초과하지 않을 때 상기 하나 이상의 서비스되지 않는 요청들이 주기 내에서 발생하는 경우, 애플리케이션 레벨 사용자를 위해서 지불가능한 페널티 요금을 정의하는 코드 수단
    을 포함하는 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체.
  18. 복수의 네트워킹된 머신들 상에서 집합적으로 실행되는 복수의 자원 클래스 컴포넌트들을 포함하는 애플리케이션에 대한 복수의 애플리케이션 레벨 사용자들을 위한 접속을 제공하는 시스템으로서,
    애플리케이션을 사용하기 위한 애플리케이션 레벨 사용자들로부터 들어오는 요청들의 흐름을 수신하기 위한 수단과,
    상기 애플리케이션을 사용하기 위한 각각의 애플리케이션 레벨 사용자들로부터 들어오는 요청들을 서비스하기 위해서, 상기 애플리케이션 레벨 사용자들 각각에 대해서, 하나 이상의 머신들 상에서 상기 애플리케이션에 대한 각 자원 클래스 컴포넌트의 하나 이상의 애플리케이션 인스턴스들의 개별적인 세트를 제공하기 위한 수단과,
    상기 애플리케이션의 상기 자원 클래스 컴포넌트들의 상기 애플리케이션 인스턴스들에 의해서 서비스되는 요청들에 의해 현재 소비되는 자원들 및 현재 사용가능한 자원들을 상기 각 애플리케이션 레벨 사용자들에 대하여 모니터링하기 위한 수단과,
    개별적인 애플리케이션 레벨 사용자들에 대해 현재 사용가능한 자원들의 기록, 및 개별적인 애플리케이션 레벨 사용자들에 의해서 현재 소비되는 자원들의 기록을 유지하기 위한 수단과,
    각 자원 클래스 컴포넌트의 상기 하나 이상의 애플리케이션 인스턴스들의 개별적인 수들을 조정하기 위한 수단과,
    하나 이상의 자원 클래스 컴포넌트들의 애플리케이션 인스턴스들의 변동하는 수에 응답하여, 상기 각 자원 인스턴스에 대하여 할당된 가중치 및 각 자원 인스턴스에 대하여 할당된 히트들의 수에 대응하는 히트-가중치들을 사용하여, 상이한 자원 클래스 컴포넌트들의 일부를 특정 애플리케이션 레벨 사용자에 집합적이며 자동적으로 할당하기 위한 수단을 포함하고,
    상기 자원들의 기록 모두는 각 자원 클래스 컴포넌트들의 하나 이상의 애플리케이션 인스턴스에 대하여 유지되며,
    각 자원 클래스 컴포넌트의 상기 애플리케이션 인스턴스들은, (i) 개별적인 애플리케이션 레벨 사용자들로부터 현재 소비되는 자원들 및 현재 사용가능한 자원들의 상기 기록에 적어도 부분적으로 기초하고, (ⅱ) 상기 자원 클래스 컴포넌트들의 상기 애플리케이션 인스턴스들에 대한 서비스 요청들에 필요한 각 자원 클래스 컴포넌트들의 수를 추정하는(estimate) 소정의 정보에 적어도 부분적으로 기초하여, 각 애플리케이션 레벨 사용자에 대하여 조정되는 것인 복수의 애플리케이션 레벨 사용자들을 위한 접속을 제공하는 시스템.
  19. 복수의 네트워킹된 머신들 상에서 집합적으로 실행되는 복수의 자원 클래스 컴포넌트들을 포함하는 애플리케이션에 대한 접속을 복수의 애플리케이션 레벨 사용자들에게 제공하기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체로서,
    상기 프로그램은,
    애플리케이션을 사용하기 위한 애플리케이션 레벨 사용자들로부터 들어오는 요청들의 흐름을 수신하기 위한 코드 수단과,
    상기 애플리케이션을 사용하기 위한 각각의 애플리케이션 레벨 사용자들로부터 들어오는 요청들을 서비스하기 위해서, 상기 애플리케이션 레벨 사용자들 각각에 대해서, 하나 이상의 머신들 상에서 상기 애플리케이션에 대한 각 자원 클래스 컴포넌트의 하나 이상의 애플리케이션 인스턴스들의 개별적인 세트를 제공하기 위한 코드 수단과,
    상기 애플리케이션의 상기 자원 클래스 컴포넌트들의 상기 애플리케이션 인스턴스들에 의해서 서비스되는 요청들에 의해 현재 소비되는 자원들 및 현재 사용가능한 자원들을 상기 각 애플리케이션 레벨 사용자들에 대하여 모니터링하기 위한 코드 수단과,
    개별적인 애플리케이션 레벨 사용자들에 대해 현재 사용가능한 자원들의 기록, 및 개별적인 애플리케이션 레벨 사용자들에 의해서 현재 소비되는 자원들의 기록을 유지하기 위한 코드 수단과,
    각 자원 클래스 컴포넌트의 상기 하나 이상의 애플리케이션 인스턴스들의 개별적인 수들을 조정하기 위한 코드 수단과,
    하나 이상의 자원 클래스 컴포넌트들의 애플리케이션 인스턴스들의 변동하는 수에 응답하여, 상기 각 자원 인스턴스에 대하여 할당된 가중치 및 각 자원 인스턴스에 대하여 할당된 히트들의 수에 대응하는 히트-가중치들을 사용하여, 상이한 자원 클래스 컴포넌트들의 일부를 특정 애플리케이션 레벨 사용자에 집합적이며 자동적으로 할당하기 위한 코드 수단을 포함하고,
    상기 자원들의 기록 모두는 각 자원 클래스 컴포넌트들의 하나 이상의 애플리케이션 인스턴스에 대하여 유지되며,
    각 자원 클래스 컴포넌트의 상기 애플리케이션 인스턴스들은, (i) 개별적인 애플리케이션 레벨 사용자들로부터 현재 소비되는 자원들 및 현재 사용가능한 자원들의 상기 기록에 적어도 부분적으로 기초하고, (ⅱ) 상기 자원 클래스 컴포넌트들의 상기 애플리케이션 인스턴스들에 대한 서비스 요청들에 필요한 각 자원 클래스 컴포넌트들의 수를 추정하는(estimate) 소정의 정보에 적어도 부분적으로 기초하여, 각 애플리케이션 레벨 사용자에 대하여 조정되는 것인 컴퓨터 판독 가능한 기록 매체.
KR20037017243A 2001-08-03 2002-03-21 복수의 애플리케이션 레벨 사용자를 위한 접속 제공 방법, 시스템, 및 기록 매체 KR100570141B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US09/921,868 2001-08-03
US09/921,868 US7174379B2 (en) 2001-08-03 2001-08-03 Managing server resources for hosted applications
PCT/GB2002/001368 WO2003014928A2 (en) 2001-08-03 2002-03-21 Managing server resources for hosted applications

Publications (2)

Publication Number Publication Date
KR20040019033A KR20040019033A (ko) 2004-03-04
KR100570141B1 true KR100570141B1 (ko) 2006-04-12

Family

ID=25446095

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20037017243A KR100570141B1 (ko) 2001-08-03 2002-03-21 복수의 애플리케이션 레벨 사용자를 위한 접속 제공 방법, 시스템, 및 기록 매체

Country Status (7)

Country Link
US (1) US7174379B2 (ko)
EP (1) EP1412857B1 (ko)
JP (1) JP4527976B2 (ko)
KR (1) KR100570141B1 (ko)
AT (1) AT366439T (ko)
DE (1) DE60221019T2 (ko)
WO (1) WO2003014928A2 (ko)

Families Citing this family (304)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9603582D0 (en) 1996-02-20 1996-04-17 Hewlett Packard Co Method of accessing service resource items that are for use in a telecommunications system
US7113900B1 (en) * 2000-10-24 2006-09-26 Microsoft Corporation System and method for logical modeling of distributed computer systems
US6907395B1 (en) * 2000-10-24 2005-06-14 Microsoft Corporation System and method for designing a logical model of a distributed computer system and deploying physical resources according to the logical model
US7606898B1 (en) * 2000-10-24 2009-10-20 Microsoft Corporation System and method for distributed management of shared computers
US7257815B2 (en) * 2001-09-05 2007-08-14 Microsoft Corporation Methods and system of managing concurrent access to multiple resources
US20030061262A1 (en) * 2001-09-25 2003-03-27 Hahn Stephen C. Method and apparatus for partitioning resources within a computer system
US7054934B2 (en) * 2001-10-26 2006-05-30 Hewlett-Packard Development Company, L.P. Tailorable optimization using model descriptions of services and servers in a computing environment
US7035930B2 (en) * 2001-10-26 2006-04-25 Hewlett-Packard Development Company, L.P. Method and framework for generating an optimized deployment of software applications in a distributed computing environment using layered model descriptions of services and servers
US7039705B2 (en) * 2001-10-26 2006-05-02 Hewlett-Packard Development Company, L.P. Representing capacities and demands in a layered computing environment using normalized values
US7328261B2 (en) * 2001-11-21 2008-02-05 Clearcube Technology, Inc. Distributed resource manager
US20030110250A1 (en) * 2001-11-26 2003-06-12 Schnitzer Jason K. Data Normalization
US7310673B2 (en) * 2001-12-21 2007-12-18 Hewlett-Packard Development Company, L.P. Network resource assignment system and method
US20030126135A1 (en) * 2001-12-28 2003-07-03 David Gaxiola Remote resource management of local devices
IL147560D0 (en) * 2002-01-10 2002-08-14 Sphera Technologies Ltd A method and system for hosting a plurality of dedicated servers
US7962644B1 (en) * 2002-03-18 2011-06-14 Oracle International Corporation Systems and methods for handling a plurality of communications
US7660731B2 (en) * 2002-04-06 2010-02-09 International Business Machines Corporation Method and apparatus for technology resource management
US7107327B2 (en) * 2002-04-26 2006-09-12 Sun Microsystems, Inc. Method and apparatus for determining a server configuration based on an execution profile of an application
US7143413B2 (en) * 2002-05-15 2006-11-28 Hewlett-Packard Development Company, L.P. Method and system for allocating system resources among applications using weights
US7072960B2 (en) * 2002-06-10 2006-07-04 Hewlett-Packard Development Company, L.P. Generating automated mappings of service demands to server capacities in a distributed computer system
US7290050B1 (en) * 2002-09-20 2007-10-30 Blue Coat Systems, Inc. Transparent load balancer for network connections
US7353538B2 (en) * 2002-11-08 2008-04-01 Federal Network Systems Llc Server resource management, analysis, and intrusion negation
US7376732B2 (en) * 2002-11-08 2008-05-20 Federal Network Systems, Llc Systems and methods for preventing intrusion at a web host
GB0302926D0 (en) * 2003-02-08 2003-03-12 Grex Games Ltd System architecture and engine for massively multi-user operation
US8122106B2 (en) * 2003-03-06 2012-02-21 Microsoft Corporation Integrating design, deployment, and management phases for systems
US7072807B2 (en) * 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7689676B2 (en) 2003-03-06 2010-03-30 Microsoft Corporation Model-based policy application
US7890543B2 (en) * 2003-03-06 2011-02-15 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
JP4045991B2 (ja) * 2003-03-27 2008-02-13 株式会社日立製作所 ポリシールールの生成方法およびそれを用いたジョブ運用管理方法
US7437728B2 (en) * 2003-06-12 2008-10-14 Microsoft Corporation System and method for CPU bandwidth allocation
US7349958B2 (en) * 2003-06-25 2008-03-25 International Business Machines Corporation Method for improving performance in a computer storage system by regulating resource requests from clients
US7636917B2 (en) * 2003-06-30 2009-12-22 Microsoft Corporation Network load balancing with host status information
US7590736B2 (en) * 2003-06-30 2009-09-15 Microsoft Corporation Flexible network load balancing
US7606929B2 (en) * 2003-06-30 2009-10-20 Microsoft Corporation Network load balancing with connection manipulation
US7613822B2 (en) * 2003-06-30 2009-11-03 Microsoft Corporation Network load balancing with session information
US7437459B2 (en) * 2003-08-14 2008-10-14 Oracle International Corporation Calculation of service performance grades in a multi-node environment that hosts the services
US7937493B2 (en) * 2003-08-14 2011-05-03 Oracle International Corporation Connection pool use of runtime load balancing service performance advisories
US8365193B2 (en) * 2003-08-14 2013-01-29 Oracle International Corporation Recoverable asynchronous message driven processing in a multi-node system
US7747717B2 (en) * 2003-08-14 2010-06-29 Oracle International Corporation Fast application notification in a clustered computing system
US7953860B2 (en) * 2003-08-14 2011-05-31 Oracle International Corporation Fast reorganization of connections in response to an event in a clustered computing system
US7502824B2 (en) * 2004-08-12 2009-03-10 Oracle International Corporation Database shutdown with session migration
AU2004266017B2 (en) * 2003-08-14 2009-12-03 Oracle International Corporation Hierarchical management of the dynamic allocation of resources in a multi-node system
US7441033B2 (en) * 2003-08-14 2008-10-21 Oracle International Corporation On demand node and server instance allocation and de-allocation
US20050256971A1 (en) * 2003-08-14 2005-11-17 Oracle International Corporation Runtime load balancing of work across a clustered computing system using current service performance levels
US7437460B2 (en) * 2003-08-14 2008-10-14 Oracle International Corporation Service placement for enforcing performance and availability levels in a multi-node system
US7516221B2 (en) * 2003-08-14 2009-04-07 Oracle International Corporation Hierarchical management of the dynamic allocation of resources in a multi-node system
US7664847B2 (en) * 2003-08-14 2010-02-16 Oracle International Corporation Managing workload by service
CN100547583C (zh) * 2003-08-14 2009-10-07 甲骨文国际公司 数据库的自动和动态提供的方法
US7552171B2 (en) * 2003-08-14 2009-06-23 Oracle International Corporation Incremental run-time session balancing in a multi-node system
US7873684B2 (en) 2003-08-14 2011-01-18 Oracle International Corporation Automatic and dynamic provisioning of databases
US8655755B2 (en) * 2003-10-22 2014-02-18 Scottrade, Inc. System and method for the automated brokerage of financial instruments
JP3993848B2 (ja) * 2003-10-24 2007-10-17 株式会社日立製作所 計算機装置及び計算機装置の制御方法
US7676560B2 (en) * 2003-10-24 2010-03-09 Microsoft Corporation Using URI's to identify multiple instances with a common schema
US7296273B2 (en) * 2003-12-04 2007-11-13 International Business Machines Corporation System, method and program tool to reset an application
US7640546B2 (en) * 2004-01-16 2009-12-29 Barclays Capital Inc. Method and system for identifying active devices on network
JP4367141B2 (ja) * 2004-01-23 2009-11-18 富士ゼロックス株式会社 指示記述内容変更装置及び指示記述内容変更プログラム
CA2463006A1 (en) * 2004-01-27 2005-07-27 Wrapped Apps Corporation On demand provisioning of web applications
US20050172291A1 (en) * 2004-01-30 2005-08-04 Rajarshi Das Method and apparatus for utility-based dynamic resource allocation in a distributed computing system
WO2005081137A1 (en) * 2004-01-30 2005-09-01 International Business Machines Corporation Hierarchical resource management for a computing utility
US8311974B2 (en) 2004-02-20 2012-11-13 Oracle International Corporation Modularized extraction, transformation, and loading for a database
US8584129B1 (en) * 2004-02-20 2013-11-12 Oracle America, Inc. Dispenser determines responses to resource requests for a single respective one of consumable resource using resource management policy
US8046763B1 (en) * 2004-02-20 2011-10-25 Oracle America, Inc. Regulation of resource requests to control rate of resource consumption
US7778422B2 (en) * 2004-02-27 2010-08-17 Microsoft Corporation Security associations for devices
US7827557B2 (en) * 2004-03-24 2010-11-02 Hewlett-Packard Development Company, L.P. Method and apparatus for allocating resources to applications using a linearized objective function
US7865582B2 (en) * 2004-03-24 2011-01-04 Hewlett-Packard Development Company, L.P. System and method for assigning an application component to a computing resource
US20050259683A1 (en) * 2004-04-15 2005-11-24 International Business Machines Corporation Control service capacity
US8458691B2 (en) 2004-04-15 2013-06-04 International Business Machines Corporation System and method for dynamically building application environments in a computational grid
US20050246529A1 (en) 2004-04-30 2005-11-03 Microsoft Corporation Isolated persistent identity storage for authentication of computing devies
US20050251786A1 (en) * 2004-05-07 2005-11-10 International Business Machines Corporation System and method for dynamic software installation instructions
US8554806B2 (en) 2004-05-14 2013-10-08 Oracle International Corporation Cross platform transportable tablespaces
US20060069774A1 (en) * 2004-06-17 2006-03-30 International Business Machine Corporation Method and apparatus for managing data center using Web services
US20050283531A1 (en) * 2004-06-17 2005-12-22 International Business Machines Corporation Method and apparatus for combining resource properties and device operations using stateful Web services
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
DE102004032518A1 (de) * 2004-07-06 2006-01-26 Braun Gmbh Reinigungsvorrichtung für den Scherkopf eines Trockenrasierapparates
JP2006079495A (ja) * 2004-09-13 2006-03-23 Hitachi Ltd ストレージシステム及び論理区画の設定方法
US20060064400A1 (en) * 2004-09-21 2006-03-23 Oracle International Corporation, A California Corporation Methods, systems and software for identifying and managing database work
US8181219B2 (en) 2004-10-01 2012-05-15 Microsoft Corporation Access authorization having embedded policies
US20060095435A1 (en) * 2004-10-22 2006-05-04 Bellsouth Intellectual Property Corporation Configuring and deploying portable application containers for improved utilization of server capacity
US7788671B2 (en) 2004-11-01 2010-08-31 International Business Machines Corporation On-demand application resource allocation through dynamic reconfiguration of application cluster size and placement
US7562382B2 (en) * 2004-12-16 2009-07-14 International Business Machines Corporation Specializing support for a federation relationship
US9606821B2 (en) * 2004-12-17 2017-03-28 Intel Corporation Virtual environment manager for creating and managing virtual machine environments
US9489424B2 (en) * 2004-12-20 2016-11-08 Oracle International Corporation Cursor pre-fetching
US8316130B2 (en) 2004-12-22 2012-11-20 International Business Machines Corporation System, method and computer program product for provisioning of resources and service environments
US20060143617A1 (en) * 2004-12-29 2006-06-29 Knauerhase Robert C Method, apparatus and system for dynamic allocation of virtual platform resources
US7779418B2 (en) 2004-12-30 2010-08-17 Oracle International Corporation Publisher flow control and bounded guaranteed delivery for message queues
US7818386B2 (en) 2004-12-30 2010-10-19 Oracle International Corporation Repeatable message streams for message queues in distributed systems
US7925755B2 (en) * 2004-12-30 2011-04-12 International Business Machines Corporation Peer to peer resource negotiation and coordination to satisfy a service level objective
US20060149650A1 (en) * 2005-01-05 2006-07-06 Dilley James K Fundraiser system
US7555484B2 (en) * 2005-01-19 2009-06-30 Microsoft Corporation Load balancing based on cache content
US8826287B1 (en) * 2005-01-28 2014-09-02 Hewlett-Packard Development Company, L.P. System for adjusting computer resources allocated for executing an application using a control plug-in
US9176772B2 (en) * 2005-02-11 2015-11-03 Oracle International Corporation Suspending and resuming of sessions
US7379953B2 (en) * 2005-02-22 2008-05-27 International Business Machines Corporation Systems and methods for resource-adaptive workload management
US7739687B2 (en) * 2005-02-28 2010-06-15 International Business Machines Corporation Application of attribute-set policies to managed resources in a distributed computing system
US7657536B2 (en) * 2005-02-28 2010-02-02 International Business Machines Corporation Application of resource-dependent policies to managed resources in a distributed computing system
JP5076279B2 (ja) * 2005-03-17 2012-11-21 富士通株式会社 It資産管理システム、it資産管理方法およびit資産管理プログラム
US20060235664A1 (en) * 2005-04-15 2006-10-19 Microsoft Corporation Model-based capacity planning
US7802144B2 (en) * 2005-04-15 2010-09-21 Microsoft Corporation Model-based system monitoring
US8489728B2 (en) * 2005-04-15 2013-07-16 Microsoft Corporation Model-based system monitoring
US7797147B2 (en) * 2005-04-15 2010-09-14 Microsoft Corporation Model-based system monitoring
US9021094B1 (en) 2005-04-28 2015-04-28 Hewlett-Packard Development Company, L.P. Allocation of resources for tiers of a multi-tiered system based on selecting items from respective sets
US7886055B1 (en) * 2005-04-28 2011-02-08 Hewlett-Packard Development Company, L.P. Allocating resources in a system having multiple tiers
US7908606B2 (en) * 2005-05-20 2011-03-15 Unisys Corporation Usage metering system
JP2007004595A (ja) * 2005-06-24 2007-01-11 Hitachi Ltd コンピュータ制御方法、コンピュータ、情報処理システム、及びプログラム
US20070016393A1 (en) * 2005-06-29 2007-01-18 Microsoft Corporation Model-based propagation of attributes
JP4352028B2 (ja) * 2005-06-29 2009-10-28 富士通株式会社 運用ポリシー評価システムおよび運用ポリシー評価プログラム
US20070005320A1 (en) * 2005-06-29 2007-01-04 Microsoft Corporation Model-based configuration management
US8549513B2 (en) 2005-06-29 2013-10-01 Microsoft Corporation Model-based virtual system provisioning
US20070011214A1 (en) * 2005-07-06 2007-01-11 Venkateswararao Jujjuri Oject level adaptive allocation technique
US7461274B2 (en) * 2005-08-23 2008-12-02 International Business Machines Corporation Method for maximizing server utilization in a resource constrained environment
DE502005009040D1 (de) * 2005-09-12 2010-04-01 Siemens Ag Verfahren zur Steuerung eines Zugriffs auf Ressourcen eines Datenverarbeitungssystems und Steuerungsprogramm
US8196150B2 (en) 2005-10-07 2012-06-05 Oracle International Corporation Event locality using queue services
US7526409B2 (en) 2005-10-07 2009-04-28 Oracle International Corporation Automatic performance statistical comparison between two periods
JP5077617B2 (ja) * 2005-10-27 2012-11-21 富士通株式会社 想定外需要検出システムおよび想定外需要検出プログラム
US7941309B2 (en) * 2005-11-02 2011-05-10 Microsoft Corporation Modeling IT operations/policies
US8355938B2 (en) 2006-01-05 2013-01-15 Wells Fargo Bank, N.A. Capacity management index system and method
US20070174460A1 (en) * 2006-01-26 2007-07-26 International Business Machines Corporation Method and system for on demand weighted proportional distribution of enterprise allocations
US8190682B2 (en) * 2006-03-31 2012-05-29 Amazon Technologies, Inc. Managing execution of programs by multiple computing systems
US7792944B2 (en) * 2006-03-31 2010-09-07 Amazon Technologies, Inc. Executing programs based on user-specified constraints
US7801128B2 (en) 2006-03-31 2010-09-21 Amazon Technologies, Inc. Managing communications between computing nodes
WO2007114643A1 (en) * 2006-04-06 2007-10-11 Samsung Electronics Co., Ltd Apparatus and method for managing resource in multiple screens environment
DE102006033863A1 (de) * 2006-07-21 2008-01-24 Siemens Ag Verschaltungsschnittstelle für flexibles Online/Offline-Deployment einer n-schichtigen Softwareapplikation
JP4751265B2 (ja) * 2006-08-01 2011-08-17 株式会社日立製作所 リソース管理システム及びその方法
US8116207B2 (en) * 2006-08-21 2012-02-14 Citrix Systems, Inc. Systems and methods for weighted monitoring of network services
US20080052397A1 (en) 2006-08-24 2008-02-28 Ramanathan Venkataraman Future locking of resources
US7761538B2 (en) * 2006-08-30 2010-07-20 Microsoft Corporation Dynamically configuring, allocating and deploying computing systems
US7660884B2 (en) * 2006-11-10 2010-02-09 International Business Machines Corporation Apparatus, system, and method for generating a resource utilization description for a parallel data processing system
US8909599B2 (en) 2006-11-16 2014-12-09 Oracle International Corporation Efficient migration of binary XML across databases
US9106606B1 (en) 2007-02-05 2015-08-11 F5 Networks, Inc. Method, intermediate device and computer program code for maintaining persistency
US9027025B2 (en) * 2007-04-17 2015-05-05 Oracle International Corporation Real-time database exception monitoring tool using instance eviction data
US20080288622A1 (en) * 2007-05-18 2008-11-20 Microsoft Corporation Managing Server Farms
US8239505B2 (en) * 2007-06-29 2012-08-07 Microsoft Corporation Progressively implementing declarative models in distributed systems
US8214500B2 (en) * 2007-09-10 2012-07-03 Samsung Electronics Co., Ltd. Method for allocating resource and receiving data to control a transmission error
US8566439B2 (en) * 2007-10-01 2013-10-22 Ebay Inc Method and system for intelligent request refusal in response to a network deficiency detection
US20090125706A1 (en) * 2007-11-08 2009-05-14 Hoover Russell D Software Pipelining on a Network on Chip
US8281012B2 (en) * 2008-01-30 2012-10-02 International Business Machines Corporation Managing parallel data processing jobs in grid environments
US8539468B2 (en) * 2008-02-18 2013-09-17 International Business Machines Corporation System and methods for replacing software application classes using transparent object adapters
US8347307B2 (en) * 2008-03-12 2013-01-01 International Business Machines Corporation Method and system for cost avoidance in virtualized computing environments
US7970820B1 (en) 2008-03-31 2011-06-28 Amazon Technologies, Inc. Locality based content distribution
US8533293B1 (en) 2008-03-31 2013-09-10 Amazon Technologies, Inc. Client side cache management
US7962597B2 (en) 2008-03-31 2011-06-14 Amazon Technologies, Inc. Request routing based on class
US8601090B1 (en) 2008-03-31 2013-12-03 Amazon Technologies, Inc. Network resource identification
US8606996B2 (en) 2008-03-31 2013-12-10 Amazon Technologies, Inc. Cache optimization
US8156243B2 (en) 2008-03-31 2012-04-10 Amazon Technologies, Inc. Request routing
US8321568B2 (en) 2008-03-31 2012-11-27 Amazon Technologies, Inc. Content management
US8447831B1 (en) 2008-03-31 2013-05-21 Amazon Technologies, Inc. Incentive driven content delivery
US7961610B1 (en) * 2008-04-03 2011-06-14 Clear Wireless Llc Method and system for overload control
US8332825B2 (en) * 2008-06-26 2012-12-11 Microsoft Corporation Dynamically monitoring application behavior
US7925782B2 (en) 2008-06-30 2011-04-12 Amazon Technologies, Inc. Request routing using network computing components
US9912740B2 (en) 2008-06-30 2018-03-06 Amazon Technologies, Inc. Latency measurement in resource requests
US8433680B2 (en) 2008-07-01 2013-04-30 Oracle International Corporation Capturing and restoring database session state
US8019873B2 (en) 2008-09-30 2011-09-13 Microsoft Corporation Mesh platform utility computing portal
US9875141B2 (en) * 2008-10-01 2018-01-23 Microsoft Technology Licensing, Llc Managing pools of dynamic resources
US7783752B2 (en) * 2008-10-15 2010-08-24 Microsoft Corporation Automated role based usage determination for software system
US9734466B2 (en) * 2008-11-11 2017-08-15 Sap Se Multi-tenancy engine
US7991910B2 (en) 2008-11-17 2011-08-02 Amazon Technologies, Inc. Updating routing information based on client location
US8065417B1 (en) 2008-11-17 2011-11-22 Amazon Technologies, Inc. Service provider registration by a content broker
US8521880B1 (en) 2008-11-17 2013-08-27 Amazon Technologies, Inc. Managing content delivery network service providers
US8122098B1 (en) 2008-11-17 2012-02-21 Amazon Technologies, Inc. Managing content delivery network service providers by a content broker
US8028090B2 (en) 2008-11-17 2011-09-27 Amazon Technologies, Inc. Request routing utilizing client location information
US8732309B1 (en) 2008-11-17 2014-05-20 Amazon Technologies, Inc. Request routing utilizing cost information
US8060616B1 (en) 2008-11-17 2011-11-15 Amazon Technologies, Inc. Managing CDN registration by a storage provider
US8073940B1 (en) 2008-11-17 2011-12-06 Amazon Technologies, Inc. Managing content delivery network service providers
US8682842B2 (en) * 2008-12-09 2014-03-25 Yahoo! Inc. System and method for logging operations
US9128895B2 (en) * 2009-02-19 2015-09-08 Oracle International Corporation Intelligent flood control management
CN101820381B (zh) * 2009-02-27 2013-06-12 华为技术有限公司 一种业务路由的方法,系统和装置
US8412823B1 (en) 2009-03-27 2013-04-02 Amazon Technologies, Inc. Managing tracking information entries in resource cache components
US8756341B1 (en) * 2009-03-27 2014-06-17 Amazon Technologies, Inc. Request routing utilizing popularity information
US8521851B1 (en) 2009-03-27 2013-08-27 Amazon Technologies, Inc. DNS query processing using resource identifiers specifying an application broker
US8688837B1 (en) 2009-03-27 2014-04-01 Amazon Technologies, Inc. Dynamically translating resource identifiers for request routing using popularity information
US8261266B2 (en) * 2009-04-30 2012-09-04 Microsoft Corporation Deploying a virtual machine having a virtual hardware configuration matching an improved hardware profile with respect to execution of an application
US8762680B2 (en) 2009-05-19 2014-06-24 International Business Machines Corporation Scaling energy use in a virtualized environment
US8356193B2 (en) * 2009-05-19 2013-01-15 International Business Machines Corporation Scaling energy use in a virtualized environment
US8238538B2 (en) 2009-05-28 2012-08-07 Comcast Cable Communications, Llc Stateful home phone service
TW201112006A (en) * 2009-05-29 2011-04-01 Ibm Computer system, method and program product
US8549038B2 (en) * 2009-06-15 2013-10-01 Oracle International Corporation Pluggable session context
US8782236B1 (en) 2009-06-16 2014-07-15 Amazon Technologies, Inc. Managing resources using resource expiration data
US20100318454A1 (en) * 2009-06-16 2010-12-16 Microsoft Corporation Function and Constraint Based Service Agreements
WO2010146761A1 (ja) * 2009-06-19 2010-12-23 日本電気株式会社 ネットワークサービス制御システム、ネットワークサービス制御方法および記憶媒体
US8397073B1 (en) 2009-09-04 2013-03-12 Amazon Technologies, Inc. Managing secure content in a content delivery network
US8935702B2 (en) * 2009-09-04 2015-01-13 International Business Machines Corporation Resource optimization for parallel data integration
US8775125B1 (en) * 2009-09-10 2014-07-08 Jpmorgan Chase Bank, N.A. System and method for improved processing performance
WO2011032039A1 (en) * 2009-09-11 2011-03-17 O'brien John W System for dynamically allocating natural resources
US8433771B1 (en) 2009-10-02 2013-04-30 Amazon Technologies, Inc. Distribution network with forward resource propagation
US9122537B2 (en) * 2009-10-30 2015-09-01 Cisco Technology, Inc. Balancing server load according to availability of physical resources based on the detection of out-of-sequence packets
US8700752B2 (en) * 2009-11-03 2014-04-15 International Business Machines Corporation Optimized efficient LPAR capacity consolidation
US9165086B2 (en) 2010-01-20 2015-10-20 Oracle International Corporation Hybrid binary XML storage model for efficient XML processing
US9495338B1 (en) 2010-01-28 2016-11-15 Amazon Technologies, Inc. Content distribution network
US9122538B2 (en) 2010-02-22 2015-09-01 Virtustream, Inc. Methods and apparatus related to management of unit-based virtual resources within a data center environment
US9027017B2 (en) 2010-02-22 2015-05-05 Virtustream, Inc. Methods and apparatus for movement of virtual resources within a data center environment
US8473959B2 (en) * 2010-02-22 2013-06-25 Virtustream, Inc. Methods and apparatus related to migration of customer resources to virtual resources within a data center environment
US8671265B2 (en) * 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
CA2792532A1 (en) 2010-03-29 2011-10-06 Amazon Technologies, Inc. Managing committed request rates for shared resources
US20110238857A1 (en) * 2010-03-29 2011-09-29 Amazon Technologies, Inc. Committed processing rates for shared resources
US9342801B2 (en) 2010-03-29 2016-05-17 Amazon Technologies, Inc. Managing committed processing rates for shared resources
US8756272B1 (en) 2010-08-26 2014-06-17 Amazon Technologies, Inc. Processing encoded content
DE102010036292A1 (de) * 2010-08-27 2012-03-01 Siemens Aktiengesellschaft Verfahren und Vorrichtung zum automatischen Bewerten einer Zulieferanlage
US8533103B1 (en) * 2010-09-14 2013-09-10 Amazon Technologies, Inc. Maintaining latency guarantees for shared resources
US8612330B1 (en) 2010-09-14 2013-12-17 Amazon Technologies, Inc. Managing bandwidth for shared resources
US8694400B1 (en) 2010-09-14 2014-04-08 Amazon Technologies, Inc. Managing operational throughput for shared resources
US8458530B2 (en) 2010-09-21 2013-06-04 Oracle International Corporation Continuous system health indicator for managing computer system alerts
US8819283B2 (en) 2010-09-28 2014-08-26 Amazon Technologies, Inc. Request routing in a networked environment
US9712484B1 (en) 2010-09-28 2017-07-18 Amazon Technologies, Inc. Managing request routing information utilizing client identifiers
US8938526B1 (en) 2010-09-28 2015-01-20 Amazon Technologies, Inc. Request routing management based on network components
US9407681B1 (en) 2010-09-28 2016-08-02 Amazon Technologies, Inc. Latency measurement in resource requests
US8577992B1 (en) 2010-09-28 2013-11-05 Amazon Technologies, Inc. Request routing management based on network components
US9003035B1 (en) 2010-09-28 2015-04-07 Amazon Technologies, Inc. Point of presence management in request routing
US10097398B1 (en) 2010-09-28 2018-10-09 Amazon Technologies, Inc. Point of presence management in request routing
US8924528B1 (en) 2010-09-28 2014-12-30 Amazon Technologies, Inc. Latency measurement in resource requests
US8930513B1 (en) 2010-09-28 2015-01-06 Amazon Technologies, Inc. Latency measurement in resource requests
US8468247B1 (en) 2010-09-28 2013-06-18 Amazon Technologies, Inc. Point of presence management in request routing
US8621477B2 (en) * 2010-10-29 2013-12-31 International Business Machines Corporation Real-time monitoring of job resource consumption and prediction of resource deficiency based on future availability
US8452874B2 (en) 2010-11-22 2013-05-28 Amazon Technologies, Inc. Request routing processing
US9391949B1 (en) 2010-12-03 2016-07-12 Amazon Technologies, Inc. Request routing processing
US8626950B1 (en) 2010-12-03 2014-01-07 Amazon Technologies, Inc. Request routing processing
US8490092B2 (en) 2011-07-06 2013-07-16 Microsoft Corporation Combined live migration and storage migration using file shares and mirroring
WO2013029051A2 (en) 2011-08-25 2013-02-28 to fuVIRTUSTREAM, INC. Systems and methods of host-aware resource management involving cluster-based resource pools
US9619357B2 (en) 2011-09-28 2017-04-11 International Business Machines Corporation Hybrid storage devices
US8644335B2 (en) * 2011-09-29 2014-02-04 Alcatel Lucent Access node for a communications network
US20130091065A1 (en) * 2011-10-10 2013-04-11 Sonicwall, Inc. Automatic spike licensing
US8880022B2 (en) * 2011-11-10 2014-11-04 Microsoft Corporation Providing per-application resource usage information
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9003021B2 (en) 2011-12-27 2015-04-07 Solidfire, Inc. Management of storage system access based on client performance and cluser health
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9223607B2 (en) * 2012-01-17 2015-12-29 Microsoft Technology Licensing, Llc System for replicating or migrating virtual machine operations log by throttling guest write iOS based on destination throughput
US8904009B1 (en) 2012-02-10 2014-12-02 Amazon Technologies, Inc. Dynamic content delivery
US10021179B1 (en) 2012-02-21 2018-07-10 Amazon Technologies, Inc. Local resource delivery network
US9172674B1 (en) 2012-03-21 2015-10-27 Amazon Technologies, Inc. Managing request routing information utilizing performance information
US9055067B1 (en) 2012-03-26 2015-06-09 Amazon Technologies, Inc. Flexible-location reservations and pricing for network-accessible resource capacity
US9760928B1 (en) 2012-03-26 2017-09-12 Amazon Technologies, Inc. Cloud resource marketplace for third-party capacity
US9479382B1 (en) 2012-03-27 2016-10-25 Amazon Technologies, Inc. Execution plan generation and scheduling for network-accessible resources
US9240025B1 (en) 2012-03-27 2016-01-19 Amazon Technologies, Inc. Dynamic pricing of network-accessible resources for stateful applications
US10223647B1 (en) 2012-03-27 2019-03-05 Amazon Technologies, Inc. Dynamic modification of interruptibility settings for network-accessible resources
US9294236B1 (en) 2012-03-27 2016-03-22 Amazon Technologies, Inc. Automated cloud resource trading system
US9985848B1 (en) 2012-03-27 2018-05-29 Amazon Technologies, Inc. Notification based pricing of excess cloud capacity
US9118520B1 (en) * 2012-04-20 2015-08-25 Symantec Corporation Systems and methods for monitoring application resource usage on mobile computing systems
US8676622B1 (en) * 2012-05-01 2014-03-18 Amazon Technologies, Inc. Job resource planner for cloud computing environments
US10152449B1 (en) 2012-05-18 2018-12-11 Amazon Technologies, Inc. User-defined capacity reservation pools for network-accessible resources
US9246986B1 (en) 2012-05-21 2016-01-26 Amazon Technologies, Inc. Instance selection ordering policies for network-accessible resources
US9154551B1 (en) 2012-06-11 2015-10-06 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US9154589B1 (en) 2012-06-28 2015-10-06 Amazon Technologies, Inc. Bandwidth-optimized cloud resource placement service
US9306870B1 (en) 2012-06-28 2016-04-05 Amazon Technologies, Inc. Emulating circuit switching in cloud networking environments
US9600206B2 (en) 2012-08-01 2017-03-21 Microsoft Technology Licensing, Llc Request ordering support when switching virtual disk replication logs
US20140040446A1 (en) * 2012-08-05 2014-02-06 International Business Machines Corporation Remote Provisioning of Virtual Appliances for Access to Virtualized Storage
US9525659B1 (en) 2012-09-04 2016-12-20 Amazon Technologies, Inc. Request routing utilizing point of presence load information
US9135048B2 (en) 2012-09-20 2015-09-15 Amazon Technologies, Inc. Automated profiling of resource usage
US9323577B2 (en) 2012-09-20 2016-04-26 Amazon Technologies, Inc. Automated profiling of resource usage
US9239763B2 (en) 2012-09-28 2016-01-19 Oracle International Corporation Container database
WO2014091580A1 (ja) * 2012-12-12 2014-06-19 株式会社東芝 クラウドシステム管理装置、クラウドシステム、再配置方法、及びプログラム
US10205698B1 (en) 2012-12-19 2019-02-12 Amazon Technologies, Inc. Source-dependent address resolution
US8984243B1 (en) 2013-02-22 2015-03-17 Amazon Technologies, Inc. Managing operational parameters for electronic resources
US9294391B1 (en) 2013-06-04 2016-03-22 Amazon Technologies, Inc. Managing network computing components utilizing request routing
ES2671627T3 (es) * 2013-06-21 2018-06-07 Alcatel Lucent Sistema y procedimiento IMS en nube elástico y escalable
US9372757B2 (en) 2013-10-18 2016-06-21 Netapp, Inc. Incremental block level backup
US9377953B2 (en) 2014-04-23 2016-06-28 Netapp, Inc. Efficiency sets in a distributed system
US9372789B2 (en) 2014-05-30 2016-06-21 Netapp, Inc. Log-structured filed system with file branching
US10241886B2 (en) * 2014-06-04 2019-03-26 Sugarcrm Inc. Application performance perception meter
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US20160127489A1 (en) 2014-10-31 2016-05-05 Solidfire, Inc. Multi-tenant networking
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US10033627B1 (en) 2014-12-18 2018-07-24 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10097448B1 (en) 2014-12-18 2018-10-09 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10091096B1 (en) 2014-12-18 2018-10-02 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US10225326B1 (en) 2015-03-23 2019-03-05 Amazon Technologies, Inc. Point of presence based data uploading
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9819567B1 (en) 2015-03-30 2017-11-14 Amazon Technologies, Inc. Traffic surge management for points of presence
US9887931B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US9887932B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US9832141B1 (en) 2015-05-13 2017-11-28 Amazon Technologies, Inc. Routing based request correlation
US10097566B1 (en) 2015-07-31 2018-10-09 Amazon Technologies, Inc. Identifying targets of network attacks
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US9774619B1 (en) 2015-09-24 2017-09-26 Amazon Technologies, Inc. Mitigating network attacks
US9794281B1 (en) 2015-09-24 2017-10-17 Amazon Technologies, Inc. Identifying sources of network attacks
US9742795B1 (en) 2015-09-24 2017-08-22 Amazon Technologies, Inc. Mitigating network attacks
US9400609B1 (en) 2015-11-04 2016-07-26 Netapp, Inc. Data transformation during recycling
US10270878B1 (en) 2015-11-10 2019-04-23 Amazon Technologies, Inc. Routing for origin-facing points of presence
US10158726B2 (en) * 2015-12-02 2018-12-18 International Business Machines Corporation Supporting high availability for orchestrated services
US10257307B1 (en) 2015-12-11 2019-04-09 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10049051B1 (en) 2015-12-11 2018-08-14 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US9613046B1 (en) 2015-12-14 2017-04-04 Netapp, Inc. Parallel optimized remote synchronization of active block storage
US10387387B2 (en) 2015-12-17 2019-08-20 Oracle International Corporation Enabling multi-tenant access to respective isolated data sets organized using different application schemas
US10289617B2 (en) 2015-12-17 2019-05-14 Oracle International Corporation Accessing on-premise and off-premise datastores that are organized using different application schemas
US10348639B2 (en) 2015-12-18 2019-07-09 Amazon Technologies, Inc. Use of virtual endpoints to improve data transmission rates
US9537827B1 (en) 2015-12-21 2017-01-03 Netapp, Inc. Secure mode VLANs systems and methods
US10432491B2 (en) * 2016-03-22 2019-10-01 Intel Corporation Control device for estimation of power consumption and energy efficiency of application containers
US10075551B1 (en) 2016-06-06 2018-09-11 Amazon Technologies, Inc. Request management for hierarchical cache
US10460124B2 (en) * 2016-06-20 2019-10-29 Netapp, Inc. Per-volume tenant encryption and external key manager
US10110694B1 (en) 2016-06-29 2018-10-23 Amazon Technologies, Inc. Adaptive transfer rate for retrieving content from a server
US10334026B2 (en) * 2016-08-08 2019-06-25 Bank Of America Corporation Resource assignment system
US9992086B1 (en) 2016-08-23 2018-06-05 Amazon Technologies, Inc. External health checking of virtual private cloud network environments
US10033691B1 (en) 2016-08-24 2018-07-24 Amazon Technologies, Inc. Adaptive resolution of domain name requests in virtual private cloud network environments
US10303894B2 (en) 2016-08-31 2019-05-28 Oracle International Corporation Fine-grained access control for data manipulation language (DML) operations on relational data
US10474653B2 (en) 2016-09-30 2019-11-12 Oracle International Corporation Flexible in-memory column store placement
US20180097831A1 (en) 2016-10-05 2018-04-05 Amazon Technologies, Inc. Network addresses with encoded dns-level information
US10372499B1 (en) 2016-12-27 2019-08-06 Amazon Technologies, Inc. Efficient region selection system for executing request-driven code
US10269456B2 (en) 2017-05-05 2019-04-23 Bank Of America Corporation System for identification of treatment and resource deployment based on treatment interaction
US10437899B2 (en) 2017-05-05 2019-10-08 Bank Of America Corporation System for distributed server data management with multi-user access
US10454941B2 (en) 2017-05-05 2019-10-22 Bank Of America Corporation Person-to-person network architecture for secure authorization and approval
US10447648B2 (en) 2017-06-19 2019-10-15 Amazon Technologies, Inc. Assignment of a POP to a DNS resolver based on volume of communications over a link between client devices and the POP
US10034608B1 (en) 2017-08-14 2018-07-31 Bank Of America Corporation System for receiving transmissions from disparate node and triggering automatic portal action
US10437647B2 (en) * 2017-09-26 2019-10-08 Verizon Patent And Licensing Inc. Cluster configuration with zero touch provisioning
US10477544B2 (en) * 2017-12-19 2019-11-12 Raytheon Company System and method for sharing RF signal processing

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574914A (en) * 1993-01-04 1996-11-12 Unisys Corporation Method and apparatus for performing system resource partitioning
EP0694837A1 (en) 1994-07-25 1996-01-31 International Business Machines Corporation Dynamic workload balancing
US5790868A (en) * 1995-06-07 1998-08-04 Tandem Computers, Inc. Customer information control system and method with transaction serialization control functions in a loosely coupled parallel processing environment
US6182109B1 (en) * 1996-03-08 2001-01-30 International Business Machines Corporation Dynamic execution unit management for high performance user level network server system
US6240454B1 (en) 1996-09-09 2001-05-29 Avaya Technology Corp. Dynamic reconfiguration of network servers
US5949977A (en) * 1996-10-08 1999-09-07 Aubeta Technology, Llc Method and apparatus for requesting and processing services from a plurality of nodes connected via common communication links
GB9705371D0 (en) * 1997-03-14 1997-04-30 British Telecomm Control of data transfer and distributed data processing
CA2246867A1 (en) 1997-09-26 1999-03-26 Robert Joseph Thornberry Jr. Internet performance network
US6631425B1 (en) * 1997-10-28 2003-10-07 Microsoft Corporation Just-in-time activation and as-soon-as-possible deactivation or server application components
US6086618A (en) * 1998-01-26 2000-07-11 Microsoft Corporation Method and computer program product for estimating total resource usage requirements of a server application in a hypothetical user configuration
US6327622B1 (en) * 1998-09-03 2001-12-04 Sun Microsystems, Inc. Load balancing in a network environment
US6763519B1 (en) * 1999-05-05 2004-07-13 Sychron Inc. Multiprogrammed multiprocessor system with lobally controlled communication and signature controlled scheduling
US6665701B1 (en) * 1999-08-03 2003-12-16 Worldcom, Inc. Method and system for contention controlled data exchange in a distributed network-based resource allocation
US6779016B1 (en) 1999-08-23 2004-08-17 Terraspring, Inc. Extensible computing system
US6578068B1 (en) * 1999-08-31 2003-06-10 Accenture Llp Load balancer in environment services patterns
JP2001117887A (ja) 1999-10-14 2001-04-27 Nec Corp 分散型アプリケーションサーバシステム,サービス方法および記録媒体
US6976258B1 (en) 1999-11-30 2005-12-13 Ensim Corporation Providing quality of service guarantees to virtual hosts
EP1117034B1 (en) 2000-01-12 2003-05-14 Fileants AG Method and system for building up an online service platform and computer program product
US6711607B1 (en) * 2000-02-04 2004-03-23 Ensim Corporation Dynamic scheduling of task streams in a multiple-resource system to ensure task stream quality of service
JP2001319153A (ja) 2000-05-02 2001-11-16 Fujitsu Ltd 操作単位課金システム
JP3666365B2 (ja) 2000-06-15 2005-06-29 日本電気株式会社 オンライン時間帯予約システムおよびオンライン時間帯予約方法
US6868539B1 (en) * 2000-06-28 2005-03-15 Microsoft Corp. System and method providing single application image
NL1015579C1 (nl) 2000-06-30 2002-01-02 Thales Nederland Bv Werkwijze voor het automatisch verdelen van programmataken over een verzameling processors.
JP4292693B2 (ja) * 2000-07-07 2009-07-08 株式会社日立製作所 計算機資源分割装置および資源分割方法
US7596784B2 (en) * 2000-09-12 2009-09-29 Symantec Operating Corporation Method system and apparatus for providing pay-per-use distributed computing resources
WO2002089014A1 (en) * 2001-04-26 2002-11-07 Creekpath Systems, Inc. A system for global and local data resource management for service guarantees

Also Published As

Publication number Publication date
JP4527976B2 (ja) 2010-08-18
AT366439T (de) 2007-07-15
EP1412857B1 (en) 2007-07-04
JP2004538573A (ja) 2004-12-24
US20030028642A1 (en) 2003-02-06
WO2003014928A2 (en) 2003-02-20
US7174379B2 (en) 2007-02-06
KR20040019033A (ko) 2004-03-04
DE60221019T2 (de) 2008-03-06
DE60221019D1 (de) 2007-08-16
EP1412857A2 (en) 2004-04-28
WO2003014928A3 (en) 2003-11-27

Similar Documents

Publication Publication Date Title
Van den Bossche et al. Online cost-efficient scheduling of deadline-constrained workloads on hybrid clouds
US8661120B2 (en) Methods and systems for dynamically managing requests for computing capacity
US8811595B2 (en) Systems and methods for distributing remote technical support via a centralized service
US9967327B2 (en) Method and apparatus for clearing cloud compute demand
US8046767B2 (en) Systems and methods for providing capacity management of resource pools for servicing workloads
US7664847B2 (en) Managing workload by service
Xu et al. Dynamic cloud pricing for revenue maximization
CN101167054B (zh) 用于在多个数据中心之间选择性卸载工作负荷的方法和装置
US9264376B2 (en) Reallocating resource capacity among resource pools in a cloud computing environment
US7085837B2 (en) Dynamic resource allocation using known future benefits
US8862720B2 (en) Flexible cloud management including external clouds
CA2786611C (en) Managing private use of program execution capacity
US8140523B2 (en) Decision based system for managing distributed resources and modeling the global optimization problem
US5937388A (en) System and method for performing scalable distribution of process flow activities in a distributed workflow management system
US7571120B2 (en) Computer implemented method for estimating future grid job costs by classifying grid jobs and storing results of processing grid job microcosms
Sotomayor et al. Virtual infrastructure management in private and hybrid clouds
JP3989443B2 (ja) ウェブ・ファームを制御する方法およびウェブ・ファーム
JP3879471B2 (ja) 計算機資源割当方法
US8249904B1 (en) Managing use of program execution capacity
KR101096000B1 (ko) 통신 서비스 및/또는 네트워크 관리를 위한 플랫폼내자원관리방법, 이에 따른 플랫폼 및 컴퓨터 프로그램 제품
EP1866767B1 (en) Automatic workload transfer to an on-demand center
US20060129518A1 (en) Optimization of aspects of information technology structures
US10241812B2 (en) Assignment of resources in virtual machine pools
US7222345B2 (en) Resource sharing with sliding constraints
US7660731B2 (en) Method and apparatus for technology resource management

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20110302

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee