KR102409347B1 - 정책 기반 자원 관리 및 할당 시스템 - Google Patents

정책 기반 자원 관리 및 할당 시스템 Download PDF

Info

Publication number
KR102409347B1
KR102409347B1 KR1020177006220A KR20177006220A KR102409347B1 KR 102409347 B1 KR102409347 B1 KR 102409347B1 KR 1020177006220 A KR1020177006220 A KR 1020177006220A KR 20177006220 A KR20177006220 A KR 20177006220A KR 102409347 B1 KR102409347 B1 KR 102409347B1
Authority
KR
South Korea
Prior art keywords
resource
order
resources
demand
user
Prior art date
Application number
KR1020177006220A
Other languages
English (en)
Other versions
KR20170042638A (ko
Inventor
비노드 파시쿠란가라 자코브
고팔 키르수르
알빈 아브라함 자코브
무하마드 리야스 바트탁칸
키란 말파티 라빈드라이아햐
니르군나 코타
Original Assignee
오라클 인터내셔날 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 오라클 인터내셔날 코포레이션 filed Critical 오라클 인터내셔날 코포레이션
Priority to KR1020227019483A priority Critical patent/KR102687564B1/ko
Priority claimed from PCT/US2015/044216 external-priority patent/WO2016022925A2/en
Publication of KR20170042638A publication Critical patent/KR20170042638A/ko
Application granted granted Critical
Publication of KR102409347B1 publication Critical patent/KR102409347B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/82Miscellaneous aspects
    • H04L47/828Allocation of resources per group of connections, e.g. per group of users
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/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/5033Allocation 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 data affinity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/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
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/83Admission control; Resource allocation based on usage prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 개시는 전반적으로 구성 가능한 컴퓨팅 자원들의 관리 및 프로비저닝을 향상시키는 것에 관한 것이다. 자원 정책들에 기초하여 구성가능한 컴퓨팅 자원들 (예를 들어, 네트워크들, 네트워크 대역폭, 서버들, POD들, 프로세싱, 메모리, 스토리지, 애플리케이션들, 가상 기계들, 서비스들, 등)을 관리 및 프로비저닝하기 위한 특정 기술들이 본 출원에 개시된다. 이들 기술들 중 하나는 수요 기반 정책들 및/또는 출자 기반 정책들에 기초하여 어느 정도까지 구성 가능한 컴퓨팅 자원들의 프로비저닝을 제어하는 능력을 유저에게 제공한다.

Description

정책 기반 자원 관리 및 할당 시스템 {POLICY-BASED RESOURCE MANAGEMENT AND ALLOCATION SYSTEM}
우선권 주장
본 출원은 "출자 정책 기반 자원 관리 및 할당 시스템(CONTRIBUTION POLICY-BASED RESOURCE MANAGEMENT AND ALLOCATION SYSTEM)" 이란 제목으로 2015년 8월 6일 출원된 U.S. 정규출원 No. 14/819,827, 및 "수요 정책 기반 자원 관리 및 할당 시스템(DEMAND POLICY-BASED RESOURCE MANAGEMENT AND ALLOCATION SYSTEM)" 이란 제목으로 2015년 8월 6일에 출원된 U.S. 정규출원 No. 14/819,815의 우선권 및 이익을 주장하고, 이들 둘 모두는 "자원 관리 및 할당 시스템(RESOURCE MANAGEMENT AND ALLOCATION SYSTEM)" 이란 제목으로 2014년 8월 8일에 출원된 U.S. 가출원 No. 62/035,370의 우선권을 주장한다. 각각의 상기-식별된 출원들의 전체 내용은 다목적을 위해 참조로서 본 출원에 통합된다.
본 개시는 전반적으로 컴퓨터 시스템들 및 소프트웨어에 관한 것으로, 보다 상세하게는, 분산 컴퓨팅 환경내 서비스들의 프로비전을 자동화하고 그리고 용이하게 하기 위한 기술들에 관한 것이다.
클라우드 컴퓨팅 환경과 같은 분산 컴퓨팅 환경은 서비스의 제공자와의 상호작용 또는 최소 관리 노력으로 빠르게 프로비저닝되고 배포될 수 있는 구성 가능한 컴퓨팅 자원들 (예를 들어, 네트워크들, 네트워크 대역폭, 서버들, POD들, 프로세싱, 메모리, 스토리지, 애플리케이션들, 가상 기계들, 서비스들, 등)의 공유 풀(pool)에 편리한, 주문형(on-demand) 네트워크 액세스를 가능하게 하기 위한 서비스 전달의 모델이다. 제공자는 분산 컴퓨팅 환경을 통하여 다양한 서비스들을 제공할 수 있다. 이들 서비스들은 SaaS(Software as a Service) 카테고리, PaaS(Platform as a Service) 카테고리, IaaS(Infrastructure as a Service) 카테고리, 또는 하이브리드 서비스들을 포함하는 서비스들의 다른 카테고리들하에서 제공되는 하나 이상의 서비스들을 포함할 수 있다.
주문 또는 서비스 청약을 통하여 유저 (예를 들어, 고객 또는 클라이언트)는 분산 컴퓨팅 환경에 의해 제공되는 하나 이상의 서비스들을 주문할 수 있다. 분산 컴퓨팅 환경은 그런다음 유저 청약 주문에 요청된 서비스들을 제공하기 위해 프로세싱 (예를 들어, 프로비저닝(provisioning), 관리(managing), 및 추적(tracking))을 수행한다. 전형적으로, 제공자 (예를 들어, 클라우드 서비스 제공자)가 하나 이상의 서비스들을 청약하는 서비스 청약 또는 주문을 수신한 때, 분산 컴퓨팅 환경은 요청한 유저에게 하나 이상의 서비스들을 위해 구성 가능한 컴퓨팅 자원들을 할당하거나 또는 프로비저닝한다. 그러나, 요청한 유저는 구성 가능한 컴퓨팅 자원들이 어떻게 프로비저닝되거나 또는 할당되는지에 관한 제어를 가지지 않고 분산 컴퓨팅 환경은 구성 가능한 컴퓨팅 자원들에 대한 요청한 유저로부터의 수요를 예측하기 위해 구성 가능한 컴퓨팅 자원들을 관리하지도 않는다. 이들 난제들은 자동화, 성능, 및 이용가능성 쟁점들을 제시할 수 있고, 이는 구성 가능한 컴퓨팅 자원들을 프로비저닝하거나 또는 할당하는 현존 분산 컴퓨팅 환경들에 의해 쉽게 다루어질 수 없다.
본 개시는 전반적으로 구성 가능한 컴퓨팅 자원들의 관리 및 프로비저닝을 향상시키는 것에 관한 것이다. 인프라스트럭처 셋 업 시간을 줄이거나 또는 없애고, 반복가능한 복잡한 통합들을 자동화하고, 인간의 개입을 피하고, 및 구성 가능한 컴퓨팅 자원들의 더 나은 관리 및 이용가능성을 제공하기 위해 자원 정책들에 기초하여 구성 가능한 컴퓨팅 자원들을 관리 및 프로비저닝하기 위한 어떤 기술들이 본 출원에 개시된다.
일부 실시예들에서, 본 발명은 상기 자원 정책들에 기초하여 어느 정도까지 상기 구성 가능한 컴퓨팅 자원들 (예를 들어, 네트워크들, 네트워크 대역폭, 서버들, POD들, 프로세싱, 메모리, 스토리지, 애플리케이션들, 가상 기계들, 서비스들, 등)의 프로비저닝을 제어하는 능력을 유저에게 제공한다. 예를 들어, 상기 유저는 상기 자원들이 프로비저닝되는 곳의 지리적 위치를 지정하는 능력을 가질 수 있고; 만약 상기 서비스가 멀티-테넌트(multi-tenant) 서비스 (예를 들어, 상기 동일한 자원이 두 명의 별개의 유저들에 의해 공유될 수 있다)이면, 상기 유저가 상기 자원을 공유하기를 원하지 않은 것을 표시하는 능력을 상기 유저는 가질 수 있고; 만약 상기 서비스가 멀티-테넌트 서비스이면, 상기 유저는 특정 테넌트를 향한 친화성을 표시하는 능력을 가질 수 있고 (예를 들어, 상기 유저는 그들이 테넌트 X와 자원을 공유하기를 원하는 것을 표시하는 능력을 가질 수 있다), 또는 그에 반해서, 상기 유저는 그들이 특정 테넌트와 공유하는 것을 원하지 않는 것을 표시하는 능력을 가질 수 있고; 상기 유저는 요청가능한 구성 가능한 컴퓨팅 자원들에 대한 대가로 상기 분산 컴퓨팅 환경의 자원 풀로 하나 이상의 구성 가능한 컴퓨팅 자원들을 출자하는 능력을 가질 수 있고; 상기 유저는 서비스들을 위해 별개의 POD 프로비저닝 및 서비스 프로비저닝을 제어하는 능력을 가질 수 있다; 등.
일부 실시예들에서, 본 발명은 상기 자원 정책들에 기초하여 구성 가능한 컴퓨팅 자원들 및 구성 가능한 컴퓨팅 자원들의 그룹들 또는 셋 업들을 관리하고, 예측하고 및 미리 생성하는 능력을 상기 분산 컴퓨팅 환경에 제공한다. 예를 들어, 상기 분산 컴퓨팅 환경은 상기 자원 정책들 및 상기 구성 가능한 컴퓨팅 자원을 포함하는 서비스 요청들의 현재 비율에 기초하여 자동으로 많은 구성 가능한 컴퓨팅 자원들을 미리 생성하는(pre-create) 능력을 가질 수 있고; 상기 분산 컴퓨팅 환경은 상기 자원 정책들 및 새로운 서비스 또는 제품 배포의 진행에 기초하여 자동으로 많은 구성 가능한 컴퓨팅 자원들을 미리 생성하는 능력을 가질 수 있고; 상기 분산 컴퓨팅 환경은 함께 사용되는 자원들의 세트들 또는 그룹들에 대한 수요의 비율을 모니터링하고 상기 자원 정책들 및 상기 구성 가능한 컴퓨팅 자원들의 수요에 기초하여 식별된 구성 가능한 컴퓨팅 자원들의 세트들 또는 그룹들을 미리 생성하거나 또는 주문형으로 생성하는(create-on-demand) 능력을 가질 수 있고; 상기 분산 컴퓨팅 환경은 유저가 상기 분산 컴퓨팅 환경에 출자할 수 있거나 또는 출자한 많은 구성 가능한 컴퓨팅 자원들 및 상기 자원 정책들 및 상기 구성 가능한 컴퓨팅 자원들에 대한 수요에 기초하여 상기 출자된 구성 가능한 컴퓨팅 자원들에 대가로 상기 유저에게 제공될 수 있거나 또는 제공된 많은 구성 가능한 컴퓨팅 자원들을 제어하는 능력을 가질 수 있다; 등.
적어도 하나의 실시예에서, 방법은 컴퓨팅 시스템에 의해 수행되고, 상기 방법은 서비스를 위해 유저에 의한 주문을 수신하는 단계를 포함한다. 상기 서비스는 부분적으로 자원의 할당에 의해 가능하게 된다. 상기 방법은 요청자, 자원, 및 요청 시간을 포함하는 요청 데이터를 식별하기 위해 상기 주문을 파싱하는 단계(parsing)를 더 포함할 수 있다. 상기 방법은 상기 요청 데이터를 총합 데이터 구조(aggregate data structure)에 추가하는 단계로 더 포함할 수 있고, 상기 총합 데이터 구조는 앞서 파싱된 주문들에 대한 요청 데이터의 총합체를 포함한다. 상기 방법은 상기 총합 데이터 구조에 기초하여 상기 자원에 대한 실시간 수요를 나타내는 값을 결정하는 단계를 더 포함할 수 있다. 상기 방법은 상기 앞서 파싱된 주문들로부터의 상기 적어도 하나의 다른 주문과 상기 주문을 상관시키는 단계(correlating)로서, 상기 주문과 적어도 하나의 다른 주문간에 동일한 상기 요청 데이터의 적어도 하나의 컴포넌트에 기반되는, 상기 상관시키는 단계, 및 상기 적어도 하나의 다른 주문과 상기 주문의 상관에 기초하여 적어도 하나의 자원 세트(resource set)를 식별하는 단계를 추가적으로 포함할 수 있고, 상기 적어도 하나의 자원 세트는 상기 주문으로부터의 자원 및 상기 적어도 하나의 다른 주문으로부터 요청된 다른 자원을 포함한다.
선택적으로, 상기 방법은 결정된, 상기 자원에 대한 상기 실시간 수요를 나타내는 값에 기초하여 상기 자원의 할당을 위한 하나 이상의 수요 정책들을 생성하거나 또는 업데이트하는 단계, 상기 하나 이상의 수요 정책들에 기초하여 상기 자원을 미리-생성하는 단계(pre-creating), 및 상기 하나 이상의 수요 정책들에 기초하여 한 명 이상의 유저들에게 상기 미리 생성된 자원을 할당하는 단계를 더 포함할 수 있다. 상기 자원에 대한 상기 실시간 수요를 나타내는 값은 상기 앞서 파싱된 주문들에 대한 요청 데이터의 총합체로부터 획득된 상기 자원에 대한 현재 요청 볼륨(current request volume)을 이용하여 결정된다.
적어도 하나의 실시예에서, 비-일시적 기계 판독가능한 스토리지 매체상에 저장된 명령들이 하나 이상의 프로세서들에 의해 실행될 때 상기 하나 이상의 프로세서들로 하여금 방법을 수행하게 하는 상기 명령들을 포함하는 상기 비-일시적 기계 판독가능한 스토리지 매체가 제공되고, 상기 방법은 요청 데이터의 총합체에 기초하여 자원 풀 내 자원에 대한 실시간 수요를 나타내는 값을 결정하는 단계를 포함한다. 상기 요청 데이터의 총합체는 서비스를 가능하게 하는 적어도 일부로서 자원을 포함했던 서비스들을 위한 임의 개수의 앞서 수신된 주문들로부터 획득된다. 상기 하나 이상의 프로세서들에 의해 수행되는 상기 방법은 결정된, 상기 자원에 대한 상기 실시간 수요를 나타내는 값에 기초하여 상기 자원의 할당을 위한 하나 이상의 수요 정책들을 생성하거나 또는 업데이트하는 단계, 상기 하나 이상의 수요 정책들에 기초하여 상기 자원을 미리-생성하는 단계(pre-creating), 및 상기 하나 이상의 수요 정책들에 기초하여 한 명 이상의 유저들에게 상기 미리 생성된 자원을 할당하는 단계를 더 포함할 수 있다.
선택적으로, 상기 실시간 수요를 계산하는 단계는 상기 앞서 수신된 주문들에 대한 요청 데이터의 총합체를 이용하여 특정 시간 기간 내에 상기 자원을 포함하는 주문들의 비율을 결정하는 단계를 포함하는 상기 실시간 수요를 나타내는 값을 결정하는 단계를 포함한다.
적어도 하나의 실시예에서, 하나 이상의 프로세서들 및 비-일시적 기계 판독가능한 스토리지 매체를 포함하는 시스템이 제공된다. 상기 시스템은 요청 데이터의 총합체에 기초하여 자원 풀 내 자원에 대한 실시간 수요를 나타내는 값을 결정하도록 구성된 프로그램 명령들을 더 포함할 수 있다. 상기 요청 데이터의 총합체는 서비스들을 가능하게 하는 적어도 일부로서 자원을 포함했던 서비스들을 위한 임의 개수의 앞서 수신된 주문들로부터 획득된다. 상기 프로그램 명령들은 상기 앞서 수신된 주문들로부터의 적어도 하나의 다른 주문과 서비스를 위한 주문을 상관시키되, 상기 주문과 적어도 하나의 다른 주문간에 동일한 상기 요청 데이터의 적어도 하나의 컴포넌트에 기반되고, 및 적어도 하나의 다른 주문과 주문의 상관에 기초하여 적어도 하나의 자원 세트를 식별하도록 더 구성될 수 있다. 상기 적어도 하나의 자원 세트는 주문으로부터의 자원 및 적어도 하나의 다른 주문으로부터 요청된 다른 자원을 포함한다. 상기 프로그램 명령들은 상기 자원 풀 내 상기 자원의 사용을 추적하고, 및 (i) 상기 결정된, 상기 자원에 대한 상기 실시간 수요를 나타내는 값, (ii) 상기 자원을 포함하는 상기 적어도 하나의 자원 세트, 및 (iii) 상기 자원에 대한 추적된 사용 중 적어도 하나에 기초하여 자원의 할당을 위한 하나 이상의 수요 정책들을 생성하거나 또는 업데이트하도록 더 구성될 수 있다. 상기 프로그램 명령들은 상기 하나 이상의 수요 정책들에 기초하여 (i) 상기 자원을 미리 생성, (ii) 상기 자원을 상기 자원 풀에 추가, (iii) 상기 자원을 클리닝하는 것 중 적어도 하나를 위해 더 구성될 수 있다. 상기 프로그램 명령들은 상기 하나 이상의 프로세서들에 의한 실행을 위해 상기 비-일시적 기계 판독가능한 스토리지 매체상에 저장된다.
선택적으로, 상기 시스템은 상기 하나 이상의 수요 정책들에 기초하여 한 명 이상의 유저들에게 상기 자원을 할당하는 프로그램 명령들을 더 포함할 수 있다.
적어도 하나의 실시예에서, 방법은 컴퓨팅 시스템에 의해 수행되고, 상기 방법은 유저로부터 자원 입찰(resource submission)을 수신하는 단계를 포함한다. 상기 자원 입찰은 출자가능한 자원(contributable resource)을 식별한다. 상기 방법은 상기 자원 입찰에 대한 출자 정책을 식별하는 단계를 더 포함할 수 있다. 상기 출자 정책은 상기 출자가능한 자원의 자원 유형과 요청가능한 자원들의 하나 이상의 자원 유형들 사이의 매핑에 기초하여 식별된다. 상기 방법은 상기 자원 입찰에 대한 상기 식별된 출자 정책에 기초하여, 상기 요청가능한 자원들의 하나 이상의 자원 유형들을 상기 유저와 관련된 클라이언트 컴퓨팅 시스템으로 발송하는 단계를 더 포함할 수 있다. 상기 방법은 상기 클라이언트 컴퓨팅 시스템으로부터, 상기 요청가능한 자원들의 하나 이상의 자원 유형들 중 임의의 자원 유형의 상기 유저에 의한 선택을 나타내는 정보를 수신하는 단계를 더 포함할 수 있다.
선택적으로, 상기 방법은 서비스를 위해 상기 유저에 의한 주문을 수신하는 단계를 더 포함할 수 있다. 상기 서비스는 부분적으로 자원의 할당에 의해 가능하게 된다. 상기 방법은 자원의 유형이 유저에 의해 선택된 자원 유형에 일치하는지 결정하는 단계, 출자가능한 자원에 대한 대가로 서비스를 위한 자원에 대한 액세스를 가능하게 하는 단계를 더 포함할 수 있다.
적어도 하나의 실시예에서, 비-일시적 기계 판독가능한 스토리지 매체상에 저장된 명령들이 하나 이상의 프로세서들에 의해 실행될 때 상기 하나 이상의 프로세서들로 하여금 방법을 수행하게 하는 상기 명령들을 포함하는 상기 비-일시적 기계 판독가능한 스토리지 매체가 제공되고, 상기 방법은 유저로부터 자원 입찰(resource submission)을 수신하는 단계로서, 상기 자원 입찰은 출자가능한 자원(contributable resource)을 식별하는, 상기 수신하는 단계, 및 상기 자원 입찰에 기초하여, 상기 출자가능한 자원의 자원 유형을 결정하는 단계를 포함한다. 상기 하나 이상의 프로세서들에 의해 수행되는 상기 방법은 상기 자원 입찰에 대한 출자 정책을 식별하는 단계를 더 포함할 수 있다. 상기 출자 정책을 식별하는 단계는 자원 유형이 출자 정책에 요청가능한 자원들의 하나 이상의 자원 유형들에 매핑시킨 출자가능한 자원들의 하나 이상의 자원 유형들에 일치하는지를 결정하는 단계를 포함한다. 상기 하나 이상의 프로세서들에 의해 수행되는 상기 방법은 상기 자원 입찰에 대한 상기 식별된 출자 정책에 기초하여, 상기 요청가능한 자원들의 하나 이상의 자원 유형들을 상기 유저와 관련된 클라이언트 컴퓨팅 시스템으로 발송하는 단계를 더 포함할 수 있다. 상기 하나 이상의 프로세서들에 의해 수행되는 상기 방법은 상기 클라이언트 컴퓨팅 시스템으로부터, 상기 요청가능한 자원들의 하나 이상의 자원 유형들 중 임의의 자원 유형의 상기 유저에 의한 선택을 나타내는 정보를 수신하는 단계를 더 포함할 수 있다.
선택적으로, 상기 하나 이상의 프로세서들에 의해 수행되는 상기 방법은 상기 출자가능한 자원에 대한 대가로 상기 유저에 의해 선택된 자원 유형에 일치하는 유형을 갖는 자원을 할당하는 단계를 더 포함할 수 있다. 상기 할당하는 단계는 상기 유저에 서비스하기 위해 상기 자원을 구성하는 단계를 포함한다.
적어도 하나의 실시예에서, 하나 이상의 프로세서들 및 비-일시적 기계 판독가능한 스토리지 매체를 포함하는 시스템이 제공된다. 상기 시스템은 서비스를 위해 유저로부터 주문을 수신하도록 구성된 프로그램 명령들을 더 포함할 수 있고, 상기 주문은 출자가능한 자원 및 요청가능한 자원을 식별한다. 상기 출자가능한 자원은 요청가능한 자원에 대한 대가로 자원 풀에 제공될 것이다. 상기 프로그램 명령들은 출자 정책에 기초하여 자원 입찰을 수락하도록 더 구성될 수 있다. 상기 출자 정책은 출자가능한 자원의 유형 중 제 1 자원 유형과 요청가능한 자원의 유형 중 제 2 자원 유형사이의 매핑(mapping)을 정의한다. 추가적으로, 상기 프로그램 명령들은 상기 출자가능한 자원에 대한 액세스 및 제어를 제공하는 액세스 자격들을 수신하고, 분산 시스템의 한 명 이상의 유저들에게 서비스하기 위해 상기 출자가능한 자원의 가용 가능성(availability)을 표시하도록 상기 자원 풀을 업데이트하고, 및 상기 요청가능한 자원을 상기 유저에게 할당하도록 더 구성될 수 있다. 상기 프로그램 명령들은 상기 하나 이상의 프로세서들에 의한 실행을 위해 상기 비-일시적 기계 판독가능한 스토리지 매체상에 저장된다.
선택적으로, 상기 출자가능한 자원은 상기 유저에 의해 관리되고, 상기 요청가능한 자원은 다른 유저에 의해 관리된다. 대안적으로, 상기 출자가능한 자원은 상기 유저에 의해 관리되고, 상기 요청가능한 자원은 상기 분산 시스템의 자원 관리기에 의해 관리되는 상기 자원 풀의 컴포넌트이다.
앞에서 언급한 것들은, 다른 특징들 및 실시예들과 함께 상기 이하의 명세서, 청구항들, 및 첨부한 도면들에 언급한 것에 기초하여 더 명확해질 것이다.
도 1은 본 발명의 일 실시예에 따른 클라우드 인프라스트럭처 시스템의 로직 뷰이다.
도 2는 본 발명의 일 실시예에 따른 정책 기반 자원 할당 및 관리 시스템의 개략도를 도시한다.
도 3은 본 발명의 일 실시예에 따른 정책 기반 자원 할당 및 관리의 배치(placement)의 일 예를 도시한다.
도 4는 본 발명의 일 실시예에 따른 클라이언트 디바이스 및 자원 관리기의 보다 상세한 고차원 다이어그램을 도시한다.
도 5는 본 발명의 일 실시예에 따른 출자 정책 기반 자원 할당 및 관리 시스템의 개략도를 도시한다.
도 6은 본 발명의 일 실시예에 따른 클라이언트 디바이스 및 자원 관리기의 보다 상세한 고차원 다이어그램을 도시한다.
도 7은 본 발명의 일 실시예에 따른 출자 정책 기반 자원 할당을 위해 수행되는 프로세싱을 묘사하는 간략화된 흐름도를 도시한다.
도 8은 본 발명의 일 실시예에 따른 출자 정책 기반 자원 할당을 위해 수행되는 프로세싱을 묘사하는 다른 간략화된 흐름도를 도시한다.
도 9는 본 발명의 일 실시예에 따른 수요 정책 기반 자원 할당을 위해 수행되는 프로세싱을 묘사하는 간략화된 흐름도를 도시한다.
도 10은 본 발명의 일 실시예에 따른 수요 정책 기반 자원 할당을 위해 수행되는 프로세싱을 묘사하는 다른 간략화된 흐름도를 도시한다.
도 11는 본 발명의 일 실시예를 통합할 수 있는 네트워크 환경의 간략화된 고차원 다이어그램을 도시한다.
도 12는 본 발명의 교리들을 통합할 수 있는 다른 실시예를 도시한다.
도 13은 실시예를 구현하기 위한 분산 시스템의 개략도를 도시한다.
도 14는 본 발명의 일 실시예에 따른 서비스들이 클라우드 서비스들로서 제공될 수 있는 시스템 환경의 하나 이상의 컴포넌트들의 간략화된 블럭도이다.
도 15는 본 발명의 실시예를 구현하기 위해 사용될 수 있는 예시적인 컴퓨터 시스템을 예시한다.
설명의 목적을 위한 이하의 상세한 설명에서, 본 발명의 실시예들의 철저한 이해를 제공하기 위해 특정 세부사항들이 개시된다. 그러나, 다양한 실시예들이 이들 특정 세부사항들 없이 실행될 수 있다는 것이 명백할 것이다. 도면들 및 상세한 설명은 제한적인 것으로 의도되지 않는다.
본 개시는 전반적으로 자원 정책들에 기초하여 구성 가능한 컴퓨팅 자원들을 관리 및 할당하는 것에 관한 것이다. 본 개시의 목적들을 위하여, 구성 가능한 컴퓨팅 자원들의 관리 및 할당은 클라우드 컴퓨팅 환경과 같은 분산 컴퓨팅 환경의 서비스 제공자에 의해 제공되는 하나 이상의 서비스들을 청약하는 하나 이상의 청약 주문들에 적어도 부분적으로 응답하여 수행되는 것으로 가정된다. 일부 실시예들은 본 출원에서 SaaS, PaaS, 및 IaaS를 포함하는 서비스 모델들하에서 제공된 구성 가능한 컴퓨팅 자원들을 관리 및 할당하는 것에 대하여 개시되었지만, 이것은 제한적인 것으로 의도되지 않는다. SaaS, PaaS, 및 IaaS에 추가하여, 본 출원에 개시된 교리들은 다른 서비스 모델들에 또한 적용될 수 있다. 예를 들어, 교리들은 구성 가능한 컴퓨팅 자원들 (예를 들어, 네트워크들, 네트워크 대역폭, 서버들, POD들, 프로세싱, 메모리, 스토리지, 애플리케이션들, 가상 기계들, 서비스들, 등)의 공유된 풀에 편리한, 주문형(on-demand) 네트워크 액세스를 가능하게 하기 위한 서비스 전달의 임의의 모델에 적용 가능하다.
어떤 실시예들에서, 클라우드 컴퓨팅 환경과 같은 분산 컴퓨팅 환경은 셀프-서비스, 청약-기반, 탄력적으로 확장가능한, 신뢰할 수 있는, 고 가용가능한, 및 안전한 방식으로 유저에게 전달되는 애플리케이션들, 미들웨어 및 데이터베이스 서비스 공급(offering)의 스위트(suite)를 포함할 수 있다. 클라우드 컴퓨팅 환경은 클라우드 컴퓨팅 환경내 서비스들 및 자원들에 대한 유저 청약 프로비저닝, 관리 및 추적, 클라우드 컴퓨팅 환경내 서비스들을 사용하는 유저들에게 예측가능한 운용 비용 제공, 클라우드 컴퓨팅 환경내 강건한 유저의 데이터의 보호 및 아이덴티티(identity) 도메인 분리 제공, 유저들에게 클라우드 컴퓨팅 환경 디자인의 투명한 아키텍처 및 제어 제공, 데이터 개인정보(privacy) 표준들 및 규정들에 따른 보증된 데이터 보호 및 준수를 유저들에게 제공, 클라우드 컴퓨팅 환경내 서비스들을 구축 및 전개(deploy)하기 위한 통합 개발 경험을 유저들에게 제공 및 클라우드 컴퓨팅 환경내 비즈니스 소프트웨어, 미들웨어(middleware), 데이터베이스와 인프라스트럭처 서비스들 사이의 끊김 없는(seamless) 통합을 유저들에게 제공을 포함하는 많은 성능들을 제공할 수 있지만, 이에 한정되는 것은 아니다.
어떤 실시예들에서, 클라우드 인프라스트럭처 시스템에 의해 제공되는 서비스들은 온라인 데이터 스토리지 및 백업 솔루션들, 웹 기반 이메일 서비스들, 호스트된 오프스 스위트들(office suites) 및 문서 협업 서비스들, 데이터베이스 프로세싱, 관리 기술 지원 서비스들 및 유사한 것과 같이, 수요에 따른 클라우드 컴퓨팅 환경의 유저들에게 가용 가능하게 되는 다수의 서비스들을 포함할 수 있다. 클라우드 컴퓨팅 환경에 의해 제공되는 서비스들은 그것의 유저들의 요구들을 충족시키기 위해 동적으로 확장할 수 있다. 클라우드 컴퓨팅 환경에 의해 제공되는 서비스의 특정 인스턴스화(instantiation)는 서비스 인스턴스(service instance)로서 본 출원에서 지칭된다. 일반적으로, 클라우드 서비스 제공자의 시스템으로부터 인터넷과 같은 통신 네트워크를 통하여 유저에게 가용 가능하게 되는 임의의 서비스는 클라우드 서비스로 지칭된다. 전형적으로, 공공형 클라우드 환경(public cloud environment)에서, 클라우드 서비스 제공자의 시스템을 구성하는 서버들 및 시스템들은 유저 자신의 사내(on-premises) 서버들 및 시스템들과 다르다. 예를 들어, 클라우드 서비스 제공자의 시스템은 애플리케이션을 호스트 할 수 있고 유저는 인터넷과 같은 통신 네트워크를 통하여, 애플리케이션을 수요에 따라, 주문 및 사용할 수 있다.
컴퓨터 네트워크 클라우드 인프라스트럭처(infrastructure)내 서비스는 스토리지(storage), 호스트되는 데이터베이스, 호스트되는 웹 서버, 소프트웨어 애플리케이션, 또는 유저에게 클라우드 벤더에 의해 제공되는 다른 서비스, 또는 다른 식으로 관련 기술 분야에서 알려진 것에 대한 보호된 컴퓨터 네트워크 액세스를 포함한다. 예를 들어, 서비스는 인터넷을 통하여 클라우드상의 원격 스토리지에 대한 패스워드-보호된 액세스를 포함할 수 있다. 다른 예로서, 서비스는 네트워크 개발자에 의한 개인적 사용을 위한 웹 서비스기반으로 호스트되는 관계형 데이터베이스 및 스크립트-언어 미들웨어 엔진을 포함할 수 있다. 다른 예로서, 서비스는 클라우드 벤더의 웹 사이트 상에서 호스트되는 이메일 소프트웨어 애플리케이션에 대한 액세스를 포함할 수 있다.
도 1 은 본 발명의 일부 실시예들에 따른 클라우드 컴퓨팅 환경 (10)의 로직 뷰이다. 클라우드 컴퓨팅 환경 (10)은 클라우드 또는 네트워크화된 환경을 통하여 다양한 서비스들을 제공할 수 있다. 이들 서비스들은 SaaS, PaaS, IaaS, 또는 하이브리드 서비스들을 포함하는 서비스들의 다른 카테고리들하에서 제공되는 하나 이상의 서비스들을 포함할 수 있다. 청약 주문(subscription order)을 통하여 유저는 클라우드 컴퓨팅 환경(10)에 의해 제공되는 하나 이상의 서비스들을 주문할 수 있다. 클라우드 컴퓨팅 환경 (10)은 그런다음 유저의 청약 주문내 서비스들을 제공하기 위해 프로세싱을 수행한다.
클라우드 컴퓨팅 환경 (10)은 상이한 전개 모델(deployment model)들을 통하여 클라우드 서비스들을 제공할 수 있다. 예를 들어, 서비스들은 클라우드 컴퓨팅 환경 (10)이 클라우드 서비스들 (예를 들어, Oracle에 의해 소유되는)을 판매하는 조직에 의해 소유되고, 서비스들이 일반 공중 또는 다른 산업 기업들에게 가용가능하게 되는 공공형 클라우드 모델하에서 제공될 수 있다. 다른 예로서, 서비스들은 클라우드 컴퓨팅 환경 (10)이 오로지 단일 조직을 위해서만 운용되고 그리고 조직내 하나 이상의 엔티티들에 대한 서비스들을 제공할 수 있는 사설 클라우드 모델(private cloud model)하에서 제공될 수 있다. 클라우드 서비스들은 클라우드 인프라스트럭처 시스템 (100) 및 클라우드 컴퓨팅 환경(10)에 의해 제공되는 서비스들이 관련 단체내 몇몇의 조직들에 의해 공유되는 커뮤니티 클라우드 모델(community cloud model)하에서 또한 제공될 수 있다. 클라우드 서비스들은 두개 이상의 상이한 모델들의 조합인 하이브리드 클라우드 모델하에서 또한 제공될 수 있다.
도 1 에 도시된 바와 같이, 클라우드 컴퓨팅 환경 (10)은 함께 작동하고, 클라우드 컴퓨팅 환경(10)에 의해 제공되는 서비스들의 프로비전을 가능하게 하는 다수의 컴포넌트들을 포함할 수 있다. 도 1에 예시된 실시예에서, 클라우드 컴퓨팅 환경 (10)은 SaaS 플랫폼 (15), PaaS 플랫폼 (20), IaaS 플랫폼 (25), 인프라스트럭처 자원들 (30), 및 클라우드 관리 기능 (35)을 포함한다. 이들 컴포넌트들은 하드웨어, 또는 소프트웨어, 또는 그것들의 조합들로 구현될 수 있다.
SaaS 플랫폼 (15)은 SaaS 카테고리에 해당하는 클라우드 서비스들을 제공하도록 구성된다. 예를 들어, SaaS 플랫폼 (15)은 통합 개발 및 전개 플랫폼상에서 주문형 애플리케이션들의 스위트를 구축 및 전달하는 성능들을 제공할 수 있다. SaaS 플랫폼 (15)은 SaaS 서비스들을 제공하기 위해 하위(underlying) 소프트웨어 및 인프라스트럭처를 관리 및 제어할 수 있다. SaaS 플랫폼 (15)에 의해 제공되는 서비스들을 이용함으로써, 유저들은 클라우드 컴퓨팅 환경 (10)상에서 실행하는 애플리케이션들을 이용할 수 있다. 유저들이 별개의 라이센스들 및 지원을 구매할 필요없이 유저들은 애플리케이션 서비스들을 획득할 수 있다.
다양하고 상이한 SaaS 서비스들이 제공될 수 있다. 예제들은 제한없이 큰 조직들, 및 유사한 것을 위한 매출 실적 관리, 기업 통합 및 사업 유연성을 위한 솔루션들을 제공하는 서비스들을 포함한다. 일 실시예에서, SaaS 서비스들은 CRM(User Relationship Management) 서비스들 (40) (예를 들어, Oracle 클라우드에 의해 제공되는 퓨전(fusion) CRM 서비스들), HCM(Human Capital Management)/인재 관리 서비스들 (45), 및 유사한 것을 포함할 수 있다. CRM 서비스들 (40)은 유저, 및 다른 사람들에 대한 영업 활동 사이클 관리 및 보고에 관련된 서비스들을 포함할 수 있다. HCM/인재 서비스들 (45)은 유저에게 글로벌 노동인력(workforce) 라이프사이클 관리 및 인재 관리 서비스들을 제공하는 것에 관련된 서비스들을 포함할 수 있다.
다양하고 상이한 PaaS 서비스들이 표준화되고, 공유되고 그리고 탄력적으로 확장가능한 애플리케이션 개발 및 전개 플랫폼에 PaaS 플랫폼 (20)에 의해 제공될 수 있다. PaaS 서비스들의 예제들은 제한 없이 플랫폼에 의해 제공되는 공유 서비스들을 레버리지(leverage)하는 새로운 애플리케이션들을 구축하는 능력 뿐만 아니라 조직들 (예컨대 Oracle)이 공유, 공통 아키텍처상에 현존하는 애플리케이션들을 통합하는 것을 가능하게 하는 서비스들을 포함할 수 있다. PaaS 플랫폼 (20)은 PaaS 서비스들을 제공하기 위해 하위 소프트웨어 및 인프라스트럭처를 관리 및 제어할 수 있다. 유저들이 별개의 라이센스들 및 지원을 구매할 필요 없이 클라우드 컴퓨팅 환경(10)에 의해 제공되는 PaaS 서비스들을 유저들은 획득할 수 있다. PaaS 서비스들의 예제들은 제한 없이 Oracle JCS(Java Cloud Service), Oracle DBCS(Database Cloud Service), 및 다른 것들을 포함한다.
PaaS 플랫폼 (20)에 의해 제공되는 서비스들을 이용함으로써, 유저들은 클라우드 컴퓨팅 환경 (10)에 의해 지원되는 프로그래밍 언어들 및 툴들을 이용할 수 있고 또한 전개된 서비스들을 제어할 수 있다. 일부 실시예들에서, 클라우드 컴퓨팅 환경(10)에 의해 제공되는 PaaS 서비스들은 데이터베이스 클라우드 서비스들 (50), 미들웨어 클라우드 서비스들 (예를 들어, Oracle Fusion Middleware 서비스들) (55) 및 Java 클라우드 서비스들 (60)을 포함할 수 있다. 일 실시예에서, 데이터베이스 클라우드 서비스들 (50)은 데이터베이스 클라우드의 형태로 서비스로서의 데이터베이스를 유저들에게 공급하고 조직들이 데이터베이스 자원들을 모으는 것을 가능하게 하는 공유 서비스 전개 모델들을 지원할 수 있고, 미들웨어 클라우드 서비스들 (55)은 유저들이 다양한 비즈니스 애플리케이션들을 개발 및 전개하도록 플랫폼을 제공하고 Java 클라우드 서비스들 (60)은 유저들이 클라우드 컴퓨팅 환경 (10)내에서 Java 애플리케이션들을 전개하도록 플랫폼을 제공한다. 도 1 에 예시된 SaaS 플랫폼 (15) 및 PaaS 플랫폼 (20)내 컴포넌트들은 단지 예시적인 목적을 위한 것으로 의도되고 본 발명의 실시예들의 범위를 제한하는 것으로 의도되지 않는다. 대안적인 실시예들에서, SaaS 플랫폼 (15) 및 PaaS 플랫폼 (20)은 클라우드 컴퓨팅 환경 (10)의 유저들에게 추가 서비스들을 제공하기 위한 추가 컴포넌트들을 포함할 수 있다.
다양하고 상이한 IaaS 서비스들이 IaaS 플랫폼 (20)에 의해 제공될 수 있다. IaaS 서비스들은 SaaS 플랫폼 및 PaaS 플랫폼에 의해 제공되는 서비스들을 이용하는 유저들을 위해 스토리지, 네트워크들, 및 다른 기본적인 컴퓨팅 자원들과 같은 하위 컴퓨팅 자원들을 관리 및 제어를 가능하게 한다.
어떤 실시예들에서, 클라우드 컴퓨팅 환경 (10)은 클라우드 컴퓨팅 환경 (10)의 유저들에게 다양한 서비스들을 제공하는데 사용되는 자원들을 제공하기 위한 인프라스트럭처 자원들 (30)을 포함한다. 일 실시예에서, 인프라스트럭처 자원들 (30)은 PaaS 플랫폼 및 SaaS 플랫폼에 의해 제공되는 서비스들을 실행시키는 서버들, 스토리지 및 네트워킹 자원들과 같은 하드웨어의 미리 생성되고 최적화된 조합들 (예를 들어, 그룹들 또는 세트들)을 포함한다.
어떤 실시예들에서, 클라우드 관리 기능 (35)은 클라우드 컴퓨팅 환경 (10)내 클라우드 서비스들 (예를 들어, SaaS, PaaS, IaaS 서비스들)의 포괄적인 관리를 제공한다. 일 실시예에서, 클라우드 관리 기능 (35)은 클라우드 인프라스트럭처 시스템 (10) 및 유사한 것에 의해 수신된 유저의 주문 또는 청약을 프로비저닝, 관리 및 추적하는 성능들을 포함한다.
도 2는 본 발명의 일 실시예에 따른 정책 기반 자원 할당 및 관리 시스템(100)의 간략화된 고차원 다이어그램을 도시한다. 도 2 에 도시된 바와 같이, 자원 관리 시스템 (105) (예를 들어, 하나 이상의 컴퓨팅 디바이스들을 포함하는 서비스 제공자의 컴퓨팅 시스템)은 하나 이상의 구성 가능한 컴퓨팅 자원들 (115A-115J)에 대한 유저 또는 유저 (110) (예를 들어, 클라이언트 또는 컴퓨팅 디바이스)로부터 주문 또는 서비스 청약 (107)을 수신할 수 있다. 유저 (110)에게 제공되는 자원들 (115A-115J)은 상이한 지리적 영역들 (125A-120D)에 위치될 수 있는 하나 이상의 데이터센터들 (120A-120D)에 위치될 수 있다. 전통적인 서비스 제공자들은 제공자에게 가장 비용 효율이 높은 방식으로 자원들을 할당 및 프로비저닝하고, 유저의 요구에 최적으로 하기 위해 자원들이 어떻게 또는 어디에 프로비저닝 될 지를 유저가 정의하는 것을 가능하게 하지 않는다. 추가적으로, 종래 기술의 시스템들은 그것들이 수요에 따라 자원들을 제공한다는 점에서 반응적이다. 그러나, 이들 시스템들은 현재 수요에 기초하여 자원들의 세트들 또는 그룹들을 제공할 뿐 요청들을 예측하거나 식별하지는 않는다. 본 발명의 실시예들은 이러한, 그리고 다른 쟁점들을 다룬다.
본 발명의 측면들에 따라, 하나 이상의 구성 가능한 컴퓨팅 자원들 (115A-115J)(즉, 출자가능한 또는 요청가능한 자원 유형들)은 네트워크들, 네트워크 대역폭, 서버들, POD들, 프로세싱, 메모리, 스토리지, 애플리케이션들, 가상 기계들, 서비스들, 등일 수 있다. POD는 미리-프로비저닝된 익명의 단일-테넌트 전개 (Java 서비스를 위한 경우); 또는 다수의 테넌트들 (데이터베이스 서비스를 위한 경우)을 서비스하는 멀티-테넌트 스택 (물리적 또는 가상화된) 중 하나를 나타낼 수 있는 논리적 엔티티(logical entity)이다. 예를 들어, POD는 물리적 스택 상의 서비스의 전개이다. POD는 하나 이상의 서비스 인스턴스들을 수용할 수 있다. POD는 사전에(a priori) 생성될 수 있거나 또는 서비스 인스턴스가 소정의 고객을 위해 생성된 때 주문형으로 생성될 수 있다. 일부 경우들에서, POD는 서비스를 운용하기 위한 소프트웨어 스택의 인스턴스화이다. POD는 따라서 서비스를 운용하기 위해 사용된다. 예를 들어, Java 서비스에 대응하는 POD는 가상 기계들의 스택을 포함할 수 있다. 다른 예로서, 데이터베이스 서비스를 위한 POD는 데이터베이스의 인스턴스를 포함할 수 있다. POD는 서비스를 호스트하는 것이 가능한 서브시스템으로 간주될 수 있다. 상이한 POD들이 상이한 서비스들을 위해 사용될 수 있다.
도 3은 본 발명의 일 실시예에 따른 배치 정책 기반 자원 할당 및 관리의 예시 흐름도(200)를 도시한다. 상기에서 설명된 것 처럼, 전형적인 서비스 제공자들은 유저들 또는 유저들이 그들의 요청된 구성 가능한 컴퓨팅 자원들이 어떻게 그리고 어디에 프로비저닝 될 지를 정의하는 것을 가능하게 하지 않는다. 대신에, 구성 가능한 컴퓨팅 자원들은 전형적으로 어떤 방식이든 서비스 제공자에게 가장 비용 효율이 높은(cost effective) 방식으로 할당된다. 그러나, 서비스 제공자에 대한 최고의 할당이 엔드 유저에 대한 최고의 경험을 제공하지 않을 수 있다.
본 발명의 실시예들은 유저가 그들의 구성 가능한 컴퓨팅 자원 요청들에 대하여 배치 정책들 (즉, 자원 정책들)을 정의하는 것을 가능하게 함으로써 아주 세밀한(fine-grained) 자원 할당 성능들을 엔드 유저에게 노출시킨다. 이것은 엔드 유저에게 많은 장점들을 제공할 수 있다. 예를 들어, IaaS의 상황하에서, 특별히 엔드 유저의 데이터가 다른 유저들의 데이터와 같은 컴퓨팅 노드 상에 저장될 수 있는 경우에, 엔드 유저는 그들의 데이터의 보안에 대하여 염려할 수 있다. 비록 IaaS 제공자들은 데이터 보안에 관하여 보장하지만, 일부 유저들에게는 이들 보장들이 불충분할 수 있다. 유저는 대신에 임의의 다른 유저들과 공유되지 않는 그들 자신의 전용 컴퓨팅 노드들을 원할 수 있다. 다른 유저들은 데이터 보안에 덜 염려 할 수 있지만, 그러나 구체적으로 정의된 자원 할당들에 의해 최적으로 서비스될 수 있는 특정 성능 또는 이중화 요건(redundancy requirement)들을 가질 수 있다. 이와 같이, 본 발명의 실시예들은 엔드 유저들의 요구들을 수용하기 위해 복수의 배치 정책들을 포함한다. 본 출원에서 사용되는, 배치 정책들(placement policy)은 구성 가능한 컴퓨팅 자원들 (예를 들어, 컴퓨팅 노드들)이 유저에게 서비스하기 위해 어떻게 할당될 지를 정의하는 규칙들을 지칭한다.
본 발명의 측면들에 따라, 배치 정책들은 다수의 상이한 요인들에 기초하여 자원들을 할당할 수 있다. 예를 들어, IaaS의 상황하에서, 성능이 쟁점인 경우, 컴퓨팅 자원들은 동일한 하이퍼바이저(hypervisor) 또는 하이퍼바이저들의 세트 (예를 들어, 가상 기계들 (VM들)을 생성하고 운용하는 컴퓨터 소프트웨어, 펌웨어, 및/또는 하드웨어의 부분인 가상 기계 모니터 (VMM : virtual machine monitor) 또는 VMM들의 세트)상에서 운용하기 위해 그룹화될 수 있다. 이것은 네트워킹 계층에 호출(call)들을 줄임으로써 상이한 하이퍼바이저들 또는 하이퍼바이저들의 세트들간에 산개된 자원들에 비교하여 네트워크 통신 및 요청/응답 시간들을 개선할 수 있다. 예를 들어, 공유 스토리지 자원들은 성능을 개선하기 위해 그것의 관련 컴퓨트 노드들과 동일한 하이퍼바이저 또는 하이퍼바이저들의 세트내에 최적으로 할당될 수 있다. 상기에서 설명된 것 처럼, 보안 관심사항들은 전용 하이퍼바이저들상에서 자원들을 운용함으로써 다루어 질 수 있다. 이것은 별도로 유지될 필요가 있는 동일한 유저에 의해 제어되는 데이터의 세트들간에 또는 상이한 유저들간에 악의적인 또는 의도하지 않은 액세스들로부터 데이터를 안전하게 하기 위해 사용될 수 있다. 마찬가지로, 지리적 제약들 (예를 들어, 자원들을 호스트하는 데이터센터들의 위치들에 관한 제한들)이 특정한 보안, 성능, 또는 규제 요건들을 충족시키기 위해 또한 제공될 수 있다. 추가적으로, 절체(isolation) 및/또는 이중화(redundancy)는 별개의 하이퍼바이저들 또는 하이퍼바이저들의 세트들상에 특정 자원들을 운용함으로써 유지될 수 있다. 이것은 다른 자원들에 영향을 미치지 않고서 자원들의 한 세트상에서 관리, 경영상의, 또는 인프라스트럭처 동작들 (예컨대 패칭(patching))을 수행하기 위해 또는 고장의 경우에 데이터를 보존하기 위해 사용될 수 있다 (예를 들어, 다운시간(downtime)을 줄이기 위해). 일부 실시예들에서, 기업 디자인, 통합 요건, 또는 다른 기능 요건은 컴포넌트들이 동일한 하이퍼바이저 (예를 들어, SDI(software defined infrastructure))의 범위 내에서만 상호연동(interoperate)할 수 있을 것을 필요로 할 수 있다.
배치 정책들의 예들은, IaaS의 상황하에서, 할당된 자원들이 하이퍼바이저들의 한 세트에 배치된 가상 기계들상에서 운용되는 전용 하이퍼바이저들 정책을 포함한다. 하이퍼바이저들의 한 세트는 그것들이 다른 유저들과 공유되지 않는다는 점에서 전용이다. 최적합(best fit) 배치 정책은 컴퓨팅 자원 활용을 최적화하기 위해 하이퍼바이저들의 한 세트에 가상 기계들을 할당할 수 있다. 예를 들어, 하이퍼바이저들의 해당 세트는 자원들을 절약하고, 자원 활용을 최대화하고, 단편화(fragmentation) 또는 다른 자원 최적화를 줄이기 위해 필요에 따라 다른 유저들 (및 다른 자원들을 운용하는)과 공유될 수 있다. 일부 실시예들에서, 유저에 의해 지정된 배치 정책이 없는 경우에 최적합 배치 정책이 기본으로 선택될 수 있다. 그룹 적합(group fit) 배치 정책은 컴퓨팅 자원들의 특정 부분이 함께 운용될 경우에 사용될 수 있다. 가상 기계들은 함께 그룹화될 수 있고 동일한 하이퍼바이저 풀(pool)내 하나 이상의 하이퍼바이저들상에서 운용될 수 있다. 배치 정책들은 상기 설명된 것 중 하나 이상, 또는 임의의 다른, 배치 정책들로부터의 특징들을 통합하는 하이브리드 배치 정책들을 생성하기 위해 엔드 유저들에 의해 필요에 따라 맞춤화될 수 있다.
도 3 에 도시된 바와 같이, 유저 (205)는 토폴로지 정의 (215)를 포함하는 자원 관리기 (예를 들어, 도 2에 관련하여 설명된 자원 관리 시스템 (105))에 주문 또는 서비스 청약 (210)을 제출할 수 있다. 토폴로지 정의는 메모리, CPU들의 수, 스토리지 요건들, 및 엔드 유저에 의해 요구된 다른 사양들과 같은 개별적으로 구성 가능한 컴퓨팅 자원들 (예를 들어, 컴퓨트 노드들)에 대한 요건들을 포함할 수 있다. 예를 들어, 토폴로지 정의 (215)에 도시된 바와 같이, 주문 또는 서비스 청약 (210)은 각각이 그것 자체의 사양 (예를 들어, 메모리, CPU들의 수, 및 스토리지)을 갖는 아홉개의 가상 기계들 (220A-220I)을 포함한다. 아홉 개의 가상 기계들은 그룹 1이 세개의 가상 기계들 (220A-220C)를 포함하고, 그룹 2가 두개의 가상 기계들 (220D-220E)를 포함하도록 그룹화되고, 나머지 네개의 가상 기계들 (220F-220I)는 그룹화되지 않는다. 이 토폴로지 정의 (215)는 두개의 그룹들이 요청된 가상 기계들의 부분에 대해 지정된다는 점에서 하이브리드 배치 정책을 나타내고, 최적합 정책이 나머지 가상 기계들에 적용될 수 있다.
일부 실시예들에서, 토폴로지 정의들은 아래의 리스팅 1에 도시된 바와 같이 텍스트 포맷으로 제공될 수 있다:
# ---------------------------------------------------------------------
TOPOLOGY = NUM_OF_VMS--
>VM_NO:VM_CPU_COUNT:VM_MEM_REQUIRED:VM_COMMENTS:VM_OS_TEMPLATE:GROUP_ID
# --------------------------------------------------------------------------
CRM_DEPLOYMENT =
13-->
1:8:32000:RAC_NODE1_HOST:OVM_OL5U6_X86_64_11203RAC_PVM:1,
2:8:32000:RAC_NODE2_HOST:OVM_OL5U6_X86_64_11203RAC_PVM:1,
3:0:0:RAC_NODE1_VIP_HOST:stit_oel5u6:1,
4:0:0:RAC_NODE2_VIP_HOST:stit_oel5u6:1,
5:0:0:RAC_CLUSTER_VIP_HOST:stit_oel5u6:1,
6:4:11264:IDM_HOST:HCM_DVF_REL5_GA_OIM:0,
7:2:1024:IDM_HOST2:HCM_DVF_REL5_GA_AUTHOHS:0,
8:4:12288:IDM_HOST3:HCM_DVF_REL5_GA_OID:0,
9:2:3072:OHS_HOST:HCM_DVF_REL5_GA_OHS:0,
10:4:15360:FA_ADMIN_HOST:HCM_DVF_REL5_GA_FA:0,
11:4:20480:FA_PRIMARY_HOST:HCM_DVF_REL5_GA_PRIMARY:0,
12:24:50176:FA_SECONDARY_HOST:HCM_DVF_REL5_GA_SECONDARY:0,
13:4:6144:BI_HOST:HCM_DVF_REL5_GA_BI:0
리스팅 1. 예제 토폴로지 정의
리스팅 1에 도시된 바와 같이, 두개의 그룹들에 열 세개의 가상 기계들이 요청된다. 일부 실시예들에서, 그룹들은 명시적 그룹 ID들 없이 VM들의 이름들에 기초하여 식별될 수 있다. 리스팅 1은 CRM(user relations manager) 전개에 대한 예제 토폴로지를 정의한다. 토폴로지 정의내 각각의 VM은 VM 번호 (VM_NO), 정의된 CPU들의 수 (VM_CPU_COUNT), 정의된 메모리의 양 (VM_MEM_REQUIRED), VM 이름 (VM_COMMENTS), 및 운영 체제 정의 (VM_OS_TEMPLATE), 및 그룹 ID (GROUP_ID)를 포함한다. 일부 실시예들에서, 토폴로지 정의는 더 많거나 또는 더 적은 요건들을 포함할 수 있다. 예를 들어, 일부 실시예들에서 각각의 VM에 대한 토폴로지 정의는 프록시 노드(proxy node)가 사용되는지 여부를 나타내는 플래그(flag)를 포함할 수 있다. VM들 3-5과 같은 일부 VM들은 CPU 또는 메모리 요건 없이 요청될 수 있고, 이들 VM들은 전개를 위해 IP 어드레스들로 셋 업 될 수 있다.
상기에서 도시된 바와 같이, 그룹들은 토폴로지 정의에 기초하여 자동으로 식별될 수 있고 및/또는 토폴로지 정의에 명시적으로 정의될 수 있다. 예를 들어, 리스팅 1에서, "RAC_*" 로 명명된 각각의 가상 기계는 자동으로 식별되고 그룹화될 수 있다. 일부 실시예들에서, 추천된 그룹들은 노드 이름들에 기초하여 식별될 수 있고 그리고 확인을 위해 유저에게 제시될 수 있다. 일부 실시예들에서, 명시적 그룹 ID가 토폴로지 정의에 포함될 수 있다. 예를 들어, 리스팅 1에 도시된 바와 같이, VM들 1-5은 그룹_ID 1을 포함하고, 한편 VM들 6-13은 그룹_ID 0을 포함한다. 일부 실시예들에서, 만약 그룹_ID가 미리-존재하는 그룹에 해당하면, 새롭게 요청된 VM들은 미리-존재하는 그룹에 추가될 수 있다.
도 3 에 도시된 바와 같이, IaaS의 상황하에서, 주문 또는 서비스 청약내에 요청된 자원들은 토폴로지 정의 (215)에 기초하여 자원 풀 (225)로부터 할당될 수 있다. 일부 실시예들에서, 자원 풀 (225)은 IaaS 제공자에 의해 관리되는 하이퍼바이저 풀 일 수 있다. 일부 실시예들에서, 자원 풀 (225)은 다수의 원격 데이터센터들에 걸쳐 분산된 복수의 자원 풀들을 포함할 수 있다.
도 4는 본 발명의 일 실시예에 따른 클라이언트 디바이스 및 자원 관리기의 보다 상세한 고차원 다이어그램(300)을 도시한다. 도 4 에 도시된 바와 같이, 엔드 유저는 자원 요청 및 토폴로지 정의 (320)를 포함하는 주문 또는 서비스 청약 (315)를 발송하는 유저 컴퓨터 (310)를 이용하여 자원 관리기 (305) (예를 들어, 도 2에 관련하여 상기에서 설명된 자원 관리 시스템 (105))와 통신할 수 있다. 주문 또는 서비스 청약 (315)는 자원 요청 인터페이스 (325)에 의해 수신될 수 있고 자원 풀 (330) 및 정책 관리기 (335)로 포워딩 될 수 있다. 자원 풀 (330)은 자원 관리기 (305)에 의해 관리되는 하나 이상의 데이터센터들에서 하나 이상의 자원 풀들 (예를 들어, 도 3에 대하여 설명된 자원 풀 (225))에 대한 인터페이스로서 역할을 한다. 자원 풀 (330)은 데이터센터 인덱스 (340) 및 자원 인덱스 (345)를 유지할 수 있다. 각각의 인덱스 (340 및 345)는 특정 데이터센터에서 현재 가용 가능한 구성 가능한 컴퓨팅 자원들 및/또는 각각의 데이터센터에 의해 제공될 수 있는 구성 가능한 컴퓨팅 자원들을 나타낼 수 있다. 예를 들어, 데이터센터 인덱스 (340)는 각각의 연결된 데이터센터에 얼마나 많은 하이퍼바이저들이 가용 가능한지 및 해당 하이퍼바이저들이 공유될 수 있는지 및/또는 전용 배치 정책들을 위해 사용될 수 있는지 여부를 나타낼 수 있다. 유사하게, 자원 인덱스 (345)는 현재 가용 가능한 애플리케이션 서버들, RAC(Real Application Clusters) 노드들, 스토리지 노드들, 등과 같이 어떤 미리-존재하는 구성 가능한 컴퓨팅 자원들이 임의의 소정 데이터센터에서 가용 가능한지를 나타낼 수 있다. 자원 할당 모듈 (350)은 주문 또는 서비스 청약 (315)를 수신할 수 있고 요청된 구성 가능한 컴퓨팅 자원들을 그리고 만약에 있다면, 어떤 배치 정책을 따를지를 결정할 수 있다. 자원 할당 모듈 (350)은 지정된 배치 정책들의 요건들을 식별하고 결정하기 위해 정책 관리기 (335)와 통신할 수 있다. 정책 관리기 (335)는 수요 정책들 (360), 출자 정책들 (365), 및 배치 정책들 (370)을 포함하는 복수의 정책 정의들 (355)을 유지할 수 있다. 정책 관리기 (335)는 필요에 따라 정책 정의들 (355)을 업데이트할 수 있는 정책 업데이트 모듈 (375)을 또한 포함할 수 있다.
도 5는 본 발명의 일 실시예에 따른 출자 정책 기반 자원 할당 및 관리 시스템의 개략도를 도시한다. 일부 실시예들에서, 유저들은 서로 다른 구성 가능한 컴퓨팅 자원들, 주문 또는 서비스 청약들에 대한 할인, 또는 다른 형태들의 보상의 대가로서 사용되지 않는 또는 잉여의 구성 가능한 컴퓨팅 자원들을 출자할 수 있다. 예를 들어, 사설 클라우드(private cloud) 인프라스트럭처 제공자와 같은 서비스 제공자는 구성 가능한 컴퓨팅 자원들의 공유 풀로부터 복수의 상이한 유저들 및/또는 조직들로부터의 주문들 또는 청약들을 서비스할 수 있다. 각각의 유저 또는 조직 (예를 들어, 고객)은 완전히 이용되지 않거나, 또는 더 이상 사용되지 않을 수 있는 그들 자신의 하드웨어 및/또는 소프트웨어 자원들, 예를 들어, 하이퍼바이저들, 스토리지 노드들, 또는 다른 구성 가능한 컴퓨팅 자원들을 소유 또는 제어할 수 있다. 도 5 에 도시된 실시예는 이들 유저들 및/또는 조직들이 출자하는 유저에 의해 사용될 다른 구성 가능한 컴퓨팅 자원들에 대한 대가로 및/또는 지불에 대한 대가로 그들의 사용되지 않는 구성 가능한 컴퓨팅 자원들을 출자하는 것을 허용한다. 예를 들어, IaaS의 상황하에서, 유저는 유저가 필요 없는 잉여 스토리지 노드를 가질 수 있다. 그들의 잉여 스토리지 노드를 출자하는 대가로, 유저는 RAC 노드를 요청할 수 있다. 유저들은 하이퍼바이저들, 소프트웨어, 네트워크들, POD들, 또는 다른 구성 가능한 컴퓨팅 자원들을 또한 출자할 수 있다.
도 5 에 도시된 바와 같이, 각각의 유저 (405)는 출자가능한 자원 (410)과 연관될 수 있다. 일부 실시예들에서, 출자가능한 자원 (410)은 유저에 의해 관리되고, 그리고 완전히 이용되지 않거나, 또는 더 이상 사용되지 않을 수 있는 하드웨어 및/또는 소프트웨어 유형들의 자원들, 예를 들어, 네트워크들, 네트워크 대역폭, 서버들, POD들, 프로세싱, 메모리, 스토리지, 애플리케이션들, 가상 기계들, 서비스들, 등일 수 있다. 각각의 유저 (405)는 출자되는 자원의 설명을 포함하는 자원 관리기 (420) (예를 들어, 도 1에 관련하여 상기에서 설명된 자원 관리 시스템 (105))로 자원 입찰(resource submission) (415)을 발송할 수 있다. 예를 들어, 설명은 출자되는 자원의 유형 (예를 들어, 서버) 및 자원의 이름, 메모리, CPU 정보, 운영 체제, 추가의 하드웨어 및/또는 소프트웨어, 등과 같은 자원의 세부 내용을 포함할 수 있다. 자원 관리기 (420)는 현재 자원 가용 가능성 및/또는 자원 수요를 고려하여 출자가능한 자원 (410)을 평가할 수 있고 그리고 유저 (405)가 출자가능한 자원 (410)에 대한 대가로 수신할 수 있는 요청가능한 자원 (425)의 하나 이상의 유형들을 정의하는 교환 오퍼(exchange offer)를 회신할 수 있다. 일부 실시예들에서, 요청가능한 자원(requestable resource) (425)은 자원 관리기(420)에 의해 관리되고, 그리고 유저에게 서비스를 제공하기 위해 가용 가능한 하드웨어 및/또는 소프트웨어 유형들의 자원들, 예를 들어, 네트워크들, 네트워크 대역폭, 서버들, POD들, 프로세싱, 메모리, 스토리지, 애플리케이션들, 가상 기계들, 서비스들, 등일 수 있다. 만약 교환 (예를 들어, 요청가능한 자원 (425)에 대한 출자가능한 자원 (410))이 출자하는 유저 (405)의 요구를 충족하면, 유저 (405)는 오퍼를 수락할 수 있고 자원 관리기 (420)에 출자가능한 자원 (410)의 제어를 넘길 수 있다. 예를 들어, 유저 (405)는 출자가능한 자원 (410)에 대한 제어 및 액세스를 제공하는 액세스 자격들 (예를 들어, 유저이름 및 패스워드)을 자원 관리기 (420)에 제공할 수 있다. 유저 (405)는 그런다음 자원 관리기 (406)로부터 요청가능한 자원 (425)에 대한 합의(bargain)를 수신할 수 있다.
이것은 유저가 필요하지 않은 구성 가능한 컴퓨팅 자원의 일 유형을 유저가 필요로 하는 구성 가능한 컴퓨팅 자원의 상이한 유형과 교환할 수 있는 유저들에게 유익하다. 일부 실시예들에서, 유저가 교환하여 수신하는 구성 가능한 컴퓨팅 자원 (예를 들어, 요청가능한 자원)은 유저가 희망하는 구성 가능한 컴퓨팅 자원의 셋 업하는 것을 요구하지 않고 자원 풀 내 임의의 하이퍼바이저상에서 운용될 수 있다. 예를 들어, 유저는 컴퓨트 노드(compute node)를 구매할 수 있지만, 그러나 해당 컴퓨트 노드상에 구성 가능한 컴퓨팅 자원들을 설정하는데 임의의 전문 지식을 가지지 않을 수 있다. 컴퓨트 노드를 출자함으로써, 유저는 대가로 유저에 의한 임의의 셋업을 요구하지 않는 상이한 컴퓨트 노드상에서 운용하는, 희망하는 구성 가능한 컴퓨팅 자원들을 수신할 수 있다. 이것은 조직들에 의해 내부적으로 또한 사용될 수 있다. 큰 소프트웨어 개발 회사들과 같은 조직들은 예상되는 요구에 기초하여 조직의 상이한 서브그룹에 구성 가능한 컴퓨팅 자원들을 할당할 수 있다. 시장에서의 수요 변화들 또는 새로운 프로젝트들을 맡은 것 때문에, 서브그룹 요구들이 변한 때, 조직이 구성 가능한 컴퓨팅 자원들을 서브그룹들간에 재할당하는 것은 어려울 수 있다. 출자 정책 기반 자원 관리 및 할당 시스템을 이용하여, 조직에 의한 재할당을 요구하지 않고서 서브그룹들이 자원들에 대해 자발적으로 재균형을 잡을 수 있다. 출자 정책(contribution policy)들은 수요에 기초하여 자원 출자들에 대한 "교환율(exchange rate)" (예를 들어, 출자가능한 자원들과 요청가능한 자원들 사이의 매핑)을 정의할 수 있고 동적으로 업데이트될 수 있다. 유사하게, 이런 출자 정책기반의 시스템이 조직들에 걸쳐 사용될 수 있다. 자원 관리기는 조직들의 컴퓨팅 자원들을 출자하기 위해 그들을 위한 표준화된 프로토콜을 제공하는 신뢰받는 단체로서 역할을 할 수 있다. 이것은 하나의 조직으로부터의 민감한 정보가 라이벌 조직의 컴퓨팅 자원들에 노출되지 않는 것을 보장하기 위해 상기에서 설명된 배치 정책기반 시스템과 조합하여 사용될 수 있다.
도 6은 본 발명의 일 실시예에 따른 클라이언트 디바이스 및 자원 관리기의 보다 상세한 고차원 다이어그램 (500)을 도시한다. 도 6 에 도시된 바와 같이, 자원 관리기 (505) (예를 들어, 도면들 2, 4, 및 5에 관련하여 각각 상기에서 설명된 자원 관리 시스템 (105) 또는 자원 관리기 (305); (420))는 자원 입찰 인터페이스 (510), 유저 계정 이력 (515) 및 수요 모니터 (520)를 포함하는 몇몇의 서브시스템들 또는 모듈들을 포함한다. 추가적으로, 자원 관리기 (505)는 정책 관리기 (525), 자원 풀 (530), 및 자원 요청 인터페이스 (535) (예를 들어, 도 3에 관련하여 상기에서 설명된 정책 관리기 (335), 자원 풀 (330), 및 자원 요청 인터페이스 (325))를 포함할 수 있다. 이들 서브시스템들은 소프트웨어로 (예를 들어, 하나 이상의 프로세서들에 의해 실행 가능한 프로그램 코드, 명령들), 하드웨어로, 또는 그것의 조합들로 구현될 수 있다. 일부 실시예들에서, 소프트웨어는 메모리 (예를 들어, 비-일시적 컴퓨터 판독가능 매체)내, 메모리 디바이스, 또는 일부 다른 물리적 메모리상에 저장될 수 있고 그리고 하나 이상의 프로세싱 유닛들 (예를 들어, 하나 이상의 프로세서들, 하나 이상의 프로세서 코어들, 하나 이상의 GPU들, 등)에 의해 실행될 수 있다.
도 6에 도시된 바와 같이, 유저 컴퓨터 (540)의 유저가 구성 가능한 컴퓨팅 자원 (예를 들어, 출자가능한 자원)을 자원 관리기 (505)에 출자하기 위해 자원 관리기 (505)에 자원 입찰을 발송하는 것을 가능하게 하는 브라우저 (545)와 같은 웹 애플리케이션을 유저 컴퓨터 (540)는 실행할 수 있다. 자원 입찰은 출자되는 자원의 유형(예를 들어, 네트워크들, 네트워크 대역폭, 서버들, POD들, 프로세싱, 메모리, 스토리지, 애플리케이션들, 가상 기계들, 서비스들, 등) 및 자원의 이름, 메모리, CPU 정보, 운영 체제, 추가 하드웨어 및/또는 소프트웨어, 등과 같은 자원의 세부내용을 지정할 수 있다. 출자가능한 자원(예를 들어, 유저가 더 이상 전체적으로 또는 부분적으로 사용 중이 아닌 자원)은 소유되거나 또는 그렇지 않으면 로컬 자원 (550A) 및/또는 유저가 네트워크 (555)를 통하여 액세스할 수 있는 원격 자원 (550B)과 같이 유저에 의해 제어된다 (예를 들어, 관리된다).
일 실시예에서, 자원 입찰 인터페이스 (510)는 자원 입찰을 수신할 수 있고 자원 입찰에 적용할 수 있는 하나 이상의 출자 정책들을 식별하기 위해 정책 관리기 (525)와 통신할 수 있다. 예를 들어, 각각의 출자 정책은 출자되는 자원의 유형 대가로 제공될 수 있는 요청가능한 자원들의 하나 이상의 유형들 (예를 들어, 네트워크들, 네트워크 대역폭, 서버들, POD들, 프로세싱, 메모리, 스토리지, 애플리케이션들, 가상 기계들, 서비스들, 등)을 지정할 수 있다. 일단 적용가능한 출자 정책들이 식별된 후에, 정책 관리기 (525)는 자원 입찰에 대하여 식별된 요청가능한 자원들의 하나 이상의 유형들을 회신할 수 있다. 따라서, 각각의 출자 정책은 유저가 출자가능한 자원에 대한 대가로 수락 또는 거절할 수 있는 요청가능한 자원들의 하나 이상의 유형들의 오퍼를 효율적으로 표현한다. 만약 유저가 요청가능한 자원의 하나 이상의 유형들 중 하나를 선택 또는 수락하면, 유저 계정 이력 (560)은 출자 이력 (565)에 유저에 의해 출자되는 자원을 표시하기 위해 업데이트될 수 있다. 그 후에, 유저는 미리 선택되거나 또는 수락된 유형의 요청가능한 자원에 대한 자원 요청을 포함하는 주문 또는 서비스 청약을 제출할 수 있고, 자원 관리기 (505)는 요청가능한 자원의 할당으로 응답할 수 있다. 추가적으로, 유저가 주문 또는 서비스 청약을 제출할 때, 자원 요청 이력 (570)은 유사하게 자원에 대한 요청으로 업데이트될 수 있다. 유저의 출자 및 주문 또는 서비스 청약 이력들의 추적은 유저가 출자가능한 자원의 대가로 요청가능한 자원으로 합의된 것을 수신하였는지 여부를 자원 관리기 (505)가 추적하는 것을 가능하게 한다.
일부 실시예들에서, 출자 정책들은 특정 유저에 대하여 그들의 출자 이력에 기초하여 조정될 수 있다. 예를 들어, 많은 구성 가능한 컴퓨팅 자원들을 출자한 이력을 갖는 유저들은 제한된 출자 이력을 갖는 유저들보다 더 유리한 오퍼들 (예를 들어, 그렇지 않았다면, 현재 수요에 기초하여 제공되었을 것보다 출자의 대가로 더 많은 구성 가능한 컴퓨팅 자원들)을 받을 수 있다.
대안적인 일 실시예에서, 자원 입찰 인터페이스 (510)는 하나 이상의 요청가능한 자원들에 대한 대가로 자원들의 하나 이상의 유형들을 출자하는 오퍼(offer)를 포함하는 주문 또는 서비스 청약을 수신할 수 있고, 오퍼가 충족되는지 여부를 결정하기 위해 정책 관리기 (525)와 통신할 수 있다. 예를 들어, 주문 또는 서비스 청약은 유저에 의해 선호되는 하나 이상의 요청가능한 자원들에 대한 대가로 출자할 수 있는 하나 이상의 자원들을 정의할 수 있다. 추가적으로, 주문 또는 서비스 청약은 한 명 이상의 유저들 및/또는 하나 이상의 요청가능한 자원들이 제공될 수 있는 한 곳 이상의 지리적 영역들을 정의할 수 있다. 따라서, 각각의 주문 또는 서비스 청약은 정책 관리기 (525)가 수락, 거절, 또는 반대제안(counter)을 (예를 들어, 정책 관리기 (525)에 의해 유지되는 출자 정책들에 기초하여 구성 가능한 컴퓨팅 자원의 하나 이상의 다른 유형들을 제안) 할 수 있는 요청가능한 자원들의 하나 이상의 유형들에 대한 출자가능한 자원들의 하나 이상의 유형들의 교환 오퍼를 효율적으로 표시한다. 만약 정책 관리기 (525)가 오퍼를 수락하면, 유저 계정 이력 (560)은 출자 이력 (565)에 유저에 의한 하나 이상의 자원들의 출자를 표시하기 위해 업데이트될 수 있다. 추가적으로, 자원 요청 이력 (570)은 유저에 의해 요청된 하나 이상의 자원들로 유사하게 업데이트될 수 있다. 오퍼의 수락은 한정되는 것은 아니지만 출자가능한 또는 요청가능한 자원들이 제공될 수 있는 한 명 이상의 유저들로부터 승인된 허가들, 출자가능한 또는 요청가능한 자원들의 유형들의 가용 가능성 및/또는 수요, 출자가능한 자원들의 유형들과 요청가능한 자원들의 유형들간의 교환의 등가성(equality), 정책 관리기 (525)에 의해 유지되는 출자 정책들, 등을 포함하는 다수의 요인들에 기초하여 정책 관리기 (525)에 의해 결정될 수 있다. 이런 실시예들에서, 프로젝트들 또는 과제들을 제 1 유저 "A" 가 제 2 유저 "B"와 협업하고 각각의 유저의 프로젝트 또는 과제 부분을 완료하기 위해 서로 하나 이상의 자원들을 공유하고, 및/또는 서로간에 하나 이상의 자원들의 교환에 대한 합의에 이르게 되는 것이 가능하다.
일부 실시예들에서, 정책 관리기 (525)에 의해 유지되는 자원 정책들 (예를 들어, 출자 정책들)은 출자가능한 및/또는 요청가능한 자원들의 상이한 유형들에 대한 현재 수요에 기초하여 동적으로 업데이트될 수 있다. 수요 모니터 (575)는 주문들 또는 서비스 청약들이 자원 요청 인터페이스 (535)로부터 정책 관리기 (525)로 포워딩될 때 요청 인터셉터(interceptor) (580)를 이용하여 주문들 또는 서비스 청약들을 인터셉트 또는 수신할 수 있다. 일부 실시예들에서, 수요 모니터 (575)는 각각의 주문 또는 서비스 청약을 인터셉트 또는 수신하지 않고 정책 관리기 (525)로부터 보고 기간(예를 들어, 매일 또는 매 시간)의 마지막에 일괄적으로(in a batch) 주문들 또는 서비스 청약들을 수신할 수 있다. 수요 모니터 (575)가 주문 또는 서비스 청약을 인터셉트하거나 또는 수신한 때, 수요 모니터 (575)는 주문 또는 서비스 청약을 정책 관리기 (525)로 포워딩할 수 있고 주문 또는 서비스 청약의 복사본을 보유할 수 있다. 요청 파서(request parser) (583)는 요청된 구성 가능한 컴퓨팅 자원들, 자원들을 요청한 엔티티, 및 자원들이 요청된 시간을 결정하기 위해 주문 또는 서비스 청약을 분석할 수 있다. 파싱된 주문 또는 서비스 청약은 그런 다음 총합 요청 이력 (585)에 추가될 수 있다. 총합 요청 이력 (585)은 시간, 요청자에 의해 및 요청된 자원에 의해 분류된 주문들 또는 서비스 청약들의 운용 리스트를 저장한 데이터 구조를 포함할 수 있다. 실시간 수요 계산기 (590)는 특정 시간 기간 동안에 수요를 결정하기 위해서 요청 볼륨(request volume) 또는 해당 시간 기간 동안에 총합 요청 이력 (585)을 분석할 수 있다. 자원 수요 상관기(resource demand correlator) (595)는 주문들 또는 서비스 청약들에 패턴들을 결정하기 위해 총합 요청 이력 (585)을 또한 분석할 수 있다. 주문 또는 서비스 청약 패턴들에 기초하여 구성 가능한 컴퓨팅 자원들의 동적 자원 세트들 또는 그룹들이 정의될 수 있어서 소정의 구성 가능한 컴퓨팅 자원이 요청된 때, 동적 자원 세트 내 다른 자원들이 또한 프로비저닝되고 요청된 자원과 통신하도록 구성된다.
도면들 7-10은 본 발명의 실시예들에 따른 출자 정책기반 및 수요 정책기반 자원 할당을 위해 수행되는 프로세싱을 도시하는 간략화된 흐름도들을 도시한다. 도면들 7-10의 단계들은 예를 들어 도면들 1-6 및 11-15의 환경들에서 구현될 수 있다. 본 출원에 언급된, 도면들 7-10의 흐름도들은 본 발명의 다양한 실시예들에 따른 시스템들, 방법들, 및 컴퓨터 프로그램 제품들의 가능한 구현예들의 아키텍처, 기능, 및 동작을 예시한다. 이것과 관련하여, 흐름도 또는 블럭도들내 각각의 블럭은 지정된 로직 기능들을 구현하기 위한 하나 이상의 실행 가능한 명령들을 포함하는 모듈, 세그먼트, 또는 코드 부분을 나타낼 수 있다. 일부 대안 구현예들에서, 블럭으로 나타낸 기능들은 도면들에 지시된 순서와 다르게 일어날 수 있다는 것에 또한 유의하여야 한다. 예를 들어, 연이어 도시된 두개의 블럭들은 사실은, 실질적으로 동시에 실행될 수 있거나, 또는 블럭들은 때때로 수반되는 기능에 의존하여 반대 순서로 실행될 수 있다. 블럭도들 및/또는 흐름도 예시의 각각의 블럭, 및 블럭도들 및/또는 흐름도 예시내 블럭들의 조합은 지정된 기능들 또는 동작들, 또는 특별한 목적의 하드웨어 및 컴퓨터 명령들의 조합들을 수행하는 특별한 목적의 하드웨어기반 시스템들에 의해 구현될 수 있다는 것에 또한 유의하여야 할 것이다.
도 7은 정책 관리기에 의해 유지되는 출자 정책들을 이용하여 출자 정책 기반 자원 할당이 수행되는 프로세싱을 도시하는 간략화된 흐름도 (600)를 도시한다. 단계 (605)에서, 출자가능한 자원을 식별하는 자원 입찰(resource submission)이 수신될 수 있다. 예를 들어, 상기에서 설명된, 자원 입찰 인터페이스 (510)는 자원 입찰을 유저 컴퓨터 (540)로부터 수신할 수 있고 그리고 자원 입찰을 정책 관리기 (525)로 포워딩할 수 있다. 자원 입찰은 출자되는 자원의 유형 (예를 들어, 네트워크들, 네트워크 대역폭, 서버들, POD들, 프로세싱, 메모리, 스토리지, 애플리케이션들, 가상 기계들, 서비스들, 등) 및 자원의 이름, 메모리, CPU 정보, 운영 체제, 추가 하드웨어 및/또는 소프트웨어, 등과 같은 자원의 세부내용을 지정할 수 있다. 출자가능한 자원(예를 들어, 유저가 더 이상 전체적으로 또는 부분적으로 사용 중이 아닌 자원)은 소유되거나 또는 그렇지 않으면, 로컬 자원 (550A) 및/또는 원격 자원 (550B)과 같이 유저에 의해 제어된다 (예를 들어, 관리된다).
단계 (610)에서, 자원 입찰에 적용할 수 있는 하나 이상의 출자 정책들이 식별될 수 있다. 예를 들어, 각각의 출자 정책은 출자되는 자원의 유형에 대한 대가로 제공될 수 있는 요청가능한 자원들의 하나 이상의 자원 유형들 (예를 들어, 네트워크들, 네트워크 대역폭, 서버들, POD들, 프로세싱, 메모리, 스토리지, 애플리케이션들, 가상 기계들, 서비스들, 등)을 지정할 수 있다. 하나 이상의 출자 정책들의 식별은 자원 입찰에 기초하여 출자가능한 자원의 자원 유형을 결정하는 단계, 및 자원 유형이 출자가능한 자원들의 하나 이상의 자원 유형들에 일치하는지를 결정하는 단계를 포함할 수 있으며(하나 이상의 출자 정책들 내에서), 출자가능한 자원들의 하나 이상의 자원 유형들을 하나 이상의 출자 정책들로 요청가능한 자원들의 하나 이상의 자원 유형들에 매핑된다. 따라서, 각각의 출자 정책은 유저가 출자가능한 자원에 대한 대가로 수락 또는 거절할 수 있는 요청가능한 자원들의 하나 이상의 유형들의 오퍼를 효율적으로 표현한다. 일단 적용가능한 출자 정책들이 식별된 후에, 정책 관리기 (525)는 자원 입찰에 대하여 식별된 요청가능한 자원들의 하나 이상의 유형들을 회신할 수 있다. 일부 실시예들에서, 유저에 의한 사용을 위해 가용 가능한 요청가능한 자원의 하나 이상의 유형, 출자가능한 및/또는 요청가능한 자원들의 하나 이상의 유형들의 수요 레벨, 및 예를 들어, 많은 자원들을 출자한 이력을 갖는 유저들은 한정된 출자 이력을 갖는 유저들보다 더 유리한 출자 정책들 또는 오퍼들(예를 들어, 그렇지 않았다면, 현재 수요에 기초하여 제공되었을 것보다 출자의 대가로 더 많은 자원들) 을 받을 수 있는 유저의 자원 출자의 이력을 포함하는 임의 개수의 요인들에 기초하여 더 면밀히 조정되거나 또는 정의되는 출자 정책들을 이용하여 하나 이상의 출자 정책들의 식별은 더 발전될 수 있다.
단계 (615)에서, 출자되는 자원의 유형에 대한 대가로 제공될 수 있는 요청가능한 자원들의 하나 이상의 자원 유형들의 식별은 식별된 하나 이상의 출자 정책들에 기초하여 유저에게 발송될 수 있다. 예를 들어, 자원 입찰 인터페이스 (510)는 식별된 하나 이상의 출자 정책들에 기초하여 요청가능한 자원들의 하나 이상의 자원 유형들의 식별내용을 정책 관리기 (525)로부터 유저 컴퓨터 (540)로 발송할 수 있다. 단계 (620)에서, 유저에 의한 요청가능한 자원들의 적어도 하나의 유형의 거절시에, 거절이 수신될 수 있다. 예를 들어, 상기에서 설명된, 자원 입찰 인터페이스 (510)는 유저 컴퓨터 (540)로부터 요청가능한 자원들의 적어도 하나의 유형의 거절을 수신할 수 있다. 단계 (625)에서, 유저에 의한 요청가능한 자원들의 적어도 하나의 유형의 선택 또는 수락시에, 요청가능한 자원들의 적어도 하나의 유형의 선택 또는 수락을 나타내는 정보가 수신될 수 있다. 예를 들어, 상기에서 설명된, 자원 입찰 인터페이스 (510)는 유저 컴퓨터 (540)로부터 요청가능한 자원들의 적어도 하나의 유형의 선택 또는 수락을 나타내는 정보를 수신할 수 있다. 일부 실시예들에서, 정보는 자원 입찰에 식별된 출자가능한 자원에 대한 제어 및 그것에 대한 액세스를 제공하는 액세스 자격들 (예를 들어, 유저이름 및 패스워드)을 또한 포함할 수 있다.
단계 (630)에서, 유저 계정 이력 및 자원 풀은 요청가능한 자원들의 적어도 하나의 유형의 선택 또는 수락으로부터 구현되는 변화들을 나타내기 위해 업데이트될 수 있다. 예를 들어, 유저 계정 이력 (560)은 출자 이력 (565)에서 요청가능한 자원들의 적어도 하나의 유형에 대한 대가로 제공된 출자가능한 자원을 나타내기 위해 업데이트될 수 있다. 추가적으로, 자원 풀 (530)내 데이터센터 인덱스 및/또는 자원 인덱스는 자원 관리기 (예를 들어, 서비스 제공자에 의해 관리되는 분산 시스템)의 한 명 이상의 유저들에게 서비스하기 위한 출자가능한 자원의 가용 가능성을 표시하도록 업데이트될 수 있다.
단계 (635)에서, 주문 또는 서비스 청약이 요청가능한 자원을 위해 유저로부터 수신될 수 있다. 예를 들어, 자원 입찰 인터페이스 (510)는 유저 컴퓨터 (540)로부터 주문 또는 서비스 청약을 수신할 수 있고 주문 또는 서비스 청약을 자원 관리기 (505)로 포워딩 할 수 있다. 단계 (640)에서, 요청가능한 자원이 이전의 자원 입찰 교환(즉, 이전에 출자가능한 자원에 대한 대가로 선택되거나 또는 수락된 유형의 요청가능한 자원)을 통하여 유저에게 가용가능한 유형인지 여부에 관한 결정이 이루어질 수 있다. 예를 들어, 자원 관리기 (505)는 요청가능한 자원이 출자가능한 자원에 대한 대가로 약정된 유형인지를 결정하기 위해 유저 계정 이력 (560)을 체크할 수 있다. 단계 (645)에서, 요청가능한 자원이 출자가능한 자원에 대한 대가로 약정된 유형이 아닐 때, 요청가능한 자원은 다른 주문 또는 서비스 청약 정책들 예컨대, 본 출원에서 설명된 배치 또는 수요 정책기반 시스템(들) 및/또는 전통적인 주문 또는 서비스 청약 정책들에 따라 유저에게 할당될 수 있다.
단계 (650)에서, 요청가능한 자원이 출자가능한 자원에 대한 대가로 약정된 유형일 때, 요청가능한 자원은 이전에 식별된 하나 이상의 출자 정책들에 기초하여 유저에게 할당될 수 있다. 예를 들어, 요청가능한 자원이 출자가능한 자원에 대한 대가로 약정된 유형일 때, 자원 관리기 (505)는 유저 또는 소비자에게 서비스하기 위해 자원 풀 (530)로부터 요청가능한 자원을 할당 및 구성할 수 있고, 그리고 요청가능한 자원이 할당 되었다는 확인 메시지를 유저 또는 소비자에게 발송할 수 있다. 요청가능한 자원은 유저에 의해 선택되거나 또는 수락된 유형의 임의의 구성 가능한 컴퓨팅 자원일 수 있다. 예를 들어, 만약 선택된 요청가능한 자원의 유형이 RAC 노드이면, 공유된 데이터 파일들 세트에 대하여 단지 하나의 인스턴스를 보통 운용하는 RAC 하나의 노드에 대한 요청은 유저 또는 소비자에게 서비스하기 위해 할당 및 구성될 수 있다.
일부 실시예들에서, 요청된 자원이 할당되는 자원 풀 (530)은 IaaS 제공자에 의해 관리되는 하이퍼바이저 풀(hypervisor pool)일 수 있다. 일부 실시예들에서, 자원 풀 (530)은 다수의 원격 데이터센터들에 걸쳐 분산된 복수의 자원 풀들을 포함할 수 있다. 이해되어야 하는 바와 같이, 요청된 자원의 할당 및 구성은 상기의 도면들 3 및 4에 관련하여 상세하게 검토된 바와 같이 토폴로지 정의들 및 배치 정책들에 기초하여 추가로 정의될 수 있다.
단계 (655)에서, 유저 계정 이력 및 자원 풀은 요청가능한 자원에 대한 주문 또는 서비스 청약으로부터 구현되는 변화들을 나타내기 위해 업데이트될 수 있다. 예를 들어, 유저 계정 이력 (560)은 자원 요청 이력 (570)에서 유저에게 할당되었던 요청가능한 자원을 나타내기 위해 업데이트될 수 있다. 유저의 출자 및 주문 또는 서비스 청약 이력들의 추적은 유저가 출자가능한 자원의 대가로 요청가능한 자원에 관한 합의된 것을 수신하였는지 여부를 자원 관리기 (505)가 추적하는 것을 가능하게 한다. 추가적으로, 자원 풀 (530)내의 데이터센터 인덱스 및/또는 자원 인덱스는 유저에게 서비스하기 위한 요청가능한 자원의 할당을 표시하도록 업데이트될 수 있다.
도 8은 유저에 의해 제공된 주문 또는 서비스 청약들을 이용하여 출자 정책 기반 자원 할당이 수행되는 프로세싱을 도시하는 간략화된 흐름도 (700)를 도시한다. 단계 (705)에서, 하나 이상의 요청가능한 자원들에 대한 대가로 하나 이상의 자원들을 출자하기 위한 오퍼를 포함하는 주문 또는 서비스 청약이 수신될 수 있다. 예를 들어, 상기에서 설명된 것 처럼, 자원 입찰 인터페이스 (510)는 유저 컴퓨터 (540)로부터 주문 또는 서비스 청약을 수신할 수 있고 그리고 주문 또는 서비스 청약을 정책 관리기 (525)로 포워딩할 수 있다. 주문 또는 서비스 청약은 유저가 자원 관리기 (505)에 의해 관리되는 자원들의 풀에 출자하려고 하는, 로컬 자원 (550A) 및/또는 원격 자원 (550B)과 같이 유저에 의해 소유되거나 그렇지 않으면, 유저에 의해 제어되는 하나 이상의 자원들을 지정할 수 있다. 추가적으로, 자원 입찰은 유저에 의한 사용을 위해 선호되는 하나 이상의 요청가능한 자원들을 지정할 수 있다. 일부 실시예들에서, 주문 또는 서비스 청약은 하나 이상의 출자가능한 자원들이 서비스하려고 하는 한 명 이상의 유저들, 하나 이상의 요청가능한 자원들이 제공될 수 있는 한 명 이상의 유저들 (초기설정(default)은 자원 풀일 수 있다), 및/또는 하나 이상의 요청가능한 자원들이 제공될 수 있는 한 곳 이상의 지리적 영역들을 또한 식별할 수 있다.
단계 (710)에서, 오퍼는 수락되거나, 거절되거나, 또는 반대제안(counter)될 수 있다. 예를 들어, 주문 또는 서비스 청약은 정책 관리기 (525)가 수락, 거절, 또는 반대제안 (예를 들어, 도 7의 단계들 (605) 및 (610)과 관련하여 설명된 것에 유사한 프로세스로 정책 관리기 (525)에 의해 유지되는 출자 정책들에 기초하여 요청가능한 자원들의 하나 이상의 다른 유형들의 반대제안 오퍼(counter offer))할 수 있는 요청가능한 자원의 하나 이상의 유형들에 대한 출자가능한 자원들의 하나 이상의 유형들의 교환의 오퍼를 효율적으로 표시한다. 주문 또는 서비스 청약의 수락, 거절 또는 반대제안은 한정되는 것은 아니지만 출자가능한 및/또는 요청가능한 자원들이 제공될 수 있는 한 명 이상의 유저들로부터 승인된 허가들, 출자가능한 및/또는 요청가능한 자원들의 유형들의 가용 가능성 및/또는 수요, 출자가능한 자원들의 유형들과 요청가능한 자원들의 유형들간의 교환의 등가성, 정책 관리기 (525)에 의해 유지되는 출자 정책들, 등을 포함하는 임의 개수의 요인들에 기초하여 정책 관리기 (525)에 의해 결정될 수 있다.
단계 (715)에서, 오퍼의 거절시에, 주문 또는 서비스 청약의 거절이 유저에게 발송될 수 있고 프로세스는 종료한다. 단계 (720)에서, 오퍼의 반대제안 오퍼시에, 하나 이상의 출자 정책들에 기초하여 주문 또는 서비스 청약을 적어도 부분적으로 만족시키는 것으로 식별된 요청가능한 자원들의 하나 이상의 다른 유형들이 유저에게 발송될 수 있다. 예를 들어, 자원 입찰 인터페이스 (510)는 도 7의 단계들 (610) 및 (615)에 관련하여 설명된 것에 유사한 프로세스로 정책 관리기 (525)로부터 유저 컴퓨터 (540)로 요청가능한 자원들의 하나 이상의 다른 유형들을 발송할 수 있다. 그 후에, 프로세스는 도 7의 단계들 (620-655)에 관련하여 설명된 것과 유사한 방식으로 계속할 수 있다.
단계 (725)에서, 오퍼의 수락시에, 주문 또는 서비스 청약의 수락이 유저에게 발송될 수 있다. 예를 들어 상기에서 설명된 것 처럼, 자원 입찰 인터페이스 (510)는 정책 관리기 (525)로부터 오퍼의 수락을 수신할 수 있고 유저 컴퓨터 (540)에 수락을 포워딩할 수 있다. 단계 (730)에서, 출자되는 하나 이상의 자원들에 대한 액세스 및 그것들에 대한 제어를 제공하는 액세스 자격들 (예를 들어, 유저이름 및 패스워드)이 수신될 수 있다. 예를 들어, 자원 입찰 인터페이스 (510)는 유저 컴퓨터 (540)로부터 액세스 자격들을 수신할 수 있고 액세스 자격들을 자원 관리기 (505)로 포워딩할 수 있다. 단계 (735)에서, 유저 계정 이력 및 자원 풀은 오퍼의 수락으로부터 구현되는 변화들을 나타내기 위해 업데이트될 수 있다. 예를 들어, 유저 계정 이력 (560)은 출자 이력 (565)에서 하나이상의 요청가능한 자원들에 대한 대가로 유저에 의해 출자된 하나이상의 자원을 나타내기 위해 업데이트될 수 있다. 추가적으로, 자원 풀 (530)내 데이터센터 인덱스 및/또는 자원 인덱스는 자원 관리기 (예를 들어, 서비스 제공자에 의해 관리되는 분산 시스템)의 한 명 이상의 유저들에 서비스하기 위해 출자된 하나이상의 자원의 가용 가능성을 표시하도록 업데이트될 수 있다.
단계 (740)에서, 주문 또는 서비스 청약에서 식별된 하나 이상의 요청된 자원들이 할당될 수 있다. 예를 들어, 자원 관리기 (505)는 유저에게 서비스 하기 위해 자원 풀 (530)로부터 하나 이상의 요청된 자원들을 할당할 수 있고, 하나 이상의 요청된 자원들이 할당되었다는 확인 메시지를 발송할 수 있다. 일부 실시예들에서, 자원 풀 (530)은 IaaS 제공자에 의해 관리되는 하이퍼바이저 풀 일 수 있다. 일부 실시예들에서, 자원 풀 (530)은 다수의 원격 데이터센터들에 걸쳐 분산된 복수의 자원 풀들을 포함할 수 있다. 이해되어야 하는 바와 같이, 하나이상의 요청된 자원들의 할당은 상기의 도면들 3 및 4에 관련하여 상세하게 검토된 바와 같이 토폴로지 정의들 및 배치 정책들에 기초하여 추가로 정의될 수 있다.
단계 (745)에서, 유저 계정 이력 및 자원 풀은 주문 또는 서비스 청약의 수락으로부터 구현되는 변화들을 나타내기 위해 업데이트될 수 있다. 예를 들어, 유저 계정 이력 (560)은 자원 요청 이력 (570)에서 유저에게 할당된 하나이상의 요청된 자원들을 나타내기 위해 업데이트될 수 있다. 유저의 출자 및 요청 이력들의 추적은 유저가 하나이상의 출자가능한 자원들에 대한 대가로 하나이상의 요청된 자원들에 관한 합의된 것을 수신하였는지 여부를 자원 관리기 (505)가 추적하는 것을 가능하게 한다. 추가적으로, 자원 풀 (530)내의 데이터센터 인덱스 및/또는 자원 인덱스는 유저에게 서비스하기 위한 하나이상의 요청된 자원들의 할당을 표시하도록 업데이트될 수 있다.
도 6 에 도시되고 상기에서 설명된 것 처럼, 자원 관리기 (505)는 구성 가능한 컴퓨팅 자원들 (예를 들어, 네트워크들, 네트워크 대역폭, 서버들, POD들, 프로세싱, 메모리, 스토리지, 애플리케이션들, 가상 기계들, 서비스들, 등)에 대한 수요 및 구성 가능한 컴퓨팅 자원의 특정 세트들에 대한 수요를 추적할 수 있는 수요 모니터 (575)를 포함할 수 있다. 이런 모니터링은 자원 관리기 (505)가 맞춤형(customizable) 수요 정책들에 기초하여 복합, 유선 자원 세트들/그룹들을 예측하고 미리 생성하는 것을 가능하게 한다. 이것은 관리자에 의한 개입 필요없이 자동으로 수행될 수 있다. 이것은 셋 업 시간 거의 없이 또는 전혀 셋 업 시간 없이 엔드 유저(end user)의 요청들에 응답하여 엔드 유저가 요구하는 구성 가능한 컴퓨팅 자원들 (즉, 자원들)을 제공함으로써 셋 업 시간을 줄이고 그리고 엔드 유저의 경험을 개선한다.
일부 실시예들에서, 수요 정책들은 자원들간에 알려진 종속성(dependency)에 기초하여 생성될 수 있다. 예를 들어 만약 제 1 자원이 또한 제 2 자원을 요청하지 않고는 사용될 수 없다면, 그러면 어느 한쪽 자원에 대한 요청은 자동으로 다른 자원을 포함할 수 있다. 추가적으로, 수요 정책들은 알려진 "트렌드들(trends)"에 기초될 수 있다. 예를 들어, 만약 자원의 업그레이드 또는 새로운 발매(release)가 시장에 출시되면, 자원의 새로운 버전들에 대한 요청들의 수가 수신될 때 미리 생성된 자원의 예전 버전들의 수는 축소될 수 있다. 예를 들어, 애플리케이션의 제 1 버전(version)은 제 1 발매 데이터베이스를 필요로 할 수 있지만, 반면 애플리케이션의 제 2 버전은 제 2 발매 데이터베이스를 필요로 할 수 있다. 애플리케이션의 제 2 버전이 채택된 때, 애플리케이션의 제 2 버전으로부터의 작업들 또는 요청들의 수는 증가할 것이다. 이 활동이 증가할 때, 애플리케이션과 관련된 수요 정책은 제 2 발매 데이터베이스에 대한 증가된 수요를 나타내기 위해 자동으로 업데이트될 수 있다. 이 수요 정책이 적용될 때, 데이터베이스의 제 2 발매에 대한 셋업들이 데이터베이스의 제 1 발매에 비하여 우선권이 주어지고, 가용 가능한 제 2 발매 데이터베이스들의 수가 점차적으로 증가한다. 일부 실시예들에서, 다양한 자원들의 새로운 버전들의 발매 날짜들은 자원의 각각의 버전이 얼마나 많이 미리 생성되는 지를 자동으로 업데이트하기 위해 또한 사용될 수 있다.
일부 실시예들에서, 수요 모니터에 의해 계산된 실시간 수요는 증가된 수요를 반영하는 자원들을 미리 생성하기 위해 사용될 수 있다. 예를 들어, 만약 자원 요청들의 특정 비율이 POD의 어떤 유형을 포함하면, 수요 정책은 더 많은 해당 어떤 유형의 POD를 자동으로 미리 생성하기 위해 업데이트될 수 있다. 추가적으로, 일부 자원들은 올바르게 제대로 기능하기 위해서 특정 자원들의 세트를 요구한다. 예를 들어, 애플리케이션 스위트(application suite)는 데이터베이스 및 EM(enterprise manager)를 또한 필요로 할 수 있다. 이들 알려진 종속성들은 수요 정책에 저장될 수 있어서 애플리케이션 스위트가 요청된 때, 종속 자원들이 또한 프로비저닝되고 애플리케이션 스위트와 통신하도록 구성된다. 일부 실시예들에서, 자원들의 세트는 수요에 기초하여 동적으로 변화할 수 있다. 예를 들어, 자원 수요 상관기 (595)는 종속 자원들에 추가하여 정기적으로 요청되는 추가 자원들을 식별할 수 있다 (예를 들어, 추가 자원을 포함하는 자원 요청들의 비율에 기초하여). 이들 실시예들에서, 수요 정책은 이들 추가 자원들을 포함하도록 자동으로 업데이트될 수 있다. 함께 사용되는 자원들의 그룹들에 대한 수요를 모니터링함으로써, 수요 정책은 개별 자원들 대신에 자원들의 세트들을 미리 생성할 수 있고, 유저에 의해 요청될 때 자원들을 셋 업하기 위해 요구되는 시간을 줄인다.
일부 실시예들에서, 현존하는 자원들의 라이프사이클들은 현재 수요 및 자원 사용량(resource usage)에 기초하여 유사하게 관리될 수 있다. 자원이 더 이상 사용되지 않을 때, 자원은 전형적으로 자원 관리기에 의해 클리닝되어 자원 풀로 반환된다. 자원이 언제 더 이상 사용되지 않은 지의 결정은 사용량 (예를 들어, 자원이 얼마나 빈번하게 사용되는지) 또는 건강(health) (예를 들어, 해당 자원에 다른 자원들을 연결할 수 있고, 자원이 빈 공간이 없는지(full), 등)에 기반될 수 있다. 사용량 부족, 또는 고장은 자원에 대한 클린업(cleanup) 또는 유지보수 동작들을 트리거할 수 있다. 그러나, 사용된 적이 없는 자원들에 대한 이 추가 클린업 단계는 불필요하고 그리고, 수요 자원들에 대하여는, 시간 소모가 크다. 특정 자원의 사용 기간/트렌드를 추적함으로써, 자원 관리기는 자원이 언젠가 이용된 적이 있는지 여부를 결정할 수 있다. 예를 들어, 만약 스토리지 노드가 생성되었지만, 그러나 데이터가 거기에 전혀 저장되거나 또는 거기에서 검색되지 않았다면, 그러면 자원 관리기는 자원은 사용된 적이 없고 스토리지 노드는 먼저 자원 클리닝(cleaning)없이 다른 유저들에게 가용 가능하게 될 수 있음을 결정할 수 있다.
도 9는 본 발명의 일 실시예에 따른 수요 정책 기반 자원 할당을 위해 수행되는 프로세싱을 묘사하는 간략화된 흐름도(800)를 도시한다. 단계 (805)에서, 서비스를 위한 주문 또는 청약이 인터셉트되거나 또는 수신될 수 있다. 예를 들어 도 6과 관련하여 상기에서 설명된 것 처럼, 수요 모니터 (575)는 자원 관리기 (505)에서의 추가 프로세싱을 위해 주문을 전달하기 전에 요청 인터셉터(request interceptor) (580)를 이용하여 실시간으로 주문을 인터셉트 또는 수신할 수 있다. 일부 실시예들에서, 주문은 비-실시간 프로세싱을 일괄하여 주기적으로 수요 모니터 (575)로 발송될 수 있다. 단계 (810)에서, 주문은 하나 이상의 요청된 자원들, 요청자(requestor), 및 다른 요청 데이터 (예를 들어, 요청 시간)를 포함하는 요청 데이터를 식별하기 위해 파싱될 수 있다. 예를 들어, 요청 파서 (583)는 주문 (즉, 입력 데이터)를 받아서 데이터의 추출 및 패턴 매칭을 허용하는, 주문내에 요청 데이터 (예를 들어, 하나 이상의 요청된 자원들, 요청자, 및 다른 요청 데이터)의 구조적 표현(structural representation)을 제공하는 데이터 구조 (예를 들어, 파싱 트리(parse tree) 또는 다른 계층적 구조)를 구축(build)한다.
단계 (815)에서, 요청 데이터는 총합 이력 데이터 구조(aggregate history data structure)에 추가될 수 있다. 예를 들어, 주문으로부터 요청 데이터의 구조적 표현을 제공하는 데이터 구조는 자원 풀 내의 자원들에 대한 요청 데이터의 총합체를 포함하는 총합 이력 데이터 구조 (585)에 추가될 수 있다. 총합 이력 데이터 구조 (585)는 서비스들을 위해 임의 개수의 앞서 파싱된 주문들 또는 청약들로부터의 데이터 구조들을 포함한다. 각각의 주문은 주문이 수신될 때 타임 스탬프(time stamp)될 수 있고, 총합 이력 데이터 구조 (585)는 자원, 요청자, 또는 다른 요청 데이터에 의해 분류될 수 있다. 단계 (820)에서, 소정의 자원 (예를 들어, 주문에 요청된 자원 또는 자원 풀 내 임의의 자원)에 대하여, 자원 풀 내 자원들에 대한 요청 데이터의 총합체로부터 획득된 현재 요청 볼륨을 이용하여 소정의 자원에 대하여 실시간 수요가 계산될 수 있다. 예를 들어, 특정 시간 기간 (연속 평균(rolling average), 이력 시간 기간, 등)에, 실시간 수요 계산기 (590) 및 총합 이력 데이터 구조 (585)를 이용하여 소정의 자원을 포함하는 주문들의 비율이 결정될 수 있다. 추가적으로, 주문들의 비율은 실시간 수요 계산기 (590) 및 총합 이력 데이터 구조 (585)를 이용하여 자원 풀 내 다른 자원들에 비하여 소정의 자원에 대하여 계산된 실시간 수요에 상관될 수 있다.
단계 (825)에서, 단계(805)에서 수신된 주문은 해당 주문과 적어도 하나의 다른 주문간에 동일한 요청 데이터의 적어도 하나의 컴포넌트에 기초하여 서비스들을 위해 앞서 파싱된 주문들 또는 청약들로부터의 적어도 하나의 다른 주문과 상관될 수 있다. 예를 들어, 자원 수요 상관기 (595)는 주문들을 제출한 동일한 유저에 기초한 두 개 이상의 주문들간에 상관관계들을 결정할 수 있다 (예를 들어, 애플리케이션 스위트를 요청한 유저에 대하여, 유저는 동시에 또는 이어서 데이터베이스를 요청하고, 따라서, 자원 수요 상관기 (595)는 데이터베이스를 애플리케이션 스위트와 상관시킬 수 있다). 요청자 또는 유저, 자원 요청이 획득되었던 특정 시간 프레임, 요청된 자원의 유형, 및/또는 임의의 다른 데이터를 포함하는 총합 데이터 구조로부터 획득 가능한 임의 개수의 데이터 컴포넌트들에 기초하여 주문은 적어도 하나의 다른 주문에 상관될 수 있다. 단계 (830)에서, 상관된 주문들에 기초하여, 유저들간에 걸쳐 자주 요청되는 자원들의 세트들이 식별될 수 있다. 예를 들어, 수요 모니터 (575)는 상관된 주문들에 기초하여 자원들의 세트로서 자원들간에 알려진 종속성들을 식별하고 저장할 수 있어서 주 자원 (예를 들어, 애플리케이션 스위트)가 요청된 때, 종속 자원들 (예를 들어, 데이터베이스)이 또한 주 자원과 통신하도록 구성되고 프로비저닝된다. 일부 실시예들에서, 자원들의 세트는 단계 (820)로부터의 자원들에 대하여 계산된 실시간 수요에 기초하여 동적으로 변화할 수 있다. 예를 들어, 자원 수요 상관기 (595)는 주 자원 및 종속 자원들에 추가하여 정기적으로 요청되는 추가 자원들을 식별할 수 있다 (예를 들어, 주 자원, 종속 자원들 및 추가 자원을 포함하는 주문들의 비율에 기초하여). 이들 실시예들에서, 식별되고 저장된 자원들의 세트들은 이들 추가 자원들을 포함하도록 자동으로 업데이트될 수 있다.
도 10은 본 발명의 일 실시예에 따른 수요 정책 기반 자원 할당을 위해 수행되는 프로세싱을 묘사하는 간략화된 흐름도(850)를 도시한다. 단계 (855)에서, 자원 풀 내 각각의 자원의 사용이 추적될 수 있다. 예를 들어, 특정 시간 기간 (연속 평균, 이력 시간 기간, 등)에, 자원 풀 (530), 실시간 수요 계산기 (590) 및 총합 이력 데이터 구조 (585)를 이용하여 각각의 자원의 이용이 결정될 수 있다. 특정 자원의 사용 기간/트렌드를 추적함으로써, 자원 관리기 (505)는 자원이 언젠가 사용된 적이 있는지 여부, 자원이 최근에 사용된 적이 있는지 여부, 자원의 이용 빈도, 및/또는 자원이 현재 사용되고 있는지 여부를 결정할 수 있다.
단계 (860)에서, (i) 자원들에 대하여 계산된 수요 (도 9의 단계(820)에서 계산된), (ii) 식별된 자원들 및 자원들의 세트들 (도 9의 단계(830)에서 식별된), (iii) 자원들의 세트들에 대한 추가 자원들의 식별 (도 9의 단계(830)에서 선택적으로 식별된), 및 (iv) 추적된 자원들의 사용 (도 10의 단계(855)에서 식별된) 중 적어도 하나에 기초하여 하나 이상의 수요 정책들이 생성되거나 또는 업데이트될 수 있다. 일부 실시예들에서, 수요 모니터 (575)에 의해 계산된 실시간 수요는 자원 할당들을 위한 하나 이상의 수요 정책들을 생성하거나 또는 업데이트하는데 사용될 수 있어서 자원들은 자원 관리기 (505)에 의해 선제적으로 생성될 수 있고 자원 풀에 추가될 수 있다. 예를 들어, 만약 자원 요청들의 특정 비율이 하나 이상의 보조 자원들을 포함하면, 그러면 수요 정책은 보조 자원의 하나 이상의 추가적인 인스턴스들을 자동으로 미리 생성하도록 업데이트될 수 있거나, 또는 만약 하나 이상의 자원들을 필요로 하는 새로운 애플리케이션 스위트가 도입되고 있는 중이면, 수요 정책은 하나 이상의 자원들의 더 많은 인스턴스들을 자동으로 미리 생성하도록 업데이트될 수 있다.
추가적으로 일부 실시예들에서, 수요 모니터 (575)는 상관된 자원 요청들에 기초하여 하나 이상의 수요 정책들에 자원들의 세트로서 자원들간에 알려진 종속성들을 식별하고 저장할 수 있어서 주 자원(primary resource)이 요청될 때, 종속 자원들 (예를 들어, 데이터베이스)이 또한 주 자원과 통신하도록 구성되고 프로비저닝된다. 예를 들어, 애플리케이션 스위트는 데이터베이스 및 EM(enterprise manager)을 또한 필요로 할 수 있다. 이들 알려진 종속성들은 수요 정책에 저장될 수 있어서 애플리케이션 스위트가 요청될 때, 데이터베이스 및 EM이 또한 애플리케이션 스위트와 통신하도록 구성되고 프로비저닝된다. 일부 실시예들에서, 식별된 자원들의 세트는 해당 자원들에 대한 계산된 수요에 기초하여 동적으로 변화할 수 있다. 예를 들어, 자원 수요 상관기 (595)는 종속 자원들에 추가하여 정기적으로 요청되는 추가 자원들을 식별할 수 있다. 이들 실시예들에서, 수요 정책은 이들 추가 자원들을 포함하도록 자동으로 업데이트될 수 있다. 함께 사용되는 자원들의 그룹들에 대한 수요를 모니터링함으로써, 수요 정책은 자원들의 세트들을 선제적으로 생성하고, 서로간에 통신하도록 자원들을 구성하고, 개별 자원들 대신에 자원 풀에 자원들을 추가하여, 유저에 의해 요청될 때 자원들을 셋 업하는데 요구되는 시간을 줄이는데 사용될 수 있다.
추가적으로 일부 실시예들에서, 수요 모니터 (575)는 전혀 사용된 적이 없는 자원들, 최근에 사용된 적이 있는 자원들, 각각의 자원의 사용의 빈도, 및/또는 자원들이 현재 사용되고 있는지 여부를 식별할 수 있고, 이런 사용 정보에 기초하여 자원들의 할당을 제어하기 위해 하나 이상의 수요 정책들을 생성 또는 업데이트할 수 있다. 예를 들어, 만약 자원이 생성되었지만, 그러나 자원이 유저에 의해 액세스된 적이 전혀 없으면, 그러면 자원 관리기 (905)는 자원이 사용된 적이 없고 그리고 먼저 자원을 클리닝 하지 않고서 하나 이상의 수요 정책들에 기초하여 자원이 다른 유저들에게 재할당될 수 있음을 결정할 수 있다. 반면에, 만약 자원이 생성되었지만, 그러나 자원이 유저에 의해 미리 결정된 시간의 양 (예를 들어, 두 달)동안 액세스된 적이 없으면, 그러면 자원 관리기 (905)는 자원이 더 이상 사용되지 않고 그리고 자원 클리닝 후에 자원이 다른 유저들에게 하나 이상의 수요 정책들에 기초하여 재할당될 수 있음을 결정할 수 있다.
단계 (865)에서, 하나 이상의 자원들은 자동으로 미리 생성될 수 있고 (선제적으로 생성되고), 자원 풀에 추가될 수 있고, 자원 풀로부터 제거될 수 있고, 및/또는 생성되거나 또는 업데이트된 하나 이상의 수요 정책들에 기초하여 클리닝될 수 있다. 예를 들어, 자원 관리기 (505)는 하나 이상의 자원들을 자동으로 미리 생성할 수 있고 생성되거나 또는 업데이트된 하나 이상의 수요 정책들에 기초하여 한 명 이상의 유저들에게 서비스하기 위해 미리 생성된 하나 이상의 자원들을 자원 풀에 추가할 수 있다. 일부 실시예들에서, 자원 관리기 (505)는 생성되거나 또는 업데이트된 하나 이상의 수요 정책들에 기초하여 자원 풀로부터 하나 이상의 자원들을 자동으로 제거할 수 있다. 다른 실시예들에서, 자원 관리기 (505)는 생성되거나 또는 업데이트된 하나 이상의 수요 정책들에 기초하여 자원 풀 내의 하나 이상의 자원들을 자동으로 클리닝할 수 있다.
단계 (870)에서, 하나 이상의 수요 정책들과 관련된 하나 이상의 요청된 자원들은 한 명 이상의 유저들에게 할당될 수 있다. 예를 들어, 자원 관리기 (505)는 하나 이상의 수요 정책들에 기초하여 한 명 이상의 유저들에게 서비스 하기 위해 자원 풀로부터 하나 이상의 요청된 자원들을 할당할 수 있고, 하나 이상의 요청된 자원들이 할당되었다는 확인 메시지를 발송할 수 있다. 일부 실시예들에서, 자원 풀은 IaaS 제공자에 의해 관리되는 하이퍼바이저 풀 일 수 있다. 일부 실시예들에서, 자원 풀은 다수의 원격 데이터센터들에 걸쳐 분산된 복수의 자원 풀들을 포함할 수 있다. 이해되어야 하는 바와 같이, 하나이상의 요청된 자원들의 할당은 상기의 도면들 1-8에 관련하여 상세하게 검토된 바와 같이 토폴로지 정의들, 배치 정책들 및 출자 정책들에 기초하여 추가로 정의될 수 있다. 단계 (875)에서, 유저 계정 이력 및 자원 풀은 하나 이상의 수요 정책들의 사용으로부터 구현되는 변화들을 표시하기 위해 업데이트될 수 있다. 예를 들어, 데이터센터 인덱스, 자원 인덱스, 및/또는 유저 계정 이력 (560)은 하나 이상의 요청된 자원들이 미리 생성되었거나 및/또는 한 명 이상의 유저들에게 할당되었다는 것을 표시하기 위해 업데이트될 수 있다.
일부 실시예들에서, 배치 정책기반, 출자 정책기반, 및 수요 정책 기반 자원 관리 및 할당을 제공하기 위한 상기 설명된 시스템들 및 프로세스들이 단일 자원 관리기에서 구현될 수 있다. 도 11은 본 발명의 실시예를 통합할 수 있는 네트워크 환경(900)의 간략화된 고차원 다이어그램을 도시한다. 도 11 에 도시된 바와 같이, 자원 관리기 (905) (예를 들어, 도면들 2, 4, 및 6에 대하여 각각 상기에서 설명된 자원 관리 시스템 (105) 또는 자원 관리기 (305); (505))는 유저들 (910) 및 (915)로부터의 요청들을 관리할 수 있다. 이들 요청들은 유저들 (910)로부터의 자원 출자 입찰들을 포함할 수 있고, 유저는 유저가 보유하거나, 소유하거나, 또는 그렇지 않으면, 제어하고 있는 하나 이상의 자원들을 자원 풀에 추가되도록 하기 위해 자원 관리기 (905)가 가용가능하도록 한다. 요청들은 자원 풀로부터의 하나 이상의 자원들에 대한 유저들 (915)로부터의 자원 요청들을 또한 포함할 수 있다. 유저들 (910) 및 유저들 (915)은 동일한 유저들, 상이한 유저들, 또는 그것의 임의 조합을 포함할 수 있다. 요청들은 네트워크 (920A 및/또는 920B)를 통해 자원 관리기 (905)에서 한 명 이상의 유저 (또는 클라이언트) 디바이스들로부터 수신될 수 있다. 일부 실시예들에서, 유저들 (910)은 상기에서 설명된 것 처럼 후속하여 또는 동시에 발생하는 자원 요청들에 적용될 수 있는 특정 기능 보장들, 디스카운트들, 또는 다른 인센티브들에 대한 대가로 자원들을 출자할 수 있다.
유저들 (910 및 915)은 통신 네트워크들 (920A 및 920B)을 통하여 자원 관리기 (905)에 통신가능하게 결합된다. 도 11에 도시된 실시예는 단지 예제이고 본 발명의 청구된 실시예들을 과도하게 제한하도록 의도되지 않는다. 관련 기술 분야에서의 통상의 기술자는 많은 변형예들, 대안들, 및 수정예들을 인식할 것이다. 예를 들어, 도 11에 도시된 것들보다 더 많거나 또는 더 적은 유저 디바이스들이 있을 수 있다. 유저 디바이스들은 한정되는 것은 아니지만 퍼스널 컴퓨터들, 데스크탑들, 모바일 또는 핸드헬드 디바이스들 예컨대 랩탑, 이동 전화, 태블릿, 등 및 다른 유형들의 디바이스들을 포함하는 다양하고 상이한 유형들을 가질 수 있다. 통신 네트워크들 (920A 및 920B)은 유저 디바이스들과 자원 관리기 (905) 사이의 통신을 가능하게 한다. 통신 네트워크들 (920A 및 920B)는 다양한 유형들을 가질 수 있고 하나 이상의 통신 네트워크들을 포함할 수 있다. 통신 네트워크들 (920A 및 920B)의 예들은 제한 없이, 인터넷, WAN(wide area network), LAN(local area network), 이더넷 네트워크, 공공 또는 사설 네트워크, 유선 네트워크, 무선 네트워크, 및 유사한 것, 및 그것의 조합들을 포함한다. 프로토콜들의 IEEE 802.XX 스위트, TCP/IP, IPX, SAN, AppleTalk, 블루투스, 및 다른 프로토콜들과 같은 유선 및 무선 프로토콜들 모두를 포함하는 다른 통신 프로토콜들이 통신을 가능하게 하기 위해 사용될 수 있다. 일반적으로, 통신 네트워크들 (920A 및 920B)는 클라이언트들과 자원 관리기 (905) 사이의 통신을 가능하게 하는 임의의 통신 네트워크 또는 인프라스트럭처를 포함할 수 있다.
유저들 (910)은 각각 하나 이상의 컴퓨팅 자원들 (925-1 내지 925-M)을 소유, 보유, 또는 그렇지 않으면, 제어할 수 있다. 예를 들어, 유저가 제어할 수 있는 다른 클라우드 인프라스트럭처 제공자로부터 특정 수의 컴퓨팅 노드들을 유저가 구매하였을 수 있다. 유사하게, 유저는 하나 이상의 가상 기계들을 운용할 수 있는 하이퍼바이저 풀을 제공하도록 구성된 네트워크 연결된 하드웨어 클러스터(hardware cluster)를 소유할 수 있다. 상기에서 설명된 것 처럼, 컴퓨팅 자원들은 네트워크들, 네트워크 대역폭, 서버들, POD들, 프로세싱, 메모리, 스토리지, 애플리케이션들, 가상 기계들, 서비스들, 등을 포함할 수 있다.
어떤 실시예들에서, 유저는 웹페이지 요청을 구성하기 위해 유저의 유저 디바이스에 의해 실행되는 프로그램 또는 애플리케이션을 사용할 수 있다. 이런 프로그램의 예제는 웹페이지 요청들을 생성하고 그리고 요청들에 응답하여 수신된 웹페이지들을 출력하는데 사용될 수 있는 웹 브라우저이다. 예를 들어, 유저는 웹페이지에 대응하는 URL(Uniform Resource Locator)을 브라우저에 제공함으로써 또는 웹페이지에 대응하는 URL을 호출하는 동작(예를 들어, URL을 클릭)을 취함으로써 웹페이지를 요청할 수 있다. 이것이 브라우저가 그 이후 특정 웹페이지를 호스트하는 웹사이트에 통신되는 웹페이지 요청을 생성하게 한다. 그런다음 페이지 요청에 응답하여 수신된 웹페이지가 로딩되고 그리고 브라우저에 의해 유저에게 출력된다. 브라우저들의 예제들은 제한없이 윈도우즈 IE(Internet Explorer), Apple Safari, Google Chrome, Mozilla Firefox, Opera, 및 다른 것들의 다양한 버전들을 포함한다.
상기에서 설명된 것 처럼, 유저들 (910)은 자원 관리기 (905)로 유저에 의해 출자되는 컴퓨팅 자원들을 상세히 열거하는 자원 입찰을 제출할 수 있다. 자원 관리기 (905)는 자원 입찰 인터페이스 (930)를 통하여 입찰을 수신할 수 있다. 유저들 (915)은 유저에 의해 요청되는 컴퓨팅 자원들을 상세히 열거하는 자원 요청(resource request)을 자원 관리기 (905)에 제출할 수 있다. 자원 관리기 (905)는 자원 요청 인터페이스 (955)를 통하여 요청을 수신할 수 있다. 자원 관리기 (905)는 정책 관리기 (935), 수요 모니터 (940), 자원 풀 (945), 및 유저 계정 이력 (950)을 포함할 수 있다. 이들 모듈들을 이용하여, 도면들 4 및 6에 관련하여 유사하게 설명된 것 처럼, 자원 관리기 (905)는 수요를 예상하여 자원들 및 자원들의 세트들을 미리 생성할 수 있고, 자원 출자들 및 요청들을 관리할 수 있고, 유저들이 도면들 1-10에 관련하여 상기에서 설명된 것 처럼 자원 요청들에 대하여 배치 정책들을 지정하는 것을 가능하게 할 수 있다. 유저들 (910 및 915)에 의해 그리고 해당 유저들에게 제공되는 자원들 및 자원들의 세트들은 상이한 지리적 영역들 (965A 및 965B)내에 위치될 수 있는 하나 이상의 데이터센터들 (960A-960I)에 위치될 수 있다.
도면들 1-11에 도시된 실시예들에서, 자원 관리기 (905)는 유저들 (910 및 915)로부터 자원 입찰들 및 자원 요청들을 수신하는 중앙 관리 플랫폼의 역할을 할 수 있다. 도 12는 본 발명의 교리들을 통합할 수 있는 대안 실시예(970)를 도시한다. 도 11에서의 공통 컴포넌트들은 동일한 도면 번호들을 이용하여 참조된다. 도 12에 도시된 실시예에 보여지는 바와 같이, 자원 관리 기능 및 요청 관리 기능이 서로 분리될 수 있다. 요청 관리기 (975)는 자원 입찰 인터페이스 (930) 및 자원 요청 인터페이스 (955)를 포함할 수 있다. 요청 관리기 (975)는 도면들 1-11에 관련하여 상기에서 설명된 실시예들에 실질적으로 유사하게 요청들을 분석하는 수요 모니터 (940) 및 유저 계정 이력 (950)을 또한 포함할 수 있다. 요청 관리기 (975)는 자원 관리기 (905)로 자원 및/또는 출자 요청들을 전달할 수 있다. 자원 관리기 (905)는 정책 관리기 (935) 및 자원 풀 (945)을 포함할 수 있다. 자원 관리기 (905)는 요청 관리기 (975)로부터 수신된 메시지들에 따라 데이터센터들 (960A-960I)과 통신할 수 있다.
도 13은 실시예를 구현하기 위한 분산 시스템 (1000)의 개략도를 도시한다. 예시된 실시예에서, 분산 시스템 (1000)은 하나 이상의 클라이언트 컴퓨팅 디바이스들 (1002, 1004, 1006, 및 1008)을 포함하고, 이들은 하나 이상의 네트워크(들) (1010)를 통해 클라이언트 애플리케이션 예컨대 웹 브라우저, 사설(proprietary) 클라이언트 (예를 들어, Oracle Forms), 또는 유사한 것을 실행하고 동작하도록 구성된다. 서버 (1012)는 네트워크 (1010)를 통하여 원격 클라이언트 컴퓨팅 디바이스들 (1002, 1004, 1006, 및 1008)과 통신 가능하게 결합될 수 있다.
다양한 실시예들에서, 서버 (1012)는 배치, 출자, 및/또는 수요 정책 기반 자원 할당을 위해 서비스들 및 애플리케이션들과 같은 하나 이상의 서비스들 또는 소프트웨어 애플리케이션들을 운용하도록 적응될 수 있다. 어떤 실시예들에서, 서버 (1012)는 비-가상 및 가상의 환경들을 포함할 수 있는 다른 서비스들 또는 소프트웨어 애플리케이션들을 또한 제공할 수 있다. 일부 실시예들에서, 이들 서비스들은 클라이언트 컴퓨팅 디바이스들 (1002, 1004, 1006, 및/또는 1008)의 유저들에게 웹 기반 또는 클라우드 서비스들로서 또는 SaaS 모델하에서 공급될 수 있다. 클라이언트 컴퓨팅 디바이스들 (1002, 1004, 1006, 및/또는 1008)을 동작하는 유저들은 이들 컴포넌트들에 의해 제공되는 서비스들을 사용하기 위해 서버 (1012)와 상호작용하는 하나 이상의 클라이언트 애플리케이션들을 차례로 사용할 수 있다.
도 13에 도시된 구성에서, 시스템 (1000)의 소프트웨어 컴포넌트들 (1018, 1020 및 1022)이 서버 (1012)상에서 구현되는 것으로 도시된다. 다른 실시예들에서, 시스템 (1000)의 하나 이상의 컴포넌트들 및/또는 이들 컴포넌트들에 의해 제공되는 서비스들이 하나 이상의 클라이언트 컴퓨팅 디바이스들 (1002, 1004, 1006, 및/또는 1008)에 의해 또한 구현될 수 있다. 클라이언트 컴퓨팅 디바이스들을 동작하는 유저들은 그런 다음 이들 컴포넌트들에 의해 제공되는 서비스들을 이용하기 위해 하나 이상의 클라이언트 애플리케이션들을 사용할 수 있다. 이들 컴포넌트들은 하드웨어, 펌웨어, 소프트웨어, 또는 그것의 조합들로 구현될 수 있다. 다양하고 상이한 시스템 구성들이 가능하고, 이들은 분산 시스템 (1000)과 다를 수 있다는 것이 이해되어야 한다. 도 13에 도시된 실시예는 따라서 실시예의 시스템을 구현하기 위한 분산 시스템의 일 예제이고 한정되는 것으로 의도되지 않는다.
클라이언트 컴퓨팅 디바이스들 (1002, 1004, 1006, 및/또는 1008)은 다양한 유형들의 컴퓨팅 시스템들을 포함할 수 있다. 예를 들어, 클라이언트 컴퓨팅 디바이스는 Microsoft Windows Mobile®, 및/또는 여러 가지 모바일 운영 체제들 예컨대 iOS, Windows Phone, Android, BlackBerry 10, Palm OS, 및 유사한 것과 같은 소프트웨어를 운용하는 휴대용 핸드헬드 디바이스들 (예를 들어, iPhone®, 셀룰러 전화기, iPad®, 컴퓨팅 태블릿, 개인 디지털 보조장치 (PDA)) 또는 착용가능한 디바이스들 (예를 들어, Google Glass® HMD(head mounted display))를 포함할 수 있다. 디바이스들은 다양한 인터넷-관련 앱들, 이메일, SMS(short message service) 애플리케이션들과 같은 다양한 애플리케이션들을 지원할 수 있고, 그리고 다양한 다른 통신 프로토콜들을 사용할 수 있다. 클라이언트 컴퓨팅 디바이스들은 예로서, Microsoft Windows®, Apple Macintosh®, 및/또는 Linux 운영 체제들의 다양한 버전들을 운용하는 퍼스널 컴퓨터들 및/또는 랩탑 컴퓨터들을 포함하는 범용 퍼스널 컴퓨터들을 또한 포함할 수 있다. 클라이언트 컴퓨팅 디바이스들은 제한없이 예를 들어, Google Chrome OS과 같은 다양한 GNU/리눅스 운영 체제들을 포함하는 임의의 여러 가지 상업적으로-가용 가능한 UNIX® 또는 UNIX-유사 운영 체제들을 운용하는 워크스테이션 컴퓨터들일 수 있다. 클라이언트 컴퓨팅 디바이스들은 네트워크(들) (1010)을 통하여 통신하는 것이 가능한, 씬-클라이언트(thin-client) 컴퓨터, 인터넷-가능한 게임 시스템 (예를 들어, Kinect® 제스처 입력 디바이스를 갖거나 또는 그것을 갖지 않는 Microsoft Xbox 게임 콘솔), 및/또는 퍼스널 메시지 디바이스와 같은 전자 디바이스들을 또한 포함할 수 있다.
비록 도 13의 분산 시스템 (1000)은 네개의 클라이언트 컴퓨팅 디바이스들을 갖는 것으로 도시되지만, 임의 개수의 클라이언트 컴퓨팅 디바이스들이 지원될 수 있다. 다른 디바이스들, 예컨대 센서들을 갖는 디바이스들, 등이 서버 (1012)와 상호 작용할 수 있다.
분산 시스템 (1000)내 네트워크(들) (1010)은 제한없이 TCP/IP (transmission control protocol/Internet protocol), SNA (systems network architecture), IPX (Internet packet exchange), AppleTalk, 및 유사한 것을 포함하는 임의의 여러 가지 가용 가능한 프로토콜들을 이용하여 데이터 통신을 지원할 수 있는 당해 기술분야의 통상의 기술자들에 익숙한 임의의 유형의 네트워크일 수 있다. 단지 예시로서, 네트워크(들) (1010)은 LAN(local area network), 이더넷에 기반된 네트워크들, 토큰-링, 광역 네트워크, 인터넷, 가상 네트워크, VPN(virtual private network), 인트라넷, 엑스트라넷(extranet), PSTN(public switched telephone network), 적외선 네트워크, 무선 네트워크 (예를 들어, 임의의 IEEE(Institute of Electrical and Electronics) 1002.11 프로토콜들의 스위트 하에서 동작하는 네트워크, Bluetooth®, 및/또는 임의의 다른 무선 프로토콜), 및/또는 이들 및/또는 다른 네트워크들의 임의의 조합일 수 있다.
서버 (1012)는 하나 이상의 범용 컴퓨터들, 특화된 서버 컴퓨터들 (예로서, PC (personal computer) 서버들, UNIX® 서버들, 중간급(mid-range) 서버들, 메인프레임 컴퓨터들, 랙-실장된(rack-mounted) 서버들, 등을 포함), 서버 팜들(farms), 서버 클러스터들, 또는 임의의 다른 적절한 배열 및/또는 조합으로 구성될 수 있다. 서버 (1012)는 가상 운영 체제들을 운용하는 하나 이상의 가상 기계들, 또는 가상화를 수반하는 다른 컴퓨팅 아키텍처들을 포함할 수 있다. 로직 스토리지 디바이스들의 하나 이상의 유연한 풀들이 서버를 위한 가상 스토리지 디바이스들을 유지하기 위해 가상화될 수 있다. 가상 네트워크들은 소프트웨어 정의된 네트워킹을 이용하여 서버 (1012)에 의해 제어될 수 있다. 다양한 실시예들에서, 서버 (1012)는 앞에서의 개시에 설명된 하나 이상의 서비스들 또는 소프트웨어 애플리케이션들을 운용하도록 맞춰질 수 있다. 예를 들어, 서버 (1012)는 본 개시의 실시예에 따라 상기에서 설명된 프로세싱을 수행하기 위한 서버에 대응할 수 있다.
서버 (1012)는 상기에서 논의된 것들 중 임의의 것, 뿐만 아니라 임의의 상업적으로 가용 가능한 서버 운영 체제를 포함하는 운영 체제를 운용할 수 있다. 서버 (1012)는 임의의 여러 가지 추가적인 서버 애플리케이션들 및/또는 미드-티어(mid-tier) 애플리케이션들을 또한 운용할 수 있고, 이는 HTTP (hypertext transport protocol) 서버들, FTP (file transfer protocol) 서버들, CGI (common gateway interface) 서버들, JAVA® 서버들, 데이터베이스 서버들, 및 유사한 것을 포함한다. 예시적인 데이터베이스 서버들은 제한 없이 Oracle, Microsoft, Sybase, IBM (International Business Machines), 및 유사한 것으로부터 상업적으로 가용 가능한 것들을 포함한다.
일부 구현예들에서, 서버 (1012)는 클라이언트 컴퓨팅 디바이스들 (1002, 1004, 1006, 및 1008)의 유저들로부터 수신된 데이터 피드(data feed)들 및/또는 이벤트 업데이트들을 분석하고 통합하기 위한 하나 이상의 애플리케이션들을 포함할 수 있다. 일 예로서, 데이터 피드들 및/또는 이벤트 업데이트들은 Twitter® 피드들, Facebook® 업데이트들 또는 센서 데이터 애플리케이션들, 금융 티커들(tickers), 네트워크 성능 측정 툴들 (예를 들어, 네트워크 모니터링 및 트래픽 관리 애플리케이션들), 클릭스트림(clickstream) 분석 툴들, 자동차 트래픽 모니터링, 및 유사한 것에 관련된 실시간 이벤트를 포함할 수 있는 하나 이상의 제 3 자 정보 소스들 및 연속적인 데이터 스트림들로부터 수신된 실시간 업데이트들을 포함할 수 있지만, 그러나, 이것에 한정되지는 않는다. 서버 (1012)는 클라이언트 컴퓨팅 디바이스들 (1002, 1004, 1006, 및 1008)의 하나 이상의 디스플레이 디바이스들을 통하여 데이터 피드들 및/또는 실시간 이벤트들을 디스플레이하기 위한 하나 이상의 애플리케이션들을 또한 포함할 수 있다.
분산 시스템 (1000)은 하나 이상의 데이터베이스들 (1014 및 1016)을 또한 포함할 수 있다. 이들 데이터베이스들은 정보 예컨대 유저 요청 및/또는 출자 이력들, 수요 정책 기반 자원 상관 정보, 정책 정의들, 및 본 발명의 실시예들에 의해 사용되는 다른 정보를 저장하기 위한 메커니즘을 제공할 수 있다. 데이터베이스들 (1014 및 1016)은 여러 위치들에 상주될 수 있다. 예로서, 하나 이상의 데이터베이스들 (1014 및 1016)은 서버 (1012)에 대하여 로컬인 (및/또는 서버 안에 상주하는) 비-일시적 스토리지 매체상에 상주할 수 있다. 대안적으로, 데이터베이스들 (1014 및 1016)은 서버 (1012)로부터 원격일 수 있고 네트워크기반 또는 전용 연결을 통하여 서버 (1012)와 통신상태에 있을 수 있다. 실시예들의 하나의 세트에서, 데이터베이스들 (1014 및 1016)은 SAN(storage-area network)에 상주할 수 있다. 유사하게, 서버 (1012)에서 기인되는 기능들을 수행하기 위한 임의의 필요한 파일들이 적절하게 서버 (1012)상의 로컬에 및/또는 원격에 저장될 수 있다. 실시예들의 하나의 세트에서, 데이터베이스들 (1014 및 1016)는 SQL-포맷된 명령어들에 응답하여 데이터를 저장, 업데이트 및 검색하도록 맞춰진 Oracle에 의해 제공된 데이터베이스들과 같은 관계형 데이터베이스(relational database)들을 포함할 수 있다.
일부 실시예들에서, 클라우드 환경이 배치, 출자, 및/또는 수요 정책 기반 자원 할당을 위한 하나 이상의 서비스들을 제공할 수 있다. 도 14는 본 발명의 일 실시예에 따른 서비스들이 클라우드 서비스들로서 제공될 수 있는 시스템 환경(1100)의 하나 이상의 컴포넌트들의 간략화된 블럭도이다. 도 14에 예시된 실시예에서, 시스템 환경 (1100)은 배치, 출자, 및/또는 수요 정책 기반 자원 할당을 위한 서비스들을 포함하는 클라우드 서비스들을 제공하는 클라우드 인프라스트럭처 시스템 (1102)과 상호 작용하기 위해 유저들에 의해 사용될 수 있는 하나 이상의 클라이언트 컴퓨팅 디바이스들 (1104, 1106, 및 1108)을 포함한다. 클라우드 인프라스트럭처 시스템 (1102)은 서버 (1012)에 대하여 상기에서 설명된 것들을 포함할 수 있는 하나 이상의 서버들 및/또는 컴퓨터들을 포함할 수 있다.
도 14에 도시된 클라우드 인프라스트럭처 시스템 (1102)은 도시된 것들과 다른 컴포넌트들을 가질 수 있다는 것이 이해되어야 한다. 더구나, 도 14에 도시된 실시예는 본 발명의 실시예를 통합할 수 있는 클라우드 인프라스트럭처 시스템의 단지 일 예이다. 일부 다른 실시예들에서, 클라우드 인프라스트럭처 시스템 (1102)는 도면에 도시된 것보다 더 많거나 또는 더 적은 컴포넌트들을 가질 수 있거나, 두개 이상의 컴포넌트들을 조합할 수 있거나, 또는 상이한 구성 또는 배열의 컴포넌트들을 가질 수 있다.
클라이언트 컴퓨팅 디바이스들 (1104, 1106, 및 1108)은 클라이언트 컴퓨팅 디바이스들 (1002, 1004, 1006, 및 1008)에 대하여 상기에서 설명된 것들에 유사한 디바이스들 일 수 있다. 클라이언트 컴퓨팅 디바이스들 (1104, 1106, 및 1108)은 웹 브라우저, 사설 클라이언트 애플리케이션 (예를 들어, Oracle Forms), 또는 클라우드 인프라스트럭처 시스템 (1102)에 의해 제공되는 서비스들을 사용하기 위해 클라우드 인프라스트럭처 시스템 (1102)과 상호 작용하는 클라이언트 컴퓨팅 디바이스의 유저에 의해 사용될 수 있는 일부 다른 애플리케이션과 같은 클라이언트 애플리케이션을 동작하도록 구성될 수 있다. 비록 예시의 시스템 환경(1100)은 세개의 클라이언트 컴퓨팅 디바이스들을 갖는 것으로 도시되지만, 임의 개수의 클라이언트 컴퓨팅 디바이스들이 지원될 수 있다. 다른 디바이스들, 예컨대 센서들을 갖는 디바이스들, 등이 클라우드 인프라스트럭처 시스템 (1102)과 상호 작용할 수 있다.
네트워크(들) (1110)은 클라이언트 컴퓨팅 디바이스들 (1104, 1106, 및 1108)과 클라우드 인프라스트럭처 시스템 (1102)간의 데이터 통신 및 교환을 가능하게 할 수 있다. 각각의 네트워크는 네트워크(들) (1010)에 대하여 상기에서 설명된 것들을 포함하여 임의의 여러 가지 상업적으로-가용 가능한 프로토콜들을 이용하여 데이터 통신을 지원할 수 있는 당해 기술분야의 통상의 기술자들에 익숙한 임의의 유형의 네트워크일 수 있다.
어떤 실시예들에서, 클라우드 인프라스트럭처 시스템 (1102)에 의해 제공되는 서비스들은 수요에 기해 클라우드 인프라스트럭처 시스템의 유저에게 가용가능하게 되는 서비스들의 호스트를 포함할 수 있다. 배치, 출자, 및/또는 수요 정책 기반 자원 할당에 관련된 서비스들에 추가하여, 다양한 다른 서비스들이 또한 제한없이 온라인 데이터 스토리지 및 백업 솔루션들, 웹 기반 이메일 서비스들, 호스트되는 오피스 스위트들 및 문서 협업 서비스들, 데이터베이스 프로세싱, 관리되는 기술 지원 서비스들, 및 유사한 것을 포함하여 제공될 수 있다. 클라우드 인프라스트럭처 시스템에 의해 제공되는 서비스들은 그것의 유저들의 요구들을 충족시키기 위해 동적으로 확장할 수 있다.
어떤 실시예들에서, 클라우드 인프라스트럭처 시스템 (1102)에 의해 제공되는 서비스의 특정 인스턴스화(instantiation)는 "서비스 인스턴스(service instance)"로서 본 출원에서 언급될 수 있다. 일반적으로, 클라우드 서비스 제공자의 시스템으로부터 인터넷과 같은 통신 네트워크를 통하여 유저에게 가용가능하게 되는 임의의 서비스는 "클라우드 서비스(cloud service)"로 지칭된다. 전형적으로, 공공 클라우드 환경(public cloud environment)에서, 클라우드 서비스 제공자의 시스템을 구성하는 서버들 및 시스템들은 유저 자신의 사내(on-premises) 서버들 및 시스템들과 다르다. 예를 들어, 클라우드 서비스 제공자의 시스템은 애플리케이션을 호스트 할 수 있고 유저는 인터넷과 통신 네트워크를 통하여, 애플리케이션을 수요에 따라 주문 및 사용할 수 있다.
일부 예제들에서, 컴퓨터 네트워크 클라우드 인프라스트럭처내 서비스는 스토리지, 호스트 데이터베이스, 호스트 웹 서버, 소프트웨어 애플리케이션, 또는 유저에게 클라우드 벤더에 의해 제공되는 다른 서비스, 또는 다른 식으로 관련 기술 분야에서 알려진 것에 대한 보호된 컴퓨터 네트워크 액세스를 포함할 수 있다. 예를 들어, 서비스는 인터넷을 통하여 클라우드상의 원격 스토리지에 대한 패스워드-보호된 액세스를 포함할 수 있다. 다른 예로서, 서비스는 네트워크화된 개발자에 의한 개인적 사용을 위한 웹 서비스기반으로 호스트되는 관계형 데이터베이스 및 스크립트-언어 미들웨어 엔진을 포함할 수 있다. 다른 예로서, 서비스는 클라우드 벤더의 웹 사이트 상에서 호스트되는 이메일 소프트웨어 애플리케이션에 대한 액세스를 포함할 수 있다.
어떤 실시예들에서, 클라우드 인프라스트럭처 시스템 (1102)은 셀프-서비스, 청약기반, 탄력적으로 확장가능한, 신뢰할 수 있는, 고 가용 가능한, 및 안전한 방식으로 유저에게 전달되는 애플리케이션들의 스위트, 미들웨어, 및 데이터베이스 서비스 공급들을 포함할 수 있다. 이런 클라우드 인프라스트럭처 시스템의 예제는 현 양수인에 의해 제공되는 Oracle Public Cloud이다.
클라우드 인프라스트럭처 시스템 (1102)은 "빅 데이터(big data)" 관련 계산 및 분석 서비스들을 또한 제공할 수 있다. 용어 "빅 데이터(big data)"는 일반적으로 큰 양의 데이터를 시각화하고, 트렌드들을 감지하고, 및/또는 다른식으로 데이터와 상호 작용하기 위해 분석가들 및 연구가들에 의해 저장되고 조작될 수 있는 극도로 큰 데이터 세트들을 지칭하기 위해 사용된다. 이 빅 데이터 및 관련 애플리케이션들은 많은 레벨들 상에서 그리고 상이한 스케일들에서 인프라스트럭처 시스템에 의해 호스트 및/또는 조작될 수 있다. 병렬로 링크된 수십, 수백, 또는 수천의 프로세서들이 데이터를 표현하거나 또는 데이터에 또는 데이터가 나타내는 것에 대한 외부 영향력(external force)들을 시뮬레이션하기 위해 이런 데이터에 작용할 수 있다. 이들 데이터 세트들은 데이터베이스에 또는 그렇지 않으면, 구조화된 모델, 및/또는 구조화되지 않은 데이터 (예를 들어, 이메일들, 이미지들, 데이터 blobs (binary large objects), 웹 페이지들, 복잡한 이벤트 프로세싱)에 따라 조직화된 것과 같은 구조화된 데이터(structured data)를 수반할 수 있다. 대상(objective)에 더 많거나 (또는 더 적은) 컴퓨팅 자원들을 상대적으로 빠르게 집중시키기 위해 실시예의 능력을 레버리지(leverage)함으로써, 클라우드 인프라스트럭처 시스템은 비즈니스, 정부관계 기관, 연구 조직, 개인, 동호회 또는 조직들의 그룹, 또는 다른 엔티티로부터의 수요에 기초하여 큰 데이터 세트들에 태스크(task)등을 실행하기 위해 더 잘 가용 가능하게 될 수 있다.
다양한 실시예들에서, 클라우드 인프라스트럭처 시스템 (1102)은 클라우드 인프라스트럭처 시스템 (1102)에 의해 제공되는 서비스들에 대한 유저의 청약을 자동으로 프로비전, 관리 및 추적하도록 맞춰질 수 있다. 클라우드 인프라스트럭처 시스템 (1102)은 상이한 전개 모델(deployment model)들을 통하여 클라우드 서비스들을 제공할 수 있다. 예를 들어, 클라우드 인프라스트럭처 시스템 (1102)이 클라우드 서비스들을 판매하는 조직에 의해 소유되고(예를 들어, Oracle 회사에 의해 소유되는), 서비스들은 일반 공중 또는 다른 산업 기업들에 가용가능하게 되는 공공형 클라우드 모델하에서 서비스들이 제공될 수 있다. 다른 예로서, 서비스들은 클라우드 인프라스트럭처 시스템 (1102)이 오로지 단일 조직을 위해서만 운용되고 그리고 조직내 하나 이상의 엔티티들에 서비스들을 제공할 수 있는 사설 클라우드 모델하에서 제공될 수 있다. 클라우드 서비스들은 클라우드 인프라스트럭처 시스템 (1102) 및 클라우드 인프라스트럭처 시스템 (1102)에 의해 제공되는 서비스들이 관련 단체내 몇몇의 조직들에 의해 공유되는 단체 클라우드 모델하에서 또한 제공될 수 있다. 클라우드 서비스들은 두개 이상의 상이한 모델들의 조합인 하이브리드 클라우드 모델하에서 또한 제공될 수 있다.
일부 실시예들에서, 클라우드 인프라스트럭처 시스템 (1102)에 의해 제공되는 서비스들은 SaaS 카테고리, PaaS 카테고리, IaaS 카테고리하에서 제공되는 하나 이상의 서비스들, 또는 하이브리드 서비스들을 포함하는 다른 카테고리들의 서비스들을 포함할 수 있다. 청약 주문을 통하여 유저는 클라우드 인프라스트럭처 시스템 (1102)에 의해 제공되는 하나이상의 서비스들을 주문할 수 있다. 클라우드 인프라스트럭처 시스템 (1102)은 그런다음 유저의 청약 주문내의 서비스들을 제공하기 위해 프로세싱을 수행한다.
일부 실시예들에서, 클라우드 인프라스트럭처 시스템 (1102)에 의해 제공되는 서비스들은 제한없이, 애플리케이션 서비스들, 플랫폼 서비스들 및 인프라스트럭처 서비스들을 포함할 수 있다. 일부 예들에서, 애플리케이션 서비스들은 SaaS 플랫폼을 통하여 클라우드 인프라스트럭처 시스템에 의해 제공될 수 있다. SaaS 플랫폼은 SaaS 카테고리에 해당하는 클라우드 서비스들을 제공하도록 구성될 수 있다. 예를 들어, SaaS 플랫폼은 통합 개발 및 배치 플랫폼상에 주문형 애플리케이션들의 스위트를 구축 및 전달하는 성능들을 제공할 수 있다. SaaS 플랫폼은 SaaS 서비스들을 제공하기 위해 하위(underlying) 소프트웨어 및 인프라스트럭처를 관리 및 제어할 수 있다. SaaS 플랫폼에 의해 제공되는 서비스들을 사용함으로써, 유저들은 클라우드 인프라스트럭처 시스템상에서 실행하는 애플리케이션들을 사용할 수 있다. 유저들이 별개의 라이센스들 및 지원을 구매할 필요없이 유저들은 애플리케이션 서비스들을 획득할 수 있다. 다양하고 상이한 SaaS 서비스들이 제공될 수 있다. 예제들은 제한없이 큰 조직들을 위한 매출 실적 관리, 기업 통합 및 비즈니스 유연성을 위한 솔루션들을 제공하는 서비스들을 포함한다.
일부 실시예들에서, 플랫폼 서비스들은 PaaS 플랫폼을 통하여 클라우드 인프라스트럭처 시스템 (1102)에 의해 제공될 수 있다. PaaS 플랫폼은 PaaS 카테고리에 해당하는 클라우드 서비스들을 제공하도록 구성될 수 있다. 플랫폼 서비스들의 예제들은 제한없이 플랫폼에 의해 제공된 공유 서비스들을 레버리지하는 새로운 애플리케이션들을 구축하는 능력 뿐만 아니라 조직들 (예컨대 Oracle)이 공유된, 공통 아키텍처상에 현존하는 애플리케이션들을 통합하는 것을 가능하게 하는 서비스들을 포함할 수 있다. PaaS 플랫폼은 PaaS 서비스들을 제공하기 위해 하위 소프트웨어 및 인프라스트럭처를 관리 및 제어할 수 있다. 유저들이 별개의 라이센스들 및 지원을 구매할 필요 없이 클라우드 인프라스트럭처 시스템 (1102)에 의해 제공되는 PaaS 서비스들을 유저들은 획득할 수 있다. 플랫폼 서비스들의 예제들은 제한없이 Oracle JCS(Java Cloud Service), Oracle DBCS(Database Cloud Service), 및 다른 것들을 포함한다.
PaaS 플랫폼에 의해 제공되는 서비스들을 사용함으로써, 유저들은 클라우드 인프라스트럭처 시스템에 의해 지원되는 프로그래밍 언어들 및 툴들을 채용할 수 있고 그리고 전개된 서비스들을 또한 제어할 수 있다. 일부 실시예들에서, 클라우드 인프라스트럭처 시스템에 의해 제공되는 플랫폼 서비스들은 데이터베이스 클라우드 서비스들, 미들웨어 클라우드 서비스들 (예를 들어, Oracle Fusion Middleware 서비스들)및 Java 클라우드 서비스들을 포함할 수 있다. 일 실시예에서, 데이터베이스 클라우드 서비스들은 조직들이 데이터베이스 클라우드의 형태로 서비스로서의 데이터베이스를 유저들에게 공급하고 그리고 데이터베이스 자원들을 모으는 것을 가능하게 하는 공유 서비스 전개 모델들을 지원할 수 있다. 미들웨어 클라우드 서비스들은 다양한 비즈니스 애플리케이션들을 개발 및 전개하기 위한 플랫폼을 유저들에게 제공할 수 있고, Java 클라우드 서비스들은 클라우드 인프라스트럭처 시스템 내 Java 애플리케이션들을 전개하기 위한 플랫폼을 유저들에게 제공할 수 있다.
다양하고 상이한 인프라스트럭처 서비스들은 클라우드 인프라스트럭처 시스템 내 IaaS 플랫폼에 의해 제공될 수 있다. 인프라스트럭처 서비스들은 SaaS 플랫폼 및 PaaS 플랫폼에 의해 제공되는 서비스들을 이용하여 유저들이 스토리지, 네트워크들, 및 다른 기본적인 컴퓨팅 자원들과 같은 하위 컴퓨팅 자원들을 관리 및 제어를 가능하게 한다.
어떤 실시예들에서, 클라우드 인프라스트럭처 시스템 (1102)은 클라우드 인프라스트럭처 시스템의 유저들에게 다양한 서비스들을 제공하기 위해 사용되는 자원들을 제공하기 위한 인프라스트럭처 자원들 (1130)을 또한 포함할 수 있다. 일 실시예에서, 인프라스트럭처 자원들 (1130)은 PaaS 플랫폼 및 SaaS 플랫폼 및 다른 자원들에 의해 제공되는 서비스들을 실행하기위해 서버들, 스토리지 및 네트워킹 자원들과 같은 하드웨어의 미리 통합되고 최적화된 조합들을 포함할 수 있다.
일부 실시예들에서, 클라우드 인프라스트럭처 시스템 (1102)내 자원들은 다수의 유저들에 의해 공유될 수 있고 각 수요에 대하여 동적으로 재할당될 수 있다. 추가적으로, 자원들은 상이한 시간 존들으로 유저들에게 할당될 수 있다. 예를 들어, 클라우드 인프라스트럭처 시스템 (1102)은 유저들의 제 1 세트가 제 1 시간 존에 지정된 수의 시간들 동안에 클라우드 인프라스트럭처 시스템의 자원들을 사용하는 것을 가능하게 할 수 있고 그런다음 상이한 시간 존 내에 위치된 유저들의 다른 세트에 동일한 자원의 재할당을 가능하게 할 수 있어서, 그에 의해 자원들의 사용을 최대화한다.
어떤 실시예들에서, 클라우드 인프라스트럭처 시스템 (1102)에 의한 서비스들의 프로비전을 가능하게 하기 위해 클라우드 인프라스트럭처 시스템 (1102)의 상이한 컴포넌트들 또는 모듈들에 의해 공유되는 많은 내부 공유 서비스들 (1132)이 제공될 수 있다. 이들 내부 공유 서비스들은 제한없이, 보안 및 아이덴티티(identity) 서비스, 통합 서비스, 기업 저장소 서비스, EM(enterprise manager) 서비스, 바이러스 스캐닝 및 화이트 리스트 서비스, 고 가용 가능성, 백업 및 복원 서비스, 클라우드 지원을 가능하게 하는 서비스, 이메일 서비스, 통지 서비스, 파일 전송 서비스, 및 유사한 것을 포함할 수 있다.
어떤 실시예들에서, 클라우드 인프라스트럭처 시스템 (1102)은 클라우드 인프라스트럭처 시스템 내 클라우드 서비스들 (예를 들어, SaaS, PaaS, IaaS 서비스들)의 포괄적인 관리를 제공할 수 있다. 일 실시예에서, 클라우드 관리 기능은 클라우드 인프라스트럭처 시스템 (1102)에 의해 수신된 유저의 청약에 대한 프로비저닝, 관리 및 추적을 위한 성능들, 및 유사한 것을 포함할 수 있다.
일 실시예에서, 도 14에 도시된 바와 같이, 클라우드 관리 기능은 하나 이상의 모듈들, 예컨대 주문 관리 모듈 (1120), 주문 오케스트레이션(orchestration) 모듈 (1122), 주문 프로비저닝 모듈 (1124), 주문 관리 및 모니터링 모듈 (1126), 및 아이덴티티 관리 모듈 (1128)에 의해 제공될 수 있다. 이들 모듈들은 범용 컴퓨터들, 특화된 서버 컴퓨터들, 서버 팜들(farms), 서버 클러스터들, 또는 임의의 다른 적절한 배열 및/또는 조합일 수 있는 하나 이상의 컴퓨터들 및/또는 서버들을 포함할 수 있거나 또는 그것들을 이용하여 제공될 수 있다.
예시적인 동작, (1134)에서, 클라이언트 디바이스, 예컨대 컴퓨팅 디바이스들 (1104, 1106 또는 1108)을 이용하여 유저는 클라우드 인프라스트럭처 시스템 (1102)에 의해 제공되는 하나 이상의 서비스들을 요청함으로써 그리고 클라우드 인프라스트럭처 시스템 (1102)에 의해 제공되는 하나 이상의 서비스들에 대한 청약 주문을 함으로써 클라우드 인프라스트럭처 시스템 (1102)과 상호 작용할 수 있다. 어떤 실시예들에서, 유저는 클라우드 UI(user interface) 예컨대 클라우드 UI (1112), 클라우드 UI (1114) 및/또는 클라우드 UI (1116)를 액세스할 수 있고 그리고 이들 UI들을 통하여 청약 주문을 할 수 있다. 주문을 한 유저에 응답하여 클라우드 인프라스트럭처 시스템 (1102)에 의해 수신된 주문 정보는 유저를 식별하는 정보 및 유저가 청약하려고 하는 클라우드 인프라스트럭처 시스템 (1102)에 의해 제공되는 하나 이상의 서비스들을 포함할 수 있다.
(1136)에서, 유저로부터 수신된 주문 정보는 주문 데이터베이스 (1118)에 저장될 수 있다. 만약 이것이 새로운 주문이면, 새로운 레코드(record)가 주문에 대하여 생성될 수 있다. 일 실시예에서, 주문 데이터베이스 (1118)는 클라우드 인프라스트럭처 시스템 (1118)에 의해 동작되고 다른 시스템 엘리먼트들과 함께 동작되는 몇몇의 데이터베이스들 중 하나일 수 있다.
(1138)에서, 주문 정보는 주문과 관련된 과금(billing) 및 회계(accounting) 기능들, 예컨대 주문을 확인하고, 확인에 기초하여, 주문 예약을 수행하도록 구성될 수 있는 주문 관리 모듈 (1120)로 포워딩 될 수 있다.
(1140)에서, 주문 관련 정보는 유저에 의해 행해진 주문에 대한 서비스들 및 자원들의 프로비저닝을 조정하도록 구성된 주문 오케스트레이션 모듈 (1122)에 전달될 수 있다. 일부 경우들에서, 주문 오케스트레이션 모듈 (1122)은 프로비저닝을 위해 주문 프로비저닝 모듈 (1124)의 서비스들을 이용할 수 있다. 어떤 실시예들에서, 주문 오케스트레이션 모듈 (1122)은 각각의 주문과 관련된 비지니스 프로세스들의 관리를 가능하게 하고 주문이 프로비저닝으로 진행하여야 하는지 여부를 결정하기 위해 비즈니스 로직에 적용한다.
도 14에 도시된 실시예에 보여진 바와 같이, (1142)에서, 새로운 청약에 대한 주문 수신시, 주문 오케스트레이션 모듈 (1122)은 청약 주문을 충족시키기 위해 요구되는 자원들을 구성하고 자원들을 할당하기 위해 주문 프로비저닝 모듈 (1124)로 요청을 발송한다. 주문 프로비저닝 모듈 (1124)은 유저에 의해 주문된 서비스들을 위한 자원들의 할당을 가능하게 한다. 주문 프로비저닝 모듈 (1124)은 클라우드 인프라스트럭처 시스템 (1100)에 의해 제공되는 클라우드 서비스들과 요청된 서비스들을 제공하기 위해 자원들을 프로비저닝 하는데 사용되는 물리적 구현 계층 사이의 추상적 개념(abstraction)의 계층(level)을 제공한다. 이것은 서비스들 및 자원들이 실제로 즉시(on the fly) 프로비저닝되거나 또는 미리-프로비저닝되고 요청시에만 할당되고/배정되는지 아닌지와 같은 구현 세부사항들로부터 주문 오케스트레이션 모듈 (1122)이 분리되는 것을 가능하게 한다.
(1144)에서, 서비스들 및 자원들이 프로비저닝되면, 요청된 서비스가 이제 이용할 준비가 된 것을 표시하는 통지가 청약 유저들에게 발송될 수 있다. 일부 경우에, 요청된 서비스들을 이용하여 유저가 시작하는 것을 가능하게 하는 정보 (예를 들어, 링크)가 유저에게 발송될 수 있다.
(1146)에서, 유저의 청약 주문은 주문 관리 및 모니터링 모듈 (1126)에 의해 관리 및 추적될 수 있다. 일부 경우들에서, 주문 관리 및 모니터링 모듈 (1126)은 청약된 서비스들의 유저 이용에 관련하여 사용량 통계(usage statistics)를 수집하도록 구성될 수 있다. 예를 들어, 통계는 사용된 스토리지의 양, 전송된 데이터의 양, 유저들의 수, 및 시스템 업 시간(up time) 및 시스템 다운 시간(down time)의 양, 및 유사한 것에 대하여 수집될 수 있다.
어떤 실시예들에서, 클라우드 인프라스트럭처 시스템 (1100)은 클라우드 인프라스트럭처 시스템 (1100)내 액세스 관리 및 인증 서비스들과 같은 아이덴티티 서비스들을 제공하도록 구성된 아이덴티티 관리 모듈 (1128)을 포함할 수 있다. 일부 실시예들에서, 아이덴티티 관리 모듈 (1128)은 클라우드 인프라스트럭처 시스템 (1102)에 의해 제공되는 서비스들을 사용하기를 원하는 유저들에 대한 정보를 제어할 수 있다. 이런 정보는 이런 유저들의 아이덴티티들을 인증하는 정보 및 해당 유저들은 어떤 동작들이 다양한 시스템 자원들 (예를 들어, 파일들, 디렉토리들, 애플리케이션들, 통신 포트들, 메모리 세그먼트들, 등)에 관하여 수행하는 것이 허가되는지를 설명하는 정보를 포함한다. 아이덴티티 관리 모듈 (1128)은 각각의 유저에 대한 설명 정보 그리고 해당 설명 정보가 어떻게 그리고 누구에 의해 액세스될 수 있고 변형될 수 있는지에 대한 설명 정보의 관리를 또한 포함할 수 있다.
도 15는 본 발명의 실시예를 구현하기 위해 사용될 수 있는 예시적인 컴퓨터 시스템(1200)을 예시한다. 일부 실시예들에서, 컴퓨터 시스템 (1200)은 상기에서 설명된 임의의 다양한 서버들 및 컴퓨터 시스템들을 구현하기 위해 사용될 수 있다. 도 15에 도시된 바와 같이, 컴퓨터 시스템 (1200)은 버스 서브시스템 (1202)을 통하여 많은 주변기기 서브시스템들과 통신하는 프로세싱 유닛 (1204)을 포함하는 다양한 서브시스템들을 포함한다. 이들 주변기기 서브시스템들은 프로세싱 가속 유닛 (1206), I/O 서브시스템 (1208), 스토리지 서브시스템 (1218) 및 통신 서브시스템 (1224)을 포함할 수 있다. 스토리지 서브시스템 (1218)은 유형의(tangible) 컴퓨터-판독가능한 스토리지 매체 (1222) 및 시스템 메모리 (1210)를 포함할 수 있다.
버스 서브시스템 (1202)은 컴퓨터 시스템 (1200)의 다양한 컴포넌트들 및 서브 시스템들이 의도된 때 서로 통신하도록 하기 위한 메커니즘을 제공한다. 비록 버스 서브시스템 (1202)이 단일 버스로서 개략적으로 도시되지만, 버스 서브시스템의 대안 실시예들은 다수의 버스들을 사용할 수 있다. 버스 서브시스템 (1202)은 메모리 버스 또는 메모리 제어기, 주변기기 버스, 및 임의의 여러 가지 버스 아키텍처들을 이용하는 로컬 버스를 포함하는 임의의 몇몇의 유형들의 버스 구조들일 수 있다. 예를 들어, 이런 아키텍처들은 ISA (Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 PCI(Peripheral Component Interconnect) 버스를 포함할 수 있고, 이들은 IEEE P1386.1 표준에 따라 제조된 Mezzanine 버스, 및 유사한 것으로 구현될 수 있다.
프로세싱 서브시스템 (1204)은 컴퓨터 시스템 (1200)의 동작을 제어하고 하나 이상의 프로세싱 유닛들 (1232), (1234), 등을 포함할 수 있다. 프로세싱 유닛은 단일 코어 또는 멀티코어 프로세서들, 프로세서들의 하나 이상의 코어들, 또는 그것의 조합들을 포함하는 하나 이상의 프로세서들을 포함할 수 있다. 일부 실시예들에서, 프로세싱 서브시스템 (1204)은 그래픽스 프로세서들, 디지털 신호 프로세서들 (DSP들), 또는 유사한 것과 같은 하나 이상의 전용 코-프로세서들을 포함할 수 있다. 일부 실시예들에서, 프로세싱 서브시스템 (1204)의 프로세싱 유닛들의 일부 또는 전부는 ASICs(application specific integrated circuits), 또는 FPGAs(field programmable gate arrays)과 같은 맞춤화된 회로들을 이용하여 구현될 수 있다.
일부 실시예들에서, 프로세싱 서브시스템 (1204)내 프로세싱 유닛들은 시스템 메모리 (1210)에 또는 컴퓨터 판독가능한 스토리지 매체 (1222)상에 저장된 명령들을 실행시킬 수 있다. 다양한 실시예들에서, 프로세싱 유닛들은 여러 가지 프로그램들 또는 코드 명령들을 실행시킬 수 있고 그리고 다수의 동시 실행 프로그램들 또는 프로세스들을 유지할 수 있다. 임의의 주어진 시간에, 실행될 프로그램 코드의 일부 또는 전부는 잠재적으로 하나 이상의 스토리지 디바이스들을 포함하는 컴퓨터-판독가능한 스토리지 매체 (810)상에 및/또는 시스템 메모리 (1210)에 상주될 수 있다. 적절한 프로그래밍을 통하여, 프로세싱 서브시스템 (1204)은 배치, 출자, 및/또는 수요 정책 기반 자원 할당에 대하여 상기에서 설명된 다양한 기능들을 제공할 수 있다.
어떤 실시예들에서, 프로세싱 가속 유닛 (1206)은 컴퓨터 시스템 (1200)에 의해 수행되는 전체 프로세싱을 가속시키기 위해 프로세싱 서브시스템 (1204)에 의해 수행되는 프로세싱의 일부를 분담하도록 또는 맞춤화된 프로세싱을 수행하도록 제공될 수 있다.
I/O 서브시스템 (1208)은 컴퓨터 시스템 (1200)에 정보를 입력하기 위한 및/또는 컴퓨터 시스템 (1200)을 통하여 또는 컴퓨터 시스템으로부터의 정보를 출력하기 위한 디바이스들 및 메커니즘들을 포함할 수 있다. 일반적으로, 용어 "입력 디바이스(input device)"의 사용은 컴퓨터 시스템 (1200)에 정보를 입력하기 위한 모든 가능한 유형들의 디바이스들 및 메커니즘들을 포함하도록 의도된다. 유저 인터페이스 입력 디바이스들은 예를 들어, 키보드, 포인팅 디바이스들 예컨대 마우스 또는 트랙볼, 디스플레이 내에 통합된 터치패드 또는 터치 스크린, 스크롤 휠, 클릭 휠, 다이얼, 버튼, 스위치, 키패드, 음성 명령어 인식 시스템들을 갖는 오디오 입력 디바이스들, 마이크로폰들, 및 다른 유형들의 입력 디바이스들을 포함할 수 있다. 유저 인터페이스 입력 디바이스들은 모션 센싱(motion sensing) 및/또는 제스처 인식 디바이스들 예컨대 유저들이 입력 디바이스를 제어 및 입력 디바이스와 상호작용하는 것을 가능하게 하는 Microsoft Kinect® 모션 센서, Microsoft Xbox® 360 게임 제어기, 제스처들 및 구두의 명령어들을 이용하여 입력을 수신하기 위한 인터페이스를 제공하는 디바이스들을 또한 포함할 수 있다. 유저 인터페이스 입력 디바이스들은 유저들로부터의 눈 동작 (예를 들어, 사진들을 찍거나 및/또는 메뉴 선택을 할 때 "눈 깜박임(blinking)")을 감지하고 그리고 눈 제스처들을 입력 디바이스 (예를 들어, Google Glass®)으로의 입력으로 변환하는 Google Glass® 눈 깜박임 검출기와 같은 눈 제스처 인식 디바이스들을 또한 포함할 수 있다. 추가적으로, 유저 인터페이스 입력 디바이스들은 유저들이 음성 명령어들을 통하여 음성 인식 시스템들 (예를 들어, Siri® 네비게이터)와 상호 작용하는 것을 가능하게 하는 음성 인식 센싱 디바이스들을 포함할 수 있다.
유저 인터페이스 입력 디바이스들의 다른 예들은 제한없이, 3차원 (3D) 마ㅇ우스들, 조이스틱들 또는 포인팅 스틱들, 게임패드들 및 그래픽 태블릿들, 및 청각/시각 디바이스들 예컨대 스피커들, 디지털 카메라들, 디지털 캠코더들, 휴대용 미디어 플레이어들, 웹 캠들, 이미지 스캐너들, 핑거프린트 스캐너들, 바코드 리더기 3D 스캐너들, 3D 프린터들, 레이저 거리계(rangefinder)들, 및 눈맞춤(eye gaze) 추적 디바이스들을 포함한다. 추가적으로, 유저 인터페이스 입력 디바이스들은 예를 들어, 의료 영상 입력 디바이스들 예컨대 컴퓨터 단층촬영, 자기 공명 영상, 양전자 방출 단층촬영(position emission tomography), 의료 초음파 검사 디바이스들을 포함할 수 있다. 유저 인터페이스 입력 디바이스들은 예를 들어, 오디오 입력 디바이스들 예컨대 MIDI 키보드들, 디지털 악기들 및 유사한 것을 또한 포함할 수 있다.
유저 인터페이스 출력 디바이스들은 디스플레이 서브시스템, 지시등 (indicator light)들, 또는 비-시각 디스플레이들 예컨대 오디오 출력 디바이스들, 등을 포함할 수 있다. 디스플레이 서브시스템은 CRT(cathode ray tube), 평판 디바이스, 예컨대, LCD(liquid crystal display) 또는 플라즈마 디스플레이를 이용하는 것, 프로젝션 디바이스, 터치 스크린, 및 유사한 것일 수 있다. 일반적으로, 용어 "출력 디바이스(output device)"의 사용은 컴퓨터 시스템 (1200)으로부터의 정보를 유저 또는 다른 컴퓨터로 출력하기 위한 모든 가능한 유형들의 디바이스들 및 메커니즘들을 포함하도록 의도된다. 예를 들어, 유저 인터페이스 출력 디바이스들은 제한없이, 텍스트, 그래픽스 및 오디오/비디오 정보를 시각적으로 전달하는 여러 가지 디스플레이 디바이스들 예컨대 모니터들, 프린터들, 스피커들, 헤드폰들, 자동차 네비게이션 시스템들, 플로터(plotter)들, 음성 출력 디바이스들, 및 모뎀들을 포함할 수 있다.
스토리지 서브시스템 (1218)은 컴퓨터 시스템 (1200)에 의해 사용되는 정보를 저장하기 위한 저장소(repository) 또는 데이터 스토어(store)를 제공한다. 스토리지 서브시스템 (1218)은 일부 실시예들의 기능을 제공하는 기본 프로그래밍 및 데이터 구성물들을 저장하기 위한 유형의 비-일시적 컴퓨터-판독가능한 스토리지 매체를 제공한다. 프로세싱 서브시스템 (1204)에 의해 실행될 때 상기에서 설명된 기능을 제공하는 소프트웨어 (프로그램들, 코드 모듈들, 명령들)는 스토리지 서브시스템 (1218)에 저장될 수 있다. 소프트웨어는 프로세싱 서브시스템 (1204)의 하나 이상의 프로세싱 유닛들에 의해 실행될 수 있다. 스토리지 서브시스템 (1218)은 본 발명에 따라 사용되는 데이터를 저장하기 위한 저장소를 또한 제공할 수 있다.
스토리지 서브시스템 (1218)은 휘발성 및 비-휘발성 메모리 디바이스들을 포함하는 하나 이상의 비-일시적 메모리 디바이스들을 포함할 수 있다. 도 15에 도시된 바와 같이, 스토리지 서브시스템 (1218)은 시스템 메모리 (1210) 및 컴퓨터-판독가능한 스토리지 매체 (1222)를 포함한다. 시스템 메모리 (1210)는 프로그램 실행 동안에 명령들 및 데이터의 스토리지를 위한 휘발성 메인 RAM(random access memory) 및 고정된 명령들이 저장된 비-휘발성 판독 전용 메모리 (ROM) 또는 플래시 메모리를 포함하는 많은 메모리들을 포함할 수 있다. 일부 구현예들에서, 예컨대 시동(start-up)동안에 컴퓨터 시스템 (1200)내 엘리먼트들 간에 정보 전송에 도움이 되는 기본적인 루틴들을 수용하는 BIOS(basic input/output system)는 전형적으로 ROM에 저장될 수 있다. RAM는 전형적으로 현재 프로세싱 서브시스템 (1204)에 의해 동작되고 실행되고 있는 데이터 및/또는 프로그램 모듈들을 수용한다. 일부 구현예들에서, 시스템 메모리 (1210)는 SRAM(static random access memory) 또는 DRAM(dynamic random access memory)과 같은 다수의 상이한 메모리의 유형들을 포함할 수 있다.
예로서, 제한되는 것은 아니지만, 도 15에 도시된 바와 같이, 시스템 메모리 (1210)는 클라이언트 애플리케이션들, 웹 브라우저들, 미드 티어(mid-tier) 애플리케이션들, RDBMS(relational database management systems), 등, 프로그램 데이터 (1214), 및 운영 체제 (1216)을 포함할 수 있는 애플리케이션 프로그램들 (1212)을 저장할 수 있다. 예로서, 운영 체제 (1216)는 다양한 버전들의 Microsoft Windows®, Apple Macintosh®, 및/또는 리눅스 운영 체제들, 여러 가지 상업적으로-가용 가능한 UNIX® 또는 UNIX-유사 운영 체제들 (제한없이 다양한 GNU/리눅스 운영 체제들, Google Chrome® OS, 및 유사한 것을 포함하는) 및/또는 모바일 운영 체제들 예컨대 iOS, Windows® Phone, Android® OS, BlackBerry® 10 OS, 및 Palm® OS 운영 체제들을 포함할 수 있다.
컴퓨터-판독가능한 스토리지 매체 (1222)는 일부 실시예들의 기능을 제공하는 프로그래밍 및 데이터 구성물들을 저장할 수 있다. 프로세싱 서브시스템 (1204) 프로세서에 의해 실행될 때 상기에서 설명된 기능을 제공하는 소프트웨어 (프로그램들, 코드 모듈들, 명령들)는 스토리지 서브시스템 (1218)에 저장될 수 있다. 예로서, 컴퓨터-판독가능한 스토리지 매체 (1222)는 비 휘발성 메모리 예컨대 하드 디스크 드라이브, 자기 디스크 드라이브, 광 디스크 드라이브 예컨대 CD ROM, DVD, Blu-Ray® 디스크, 또는 다른 광 매체를 포함할 수 있다. 컴퓨터-판독가능한 스토리지 매체 (1222)는 Zip® 드라이브들, 플래시 메모리 카드들, USB(universal serial bus) 플래시 드라이브들, SD(secure digital) 카드들, DVD 디스크들, 디지털 비디오 테이프, 및 유사한 것을 포함할 수 있지만 그에 한정되지 않는다. 컴퓨터-판독가능한 스토리지 매체 (1222)는 비 휘발성 메모리에 기반된 SSD(solid-state drive)들 예컨대 플래시-메모리 기반 SSD들, 기업 플래시 드라이브들, 고체 상태 ROM, 및 유사한 것, 휘발성 메모리에 기반된 SSD들 예컨대 고체 상태 RAM, 동적 RAM, 정적 RAM, DRAM기반 SSD들, MRAM(magnetoresistive RAM) SSD들, 및 DRAM 및 플래시 메모리 기반 SSD들의 조합을 사용하는 하이브리드 SSD들을 또한 포함할 수 있다. 컴퓨터-판독가능한 매체들 (1222)은 컴퓨터-판독가능한 명령들, 데이터 구조들, 프로그램 모듈들, 및 컴퓨터 시스템 (1200)을 위한 다른 데이터의 스토리지를 제공할 수 있다.
어떤 실시예들에서, 스토리지 서브시스템 (1200)은 컴퓨터-판독가능한 스토리지 매체 (1222)에 추가로 연결될 수 있는 컴퓨터-판독가능한 스토리지 매체 리더기 (1220)를 또한 포함할 수 있다. 시스템 메모리 (1210)와 함께 그리고, 선택적으로, 조합하여, 컴퓨터-판독가능한 스토리지 매체 (1222)는 원격, 로컬, 고정, 및/또는 착탈 가능한 스토리지 디바이스들에 더하여 컴퓨터-판독가능한 정보를 저장하기 위한 스토리지 매체를 포괄적으로 나타낼 수 있다.
어떤 실시예들에서, 컴퓨터 시스템 (1200)은 하나 이상의 가상 기계들을 실행시키기 위한 지원을 제공할 수 있다. 컴퓨터 시스템 (1200)은 가상 기계(virtual machine)들을 구성 및 관리하는 것을 가능하게 하는 하이퍼바이저와 같은 프로그램을 실행시킬 수 있다. 각각의 가상 기계는 메모리, 컴퓨트(compute) (예를 들어, 프로세서들, 코어들), I/O, 및 네트워킹 자원들에 할당될 수 있다. 각각의 가상 기계는 전형적으로 컴퓨터 시스템 (1200)에 의해 실행되는 다른 가상 기계들에 의해 실행되는 운영 체제들과 동일하거나 또는 그것들과 상이할 수 있는 그 자체의 운영 체제를 운용할 수 있다. 따라서, 다수의 운영 체제들은 잠재적으로 컴퓨터 시스템 (1200)에 의해 동시에 운용될 수 있다. 각각의 가상 기계는 일반적으로 다른 가상 기계들과 독립적으로 운용된다.
통신 서브시스템 (1224)은 다른 컴퓨터 시스템들 및 네트워크들에 인터페이스를 제공한다. 통신 서브시스템 (1224)은 컴퓨터 시스템 (1200)로부터 다른 시스템들로 데이터를 송신하고 그리고 다른 시스템들로부터 데이터를 수신하기 위한 인터페이스로서 역할을 한다. 예를 들어, 통신 서브시스템 (1224)은 컴퓨터 시스템 (1200)이 컴퓨팅 디바이스들로부터 그리고 그것들로 정보를 수신하고 정보를 발송하기 위해 인터넷을 통하여 하나 이상의 컴퓨팅 디바이스들에 대한 통신 채널을 수립하는 것을 가능하게 할 수 있다.
통신 서브시스템 (1224)은 유선 및/또는 무선 통신 프로토콜들 둘 모두를 지원할 수 있다. 예를 들어, 어떤 실시예들에서, 통신 서브시스템 (1224)은 무선 음성 및/또는 데이터 네트워크들을 액세스하기 위한 RF(radio frequency) 트랜시버 컴포넌트들(예를 들어, 셀룰러 전화 기술, 어드밴스드(advanced) 데이터 네트워크 기술, 예컨대 3G, 4G 또는 EDGE (enhanced data rates for global evolution), 와이파이 (IEEE 802.11 패밀리 표준들, 또는 다른 모바일 통신 기술들, 또는 그것의 임의 조합을 이용하여), GPS(global positioning system) 수신기 컴포넌트들, 및/또는 다른 컴포넌트들을 포함할 수 있다. 일부 실시예들에서 통신 서브시스템 (1224)은 무선 인터페이스 대신에 또는 그것에 추가하여 유선 네트워크 연결 (예를 들어, 이더넷)을 제공할 수 있다.
통신 서브시스템 (1224)은 다양한 형태들로 데이터를 수신하고 송신할 수 있다. 예를 들어, 일부 실시예들에서, 통신 서브시스템 (1224)은 구조화된 및/또는 구조화되지않은 데이터 피드(feed)들 (1226), 이벤트 스트림들 (1228), 이벤트 업데이트들 (1230), 및 유사한 것의 형태로 입력 통신을 수신할 수 있다. 예를 들어, 통신 서브시스템 (1224)은 Twitter® 피드들, Facebook® 업데이트들, RSS(Rich Site Summary) 피드들 과 같은 웹 피드들, 및/또는 하나 이상의 제 3 자 정보 소스들로부터 실시간 업데이트들과 같은 다른 통신 서비스들 및/또는 쇼셜 미디어 네트워크들의 유저들로부터 실시간으로 데이터 피드들 (1226)을 수신하도록(또는 발송하도록) 구성될 수 있다.
어떤 실시예들에서, 통신 서브시스템 (1224)은 명백한 끝이 없는 사실상 연속적이거나 또는 무한할 수 있는 실시간 이벤트들 및/또는 이벤트 업데이트들 (1230)의 이벤트 스트림들 (1228)을 포함할 수 있는 연속적인 데이터 스트림들의 형태로 데이터를 수신하도록 구성될 수 있다. 연속적인 데이터를 생성하는 애플리케이션들의 예제들은 예를 들어, 센서 데이터 애플리케이션들, 금융 티커들(tickers), 네트워크 성능 측정 툴들 (예를 들어, 네트워크 모니터링 및 트래픽 관리 애플리케이션들), 클릭스트림 분석 툴들, 자동차 트래픽 모니터링, 및 유사한 것을 포함할 수 있다.
통신 서브시스템 (1224)은 구조화되고 및/또는 구조화되지 않은 데이터 피드들 (1226), 이벤트 스트림들 (1228), 이벤트 업데이트들 (1230), 및 유사한 것을 컴퓨터 시스템 (1200)에 결합된 하나 이상의 스트리밍 데이터 소스 컴퓨터들과 통신상태에 있을 수 있는 하나 이상의 데이터베이스들로 출력하도록 또한 구성될 수 있다.
컴퓨터 시스템 (1200)은 핸드헬드 휴대용 디바이스 (예를 들어, iPhone® 셀룰러 폰, iPad® 컴퓨팅 태블릿, PDA), 착용가능한 디바이스 (예를 들어, Google Glass® HMD(head mounted display)), 퍼스널 컴퓨터, 워크스테이션, 메인프레임, 키오스크(kiosk), 서버 랙, 또는 임의의 다른 데이터 프로세싱 시스템을 포함하는 다양한 유형들 중 하나일 수 있다.
컴퓨터들 및 네트워크들의 끊임없이 변화하는(ever-changing) 성질 때문에, 도 15에 도시된 컴퓨터 시스템 (1200)의 설명은 단지 특정 예제로서 의도된다. 도 15에 도시된 시스템보다 더 많거나 또는 더 적은 컴포넌트들을 갖는 많은 다른 구성들이 가능하다. 본 출원에 제공된 개시 및 교리들에 기초하여, 관련 기술 분야에서의 통상의 기술자는 다양한 실시예들을 구현하는 다른 방식들 및/또는 방법들을 인식할 것이다.
일 실시예에 따라, 통신 서브시스템 (1224) 및 통신 서브시스템 (1224)과 결합된 프로세싱 서브시스템 (1204)을 포함하는 컴퓨터 시스템이 제공된다. 프로세싱 서브시스템 (1204)은 서비스를 위해 유저에 의한 주문을 통신 서브시스템 (1224)을 통하여 수신하도록 구성되고, 서비스는 부분적으로 자원 할당에 의해 가능하게 된다. 프로세싱 서브시스템 (1204)은 요청자, 자원, 및 요청 시간을 포함하는 요청데이터를 식별하기 위해 주문을 파싱하고; 및 요청 데이터를 총합 데이터 구조에 추가하도록 더 구성된다. 총합 데이터 구조는 앞서 파싱된 주문들에 대한 요청 데이터의 총합체를 포함한다. 프로세싱 서브시스템 (1204)은 총합 데이터 구조에 기초하여 자원에 대한 실시간 수요를 나타내는 값을 결정하고; 주문과 적어도 하나의 다른 주문간에 동일한 요청 데이터의 적어도 하나의 컴포넌트에 기초하여 앞서 파싱된 주문들로부터의 적어도 하나의 다른 주문과 상기 주문을 상관시키고; 및 적어도 하나의 다른 주문과 상기 주문의 상관에 기초하여 적어도 하나의 자원 세트를 식별하도록 더 구성되되, 적어도 하나의 자원 세트는 주문으로부터의 자원 및 적어도 하나의 다른 주문으로부터 요청된 다른 자원을 포함한다.
일 실시예에 따라, 파싱하는 단계는 요청자, 자원, 및 요청 시간의 구조적 표현(structural representation)을 제공하는 요청 데이터로부터 데이터 구조를 구축하는 단계(building)를 포함한다.
일 실시예에 따라, 총합 데이터 구조는 파싱된 주문으로부터의 데이터 구조 및 앞서 파싱된 주문들로부터의 하나 이상의 데이터 구조들을 포함한다.
일 실시예에 따라, 자원에 대한 실시간 수요를 나타내는 값은 앞서 파싱된 주문들에 대한 요청 데이터의 총합체로부터 획득된 자원에 대한 현재 요청 볼륨을 이용하여 결정된다.
일 실시예에 따라, 프로세싱 서브시스템 (1204)은 결정된, 자원에 대한 실시간 수요를 나타내는 값에 기초하여 자원의 할당을 위한 하나 이상의 수요 정책들을 생성하거나 또는 업데이트하고; 하나 이상의 수요 정책들에 기초하여 자원을 미리-생성하고(pre-create); 및 통신 서브시스템 (1224)을 통하여 하나 이상의 수요 정책들에 기초하여 한 명 이상의 유저들에게 미리 생성된 자원을 할당하도록 더 구성된다.
일 실시예에 따라, 실시간 수요를 나타내는 값을 결정하는 단계는 앞서 파싱된 주문들에 대한 요청 데이터의 총합체를 이용하여 특정 시간 기간 내에 자원을 포함하는 주문들의 비율을 결정하는 단계를 포함한다.
일 실시예에 따라, 실시간 수요를 나타내는 값을 결정하는 단계는 앞서 파싱된 주문들에 대한 요청 데이터의 총합체를 이용하여 자원 풀(resource pool)내 다른 자원들에 비하여 자원의 실시간 수요에 대한 결정된 주문들의 비율을 상관시키는 단계를 더 포함한다.
일 실시예에 따라, 요청 데이터의 적어도 하나의 컴포넌트는 요청자를 포함한다.
일 실시예에 따라, 프로세싱 서브시스템 (1204)은 자원, 다른 자원, 및 추가 자원을 포함하는 앞서 파싱된 주문들의 비율에 기초하여 자원 및 다른 자원에 추가하여 정기적으로 요청되는 추가 자원을 식별하도록 더 구성된다.
일 실시예에 따라, 프로세싱 서브시스템 (1204)은 추가 자원을 포함하기 위해 식별된 적어도 하나의 자원 세트를 업데이트하도록 더 구성된다.
일 실시예에 따라, 프로세싱 서브시스템 (1204)은 적어도 하나의 자원 세트의 할당을 위해 하나 이상의 수요 정책들을 생성하거나 또는 업데이트하고; 하나 이상의 수요 정책들에 기초하여 자원 및 함께 묶인 다른 자원을 미리-생성하고(pre-create); 및 통신 서브시스템 (1224)을 통하여 하나 이상의 수요 정책들에 기초하여 한 명 이상의 유저들에게 자원 및 함께 묶인 다른 자원을 포함하는 적어도 하나의 자원 세트를 할당하도록 더 구성된다.
일 실시예에 따라, 요청 데이터의 총합체에 기초하여 자원 풀 내 자원에 대한 실시간 수요를 나타내는 값을 결정하도록 구성된 수요 모니터 (575)을 포함하는 자원 관리기 (105); (305); (505); (905); (975)가 제공된다. 요청 데이터의 총합체는 서비스를 가능하게 하는 적어도 일부로서 자원을 포함했던 서비스들을 위한 임의 개수의 앞서 수신된 주문들로부터 획득된다. 자원 관리기 (105); (305); (505); (905); (975)는 결정된, 자원에 대한 실시간 수요를 나타내는 값에 기초하여 자원의 할당을 위한 하나 이상의 수요 정책들을 생성하거나 또는 업데이트하도록 구성된 정책 관리기 (335); (525); (935)를 더 포함한다. 자원 관리기 (105); (305); (505); (905); (975)는 하나 이상의 수요 정책들에 기초하여 자원을 미리 생성하고, 하나 이상의 수요 정책들에 기초하여 한 명 이상의 유저들에게 미리 생성된 자원을 할당하도록 구성된다.
일 실시예에 따라, 자원에 대한 실시간 수요를 나타내는 값은 요청 데이터의 총합체로부터 획득된 자원에 대한 현재 요청 볼륨을 이용하여 결정된다.
일 실시예에 따라, 실시간 수요를 나타내는 값을 결정하는 단계는 앞서 수신된 주문들에 대한 요청 데이터의 총합체를 이용하여 특정 시간 기간내에 자원을 포함하는 주문들의 비율을 결정하는 단계를 포함한다.
일 실시예에 따라, 실시간 수요를 나타내는 값을 결정하는 단계는 앞서 수신된 주문들에 대한 요청 데이터의 총합체를 이용하여 자원 풀(resource pool)내 다른 자원들에 비하여 자원의 실시간 수요에 대한 결정된 주문들의 비율을 상관시키는 단계를 더 포함한다.
일 실시예에 따라, 자원 관리기 (105); (305); (505); (905); (975)는 미리 생성된 자원을 자원 풀에 추가하도록 더 구성된다.
일 실시예에 따라, 자원 관리기 (105); (305); (505); (905); (975)는 한 명 이상의 유저들에게 미리 생성된 자원의 할당을 표시하기 위해 자원 풀을 업데이트하도록 더 구성된다.
일 실시예에 따라, 통신 서브시스템 (1224) 및 통신 서브시스템 (1224)과 결합된 프로세싱 서브시스템 (1204)을 포함하는 컴퓨터 시스템이 제공된다. 프로세싱 서브시스템 (1204)은 요청 데이터의 총합체에 기초하여 자원 풀 내 자원에 대한 실시간 수요를 나타내는 값을 결정하도록 구성된다. 요청 데이터의 총합체는 서비스들을 가능하게 하는 적어도 일부로서 자원을 포함했던 서비스들을 위한 임의 개수의 앞서 수신된 주문들로부터 획득된다. 프로세싱 서브시스템 (1204)은 주문과 적어도 하나의 다른 주문간에 동일한 요청 데이터의 적어도 하나의 컴포넌트에 기초하여 앞서 수신된 주문들로부터의 적어도 하나의 다른 주문과 서비스를 위한 주문을 상관시키고; 및 적어도 하나의 다른 주문과 상기 주문의 상관에 기초하여 적어도 하나의 자원 세트를 식별하도록 더 구성된다. 적어도 하나의 자원 세트는 상기 주문으로부터의 자원 및 적어도 하나의 다른 주문으로부터 요청된 다른 자원을 포함한다. 프로세싱 서브시스템 (1204)은 자원 풀 내 자원의 사용을 추적하고; (i) 결정된, 자원에 대한 실시간 수요를 나타내는 값, (ii) 자원을 포함하는 적어도 하나의 자원 세트, 및 (iii) 자원에 대한 추적된 사용 중 적어도 하나에 기초하여 자원의 할당을 위한 하나 이상의 수요 정책들을 생성하거나 또는 업데이트하고; 및 하나 이상의 수요 정책들에 기초하여 (i) 자원을 미리 생성, (ii) 자원을 자원 풀에 추가, (iii) 자원을 클리닝하는 것 중 적어도 하나를 수행하도록 더 구성된다.
일 실시예에 따라, 프로세싱 서브시스템 (1204)은 통신 서브시스템 (1224)을 통하여 하나 이상의 수요 정책들에 기초하여 한 명 이상의 유저들에게 자원을 할당하도록 더 구성된다.
일 실시예에 따라, 자원에 대한 실시간 수요를 나타내는 값은 앞서 수신된 주문들에 대한 요청 데이터의 총합체로부터 획득된 자원에 대한 현재 요청 볼륨을 이용하여 결정된다.
일 실시예에 따라, 통신 서브시스템 (1224) 및 통신 서브시스템 (1224)과 결합된 프로세싱 서브시스템 (1204)을 포함하는 컴퓨터 시스템이 제공된다. 프로세싱 서브시스템 (1204)은 유저로부터의 자원 입찰을 통신 서브시스템 (1224)을 통하여 수신하도록 구성된다. 자원 입찰은 출자가능한 자원(contributable resource)을 식별한다. 프로세싱 서브시스템 (1204)은 자원 입찰에 대한 출자 정책을 식별하도록 더 구성된다. 출자 정책은 출자가능한 자원의 자원 유형과 요청가능한 자원들의 하나 이상의 자원 유형들 사이의 매핑(mapping)에 기초하여 식별된다. 프로세싱 서브시스템 (1204)은 자원 입찰에 대하여 식별된 출자 정책에 기초하여 유저와 관련된 클라이언트 컴퓨팅 시스템으로 요청가능한 자원들의 하나 이상의 자원 유형들을 통신 서브시스템 (1224)을 통하여 발송하도록 더 구성된다. 프로세싱 서브시스템 (1204)은 요청가능한 자원들의 하나 이상의 자원 유형들 중 임의의 자원 유형의 유저에 의한 선택을 나타내는 정보를 클라이언트 컴퓨팅 시스템으로부터 통신 서브시스템 (1224)을 통하여 수신하도록 더 구성된다.
일 실시예에 따라, 출자가능한 자원은 유저에 의해 관리된다.
일 실시예에 따라, 프로세싱 서브시스템 (1204)은 자원 입찰에 기초하여 출자가능한 자원의 자원 유형을 결정하도록 더 구성된다. 출자 정책을 식별하는 단계는 자원 유형이 출자가능한 자원들의 하나 이상의 자원 유형들에 일치하는지를 결정하는 단계를 포함하고, 출자가능한 자원들의 하나 이상의 자원 유형들은 출자 정책에서 요청가능한 자원들의 하나 이상의 자원 유형들에 매핑된다.
일 실시예에 따라, 출자 정책을 식별하는 단계는 적어도 자원 출자의 유저 이력에 기초하여 더 결정된다.
일 실시예에 따라, 프로세싱 서브시스템 (1204)은 자원 입찰에서 식별된 출자가능한 자원에 대한 액세스 자격들을 통신 서브시스템 (1224)을 통하여 수신하도록 더 구성된다.
일 실시예에 따라, 액세스 자격들(access credentials)은 유저가 출자가능한 자원을 관리하는 것을 가능하게 한다.
일 실시예에 따라, 프로세싱 서브시스템 (1204)은 요청가능한 자원들의 하나 이상의 자원 유형들중 자원 유형의 선택을 표시하기 위해 유저 계정 이력 및 자원 풀을 업데이트하도록 더 구성된다.
일 실시예에 따라, 프로세싱 서브시스템 (1204)은 서비스를 위해 유저에 의한 주문을 통신 서브시스템 (1224)을 통하여 수신하도록 더 구성된다. 서비스는 부분적으로 자원의 할당에 의해 가능하게 된다. 프로세싱 서브시스템 (1204)은 자원의 유형이 유저에 의해 선택된 자원 유형에 일치하는지 결정하고, 출자가능한 자원에 대한 대가로 서비스를 위한 자원에 대한 액세스를 가능하게 하도록 더 구성된다.
일 실시예에 따라, 자원에 대한 액세스를 가능하게 하는 단계는 자원을 유저에게 할당하는 단계, 유저에게 서비스하기 위해 자원을 구성하는 단계, 및 자원이 할당되었다는 확인 메시지를 유저에게 발송하는 단계를 포함한다.
일 실시예에 따라, 프로세싱 서브시스템 (1204)은 출자 정책내에 정의된 요청가능한 자원들의 하나 이상의 자원 유형들에 대한 수요에 기초하여 출자 정책을 업데이트하도록 더 구성된다.
일 실시예에 따라, 유저로부터 자원 입찰을 수신하도록 구성된 자원 입찰 인터페이스 (510)를 포함하는 자원 관리기 (105); (305); (505); (905); (975)가 제공된다. 자원 입찰은 출자가능한 자원을 식별한다. 자원 관리기 (105); (305); (505); (905); (975)는 자원 입찰에 기초하여 출자가능한 자원의 자원 유형을 결정하고 자원 입찰에 대한 출자 정책을 식별하도록 구성된 정책 관리기 (335); (525); (935)를 더 포함한다. 출자 정책을 식별하는 단계는 자원 유형이 출자 정책에서 요청가능한 자원들의 하나 이상의 자원 유형들에 매핑시킨 출자가능한 자원들의 하나 이상의 자원 유형들에 일치하는지를 결정하는 단계를 포함한다. 자원 입찰 인터페이스 (510)는 자원 입찰에 대한 식별된 출자 정책에 기초하여, 유저와 관련된 클라이언트 컴퓨팅 시스템으로 요청가능한 자원들의 하나 이상의 자원 유형들을 발송하도록 더 구성된다. 자원 입찰 인터페이스 (510)는 또한 요청가능한 자원들의 하나 이상의 자원 유형들 중 임의의 자원 유형의 유저에 의한 선택을 나타내는 정보를 클라이언트 컴퓨팅 시스템으로부터 수신하도록 구성된다.
일 실시예에 따라, 출자가능한 자원은 유저에 의해 관리된다.
일 실시예에 따라, 자원 입찰 인터페이스 (510)은 자원 입찰에서 식별된 출자가능한 자원에 대한 액세스 자격들을 수신하도록 더 구성된다. 액세스 자격들은 유저가 출자가능한 자원을 관리하는 것을 가능하게 한다.
일 실시예에 따라, 자원 관리기 (105); (305); (505); (905); (975)는 출자가능한 자원에 대한 대가로 유저에 의해 선택된 자원 유형에 일치하는 유형을 갖는 자원을 할당하도록 더 구성된다.
일 실시예에 따라, 할당하는 단계는 유저에 서비스하기 위해 자원을 구성하는 단계를 포함한다.
일 실시예에 따라, 자원 입찰 인터페이스 (510)은 서비스에 대한 유저에 의한 주문을 수신하도록 더 구성되고, 서비스는 부분적으로 자원의 할당에 의해 가능하게 된다. 자원 관리기 (105); (305); (505); (905); (975)는 자원의 유형이 유저에 의해 선택된 자원 유형에 일치하는지를 결정하고, 출자가능한 자원에 대한 대가로 서비스를 위한 자원에 대한 액세스를 가능하게 하도록 더 구성된다.
일 실시예에 따라, 자원 관리기 (105); (305); (505); (905); (975)는 출자 정책내에 정의된 출자가능한 자원들의 하나 이상의 자원 유형들 또는 요청가능한 자원들의 하나 이상의 자원 유형들에 대한 수요에 기초하여 출자 정책을 업데이트하도록 더 구성된다.
일 실시예에 따라, 통신 서브시스템 (1224) 및 통신 서브시스템 (1224)과 결합된 프로세싱 서브시스템 (1204)을 포함하는 컴퓨터 시스템이 제공된다. 프로세싱 서브시스템 (1204)은 통신 서브시스템 (1224)을 통하여 서비스를 위해 유저로부터 주문을 수신하도록 구성되고, 주문은 출자가능한 자원 및 요청가능한 자원을 식별한다. 출자가능한 자원은 요청가능한 자원에 대한 대가로 자원 풀에 제공될 것이다. 프로세싱 서브시스템 (1204)은 출자 정책에 기초하여 자원 입찰을 수락하도록 더 구성된다. 출자 정책은 출자가능한 자원의 유형 중 제 1 자원 유형과 요청가능한 자원의 유형 중 제 2 자원 유형사이의 매핑(mapping)을 정의한다. 프로세싱 서브시스템 (1204)은 출자가능한 자원에 대한 액세스 및 제어를 제공하는 액세스 자격들을 통신 서브시스템 (1224)을 통하여 수신하도록 더 구성된다. 프로세싱 서브시스템 (1204)은 분산 시스템의 한 명 이상의 유저들에게 서비스하기 위해 출자가능한 자원의 가용 가능성을 표시하도록 자원 풀을 업데이트하도록 더 구성된다. 프로세싱 서브시스템 (1204)은 통신 서브시스템 (1224)을 통하여 유저에게 요청가능한 자원을 할당하도록 더 구성된다.
일 실시예에 따라, 출자가능한 자원은 유저에 의해 관리되고, 요청가능한 자원은 다른 유저에 의해 관리된다.
일 실시예에 따라, 출자가능한 자원은 유저에 의해 관리되고, 요청가능한 자원은 분산 시스템의 자원 관리기에 의해 관리되는 자원 풀의 컴포넌트이다.
비록 본 발명의 특정 실시예들이 설명되었지만, 다양한 수정예들, 변경들, 대안적인 구성들, 및 등가물들이 또한 본 발명의 범위내에 망라된다. 수정예들은 개시된 특징들의 임의의 관련 조합을 포함한다. 본 발명의 실시예들은 어떤 특정 데이터 프로세싱 환경들 내의 동작에 제한되지 않고, 복수의 데이터 프로세싱 환경들 내에서 자유롭게 동작할 것이다. 추가적으로, 비록 본 발명의 실시예들은 특정한 일련의 거래들 및 단계들을 이용하여 설명되었지만, 본 발명의 범위는 설명된 일련의 거래들 및 단계들에 제한되지 않는다는 것은 당해 기술분야의 통상의 기술자들에게 명확해야 한다. 상기-설명된 실시예들의 다양한 특징들 및 측면들은 개별적으로 또는 함께 사용될 수 있다.
더구나, 본 발명의 실시예들은 하드웨어 및 소프트웨어의 특정 조합을 이용하여 설명되었지만, 하드웨어 및 소프트웨어의 다른 조합들도 또한 본 발명의 범위 내에 있다는 것이 인식되어야 한다. 본 발명의 실시예들은 단지 하드웨어로, 또는 단지 소프트웨어로, 또는 그것의 조합들을 이용하여 구현될 수 있다. 본 출원에서 설명된 다양한 프로세스들은 동일한 프로세서 또는 상이한 프로세서들 상에서 임의의 조합으로 구현될 수 있다. 따라서, 어떤 동작들을 수행하도록 구성된 컴포넌트들 또는 모듈들이 설명되는 경우에, 이런 구성은 예를 들어, 동작을 수행하는 전자 회로들을 디자인함으로써, 동작을 수행하는 프로그램 가능한 전자 회로들 (예컨대 마이크로프로세서들)을 프로그래밍함으로써, 또는 그것의 임의 조합에 의해 성취될 수 있다. 프로세스들은 제한되는 것은 아니지만 프로세스간 통신을 위한 종래의 기술들을 포함하는 여러 가지 기술들을 이용하여 통신할 수 있고, 프로세스들의 다른 쌍들은 상이한 기술들을 사용할 수 있거나, 또는 프로세스들의 동일 쌍들은 상이한 시간들에 다른 기술들을 사용할 수 있다.
따라서, 명세서 및 도면들은 제한적인 의미라기 보다는 예시적으로 간주될 것이다. 그러나, 추가들, 차감들, 삭제들, 및 다른 수정들 및 변화들이 청구항들에 개시된 광범위한 취지 및 범위로부터 벗어나지 않고 명세서 및 도면들에 이루어질 수 있다는 것이 명백할 것이다. 따라서, 비록 특정 발명 실시예들이 설명되었지만, 이들은 제한하는 것으로 의도되지 않는다. 다양한 수정예들 및 등가물들이 이하의 청구항들의 범위 내에 있다.

Claims (30)

  1. 방법에 있어서,
    컴퓨팅 시스템에 의해, 서비스를 위해 유저에 의한 주문을 수신하는 단계로서, 상기 서비스는 부분적으로 주 자원(primary resource)의 할당에 의해 가능하게 되는, 상기 수신하는 단계;
    상기 컴퓨팅 시스템에 의해, 요청자, 상기 주 자원, 및 요청 시간을 포함하는 요청 데이터를 식별하기 위해 상기 주문을 파싱하는 단계(parsing);
    상기 컴퓨팅 시스템에 의해, 상기 요청 데이터를 총합 데이터 구조(aggregate data structure)에 추가하는 단계로서, 상기 총합 데이터 구조는 앞서 파싱된 주문들에 대한 요청 데이터의 총합체(aggregate)를 포함하는, 상기 추가하는 단계;
    상기 컴퓨팅 시스템에 의해, 상기 총합 데이터 구조에 기초하여 상기 자원에 대한 실시간 수요를 나타내는 값을 결정하는 단계;
    상기 컴퓨팅 시스템에 의해, 상기 앞서 파싱된 주문들로부터의 적어도 하나의 다른 주문과 상기 주문을 상관시키는 단계(correlating)로서, 상기 주문과 상기 적어도 하나의 다른 주문간에 동일한 상기 요청 데이터의 적어도 하나의 컴포넌트에 기반되는, 상기 상관시키는 단계;
    상기 컴퓨팅 시스템에 의해, 상기 적어도 하나의 다른 주문과 상기 주문의 상관에 기초하여 적어도 하나의 자원 세트(resource set)를 식별하는 단계로서, 상기 적어도 하나의 자원 세트는 상기 주문으로부터의 주 자원 및 상기 적어도 하나의 다른 주문으로부터 요청된 보조 자원(secondary resource)을 포함하는, 상기 식별하는 단계;
    상기 컴퓨팅 시스템에 의해, 상기 주 자원이 요청된 때, 상기 주 자원과 상기 보조 자원이 함께 할당되도록 상기 적어도 하나의 다른 주문과 상기 주문의 상관 및 결정된 상기 자원에 대한 상기 실시간 수요를 나타내는 값에 기초하여 상기 적어도 하나의 자원 세트의 할당을 위한 하나이상의 수요 정책들을 생성하거나 또는 업데이트하는 단계;
    상기 컴퓨팅 시스템에 의해, 상기 하나 이상의 수요 정책들에 기초하여 상기 주문으로부터의 자원 및 상기 적어도 하나의 다른 주문으로부터 요청된 다른 자원을 미리 생성하는 단계(pre-creating); 및
    상기 컴퓨팅 시스템에 의해, 상기 하나 이상의 수요 정책들에 기초하여 한 명 이상의 유저들에게 상기 미리 생성된 자원 및 상기 다른 자원을 할당하는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서,
    상기 컴퓨팅 시스템에 의해, 상기 하나이상의 수요 정책들에 기초하여 상기 주 자원 및 함께 묶인 상기 보조 자원을 포함하는 상기 적어도 하나의 자원 세트를 상기 유저에게 할당하는 단계를 더 포함하되,
    상기 파싱하는 단계는 상기 요청자, 상기 주 자원, 및 상기 요청 시간의 구조적 표현(structural representation)을 제공하는 상기 요청 데이터로부터 데이터 구조를 구축하는 단계(building)를 포함하는, 방법.
  3. 청구항 2에 있어서, 상기 총합 데이터 구조는 상기 파싱된 주문으로부터의 데이터 구조 및 상기 앞서 파싱된 주문들로부터의 하나 이상의 데이터 구조들을 포함하는, 방법.
  4. 청구항 1 내지 3 중 어느 한 항에 있어서, 상기 주 자원에 대한 상기 실시간 수요(demand)를 나타내는 값은 상기 앞서 파싱된 주문들에 대한 요청 데이터의 총합체로부터 획득된 상기 주 자원에 대한 현재 요청 볼륨을 이용하여 결정되는, 방법.
  5. 청구항 4에 있어서,
    상기 컴퓨팅 시스템에 의해, 결정된, 상기 주 자원에 대한 실시간 수요를 나타내는 값에 기초하여 상기 주 자원의 할당을 위한 하나 이상의 추가의 수요 정책들을 생성하거나 또는 업데이트하는 단계;
    상기 컴퓨팅 시스템에 의해, 상기 하나 이상의 추가의 수요 정책들에 기초하여 상기 주 자원을 미리 생성하는 단계(pre-creating); 및
    상기 컴퓨팅 시스템에 의해, 상기 하나 이상의 추가의 수요 정책들에 기초하여 한 명 이상의 유저들에게 미리 생성된 상기 주 자원을 할당하는 단계를 더 포함하는, 방법.
  6. 청구항 1 내지 3 중 어느 한 항에 있어서, 상기 실시간 수요를 나타내는 값을 결정하는 단계는 상기 앞서 파싱된 주문들에 대한 요청 데이터의 상기 총합체를 이용하여 특정 시간 기간 내에 상기 주 자원을 포함하는 주문들의 비율(percentage)을 결정하는 단계를 포함하는, 방법.
  7. 청구항 6에 있어서, 상기 실시간 수요를 나타내는 값을 결정하는 단계는 상기 앞서 파싱된 주문들에 대한 요청 데이터의 상기 총합체를 이용하여 자원 풀(resource pool)내 다른 자원들에 비하여 상기 주 자원의 상기 실시간 수요에 대한 결정된 주문들의 비율을 상관시키는 단계를 더 포함하는, 방법.
  8. 청구항 1 내지 3 중 어느 한 항에 있어서, 상기 요청 데이터의 상기 적어도 하나의 컴포넌트는 상기 요청자를 포함하는, 방법.
  9. 청구항 1 내지 3 중 어느 한 항에 있어서, 상기 적어도 하나의 자원 세트를 식별하는 단계는 상기 컴퓨팅 시스템에 의해, 상기 주 자원, 상기 보조 자원, 및 추가 자원을 포함하는 상기 앞서 파싱된 주문들의 비율에 기초하여 상기 주 자원 및 상기 보조 자원에 추가하여 정기적으로 요청되는 상기 추가 자원을 식별하는 단계를 포함하는, 방법.
  10. 청구항 9에 있어서, 상기 컴퓨팅 시스템에 의해, 상기 추가 자원을 포함하기 위해 상기 하나 이상의 수요 정책들을 업데이트하는 단계를 더 포함하는, 방법.
  11. 청구항 1 내지 3 중 어느 한 항에 있어서,
    상기 컴퓨팅 시스템에 의해, 상기 하나 이상의 수요 정책들에 기초하여 상기 주 자원 및 함께 묶인(wired) 상기 보조 자원을 포함하는 상기 적어도 하나의 자원 세트를 미리 생성하는 단계; 및
    상기 컴퓨팅 시스템에 의해, 상기 하나 이상의 수요 정책들에 기초하여 한 명 이상의 유저들에게 상기 주 자원 및 함께 묶인 상기 보조 자원을 포함하는 상기 미리 생성된 상기 적어도 하나의 자원 세트를 할당하는 단계를 더 포함하는, 방법.
  12. 비-일시적 기계 판독가능한 스토리지 매체상에 저장된 명령들이 하나 이상의 프로세서들에 의해 실행될 때 상기 하나 이상의 프로세서들로 하여금 방법을 수행하게 하는 상기 명령들을 갖는 상기 비-일시적 기계 판독가능한 스토리지 매체에 있어서, 상기 방법은,
    요청 데이터의 총합체(aggregate)에 기초하여 자원 풀(resource pool)내 자원에 대한 실시간 수요를 나타내는 값을 결정하는 단계로서, 상기 요청 데이터의 총합체는 서비스를 가능하게 하는 적어도 일부로서 상기 자원을 포함했던 서비스를 위한 임의 개수의 앞서 수신된 주문들로부터 획득되는, 상기 결정하는 단계;
    상기 앞서 수신된 주문들로부터의 적어도 하나의 다른 주문과 서비스의 주문을 상관시키는 단계(correlating)로서, 상기 주문과 상기 적어도 하나의 다른 주문간에 동일한 상기 요청 데이터의 적어도 하나의 컴포넌트에 기반되는, 상기 상관시키는 단계;
    상기 적어도 하나의 다른 주문과 상기 주문의 상관에 기초하여 적어도 하나의 자원 세트(resource set)를 식별하는 단계로서, 상기 적어도 하나의 자원 세트는 상기 주문으로부터의 자원 및 상기 적어도 하나의 다른 주문으로부터 요청된 다른 자원을 포함하는, 상기 식별하는 단계;
    결정된 상기 자원에 대한 상기 실시간 수요를 나타내는 값에 기초하여 상기 자원의 할당을 위한 하나 이상의 수요 정책들을 생성하거나 또는 업데이트하는 단계;
    상기 하나 이상의 수요 정책들에 기초하여 상기 자원을 미리 생성하는 단계(pre-creating); 및
    상기 하나 이상의 수요 정책들에 기초하여 한 명 이상의 유저들에게 상기 미리 생성된 자원을 할당하는 단계를 포함하는, 비-일시적 기계 판독가능한 스토리지 매체.
  13. 청구항 12에 있어서, 상기 자원에 대한 상기 실시간 수요를 나타내는 값은 상기 요청 데이터의 상기 총합체로부터 획득된 상기 자원에 대한 현재 요청 볼륨(current request volume)을 이용하여 결정되는, 비-일시적 기계 판독가능한 스토리지 매체.
  14. 시스템에 있어서,
    하나 이상의 프로세서들 및 비-일시적 기계 판독가능한 스토리지 매체;
    요청 데이터의 총합체(aggregate)에 기초하여 자원 풀(resource pool)내 자원에 대한 실시간 수요를 나타내는 값을 결정하는 프로그램 명령들로서, 상기 요청 데이터의 총합체는 서비스를 가능하게 하는 적어도 일부로서 상기 자원을 포함했던 상기 서비스들을 위한 임의 개수의 앞서 수신된 주문들로부터 획득되고;
    상기 앞서 수신된 주문들로부터의 적어도 하나의 다른 주문과 서비스를 위한 주문을 상관시키는 프로그램 명령들로서, 상기 주문과 적어도 하나의 다른 주문간에 동일한 상기 요청 데이터의 적어도 하나의 컴포넌트에 기초하여 상관시키고; 및
    상기 적어도 하나의 다른 주문과 상기 주문의 상관에 기초하여 적어도 하나의 자원 세트(resource set)를 식별하는 프로그램 명령들로서, 상기 적어도 하나의 자원 세트는 상기 주문으로부터의 자원 및 상기 적어도 하나의 다른 주문으로부터 요청된 다른 자원을 포함하고;
    상기 자원 풀 내 상기 자원의 사용을 추적하는 프로그램 명령들;
    (i) 상기 결정된, 상기 자원에 대한 상기 실시간 수요를 나타내는 값, (ii) 상기 자원을 포함하는 상기 적어도 하나의 자원 세트, 및 (iii) 상기 자원에 대한 추적된 사용 중 적어도 하나에 기초하여 자원의 할당을 위한 하나 이상의 수요 정책들을 생성하거나 또는 업데이트하는 프로그램 명령들;
    상기 하나 이상의 수요 정책들에 기초하여 상기 자원을 미리 생성하기 위한 프로그램 명령들; 및
    상기 하나 이상의 수요 정책들에 기초하여 한 명 이상의 유저들에게 상기 미리 생성된 자원 및 상기 다른 자원을 할당하기 위한 프로그램 명령들을 포함하되,
    상기 프로그램 명령들은 상기 하나 이상의 프로세서들에 의한 실행을 위해 상기 비-일시적 기계 판독가능한 스토리지 매체 상에 저장되는, 시스템.
  15. 청구항 14에 있어서, 상기 하나 이상의 수요 정책들에 기초하여 한 명 이상의 유저들에게 상기 자원을 할당하는 프로그램 명령들을 더 포함하는, 시스템.
  16. 청구항 14에 있어서, 상기 자원에 대한 상기 실시간 수요를 나타내는 값은 상기 앞서 수신된 주문들에 대한 상기 요청 데이터의 상기 총합체로부터 획득된 상기 자원에 대한 현재 요청 볼륨을 이용하여 결정되는, 시스템.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
KR1020177006220A 2014-08-08 2015-08-07 정책 기반 자원 관리 및 할당 시스템 KR102409347B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227019483A KR102687564B1 (ko) 2014-08-08 2015-08-07 정책 기반 자원 관리 및 할당 시스템

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201462035370P 2014-08-08 2014-08-08
US62/035,370 2014-08-08
US14/819,815 2015-08-06
US14/819,827 US10291548B2 (en) 2014-08-08 2015-08-06 Contribution policy-based resource management and allocation system
US14/819,827 2015-08-06
US14/819,815 US9961017B2 (en) 2014-08-08 2015-08-06 Demand policy-based resource management and allocation system
PCT/US2015/044216 WO2016022925A2 (en) 2014-08-08 2015-08-07 Policy based resource management and allocation system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227019483A Division KR102687564B1 (ko) 2014-08-08 2015-08-07 정책 기반 자원 관리 및 할당 시스템

Publications (2)

Publication Number Publication Date
KR20170042638A KR20170042638A (ko) 2017-04-19
KR102409347B1 true KR102409347B1 (ko) 2022-06-15

Family

ID=55268289

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020177006220A KR102409347B1 (ko) 2014-08-08 2015-08-07 정책 기반 자원 관리 및 할당 시스템
KR1020227019483A KR102687564B1 (ko) 2014-08-08 2015-08-07 정책 기반 자원 관리 및 할당 시스템

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020227019483A KR102687564B1 (ko) 2014-08-08 2015-08-07 정책 기반 자원 관리 및 할당 시스템

Country Status (5)

Country Link
US (2) US9961017B2 (ko)
EP (1) EP3177997B1 (ko)
JP (1) JP6605019B2 (ko)
KR (2) KR102409347B1 (ko)
CN (1) CN106576114B (ko)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9819728B2 (en) * 2012-04-30 2017-11-14 Google Inc. System and method for facilitating deduplication of operations to be performed
US9912609B2 (en) 2014-08-08 2018-03-06 Oracle International Corporation Placement policy-based allocation of computing resources
US9961017B2 (en) 2014-08-08 2018-05-01 Oracle International Corporation Demand policy-based resource management and allocation system
US10200258B2 (en) * 2014-08-14 2019-02-05 Juniper Networks, Inc. Transaction integrity for network services configuration
US9740510B2 (en) * 2015-03-31 2017-08-22 Alcatel Lucent Minimizing overhead over-provisioning costs in machine configurations
WO2017072933A1 (ja) * 2015-10-30 2017-05-04 株式会社日立製作所 計算機システムの管理システム及び管理方法
US10079693B2 (en) * 2015-12-28 2018-09-18 Netapp, Inc. Storage cluster management proxy
US11715025B2 (en) 2015-12-30 2023-08-01 Nutanix, Inc. Method for forecasting distributed resource utilization in a virtualization environment
US10168953B1 (en) 2016-05-20 2019-01-01 Nutanix, Inc. Dynamic scheduling of distributed storage management tasks using predicted system characteristics
US10341250B2 (en) 2016-05-25 2019-07-02 Accenture Global Solutions Limited Device based automatic network provisioning
US10902324B2 (en) 2016-06-13 2021-01-26 Nutanix, Inc. Dynamic data snapshot management using predictive modeling
US10361925B1 (en) 2016-06-23 2019-07-23 Nutanix, Inc. Storage infrastructure scenario planning
US10552591B2 (en) * 2016-09-15 2020-02-04 Oracle International Corporation Resource optimization using data isolation to provide sand box capability
JP7018437B2 (ja) * 2016-09-16 2022-02-10 オラクル・インターナショナル・コーポレイション マルチテナントアイデンティティおよびデータセキュリティ管理クラウドサービスのためのテナントおよびサービス管理
EP3516516B1 (en) * 2016-09-21 2022-05-11 Accenture Global Solutions Limited Dynamic resource allocation for application containers
US10484301B1 (en) * 2016-09-30 2019-11-19 Nutanix, Inc. Dynamic resource distribution using periodicity-aware predictive modeling
US10691491B2 (en) 2016-10-19 2020-06-23 Nutanix, Inc. Adapting a pre-trained distributed resource predictive model to a target distributed computing environment
US10637919B2 (en) 2017-03-23 2020-04-28 Microsoft Technology Licensing, Llc Autonomous resource governor in distributed systems for protecting shared resources
US10171377B2 (en) * 2017-04-18 2019-01-01 International Business Machines Corporation Orchestrating computing resources between different computing environments
US20180307221A1 (en) * 2017-04-25 2018-10-25 General Electric Company Apparatus and method for failure identification
US10382291B2 (en) 2017-04-26 2019-08-13 Oracle International Corporation Provisioning framework for binding related cloud services
US10225140B2 (en) 2017-04-26 2019-03-05 Oracle International Corporation Portable instance provisioning framework for cloud services
US10318351B2 (en) * 2017-04-27 2019-06-11 International Business Machines Corporation Resource provisioning with automatic approval or denial of a request for allocation of a resource
US10389603B2 (en) 2017-06-02 2019-08-20 Microsoft Technology Licensing, Llc Fast provisioning of tenants on a hosted service
US11190516B1 (en) 2017-08-24 2021-11-30 Amazon Technologies, Inc. Device communication with computing regions
US11128464B1 (en) * 2017-08-24 2021-09-21 Amazon Technologies, Inc. Identity token for accessing computing resources
US10956224B1 (en) * 2017-08-29 2021-03-23 Wells Fargo Bank, N.A. Creating augmented hybrid infrastructure as a service
JP6782675B2 (ja) * 2017-09-29 2020-11-11 富士フイルム株式会社 判別結果提供装置、判別結果提供装置の作動方法、判別結果提供プログラム、および判別結果提供システム
JP2019101949A (ja) * 2017-12-07 2019-06-24 富士通株式会社 情報処理装置、情報処理システムおよびプログラム
EP3502890A1 (en) * 2017-12-22 2019-06-26 Bull SAS Method for managing resources of a computer cluster by means of historical data
US10419977B2 (en) 2017-12-28 2019-09-17 Comcast Cable Communications, Llc Variable application of quality of service
CN110300130B (zh) * 2018-03-21 2022-04-29 中移(苏州)软件技术有限公司 一种资源调度方法、装置、电子设备及存储介质
CN110322259B (zh) * 2018-03-29 2022-07-12 北京红马传媒文化发展有限公司 资源管理方法、装置及电子设备
CN108459829B (zh) * 2018-04-12 2021-11-12 厦门集微科技有限公司 一种数据存储方法、装置及计算机存储介质
CN108647081A (zh) * 2018-04-16 2018-10-12 南京维拓科技股份有限公司 基于订单的虚机资源自动分配系统
US10498611B1 (en) * 2018-08-29 2019-12-03 Charter Communications Operating, Llc System architecture and methods for controlling and managing networking devices and expediting new service delivery in a subscriber's home network using micro-domains
CN109245938B (zh) * 2018-10-10 2021-06-25 上海尚往网络科技有限公司 一种用于执行用户的资源配置操作的方法与设备
CN109471725A (zh) * 2018-10-24 2019-03-15 新华三大数据技术有限公司 资源分配方法、装置和服务器
US10652046B1 (en) 2018-11-14 2020-05-12 Microsoft Technology Licensing, Llc Infrastructure support in cloud environments
CN109614190A (zh) * 2018-12-06 2019-04-12 成都载信智能科技有限公司 资源配置管理方法及平台
IT201800021343A1 (it) * 2018-12-28 2020-06-28 Telecom Italia Spa Sistema per fornire un servizio
US10911307B2 (en) * 2019-01-29 2021-02-02 Dell Products L.P. System and method for out of the box solution-level configuration and diagnostic logging and reporting
US10812619B2 (en) * 2019-02-19 2020-10-20 Ingram Micro Inc. System and method for bulk user service assignment using CSV
WO2020173580A1 (en) * 2019-02-26 2020-09-03 Telefonaktiebolaget Lm Ericsson (Publ) Service delivery with joint network and cloud resource management
CN109857564A (zh) * 2019-03-05 2019-06-07 上海交通大学 基于细粒度的gpu的资源管理方法及其应用的gpu
US10726123B1 (en) * 2019-04-18 2020-07-28 Sas Institute Inc. Real-time detection and prevention of malicious activity
CN111861075B (zh) * 2019-05-17 2024-04-16 北京嘀嘀无限科技发展有限公司 一种资源配置方法、资源配置装置及可读存储介质
CN110633294B (zh) * 2019-09-20 2022-04-05 中国银行股份有限公司 一种数据处理方法、装置及存储介质
CN111355617B (zh) * 2020-01-08 2021-08-03 浙江辉驿网络科技有限公司 一种基于应用配置网络资源的方法、装置和电子设备
CN111523692B (zh) * 2020-04-09 2023-07-14 北京白龙马云行科技有限公司 订单管理方法、订单管理装置及订单管理系统
US10860381B1 (en) 2020-05-14 2020-12-08 Snowflake Inc. Flexible computing
US11212171B1 (en) 2020-06-30 2021-12-28 Oracle International Corporation Customer self-service cloud application provisioning
CN114666211B (zh) * 2020-12-23 2023-11-17 上海华为技术有限公司 一种通信方法、模型处理方法及相关设备
US11922183B2 (en) * 2021-06-23 2024-03-05 Microsoft Technology Licensing, Llc. Cross-platform deployment of application
US12020080B2 (en) 2021-08-02 2024-06-25 International Business Machines Corporation Automated resource request mechanism for heterogeneous infrastructure using profiling information
CN115878228A (zh) * 2021-09-30 2023-03-31 伊姆西Ip控股有限责任公司 管理资源的方法、电子设备和计算机程序产品
CN114416352B (zh) * 2021-12-29 2024-10-11 中国电信股份有限公司 算力资源分配方法、装置、电子设备及储存介质
CN115695187B (zh) * 2022-10-24 2024-05-24 中国工商银行股份有限公司 通讯资源获取方法、装置、计算机设备和存储介质
CN118338327B (zh) * 2024-06-13 2024-09-10 武汉攀升鼎承科技有限公司 一种基于无线通信的QoS架构管理系统及其工作方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060160546A1 (en) 2005-01-18 2006-07-20 Bellsouth Intellectual Property Corporation Methods, systems and computer-readable media for dynamically recognizing and processing service order types in a network management system
JP2006268684A (ja) 2005-03-25 2006-10-05 Fujitsu Ltd 需要予測装置、需要予測方法および需要予測プログラム
JP2011039803A (ja) 2009-08-12 2011-02-24 Hitachi Ltd ストレージシステムの容量を管理する管理計算機及びストレージシステムの容量管理方法
JP2014038364A (ja) * 2010-10-27 2014-02-27 Hitachi Ltd リソース管理サーバ、リソース管理方法及びリソース管理プログラム

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6901446B2 (en) 2001-02-28 2005-05-31 Microsoft Corp. System and method for describing and automatically managing resources
US20030135609A1 (en) 2002-01-16 2003-07-17 Sun Microsystems, Inc. Method, system, and program for determining a modification of a system resource configuration
US7461166B2 (en) 2003-02-21 2008-12-02 International Business Machines Corporation Autonomic service routing using observed resource requirement for self-optimization
US7676559B2 (en) * 2003-06-24 2010-03-09 Alcatel Lucent Real-time policy evaluation mechanism
CN1756186B (zh) * 2004-09-30 2010-04-28 华为技术有限公司 一种资源管理的实现方法
US20060085530A1 (en) 2004-10-15 2006-04-20 Emc Corporation Method and apparatus for configuring, monitoring and/or managing resource groups using web services
US7272588B2 (en) 2004-11-30 2007-09-18 Microsoft Corporation Systems, methods, and computer-readable media for generating service order count metrics
US7312154B2 (en) * 2005-12-20 2007-12-25 Corning Incorporated Method of polishing a semiconductor-on-insulator structure
US20080080396A1 (en) * 2006-09-28 2008-04-03 Microsoft Corporation Marketplace for cloud services resources
KR100822707B1 (ko) * 2006-12-01 2008-04-18 한국전자통신연구원 통합망 시스템에서의 서비스 품질 관리 장치 및 그 방법
US8453198B2 (en) * 2007-12-27 2013-05-28 Hewlett-Packard Development Company, L.P. Policy based, delegated limited network access management
US8850449B2 (en) 2008-12-19 2014-09-30 At&T Intellectual Property I, L.P. Method and apparatus for providing resource allocation policy
KR101113943B1 (ko) * 2008-12-22 2012-03-05 한국전자통신연구원 워크로드 관리 방법과 장치 및 이를 이용한 분산 컴퓨팅 시스템
CN101925182B (zh) * 2009-06-15 2014-04-02 大唐移动通信设备有限公司 一种资源管理方法、系统和设备
US8954487B2 (en) * 2009-06-23 2015-02-10 Samsung Electronics Co., Ltd. Management server and method for providing cloud computing service
US8370312B1 (en) 2009-09-15 2013-02-05 Symantec Corporation Systems and methods for using cloud-based storage to optimize data-storage operations
US8619779B2 (en) 2009-09-30 2013-12-31 Alcatel Lucent Scalable architecture for enterprise extension in a cloud topology
US8397273B2 (en) * 2010-02-11 2013-03-12 Oracle International Corporation Policy based provisioning in a computing environment
US8402139B2 (en) * 2010-02-26 2013-03-19 Red Hat, Inc. Methods and systems for matching resource requests with cloud computing environments
US8954564B2 (en) * 2010-05-28 2015-02-10 Red Hat, Inc. Cross-cloud vendor mapping service in cloud marketplace
US8443376B2 (en) 2010-06-01 2013-05-14 Microsoft Corporation Hypervisor scheduler
US20110307898A1 (en) * 2010-06-10 2011-12-15 Siemens Aktiengesellschaft Method and apparatus for efficiently distributing hardware resource requests to hardware resource offers
EP2609502A4 (en) 2010-08-24 2017-03-29 Jay Moorthi Method and apparatus for clearing cloud compute demand
US9274849B1 (en) 2010-09-08 2016-03-01 Disney Enterprises, Inc. Systems and methods for configuring and managing computing resources to provide highly-scalable services
US8484353B1 (en) 2010-09-28 2013-07-09 Amazon Technologies, Inc. Resource placement templates for virtual networks
US8909767B2 (en) 2010-10-13 2014-12-09 Rackware, Inc. Cloud federation in a cloud computing environment
US20120221454A1 (en) * 2011-02-28 2012-08-30 Morgan Christopher Edwin Systems and methods for generating marketplace brokerage exchange of excess subscribed resources using dynamic subscription periods
US8732267B2 (en) 2011-03-15 2014-05-20 Cisco Technology, Inc. Placement of a cloud service using network topology and infrastructure performance
US20120271949A1 (en) 2011-04-20 2012-10-25 International Business Machines Corporation Real-time data analysis for resource provisioning among systems in a networked computing environment
US8949428B2 (en) 2011-06-17 2015-02-03 International Business Machines Corporation Virtual machine load balancing
US9407514B2 (en) 2011-07-11 2016-08-02 Hewlett Packard Enterprise Development Lp Virtual machine placement
US20130031028A1 (en) * 2011-07-25 2013-01-31 Bank Of America Exchange System Supporting Cloud Computing
US8615528B2 (en) * 2011-07-28 2013-12-24 International Business Machines Corporation Cloud database sharing
US8832239B2 (en) 2011-09-26 2014-09-09 International Business Machines Corporation System, method and program product for optimizing virtual machine placement and configuration
DE102012217202B4 (de) 2011-10-12 2020-06-18 International Business Machines Corporation Verfahren und System zum Optimieren des Platzierens virtueller Maschinen in Cloud-Computing-Umgebungen
US8832249B2 (en) 2011-11-30 2014-09-09 At&T Intellectual Property I, L.P. Methods and apparatus to adjust resource allocation in a distributive computing network
US9106576B2 (en) 2012-01-13 2015-08-11 Nec Laboratories America, Inc. Policy-aware based method for deployment of enterprise virtual tenant networks
US9032077B1 (en) 2012-06-28 2015-05-12 Amazon Technologies, Inc. Client-allocatable bandwidth pools
US9154589B1 (en) * 2012-06-28 2015-10-06 Amazon Technologies, Inc. Bandwidth-optimized cloud resource placement service
US9043787B2 (en) 2012-07-13 2015-05-26 Ca, Inc. System and method for automated assignment of virtual machines and physical machines to hosts
US8856386B2 (en) 2012-08-21 2014-10-07 Cisco Technology, Inc. Cloud resource placement using placement pivot in physical topology
JP6181185B2 (ja) 2012-09-07 2017-08-16 オラクル・インターナショナル・コーポレイション Ldapベースのマルチカスタマ・インクラウド・アイデンティティ管理システム
US9621435B2 (en) 2012-09-07 2017-04-11 Oracle International Corporation Declarative and extensible model for provisioning of cloud based services
US9391875B2 (en) 2013-02-11 2016-07-12 Fujitsu Limited Resource oriented dependency graph for network configuration
US20140273928A1 (en) 2013-03-14 2014-09-18 1666863 Ontario Inc. Methods, software, and devices for automatically verifying completion of service orders for mobile devices
US20140279353A1 (en) * 2013-03-15 2014-09-18 Shawn Patrick Findlan C2EX Compute Commodities Exchange
US20140365662A1 (en) 2013-03-15 2014-12-11 Gravitant, Inc. Configuring cloud resources
US9276827B2 (en) 2013-03-15 2016-03-01 Cisco Technology, Inc. Allocating computing resources based upon geographic movement
EP2981896A4 (en) 2013-04-02 2016-11-02 Amazon Tech Inc GROUPINGS DEFINED BY USER
US9582297B2 (en) 2013-05-16 2017-02-28 Vmware, Inc. Policy-based data placement in a virtualized computing environment
US20150113144A1 (en) 2013-10-21 2015-04-23 Alcatel-Lucent Usa Inc. Virtual resource placement for cloud-based applications and solutions
US10476760B2 (en) 2013-10-30 2019-11-12 Oracle International Corporation System and method for placement logic in a cloud platform environment
US9621427B1 (en) 2013-12-06 2017-04-11 Vmware, Inc. Automatic placement of clients in a distributed computer system satisfying constraints
US20150163157A1 (en) 2013-12-09 2015-06-11 Alcatel-Lucent Usa Inc. Allocation and migration of cloud resources in a distributed cloud system
US9912609B2 (en) 2014-08-08 2018-03-06 Oracle International Corporation Placement policy-based allocation of computing resources
WO2016022925A2 (en) 2014-08-08 2016-02-11 Oracle International Corporation Policy based resource management and allocation system
US9961017B2 (en) 2014-08-08 2018-05-01 Oracle International Corporation Demand policy-based resource management and allocation system
US9405581B2 (en) 2014-09-08 2016-08-02 International Business Machines Corporation Resource allocation/de-allocation and activation/deactivation
US9256467B1 (en) 2014-11-11 2016-02-09 Amazon Technologies, Inc. System for managing and scheduling containers
US9800465B2 (en) 2014-11-14 2017-10-24 International Business Machines Corporation Application placement through multiple allocation domain agents and flexible cloud scheduler framework
US9940150B2 (en) 2015-02-27 2018-04-10 International Business Machines Corporation Policy based virtual resource allocation and allocation adjustment
US9612865B2 (en) * 2015-06-15 2017-04-04 International Business Machines Corporation Managed services coordinator

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060160546A1 (en) 2005-01-18 2006-07-20 Bellsouth Intellectual Property Corporation Methods, systems and computer-readable media for dynamically recognizing and processing service order types in a network management system
JP2006268684A (ja) 2005-03-25 2006-10-05 Fujitsu Ltd 需要予測装置、需要予測方法および需要予測プログラム
JP2011039803A (ja) 2009-08-12 2011-02-24 Hitachi Ltd ストレージシステムの容量を管理する管理計算機及びストレージシステムの容量管理方法
JP2014038364A (ja) * 2010-10-27 2014-02-27 Hitachi Ltd リソース管理サーバ、リソース管理方法及びリソース管理プログラム

Also Published As

Publication number Publication date
CN106576114A (zh) 2017-04-19
KR102687564B1 (ko) 2024-07-24
EP3177997B1 (en) 2022-10-26
JP2017524202A (ja) 2017-08-24
CN106576114B (zh) 2020-08-28
JP6605019B2 (ja) 2019-11-13
EP3177997A2 (en) 2017-06-14
KR20170042638A (ko) 2017-04-19
US10291548B2 (en) 2019-05-14
US20160043967A1 (en) 2016-02-11
US20160043970A1 (en) 2016-02-11
KR20220084197A (ko) 2022-06-21
US9961017B2 (en) 2018-05-01

Similar Documents

Publication Publication Date Title
KR102409347B1 (ko) 정책 기반 자원 관리 및 할당 시스템
JP6971341B2 (ja) コンピューティングリソースの配置ポリシーベースの割当て
US10778542B2 (en) Rule based subscription cloning
US10979318B2 (en) Enhancing resource allocation for application deployment
CN109478266B (zh) 对于数据库供应的资源分配
KR102313789B1 (ko) 이종 전자 디바이스들에 대한 애플리케이션 배포물의 구분
JP6442073B2 (ja) 顧客関係性管理データに基づいて推奨される登録簿
US10496306B1 (en) Predictive forecasting and data growth trend in cloud services
US9672123B2 (en) Deploying services on application server cloud with high availability
WO2016022925A2 (en) Policy based resource management and allocation system
US10015120B2 (en) Providing message delivery services between requestors and providers

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)