KR20220127327A - 상태 비보존형 서비스를 위한 적응형 상태 관리 - Google Patents

상태 비보존형 서비스를 위한 적응형 상태 관리 Download PDF

Info

Publication number
KR20220127327A
KR20220127327A KR1020227029377A KR20227029377A KR20220127327A KR 20220127327 A KR20220127327 A KR 20220127327A KR 1020227029377 A KR1020227029377 A KR 1020227029377A KR 20227029377 A KR20227029377 A KR 20227029377A KR 20220127327 A KR20220127327 A KR 20220127327A
Authority
KR
South Korea
Prior art keywords
provider
state
service
status
services
Prior art date
Application number
KR1020227029377A
Other languages
English (en)
Inventor
슈간다 아그라왈
티모 키스마울
하랄드 다우르
토스텐 테이크
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20220127327A publication Critical patent/KR20220127327A/ko

Links

Images

Classifications

    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/907Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Library & Information Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Micro-Organisms Or Cultivation Processes Thereof (AREA)

Abstract

클라우드 서비스 환경에서 상태 업데이트들을 제어하기 위한 컴퓨터 구현 방법이 제공될 수 있다. 상기 방법은 상태 제공자 관리 서비스에 의해 상태 제공자 레지스트리에서 상태 제공자 정의들 세트를 유지하는 단계를 포함하고, 각 상태 제공자 정의는 필수 입력 변수 정의들 세트, 출력 변수 정들 세트 및 관련 메타데이터를 포함한다. 상기 방법은 또한 호출된 서비스에 필요한 입력 변수 정의들 세트를 결정하는 단계, 상기 상태 제공자 관리 서비스에 의해 상기 결정된 입력 변수 정의들 세트를 수신하는 단계, 상태 제공자 레지스트리를 참조하여 상태 제공자 정의를, 상기 상태 제공자 관리 서비스에 의해, 선택하는 단계 - 상기 선택된 상태 제공자 정의는 상기 수신된 입력 변수 정의들 세트와 호환됨 -, 상기 선택된 상태 제공자 정의와 일치하는 상태 제공자 서비스들 세트를 결정하는 단계, 상기 결정된 상태 제공자 서비스들 세트의 상태 제공자 정의와 관련된 메타데이터를 사용하여 상기 결정된 상태 제공자 서비스들 세트를 스코어링하는 단계, 최고 스코어링 상태 제공자 서비스를 호출하는 단계, 및 상기 상태 데이터를 상기 호출된 서비스에 전달하는 단계를 포함한다.

Description

상태 비보존형 서비스를 위한 적응형 상태 관리
[0001] 본 발명은 일반적으로 상태 관리(state management)에 관한 것으로, 보다 구체적으로 클라우드 서비스 및/또는 컴퓨팅 환경에서 상태 업데이트들을 제어하기 위한 컴퓨터 구현 방법에 관한 것이다. 본 발명은 또한 클라우드 서비스 환경에서 상태 업데이트들을 제어하기 위한 스토리지 제어 시스템, 및 컴퓨터 프로그램 제품에 관한 것이다.
[0002] 종종 클라우드 컴퓨팅 플랫폼 및 클라우드 프레임워크에 배치되는, 최신 컴퓨팅 환경은 상호 작용하는 복수의 서비스들 및/또는 마이크로-서비스들로 구성된다. 그러한 마이크로-서비스들의 특성들 중 하나는 그러한 마이크로-서비스들이 종종 상태 비보존형(stateless)이라는 것, 즉, 한 호출(invocation)에서 다음 호출까지 상태가 지속되지 않는다는 것이다. 특히, 마이크로-서비스의 한 세션의 상태(데이터 포함)는 그 마이크로-서비스를 사용하는 다음 세션 또는 호출(call)을 위해 저장되지 않는다는 것이다. 그러나, 어떤 경우들에는, 연관된 마이크로-서비스들의 다음 호출을 위해 마이크로-서비스들의 상태를 이용 가능하게 만드는 것이 유용할 수 있다. 이것은 트랜잭션 애플리케이션 프로그램들(예: 기술 전자 상거래 하부구조)을 위한 기본 기술로서뿐만 아니라 클라우드 컴퓨팅 환경에서 클라우드 컴퓨팅 프레임워크 및/또는 멀티 프로세서 시스템 관리에도 유용하다. 그러한 자원들은 서로 다른 조건들, 성능 수준들 및 서비스 수준 계약들 하에서도 서로 다른 제공자 조직들로부터 이용 가능할 수 있다. 그러나, 만일 그러한 자원들에 대한 자원 관리가 상태 비보존형 서비스들 및/또는 마이크로-서비스들의 상호 작용에 또한 기초할 수도 있다면, 각 서비스/마이크로-서비스의 "이전(old)" 상태에 액세스하는 것도 그러한 상황들에서 유용할 수 있다.
[0003] 클라우드 제공자들은 일반적으로 클라이언트들이 서비스 컴퓨팅 환경의 자원들을 구독하고 사용할 수 있는 물리적 또는 가상 컴퓨팅 자원들을 제공하지만 한편, 클라우드 제공자들은 기본 컴퓨팅 및 네트워크 하부구조의 할당을 관리한다. 이 운영 모델은 클라이언트들이 운영 비용을 최적화할 수 있기 때문에 클라이언트에게 유리하다. 한편, 클라우드 제공자의 정당한 이익은 비즈니스 모델이 실현 가능하도록 운영 및 투자 비용을 최소화하는 것이다. 따라서, 클라우드 제공자는 일반적으로 컴퓨터 자원 할당을 제한하며, 이 제한은 일반적으로 특정 프로그래밍 방법에서 지원된다. 따라서 기본 프로그래밍 모델은 상태 비보존형(a stateless), 이벤트 구동형(event driven), 처리 시간 제한 서버리스 모델(processing time limited serverless model)이다.
[0004] 특정 실행 요건들을 위해서는 유리하지만, 이 모델에는 몇 가지 단점도 있다. 분명한, 한 가지 단점은 상태 비보존형이라는 것, 즉, 데이터 또는 상태 정보가 기능(function)의 한 실행 주기에서 다음 실행 주기로 또는 다른 기능들 또는 서비스들 간에 쉽게 공유될 수 없다는 것이다.
[0005] 클라우드 서비스 환경에서 상태 업데이트들을 제어하기 위한 컴퓨터 구현 방법과 관련된 여러 공개된 문헌들이 있다.
[0006] 문헌 US 9,749,387 B2는 애플리케이션에 의해 실행될 적어도 하나의 연산(operation)뿐만 아니라 제1 상태 정보를 포함하는 애플리케이션과 연관된 수신된 요청에 기초하여 상태 비보존형 애플리케이션들에 대한 상태 저장 실행을 투명하게 제공하기 위한 실시예들을 개시하고 있다.
[0007] 문서 CA 2981271 A1은 온라인 트랜잭션 동안 클라이언트로부터 수신된 텍스트 입력을 나타내는 제1 URL(Uniform Resource Locator)의 생성을 실행하는 단계를 포함하는 클라이언트 상호작용들과 관련된 상호작용 흐름 상태들의 상태 비보존형 표현을 용이하게 하는 방법 및 장치를 개시한다.
[0008] 알려진 솔루션들의 단점은 알려진 솔루션들은 종종 상용 트랜잭션 시스템에만 초점을 맞추고, 경쟁을 위해 상태 비보존형 서비스를 사용해야 하지만, 상태를 유지하는 것이 그럼에도 불구하고 필요한, 멀티-프로세서 기반 클라우드 컴퓨팅 환경을 제어하고 최적화하기 위한 심층적인 기술적 기능에는 초점을 맞추지 않는다는 점이 될 수 있다. 이 문제에 대한 솔루션이 본 발명의 제안된 개념의 기본 목표가 될 수 있다.
[0009] 본 발명의 일 실시 예에 따라, 클라우드 서비스 환경에서 상태 업데이트들을 제어하기 위한 컴퓨터 구현 방법이 제공된다. 상기 방법은 상태 제공자 관리 서비스에 의해 상태 제공자 레지스트리에서 상태 제공자 정의들 세트를 유지하는 단계를 포함한다. 각 상태 제공자 정의는 필수 입력 변수 정의들 세트, 출력 변수 정들 세트 및 관련 메타데이터를 포함한다.
[0010] 상기 방법은 또한 서비스를 호출하는 것에 기초하여, 상기 호출된 서비스에 필요한 입력 변수 정의들 세트를 결정하는 단계 포함한다. 상기 방법은 상기 상태 제공자 관리 서비스에 의해 상기 결정된 입력 변수 정의들 세트를 수신하는 단계 더 포함한다. 상기 방법은 또한 상태 제공자 레지스트리를 참조하여 상태 제공자 정의를, 상기 상태 제공자 관리 서비스에 의해, 선택하는 단계를 포함하며, 상기 선택된 상태 제공자 정의는 상기 수신된 입력 변수 정의들 세트와 호환될 수 있다.
[0011] 또한, 상기 방법은 상기 선택된 상태 제공자 정의와 일치하는 상태 제공자 서비스들 세트를 결정하는 단계를 포함한다. 상기 방법은 또한 상기 결정된 상태 제공자 서비스들 세트의 상태 제공자 정의와 관련된 메타데이터를 사용하여 상기 결정된 상태 제공자 서비스들 세트를 스코어링하는 단계(scoring)를 포함한다. 상기 방법은 최고 스코어링 상태 제공자 서비스를 호출하는 단계, 그리고 이에 의해 상태 데이터를 생성하는 단계, 및 상기 호출된 서비스에 상기 상태 데이터를 전달하는 단계를 더 포함한다.
[0012] 본 발명의 다른 실시 예에 따라, 클라우드 서비스 환경에서 상태 업데이트들을 제어하기 위한 상태 제어 시스템이 제공된다. 상기 상태 제어 시스템은 상태 제공자 관리 서비스 유닛에 의해 상태 제공자 정의들 세트를 유지하기 위해 구성된 상태 제공자 레지스트리 모듈을 포함하며, 각 상태 제공자 정의는 필수 입력 변수 정의들 세트, 출력 변수 정들 세트 및 관련 메타데이터를 포함한다. 상기 시스템은 또한 서비스를 호출하는 것에 기초하여, 상기 호출된 서비스에 필요한 입력 변수 정의들 세트를 결정하기 위해 구성된 제1 결정 수단을 포함하고, 상기 상태 제공자 관리 서비스 유닛은 또한 상기 결정된 입력 변수 정의들 세트를 수신하기 위해 구성된다.
[0013] 또한, 상기 상태 제공자 관리 서비스 유닛은 상기 상태 제공자 레지스트리를 참조하여 상태 제공자 정의를 선택하도록 구성되며, 상기 선택된 상태 제공자 정의는 상기 수신된 입력 변수 정의 세트와 호환된다.
[0014] 또한, 상기 상태 제어 시스템은 상기 선택된 상태 제공자 정의와 일치하는 상태 제공자 서비스들 세트를 결정하기 위해 구성된 제2 결정 수단을 포함한다. 상기 상태 제어 시스템은 또한 상기 결정된 상태 제공자 서비스들 세트의 상태 제공자 정의와 관련된 메타데이터를 사용하여 상기 결정된 상태 제공자 서비스들 세트를 스코어링 하기 위해 구성된 스코어링 수단을 포함한다. 상기 상태 제어 시스템은 또한 최고 스코어링 상태 제공자 서비스를 호출하고, 그리고 이에 의해 상태 데이터를 생성하기 위해 구성된 호출 수단을 포함한다. 상기 상태 제어 시스템은 상기 상태 데이터를 상기 호출된 서비스에 전달하기 위해 구성된 전송 수단을 더 포함한다.
[0015] 또한, 실시예들은 컴퓨터 또는 모든 명령 실행 시스템에 의해 또는 이와 관련하여 사용하기 위한 프로그램 코드를 제공하는 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체로부터 액세스 가능한 관련 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 이 설명의 목적을 위해, 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체는 명령 실행 시스템, 장치 또는 디바이스에 의해 또는 관련하여 사용하기 위해 프로그램을 저장, 통신, 전파 또는 전송하는 수단을 포함할 수 있는 모든 장치일 수 있다. 따라서, 클라우드 서비스 환경에서 상태 업데이트들을 제어하기 위한 컴퓨터 프로그램 제품이 제공된다. 상기 컴퓨터 판독 가능 스토리지 매체는 구현된 프로그램 명령들을 가지며, 상기 프로그램 명령들은 하나 또는 그 이상의 컴퓨팅 시스템들에 의해 실행 가능하고, 상기 하나 또는 그 이상의 컴퓨팅 시스템들이 상태 제공자 관리 서비스에 의해 상태 제공자 레지스트리에서 상태 제공자 정의들 세트를 유지하는 단계를 수행하도록 한다. 각 상태 제공자 정의는 필수 입력 변수 정의들 세트, 출력 변수 정들 세트 및 관련 메타데이터를 포함한다.
[0016] 상기 프로그램 명령들은 또한 하나 또는 그 이상의 컴퓨팅 시스템들이, 서비스를 호출하는 것에 기초하여, 상기 호출된 서비스에 필요한 입력 변수 정의들 세트를 결정하는 단계를 수행하도록 한다. 상기 프로그램 명령들은 또한 하나 또는 그 이상의 컴퓨팅 시스템들이 상기 상태 제공자 관리 서비스에 의해 상기 결정된 입력 변수 정의들 세트를 수신하는 단계를 수행하도록 한다. 상기 프로그램 명령들은 또한 하나 또는 그 이상의 컴퓨팅 시스템들이 상태 제공자 레지스트리를 참조하여 상태 제공자 정의를, 상기 상태 제공자 관리 서비스에 의해, 선택하는 단계를 수행하도록 하고, 상기 선택된 상태 제공자 정의는 수신된 입력 변수 정의들 세트와 호환된다.
[0017] 상기 프로그램 명령들은 또한 하나 또는 그 이상의 컴퓨팅 시스템들이 상기 선택된 상태 제공자 정의와 일치하는 상태 제공자 서비스들 세트를 결정하는 단계를 수행하도록 한다. 상기 프로그램 명령들은 또한 하나 또는 그 이상의 컴퓨팅 시스템들이 상기 결정된 상태 제공자 서비스들 세트의 상태 제공자 정의와 관련된 메타데이터를 사용하여 상기 결정된 상태 제공자 서비스들 세트를 스코어링하는 단계(scoring)수행하도록 한다. 상기 프로그램 명령들은 또한 하나 또는 그 이상의 컴퓨팅 시스템들이 최고 스코어링 상태 제공자 서비스를 호출하는 단계, 그리고 이에 의해 상태 데이터를 생성하는 단계를 수행하도록 한다. 상기 프로그램 명령들은 또한 하나 또는 그 이상의 컴퓨팅 시스템들이 상기 상태 데이터를 상기 호출된 서비스에 전달하는 단계(passing)를 수행하도록 한다.
[0018] 클라우드 서비스 환경 및 관련 시스템에서 상태 업데이트를 제어하기 위해 제안된 컴퓨터 구현 방법은 여러 이점들, 기술적 효과들, 기여들 및/또는 개선 사항들을 제공할 수 있다.
[0019] 여기에 제안된 개념은 클라우드 컴퓨팅 환경에서 상태 비보존형 서비스(a stateless service) 및/또는 마이크로-서비스를 호출하는 호출을 가로채어(intercept) 서비스/마이크로 서비스가 이전의 실행 후 종료된 시점부터 동일 서비스 및/또는 마이크로 서비스의 상태를 주입(infuse)하는 것을 가능하게 할 수 있다. 이 메커니즘은 하나의 서비스 및/또는 마이크로-서비스뿐만 아니라 기본 클라우드 컴퓨팅 환경에서 동일하거나 다른 제공자들에 의해 제공되는 복수의 동일 서비스들 및/또는 마이크로-서비스들에 대해서도 작동할 수 있다. 상태 제공자 레지스트리를 사용하여, 호출 서비스 또는 마이크로-서비스를 만족하는, 상태 정의들을 충족하는 복수의 상태 제공자 서비스들이 식별될 수 있다. 상태 제공자 레지스트리와 관련된 메타데이터에 기초하여, 특정 상태 제공자 서비스는 서비스 수준 계약 또는 호출 서비스 또는 마이크로-서비스, 또는 상태 제공자 관리 서비스에 의해 요구되는 다른 미리 정의된 조건들 및/또는 규칙들에 따라 선택될 수 있다.
[0020] 이를 통해 상태 비보존형 서비스들/마이크로-서비스들의 상태들을 관리할 수 있을 뿐만 아니라 사전 정의된 규칙들에 따라 적절한 상태 제공자 서비스를 선택할 수도 있다. 이는 클라우드 컴퓨팅 환경들에서 서비스들/마이크로-서비스들의 상태 관리에서 높은 유연성을 허용할 수 있을 뿐만 아니라 동일한 특성을 갖는 상태 제공자 서비스들을 제공하는 다른 주체들(즉, 제공자들)의 자원들 사이에 로드 밸런싱을 가능하게 할 수도 있다.
[0021] 본 발명의 제안된 개념은 하드웨어에 가까운 자원들의 관리 작업에서도 장점들을 제공할 수 있다. 따라서, 프로세서, 코프로세서, 메모리 유닛, 메모리 시스템, 및/또는 네트워크 자원들의 상태들이 본 발명의 제안된 개시된 개념에 따라 지금 장착될 수 있고 상태 정보를 사용할 수 있는 원래의 상태 비보존형 서비스로도 우아하게 모니터링 및 관리될 수 있다.
[0022] 방법 및 관련 시스템 및 컴퓨터 프로그램 제품에 적용 가능한 본 발명의 개시된 개념의 아래의, 추가 실시예가 설명될 것이다.
[0023] 바람직한 실시예에 따르면, 상기 방법은, 메타데이터 레지스트리의 상태 제공자 관리 서비스에 의해, 각 상태 제공자 서비스에 대해, 상태 제공자 서비스의 호출 시 마다 상태 제공자 관리 서비스에 의해 증가될 수 있는 호출 카운터를 저장하는 단계를 또한 포함할 수 있다. 따라서, 상태 제공자 서비스들 중 어느 것이 가장 많이 사용되는지 결정될 수 있다. 이 지표는 주어진 필수 입력 데이터 세트에 대한 미래의 상태 제공자 서비스 선택을 위한 품질 평가, 성능 평가, 가용성 및 신뢰성 평가에 사용될 수 있다.
[0024] 주어진 상태 제공자 정의와 일치하는 상태 제공자 서비스 요청에 응답할 때 호출 카운터가 저장될 수 있는 상태 제공자 레지스트리는 상태 제공자 서비스에 대한 응답 데이터의 일부로 호출 카운터를 추가로 반환할 수 있다. 상태 제공자 관리 서비스가 호출 카운터를 수신하면, 선택된 상태 제공자 서비스들에 대해 마지막으로 저장된 호출 카운터들과 비교할 수 있다. 또한, 만일 선택된 상태 제공자 기능에 대해 수신된 호출 카운터가 마지막으로 저장된 호출 카운터보다 크거나 같다면 상태 제공자 관리 서비스는 실제 서비스 요청을 삭제할 수 있다.
[0025] 유용한 실시예에 따르면, 상기 방법은, 서비스의 실행을 완료하는 것에 기초하여, 상태 데이터가 수신되는 상태 제공자 서비스에 서비스의 출력 값들을 반환하는 단계를 또한 포함할 수 있다. 이 동작은 또한 상태 제공자 관리 서비스의 제어 하에 실행될 수도 있다. 따라서, 상태 제공자 관리 서비스는 여기서 제안하는 개념에서 중심적인 역할을 할 수 있다.
[0026] 추가적인 바람직한 실시예에 따르면, 상기 방법은 또한 상태 데이터가 수신되는 상태 제공자 서비스에 의해 수신된 상태 데이터를 지속적으로 저장하는 단계를 포함할 수 있다. 따라서, 상기 상태 제공자 서비스는 사전 정의된 기능을 충족하기 위해 애플리케이션에 의해 호출되었을 수 있는 관련 서비스의 상태를 추적하는 목적을 달성했을 수 있다.
[0027] 확장된 실시예에 따르면, 상기 방법은, 호출된 제1 상태 제공자 서비스가 제2 상태가 필요하다고 결정하는 것에 기초하여, 상기 상태 제공자 관리 서비스를 통해 제2 상태 제공자 서비스를 호출하는 단계, 상기 제2 상태 제공자 서비스에 대한 관련 입력 변수들 세트를 결정하는 단계, 일치하는 제2 상태 제공자 서비스들의 세트를 결정하는 단계, 상기 일치하는 제2 상태 제공자 서비스들의 세트를 스코어링 하는 단계, 최고 점수의 제2 상태 제공자 서비스를 선택하는 단계와, 이에 의해 제2 상태 데이터를 생성하는 단계, 상기 제2 상태 데이터를 상기 제2 상태 제공자 서비스에 전달하는 단계, 및 상기 제2 상태 제공자 서비스의 실행 출력 값을 제2 상태로서 반환하는 단계를 포함한다.
[0028] 이런 식으로 주어진 서비스에 대한 일련의 종속 상태들 관리하는 것이 가능하게 될 수 있다. 이 경우에, 서비스 제공자 서비스는 서비스 제공자 관리 서비스에 의해 재귀적 방식으로 활성화될 수 있으므로, 서비스 제공자 정의를 사용하여, 제1 선택된 서비스 제공자 서비스로부터 시작하여, 하나 또는 그 이상의 추가 상태 제공자 서비스들이 선택될 수 있고, 최종적으로 원하는 상태를 호출 서비스로 반환하기 위해 캐스케이드로 활성화된다.
[0029] 상기 방법의 또 다른 바람직한 실시예에 따르면, 상기 결정된 상태 제공자 서비스들 세트를 스코어링 하는 단계는 동일 스코어 값을 갖는 최고 스코어링 상태 제공자 서비스들 세트를 생성하고, 최고 스코어링 상태 제공자 서비스들 세트 - 특히 완전한 세트를 병렬로 호출하는 결과를 가져올 수 있다. 이렇게 하면, 주어진 시간에 하나의 서비스 제공자 서비스가 활성화될 수 있을 뿐만 아니라, 동등하게 동작하는 상태 제공자 서비스들 - 즉, 동일한 상태를 반환하도록 활성화되는- 이 병렬로 실행될 수 있다. 이러한 방식으로, 다른 상태 제공자 서비스들에 대한 성능 테스트가 활성화되어 상태 제공자 서비스 활성화의 향후 인스턴스들에서 최고의 성능을 제공하는 하나의 상태 제공자 서비스가 선택될 수 있음을 보장할 수 있다. 또는, 서로 다른 서비스 수준 계약들 하에서 상태 제공자 서비스를 실행할 수 있는, 클라우드 컴퓨팅 환경에서 여러 제공자들로부터의 상태 제공자 서비스들이 서로에 대해 측정될 수 있다.
[0030] 이 행동은 다음 선택적인 실시예에서 표현될 수 있고, 이 실시 예에 따라 상기 방법은 또한 상기 최고 스코어링 상태 제공자 서비스들 세트를 실행하기 위한 성능 값을 측정하는 단계, 및 각 상태 제공자 서비스의 메타데이터에 각 성능 값을 저장하는 단계를 포함할 수 있다. 따라서 성능 비교 결과들은 상기 상태 제공자 관리 서비스에 의해 제어되고 액세스 가능한 메타데이터에 지속적으로 저장될 수 있다.
[0031] 상기 방법의 추가의 유용한 실시예에 따르면, 상기 상태 제공자 서비스들의 세트를 결정하는 단계는 메타데이터에 관한 미리 정의된 규칙들에 따라 일치하는 상태 제공자 서비스들을 결정하는 단계를 또한 포함할 수 있다. 그렇게 함에 있어서, 상기 상태 제공자 서비스는 미리 정의된 품질 표준, 서비스 수준 계약, 성능 지표, 및/또는 서비스 제공자 서비스의 다른 행동 지표에 의해 주어진 것과 같은 미리 정의된 규칙들에 따라 선택될 수 있다.
[0032] 상기 방법의 추가 확장된 실시예에 따르면, 상기 상태 제공자 서비스들의 세트를 결정하는 단계는 클라우드 컴퓨팅 환경에서 현재 워크로드 프로파일에 따라 일치하는 상태 제공자 서비스들을 결정하는 단계를 또한 포함할 수 있다. 이러한 방식으로, 클라우드 컴퓨팅 환경의 다른 섹션 또는 부분, 즉 주어진 시간 컴퓨팅 센터의 다른 워크로드가 반영 및/또는 제어될 수도 있다.
[0033] 상기 방법의 허용 가능한 일 실시예에 따르면, 최고 스코어링 상태 제공자 서비스는 라운드 로빈 원칙에 따라 결정될 수 있다. 따라서 미리 정의된 상태 제공자 서비스 정의에 따른 상태 제공자 서비스가 호출되어야 할 때마다, 상기 동일한 정의를 확인하는, 다른 서비스가 실행될 기회를 얻을 수 있다.
[0034] 또한 최고 스코어링의 정의는 광범위하게 이해될 수 있음을 언급할 수 있다. 즉, 상기 스코어링은 클라우드 컴퓨팅 환경에서 미리 정의된 조건들에 따라 동적으로 변경될 수 있는 자체 세트의 기초가 될 수 있다(underlie). 예를 들어, 최고 스코어링 상태 제공자는 실제로 특히 과거 실행들 중에 성능이 가장 높음, 즉 특정 상태 제공자 서비스가 최단 시간에 상태를 반환한다는 것을 실제로 보여준 상태 제공자일 수 있다. 또 다른 경우에, SLA들 및/또는 품질 요건들 등의 선택된 세트를 준수하는 가장 좋은 추적 기록을 가진 상태 제공자 서비스가 다른 규칙에 따라 선택될 수 있다.
[0035] 본 발명 내용의 실시예는 상이한 주제들을 참조하여 설명된다는 점에 유의해야 한다. 특히, 일부 실시예는 방법 유형 청구항들을 참조하여 설명되지만 다른 실시예는 장치 유형 청구항들을 참조하여 설명된다. 그러나, 당업자는 위의 그리고 다음의 설명으로부터, 달리 통지되지 않는 한, 한 유형의 주제에 속하는 특징들의 조합에 추가하여, 다른 주제들과 관련된 특징들 사이의 모든 조합도, 특히, 방법 유형 청구항의 특징들과 장치 유형 청구항의 특징들 사이의 모든 조합도 본 명세서 내에서 공개되는 것으로 간주된다고 이해한다.
[0036] 위에서 정의된 실시 예들, 및 본 발명 내용의 추가적인 실시 예들은 이하에서 설명될 실시형태의 예들로부터 명백하고, 실시형태의 예들을 참조하여 설명되지만, 본 발명이 이에 제한되는 것은 아니다.
[0037] 본 출원에 포함된 도면은 명세서에 통합되고 명세서의 일부를 형성한다. 그것들은 본 발명의 실시예들을 예시하고, 설명과 함께, 본 발명의 원리들을 설명하는 역할을 한다. 도면들은 특정 실시예들을 예시하고 본 발명을 제한하지는 않는다.
[0038] 도 1은 클라우드 서비스 환경에서 상태 업데이트를 제어하기 위한 컴퓨터 구현 방법의 실시예의 블록도를 도시한다.
[0039] 도 2는 여기에 제안된 개념을 지원하는 관련 유닛 및 선택된 통신 경로의 실시예의 블록도를 도시한다.
[0040] 도 3은 여기에 제안된 개념의 핵심 컴포넌트 사이의 메시지 흐름의 실시예의 다이어그램을 도시한다.
[0041] 도 4는 클라우드 서비스 환경에서 상태 업데이트를 제어하기 위한 상태 제어 시스템의 실시예의 블록도를 도시한다.
[0042] 도 5는 도 4에 따른 상태 제어 시스템을 포함하는 컴퓨팅 시스템의 실시예를 도시한다.
[0043] 도 6은 개시된 개념의 적어도 일부가 배치될 수 있는 클라우드 컴퓨팅 환경을 도시한다.
[0044] 도 7은 본 발명 내용의 일부 실시예에 따른 클라우드 컴퓨터 환경을 예시하는 개략도이다.
[0045] 이 설명과 관련하여 다음 규칙, 용어 및/또는 표현이 사용될 수 있다.
[0046] 특히, 마이크로-서비스의 하나의 서비스(a service of a micro-service)의 '상태(state)'라는 용어는 컴퓨팅 시스템에서 서비스 또는 애플리케이션 또는 프로세스의 마지막으로 알려진 또는 현재 상태(the last-known or current status)로 정의될 수 있다. 하나의 서비스 측면에서 상태는 서비스의 변수들 또는 파라미터들의 현재 값으로 더 정교하게 설명될 수 있으며, 상태는 애플리케이션들이 실행됨에 따라 그리고 실행될 때 변화(change)될 수 있다.
[0047] "상태 보존(stateful)"이라는 용어는 일반적으로 애플리케이션 또는 서비스가 언제든지 상태를 유지할 수 있음을 의미할 수 있다. 대조적으로, 상태 비보존형(stateless) 애플리케이션 프로그램 또는 서비스는 완전히 자급식(self-contained)일 수 있으며, 데이터 및 실행 트랜잭션 경계들은 애플리케이션 프로그램 또는 서비스의 스타트-포인트들 및 엔드포인트들과 동일하다(congruent). 따라서, 만일 상태 비보존형 서비스가 다시 시작되면 이전 서비스에 대한 기억이 전혀 없을 수 있으며, 즉, 이전 실행 및 사용된 변수에 대한 데이터가 전혀 없을 수 있다.
[0048] "서비스"라는 용어는 여기에서 하나 또는 그 이상의 능력들 및/또는 자원들에 대한 액세스를 가능하게 하는 메커니즘을 의미할 수 있으며, 상기 액세스가 규정된 인터페이스를 사용하여 제공될 수 있고 관련 서비스 규약에 의해 명시된 제약들 및/또는 정책들과 일관되게 실행될 수 있다. 때때로 소프트웨어 기술은 SOA(서비스 지향 아키텍처) 구조 스타일의 맨 끝에서 마이크로-서비스들을 개발하는 데 사용된다. 이 경우, 하나의 애플리케이션이 느슨하게 결합된 서비스들의 집합으로 구성될 수 있다. 마이크로-서비스 아키텍처에서, 서비스들은 보다 세분화되고(more fine-grained) 프로토콜들은 보다 고전적인 SOA 컴퓨팅 환경에 비해 더 가볍다. 본 명세서의 맥락에서 "서비스"와 "마이크로-서비스"라는 용어는 서로 교환하여 사용될 수 있다.
[0049] "상태 제공자 관리 서비스(state provider management service)"라는 용어는 지금까지의 상태 비보존형 서비스에 대해 상태 관리를 가능하게 하는 맥락에서 새로운 기능을 의미할 수 있다. 따라서, 상태 비보존형 서비스도, 그 기능에서, 상태 비보존형 서비스를 전혀 변경하지 않고도 상태 보존이 된다고 발표할 수도 있다. 상태 비보존형 서비스의 상태는 상태 제공자 서비스(a state provider service)에 의해 상태 비보존형 서비스 외부의 다른 서비스들과 독립적으로 관리될 수 있다. 상태 제공자 서비스들의 모음은 관련 상태 제공자 관리 서비스에 의해 관리될 수 있다. 상태 제공자 정의들(state provider definitions)을 정의, 변경 또는 삭제하기 위해 사용자 인터페이스(UI)(220) 또는 API(애플리케이션 프로그래밍 인터페이스)가 장착될 수 있다. 일반적으로, 상태 제공자 정의는 관련 서비스의 필수 입력 변수들 및 출력 변수들을 적어도 포함한다. 적어도 일부 실시예에서, 둘 이상의 상태 제공자 서비스들이 하나의 상태 제공자 정의에 대해 존재할 수 있다. 따라서, 둘 이상의 상태 제공자 서비스들이 호출될 수 있고(invoked) 병렬로 실행될 수 있다.
[0050] "상태 제공자 레지스트리(state provider registry)"라는 용어는 상태 제공자 관리 서비스에 의해 관리되고 조작될 수 있다. 즉, 새로운 엔트리들이 정의, 변경 또는 삭제될 수 있다. 따라서 상태 제공자 레지스트리는 상태 제공자 서비스들을 등록, 쿼리, 마감 등록(due registering) 및 업데이트하기 위해 API들을 제공할 수 있다.
[0051] 여기서 "상태 제공자 서비스(state provider service)"라는 용어는 상태 제공자 레지스트리에 저장되고 상태 제공자 관리 서비스에 의해 관리되는 상태 제공자 스펙 또는 상태 제공자 정의에 의해 정의될 수 있다. 따라서 상태 제공자 정의는 상태 제공자 서비스의 세부사항들(the specifics), 예를 들어 상태 제공자 서비스에 따라 서비스의 관련 요건들과 일치할 수 있는 필수 입력 변수들 및 서비스의 상태의 지속적인 저장을 보장하기 위한 출력 변수들을 결정할 수 있다.
[0052] 예를 들어, z( ): id, *는, 추가 상태들 또는 상태 제공자 서비스들에 의존하지 않고, 모든 서비스들 및 상태 제공자 서비스들에 대해 상태 변수 "id"를 제공할 수 있는(따라서 와일드카드 "*"인) 상태 제공자 서비스 z를 정의할 수 있다.
[0053] 또 다른 예로서, y(id): name, address, x는 상태 제공자 서비스 y(이제 다른 상태 제공자에 의해 제공될, 상태 "id"에 의존)를 정의할 수 있고, 이는 서비스 스펙 "x"를 준수하는 서비스들 및 상태 제공자의 서비스들에 대한 상태 변수 "name" 및 "address"를 제공하고, 여기서 x는 서비스 name에 관한 정규식(a regular expression)일 수 있다.
[0054] '메타데이터(metadata)'라는 용어는 - 특히 상태 제공자 서비스의 메타데이터를 의미할 수 있으며 - 해당 상태 제공자 서비스의 특정 특성을 의미할 수 있다. 메타데이터는 성능 지표들, 품질 파라미터들, 특별 서비스 수준 계약, 제공자, 상태 제공자 서비스 운영, 및/또는 상태 제공자 서비스가 갖는 기타 행동 특성(performance indicators, quality parameters, special service level agreements, the provider, operating the state provider service, and/or other behavior characteristics the state provider service has)에 관한 것일 수 있다.
[0055] 본 발명은 클라우드 컴퓨팅에 관해서 상세한 설명들을 포함하지만, 여기서 설명된 그러한 기술적 사상들의 구현은 클라우드 컴퓨팅 환경에만 한정되는 것은 아님을 이해하여야 한다. 오히려, 본 발명의 실시 예들은 지금 알려져 있거나 또는 나중에 개발될 모든 다른 유형의 컴퓨팅 환경과 함께 구현될 수 있다.
[0056] 당업계에 알려진 바와 같이, '클라우드 컴퓨팅' 이라는 용어(및 동등하게 '클라우드 서비스 환경'이라는 용어)는 이러한 맥락에서 최소한의 관리 노력 또는 서비스 제공자와의 상호작용으로 빠르게 제공되고 해제될 수 있는, 구성 가능한(configurable) 컴퓨팅 자원들(예를 들어, 네트워크들, 네트워크 대역폭, 서버들, 처리, 메모리, 스토리지, 애플리케이션들, 가상 머신들, 및 서비스들)의 공유 풀에 대한 편리한 주문형(on-demand) 네트워크 액세스를 가능하게 하는 모델로서 해석될 수 있다. 이 클라우드 모델은 가용성을 높이고 적어도 5가지의 특성(characteristics), 적어도 3가지 서비스 모델(service models), 및 적어도 4가지 배치 모델(deployment models)로 구성된다.
[0057] 클라우드 컴퓨팅의 필수 특성들은 다음과 같다.
(i) 주문형 셀프-서비스(On-demand self-service): 클라우드 소비자는, 서비스 제공자와의 인적 상호작용을 필요로 하지 않고 필요한 만큼 자동적으로, 서버 시간(server time) 및 네트워크 스토리지 같은 컴퓨팅 용량들을 일방적으로 제공(provision)할 수 있다.
(ii) 광역 네트워크 액세스(Broad network access): 혼성의 씬 또는 씩 클라이언트 플랫폼들(heterogeneous thin or thick client platforms)(예를 들어, 모바일폰들, 랩탑들, 및 PDA들)에 의한 사용을 장려하는 표준 메커니즘들을 통해 액세스되는 기능들을 네트워크를 통해서 이용할 수 있다.
(iii) 자원 풀링(Resource pooling): 제공자의 컴퓨팅 자원들은, 각기 다른 물리적 및 가상 자원들을 요구(demand)에 따라 동적으로 할당 및 재할당하는, 멀티-테넌트 모델(a multi-tenant model)을 사용하는 다수의 소비자들에게 서비스할 수 있도록 풀에 넣어둔다(pooled). 소비자는 일반적으로 제공된 자원들의 정확한 위치를 제어할 수 없거나 그에 대한 지식이 없지만 더 높은 추상 수준에서(예를 들어, 국가, 주, 또는 데이터센터) 위치를 명시할 수 있다는 점에서 위치 독립성이 있다.
(iv) 기민한 탄력성(Rapid elasticity): 용량들(capabilities)이 기민하게 탄력적으로 제공되어 (어떤 경우엔 자동으로) 신속히 규모를 확장할 수도 있고(scale out) 그리고 탄력적으로 해제되어 신속히 규모를 축소할 수도 있다(scale in). 소비자에게 제공할 수 있는 가능성이 종종 무제한이고 언제든지 원하는 수량으로 구매할 수 있는 것처럼 보인다.
(v) 측정 가능 서비스(Measured service): 클라우드 시스템들은 자원 사용을 자동으로 제어하고 최적화하는데, 서비스의 유형(예를 들어, 스토리지, 처리, 대역폭, 및 활성 사용자 계정)에 적절한 추상화 수준에서(at some level of abstraction) 계측 기능을 이용하여서 그렇게 한다. 자원 사용량은 모니터 되고, 제어되고, 그리고 보고될 수 있으며 이로써 이용하는 서비스의 제공자와 사용자 모두에게 투명성을 제공한다.
[0058] 클라우드 컴퓨팅을 위한 서비스 모델들은 다음을 포함한다.
(i) 클라우드 소프트웨어 서비스(Cloud Software as a Service)(SaaS): 소비자에게 제공되는 서비스는 클라우드 하부구조 상에서 실행되는 제공자의 애플리케이션들을 사용하게 해주는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹기반 이메일) 같은 씬(thin) 클라이언트 인터페이스를 통해 여러 클라이언트 장치들에서 액세스 가능하다. 소비자는 네트워크, 서버들, 운영 체제들, 스토리지, 또는 개별 애플리케이션 능력들을 포함하는 하부 클라우드 하부구조를 관리하거나 제어하지 않는다. 단, 제한된 사용자-특정 애플리케이션 구성 세팅들은 예외로서.
(ii) 클라우드 플랫폼 서비스(Cloud Platform as a Service)(PaaS): 소비자에게 제공되는 서비스는 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 이용하여 생성된 소비자-생성 또는 획득 애플리케이션들을 클라우드 하부구조에 배치하게 해주는 것이다. 소비자는 네트워크, 서버들, 운영 체제들, 또는 스토리지를 포함하는 하부 클라우드 하부구조를 관리하거나 제어하지 않는다. 그러나 배치된 애플리케이션들에 대해서 그리고 가능한 경우 애플리케이션 호스팅 환경 구성들에 대해서 제어할 수 있다.
(iii) 클라우드 하부구조 서비스(Cloud Infrastructure as a Service)(IaaS): 소비자에게 제공되는 서비스는 처리, 스토리지, 네트워크, 및 기타 기본 컴퓨팅 자원들을 제공하여 주는 것이며, 여기서 소비자는 임의의 소프트웨어를 배치 및 실행할 수 있고, 이 소프트웨어에는 운영 체제들과 애플리케이션들이 포함될 수 있다. 소비자는 하부 클라우드 하부구조를 관리하거나 제어하지 않지만, 운영 체제들, 스토리지, 배치된 애플리케이션들, 및 가능한 경우 선택된 네트워킹 컴포넌트들의 제한적인 제어(예를 들어, 호스트 방화벽들)에 대하여 제어할 수 있다.
[0059] 클라우드 컴퓨팅을 위한 배포 모델은 다음을 포함한다.
(i) 사설 클라우드(Private cloud): 클라우드 하부구조는 오직 한 조직(an organization)을 위해서 운영되고, 그 조직 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(off-premises)에 위치할 수 있다.
(ii) 커뮤니티 클라우드(Community cloud): 클라우드 하부구조는 여러 조직들에 의해 공유되고 관심사(예를 들어, 선교, 보안 요건, 정책, 및 규정 준수 심사)를 공유하는 특정 커뮤니티를 지원하며, 여러 조직들 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(off-premises)에 위치할 수 있다.
(iii) 공공 클라우드(Public cloud): 클라우드 하부구조는 일반 대중 또는 대규모 산업 집단에서 이용할 수 있으며 클라우드 서비스를 판매하는 조직이 소유한다.
(iv) 하이브리드 클라우드(Hybrid cloud): 클라우드 하부구조는 둘 또는 그 이상의 클라우드들(사설, 커뮤니티, 또는 공공)이 혼합된 구성이며, 이들은 고유한 주체들로 있지만 데이터 및 애플리케이션 이식가능성(portability)을 가능하게 해주는 표준화된 또는 소유권 있는 기술(예를 들어, 클라우드들 사이의 부하 균형을 위한 클라우드 버스팅(cloud bursting))에 의해 서로 결합되어 있다.
[0060] 클라우드 소프트웨어는 상태 비보존형(예외들이 있음), 낮은 결합성, 모듈성 및 의미적 상호운용성(semantic interoperability)에 중점을 둔 서비스 지향적임으로써 클라우드 패러다임을 최대한 활용한다는 점에 유의해야 한다.
[0061] 이하, 도면들에 대한 상세한 설명이 제공될 것이다. 도면들에서 모든 명령들은 개략적이다. 먼저, 클라우드 서비스 환경에서 상태 업데이트를 제어하기 위한 개시된 컴퓨터 구현 방법의 실시예의 블록도가 제공된다. 이후에, 클라우드 서비스 환경에서 상태 업데이트를 제어하기 위한 스토리지 제어 시스템의 실시예뿐만 아니라 다른 실시예가 설명될 것이다.
[0062] 도 1은 클라우드 서비스 환경에서 상태 업데이트를 제어하기 위한 컴퓨터 구현 방법(100)의 실시예의 블록도를 도시한다. 방법(100)은 상태 관리자로서도 또한 표시될 수 있는 상태 제공자 관리 서비스에 의해 상태 제공자 레지스트리에 상태 제공자 정의들 세트를 유지하는 단계(102)를 포함한다. 각 상태 제공자 정의는 최소한 필수 입력 변수 정의들 세트(특별한 경우 세트는 하나의 입력 변수 정의만 포함할 수 있음), 출력 변수 정의들 세트(여기서도 하나의 그룹이 가능함) 및 관련 메타데이터를 포함한다. 출력 변수들의 세트는 그 것의 실행 엔트포인트에서 서비스의 상태로 볼 수 있다.
[0063] 방법(100)은 또한 서비스를 호출하는 것에 기초하여, 호출된 서비스에 의해 필요한 입력 변수 정의들 세트를 결정하는 단계(104)를 포함한다. 상기 필요한 입력 변수에 대한 정보는 서비스 자체로부터 전달되거나 유도될 수 있고 또는 관련 서비스 또는 마이크로-서비스 레지스트리로부터 요청될 수 있다.
[0064] 또한, 방법(100)은 상태 제공자 관리 서비스에 의해 결정된 입력 변수 정의들 세트를 수신하는 단계(106), 상태 제공자 관리 서비스에 의해 상태 제공자 레지스트리를 참조하여 상태 제공자 정의를 선택하는 단계(108) - 상기 선택된 상태 제공자 정의는 수신된 입력 변수 정의 세트(여기에서도 하나의 정의일 수 있음)와 호환됨 -, 상기 선택된 상태 제공자 정의와 일치하는 상태 제공자 서비스들 세트(1개도 가능)를 결정하는 단계(110)를 포함한다.
[0065] 다음으로, 방법(100)은 상기 결정된 상태 제공자 서비스들 세트의 상태 제공자 정의에 관한 메타데이터를 사용하여 상기 결정된 상태 제공자 서비스들 세트를 스코어링하는 단계(112), 최고 스코어링 상태 제공자 서비스를 - 특히 미리 결정된 규칙에 따라 - 호출하는 단계(114), 및 이에 의해 상태 데이터를 생성하는 단계, 그리고 상기 호출된 서비스에 상기 상태 데이터를 전달하는 단계(116)를 포함한다. 이 방법으로, 디자인 서비스 또는 마이크로-서비스에 의한 상태 비보존형은 주입된(infused) 상태를 획득할 수도 있고, 이에 의해 상태 비보존형 실행의 이점들을 보존할 수도 있으며(preserving), 또한 상태 보존 동작(stateful behavior)의 이점도 얻을 수 있다.
[0066] 도 2는 여기서 본 발명의 제안된 개념을 지원하는 관련 유닛 및 선택된 통신 경로의 실시예의 블록도(200)를 도시한다.
[0067] 첫째, 호출 서비스, 마이크로-서비스 또는 프로그램(202)은 서비스(208)의 실행을 요청하는 발원지(origin)임을 이해해야 하다. 서비스들 및/또는 마이크로-서비스들은 서비스 레지스트리 및 관련 제어 메커니즘(둘 모두 여기에 도시되지 않음)에 의해 관리되고 제어될 수 있다. 그러나, 서비스(208)로의 요청이 들어오면, 이는 상태 관리자(206) 또는 다시 말해서 상태 제공자 관리 서비스(206)를 포함하는 요청 프록시(204)에 의해 가로채어지고 및/또는 제어될 수 있다.
[0068] 상태 제공자 관리 서비스(206)는 상태 제공자 레지스트리(210)의 상태 제공자 정의들에 액세스할 수 있다. 상태 제공자 서비스들의 성능, 품질 및 행동(behavior) 등에 대한 측정 데이터는 성능 모니터(216)에 의해 지속적으로 또는 산발적으로 모니터링될 수 있으며, 성능 모니터(216)는 또한 다른 성능 로그들(218)의 스토리지도 제어할 수 있다. 또한, 상태 제공자 관리 서비스(206)는 서비스 제공자 레지스트리에 있는 엔트리들의 수동 유도 정의(a manual driven definition)를 가능하게 하기 위해 레지스트리 UI(사용자 인터페이스)(220) 를 갖추거나, 또는 시스템 관리 도구(도시되지 않음)가 서비스 제공자 레지스트리(210)의 엔트리들을 유지할 수 있도록 API 를 갖출 수 있다.
[0069] 상태 제공자 관리 서비스(206)는 상태 제공자 레지스트리(210)로부터의 정의에 따라 특정의 일치하는 상태 제공자 서비스(212)를 호출할 수 있다(invoke). 또한, 메타데이터로부터 유도될 수 있고, 상태 제공자 레지스트리(210)에도 저장될 수 있는, 미리 정의된 규칙(214)은 상태 제공자 정의와 관련된 하나 또는 그 이상의 상태 제공자 서비스들(212)의 선택에 영향을 미칠 수 있다.
[0070] 도 3은 여기서 제안된 본 발명 개념의 핵심 컴포넌트들 사이의 메시지 흐름들의 일 실시예의 다이어그램(300)을 도시한다. 상기 메시지들의 흐름은 도 2의 맥락에서 논의된 실시예들의 기능들을 반영한다. 상기 프로세스 흐름은 클라이언트 애플리케이션(302)(도 2의 202와 비교)으로부터의 요청(312)으로 시작한다. 상기 요청(312)은 상태 관리자 또는 상태 제공자 관리 서비스가 있는 요청 프록시(304)에 도달한다. 이것은 적절한 상태 제공자 서비스에 대해 상태 제공자 레지스트리(306)에 질의 (314)한다. 상태 제공자 레지스트리(306)는 하나 또는 그 이상의 상태 제공자들의 시퀀스로 응답(316)한다. 다음으로, 상태 제공자 관리 서비스(304)는 상태 제공자 서비스들(308) 중 하나 또는 시퀀스를 호출(318)한다. 상기 하나 또는 그 이상의 상태 제공자 서비스들(308)은 지속적으로 저장된 상태(the persistently stored state)를 반환한다(320). 이것에 기초하여 - 즉, 상태 데이터와 함께 - 요청된 서비스(310)(특히 클라이언트 애플리케이션(302)로부터 요청됨)는 현재 이용 가능한 상태를 갖는 요청 프록시에 의해 호출된다(322). 서비스(310)의 실행 후에, 결과는 요청 프록시(304)로 반환되고(324), 이로부터 상기 결과는 원래 호출 클라이언트 애플리케이션(302)(또는 서비스)으로 반환된다(326).
[0071] 완전성을 위해, 도 4는 클라우드 서비스 환경에서 상태 업데이트들을 제어하기 위한 상태 제어 시스템(400)의 실시예의 블록도를 도시한다. 상태 제어 시스템 (400)은 상태 제공자 관리 서비스 유닛(404)에 의해 상태 제공자 정의들 세트를 유지하도록 구성된 상태 제공자 레지스트리 모듈(402)을 포함한다. 이에 의해, 각 상태 제공자 정의는 필수 입력 변수 정의들 세트, 출력 변수 정의들 세트, 및 관련 메타데이터를 포함한다.
[0072] 상태 제어 시스템(400)은 또한, 서비스를 호출하는 것에 기초하여, 호출된 서비스에 의해 요구되는 필수 입력 변수 정의들 세트를 결정하도록 구성된 제1 결정 수단, 특히 제1 결정 모듈(406)을 포함하고, 또한 상기 결정된 입력 변수 정의들 세트를 수신하도록 구성된 상태 제공자 관리 서비스 유닛(404)도 포함한다. 이에 의해, 상태 제공자 관리 서비스 유닛(404)은 또한 상태 제공자 레지스트리를 참조함으로써 상태 제공자 정의를 선택하도록 구성되며, 상기 선택된 상태 제공자 정의는 상기 수신된 입력 변수 정의들 세트와 호환된다.
[0073] 상태 제어 시스템(400)은 추가적으로 상기 선택된 상태 제공자 정의와 일치하는 상태 제공자 서비스들의 세트를 결정하도록 구성된 제2 결정 수단 - 특히 제2 결정 모듈(408), 상기 결정된 상태 제공자 서비스들 세트의 상태 제공자 정의와 관련된 메타데이터를 사용하여 상기 결정된 상태 제공자 서비스들 세트를 스코어링하도록 구성된 스코어링 수단(scoring means) - 특히, 스코어링 유닛(410), 결정된 상태 제공자 서비스 세트의 상태 제공자 서비스 세트, 최고 스코어링 상태 제공자 서비스를 호출하고, 이에 의해 상태 데이터를 생성하도록 구성된 호출 수단(invocation means) - 특히 호출 유닛(412), 그리고, 마지막으로 중요한, 상기 호출된 서비스에 상태 데이터를 전달하도록 구성된 전송 수단(sending means) - 특히 전송기(414)를 포함한다.
[0074] 언급된 모든 수단들, 유닛들, 모듈들 등은 각각 하드웨어 컨트롤러, 특히 상태 제공자 레지스트리 모듈(402), 상태 제공자 관리 서비스 유닛(404), 제1 결정 모듈(406), 제2 결정 모듈(408), 스코어링 유닛(410), 호출 유닛(412) 및 전송기(414)로서 구현될 수 있음을 주목해야 한다. 이들 하드웨어 구현 기능 유닛들은, 도 3의 맥락에서 논의된, 메시지들을 교환하기 위해 전기적 연결들(416)(개별 전선들 또는 버스 시스템)을 통해 서로 링크될 수 있다.
[0075] 도 5로 돌아가기 전에, 도 6에는 본 발명의 개시된 개념의 적어도 일부들이 배치될 수 있는 클라우드 컴퓨팅 환경이 도시되어 있다.
[0076] 도 6은 본 발명의 개시된 개념의 적어도 일부들이 배치될 수 있는 클라우드 컴퓨팅 환경(600)을 도시한다. 클라우드 컴퓨팅 환경에서 제공하는 일련의 기능적 추상화 층들이 도시된다. 도 6에 도시된 컴포넌트들, 층들, 및 기능들은 단지 예시의 목적이며 본 발명의 바람직한 실시 예들은 이것에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 층들과 그에 대응하는 기능들이 제공된다: 하드웨어 및 소프트웨어 층(602)은 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들의 예들에는: 메인프레임들(604); 서버들(606); RISC(Reduced Instruction Set Computer) 아키텍처 기반 서버들(608); 블레이드 서버들(610); 스토리지 디바이스들(612); 그리고 네트워크 및 네트워킹 컴포넌트들(816)이 포함된다. 일부 실시 예들에서, 소프트웨어 컴포넌트들은 네트워크 애플리케이션 서버 소프트웨어(616) 및 데이터베이스 소프트웨어(618)를 포함한다.
[0077] 가상화 층(620)은 추상화 층을 제공하며 이로부터 다음의 가상 주체들의 예들이 제공될 수 있다: 가상 서버들(622); 가상 스토리지(624); 가상 사설 네트워크를 포함하는, 가상 네트워크들(626); 가상 애플리케이션들 및 운영 체제들(628); 및 가상 클라이언트들(630). 일 예에서, 관리 층(632)은 아래에 기술하는 기능들을 제공한다. 자원 제공(Resource provisioning)(634)은 클라우드 컴퓨팅 환경 내에서 작업들을 수행하는 데 이용되는 컴퓨팅 자원들 및 기타 자원들의 동적 조달을 제공한다. 계측 및 가격 책정(Metering and Pricing)(636)은 자원들이 클라우드 컴퓨팅 환경 내에서 이용될 때 비용 추적, 및 이 자원들의 소비에 대한 요금 청구 또는 송장을 제공한다. 한 예에서, 이 자원들은 애플리케이션 소프트웨어 라이센스를 포함할 수 있다. 보안(Security)은 데이터 및 기타 자원들에 대한 보호뿐 아니라 클라우드 소비자들과 작업들에 대한 신원 확인을 제공한다. 사용자 포털(User portal)(638)은 소비자들 및 시스템 관리자들에게 클라우드 컴퓨팅 환경에 대한 액세스를 제공한다. 서비스 수준 관리(Service level management)(640)는 요구되는 서비스 수준이 충족되도록 클라우드 컴퓨팅 자원 할당 및 관리를 제공한다. 서비스 수준 협약서(SLA) 기획 및 충족(planning and fulfillment)(642)은 SLA에 부합하는 예상되는 미래 요건에 맞는 클라우드 컴퓨팅 자원들의 사전-배치(pre-arrangement) 및 조달(procurement)을 제공한다.
[0078] 워크로드 층(644)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능들의 예들을 제공한다. 이 층에서 제공될 수 있는 워크로드들과 기능들의 예들은 다음을 포함한: 맵핑 및 네비게이션(646); 소프트웨어 개발 및 라이프사이클 관리(648); 가상 교실 교육 전달(650); 데이터 분석 처리(652); 트랜잭션 처리(654); 및 상태 제어 모듈(656)(도 4, 400 비교).
[0079] 본 발명 내용의 실시예들은 플랫폼이 프로그램 코드를 저장 및/또는 실행하기에 적합한 것과 무관하게 사실상 모든 유형의 컴퓨터와 함께 구현될 수 있다. 도 5는, 예로서, 본 발명의 제안된 방법과 관련된 프로그램 코드를 실행하기에 적합한 컴퓨팅 시스템(500)을 도시한다.
[0080] 컴퓨팅 시스템(500)은 적합한 컴퓨터 시스템의 하나의 예일 뿐이며, 여기에 설명된 본 발명의 실시예의 기능 또는 사용 범위에 대한 제한을 제시하려는 것은 아니다. 그럼에도 불구하고, 컴퓨팅 시스템(500)은 구현될 수 있고/있거나 위에서 설명된 기능 모두를 수행할 수 있다. 컴퓨팅 시스템(500))에는, 수많은 다른 범용 또는 특수 목적 컴퓨팅 환경들 또는 구성들과 함께 운영되는, 컴포넌트들이 있다. 컴퓨팅 시스템/서버(500)과 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템들, 환경들, 및/또는 구성들의 예들은, 개인용 컴퓨터 시스템들, 서버 컴퓨터 시스템들, 씬 클라이언트들, 씩 클라이언트들, 핸드헬드 또는 랩탑 디바이스들, 멀티-프로세서 시스템들, 마이크로프로세서-기반 시스템들, 셋톱 박스들, 프로그래밍 가능한 소비자 전자 제품들, 네트워크 PC들, 미니 컴퓨터 시스템들, 메인프레임 컴퓨터 시스템들, 및 상기 시스템들 또는 디바이스들 및 그들의 균등물들 중 하나를 포함하는 분산 클라우드 컴퓨팅 환경들, 등을 포함하나, 이에 국한하는 것은 아니다.
[0081] 컴퓨터 시스템/서버(500)는 컴퓨터 시스템(500)에 의해 실행되는, 프로그램 모듈들과 같은, 컴퓨터 시스템-실행 가능한 명령들의 일반적인 컨텍스트로 기술될 수 있다. 일반적으로 프로그램 모듈들은 특정 작업들을 수행하거나 또는 특정 추상 데이터 유형들을 구현하는 루틴들, 프로그램들, 객체들, 컴포넌트들, 로직, 데이터 구조들 등을 포함할 수 있다. 컴퓨터 시스템/서버(500)는 통신 네트워크를 통해 링크되는 원격 처리 디바이스들에 의해 작업들이 수행되는 분산 클라우드 컴퓨팅 환경에서 실시될 수 있다. 분산 클라우드 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 스토리지 디바이스들을 포함하는 로컬 및 원격 컴퓨터 시스템 스토리지 매체 모두에 위치할 수 있다.
[0082] 도면에 도시된 바와 같이, 컴퓨터 시스템/서버(500)는 범용 컴퓨팅 디바이스의 형태로 도시된다. 컴퓨터 시스템/서버(500)의 컴포넌트들은 하나 또는 그 이상의 프로세서들 또는 처리 유닛들(502), 시스템 메모리(504), 및 시스템 메모리(504)를 포함하는 다양한 시스템 컴포넌트들을 프로세서(502)에 연결하는 버스(506)를 포함할 수 있지만, 이에 국한되지 않는다. 버스(506)는, 다양한 버스 아키텍처들 중 하나를 사용하는, 메모리 버스 또는 메모리 컨트롤러, 주변 버스, 가속 그래픽 포트, 및 프로세서 또는 로컬 버스를 포함하는, 버스 구조들의 여러 유형들 중 하나 또는 그 이상을 나타낸다. 예를 들어, 그러한 아키텍처들은 ISA(include Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스 및 PCI(Peripheral Component Interconnect) 버스를 포함하나, 이에 국한되지는 않는다. 컴퓨터 시스템/서버(500)는 일반적으로 다양한 컴퓨터 시스템 판독 가능한 매체를 포함한다. 그러한 매체는 컴퓨터 시스템/서버(12)에 의해 액세스 가능한 모든 이용 가능한 매체일 수 있으며 , 휘발성 및 비휘발성 매체, 착탈식 및 비-착탈식 매체를 모두 포함한다.
[0083] 시스템 메모리(504)은, 예컨대 랜덤 액세스 메모리(RAM)(508) 및/또는 캐시 메모리(510)와 같은, 휘발성 메모리의 형태의 컴퓨터 시스템 판독 가능한 매체를 포함할 수 있다. 컴퓨터 시스템/서버(500)는 또한, 다른 착탈식/비-착탈식, 휘발성/비휘발성 컴퓨터 시스템 스토리지 매체를 포함할 수 있다. 단지 예로서, 스토리지 시스템(512)이 비착탈식, 비휘발성 자기 매체(도시되지 않고 일반적으로 "하드 드라이브"라고 함)로부터 읽고 쓰기 위해 제공될 수 있다. 도시되지는 않았지만, 착탈가능 비휘발성 자기 디스크(예: "플로피 디스크") 에서 읽고 쓰기 위한 자기 디스크 드라이브 및, CD-ROM, DVD-ROM 또는 기타 광학 매체와 같은, 착탈가능 비휘발성 광학 디스크에서 읽거나 쓰기 위한 광학 디스크 드라이브가 제공될 수 있다. 그러한 경우에, 각각은 하나 또는 그 이상의 데이터 매체 인터페이스들에 의해 버스(506)에 연결될 수 있다. 아래에서 추가로 도시되고 설명되는 바와 같이, 메모리(504)는 본 발명의 실시예들의 기능들을 수행하도록 구성된 프로그램 모듈들의 세트(예를 들어, 적어도 하나)를 갖는 적어도 하나의 프로그램 제품을 포함할 수 있다.
[0084] 프로그램 모듈들의 (적어도 하나)세트(516)를 갖는, 프로그램/유틸리티는, 예를 들어, 메모리(504)에 저장될 수 있지만, 이에 국한되는 것은 아니다. 운영 체제, 하나 또는 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터 또는 이들의 조합은 네트워킹 환경의 구현을 포함할 수 있다. 프로그램 모듈들(516)은 일반적으로 본 명세서에 기술된 바와 같은 본 발명의 실시예들의 기능들 및/또는 방법들을 수행한다. 예를 들어, 프로그램 모듈(516)은 하나 또는 그 이상의 프로세서(502)에 의해 실행되어 상태 제공자 레지스트리 모듈(402), 상태 제공자 관리 서비스 유닛(404), 제1 결정 모듈(406), 제2 결정 모듈(408), 스코어링 유닛(410), 호출 유닛(412), 및 송신자(414)를 구현할 수 있다.
[0085] 컴퓨터 시스템/서버(500)는 또한 키보드, 포인팅 디바이스, 디스플레이(520) 등과 같은, 하나 또는 그 이상의 외부 디바이스들(518); 사용자가 컴퓨터 시스템/서버(500)와 상호작용할 수 있게 하는 하나 또는 그 이상의 디바이스들; 및/또는 컴퓨터 시스템/서버(500)가 하나 또는 그 이상의 다른 컴퓨팅 디바이스들과 통신할 수 있게 하는 모든 디바이스들(예를 들어, 네트워크 카드, 모뎀 등)과 통신 할 수 있다. 그러한 통신은 입/출력(I/O) 인터페이스(514)를 통해 발생할 수 있다. 또한, 컴퓨터 시스템/서버(500)는 근거리 통신망(LAN), 일반 광역 통신망(WAN), 및/또는 네트워크 어댑터(522)를 통한 공중 네트워크(예를 들어, 인터넷)와 같은, 하나 또는 그 이상의 네트워크들과 통신할 수 있다. 도시된 바와 같이, 네트워크 어댑터(522)는 버스(506)를 통해 클라우드 컴퓨터 시스템/서버(500)의 다른 컴포넌트들과 통신한다. 도시되지는 않았지만, 다른 하드웨어 및/또는 소프트웨어 컴포넌트들이 컴퓨터 시스템/서버(500)와 함께 사용될 수 있음을 이해해야 한다. 이들의 예들에는: 마이크로코드, 디바이스 드라이버들, 리던던트 처리 유닛들, 외부 디스크 드라이브 어레이들, RAID 시스템들, 테이프 드라이브들 및 데이터 아카이벌 스토리지 시스템들이 포함되지만 이에 국한되지는 않는다.
[0086] 이제 도 7을 참조하면, 예시적인 클라우드 컴퓨팅 환경(700)이 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(700)은 예를 들어 개인 휴대 정보 단말기(PDA) 또는 휴대폰(754A), 데스크탑 컴퓨터(754B), 랩탑 컴퓨터(754C), 및/또는 자동차용 컴퓨터 시스템(754N)과 통신할 수 있는 것과 같이, 클라우드 소비자가 사용하는 로컬 컴퓨팅 디바이스가 하나 또는 그 이상의 클라우드 컴퓨팅 노드들(710)을 포함한다. 노드들(710)은 서로 통신할 수 있다. 이들은 여기에 기술된 바와 같은 사설, 커뮤니티, 공공, 또는 하이브리드 클라우드들 또는 이들의 조합 등의 하나 또는 그 이상의 네트워크들에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이것은 클라우드 소비자가 로컬 컴퓨팅 장치 상에 자원들을 유지할 필요가 없게 클라우드 컴퓨팅 환경(700)이 하부구조, 플랫폼들 및/또는 소프트웨어를 서비스로서 제공할 수 있게 해준다. 도 7에 도시된 컴퓨팅 디바이스들(754A-N)의 유형들은 단지 예시의 목적으로 기술한 것이며 컴퓨팅 노드들(710)과 클라우드 컴퓨팅 환경(700)은 모든 유형의 네트워크 및/또는 네트워크 주소지정가능 연결을 통해서 (예를 들어, 웹 브라우저를 사용하여) 모든 유형의 컴퓨터화된 디바이스와 통신할 수 있다는 것을 이해해야 한다.
[0087] 본 발명 내용의 다양한 실시예들에 대한 설명은 예시의 목적으로 제시되었지만, 개시된 실시예들이 전부라거나 제한하려는 의도는 아니다. 기술된 실시예들의 범위 및 정신을 벗어나지 않으면서 많은 수정들 및 변형들이 당업자에게 명백할 것이다. 본 명세서에서 사용된 용어는 실시예들의 원리, 시장에서 발견되는 기술에 대한 실질적인 응용 또는 기술적 개선을 가장 잘 설명하거나, 또는 당업자가 본 명세서에 개시된 실시예를 이해할 수 있게 하기 위해 선택되었다.
[0088] 본 발명은 시스템, 방법, 및/또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 스토리지 매체(또는 매체)를 포함할 수 있으며, 이 매체 상에 프로세서가 본 발명의 실시 예들을 수행하도록 하는 컴퓨터 판독 가능 프로그램 명령들을 갖는다.
[0089] 상기 매체는 전파 매체를 위한 전자, 자기, 광학, 전자기, 적외선 또는 반도체 시스템일 수 있다. 컴퓨터 판독 가능 매체의 예들은 반도체 또는 솔리드 스테이트 메모리, 자기 테이프, 착탈식 컴퓨터 디스켓, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 강성 자기 디스크 및 광 디스크를 포함할 수 있다. 광 디스크들의 현재 예들에는 컴팩트 디스크 읽기 전용 메모리(CD-ROM), 컴팩트 디스크 읽기/쓰기(CD-R/W), DVD 및 블루레이 디스크가 포함된다.
[0090] 상기 컴퓨터 판독 가능 스토리지 매체는 명령 실행 장치에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 상기 컴퓨터 판독 가능 스토리지 매체는, 예를 들면, 전자 스토리지 디바이스, 자기 스토리지 디바이스, 광 스토리지 디바이스, 전자기 스토리지 디바이스, 반도체 스토리지 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 스토리지 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거 및 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 기록된 홈에 있는 융기된 구조들 같이 머신적으로 인코드 된 장치, 및 전술한 것들의 모든 적절한 조합. 본 명세서에서 사용될 때, 컴퓨터 판독 가능 스토리지 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[0091] 본 명세서에 기술되는 컴퓨터 판독 가능 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 판독 가능 스토리지 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 스토리지 디바이스로부터 외부 컴퓨터로 다운로드 될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 유닛 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 판독 가능 스토리지 매체에 저장하기 위해 전송한다.
[0092] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 프로그래밍 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 집적회로를 위한 구성 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시 예들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.
[0093] 본 발명의 특징들이 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 플로 차트 예시도들 및/또는 블록도들을 참조하여 기술된다. 플로 차트 예시도들 및/또는 블록도들의 각 블록과 플로 차트 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[0094] 이들 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 유닛의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 유닛의 프로세서를 통해서 실행되어, 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 유닛 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 스토리지 매체가 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[0095] 상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치들, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 디바이스 상에서 실행되는 명령들이 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[0096] 도면들의 플로차트 및 블록도는 본 발명의 다양한 실시예들에 따른 시스템들, 방법들, 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능, 및 동작을 예시한다. 이와 관련하여, 플로차트 또는 블록도들의 각 블록은, 특정 논리 기능(들)을 구현하기 위한 하나 혹은 그 이상의 실행 가능한 명령들을 포함하는, 모듈, 세그먼트, 또는 명령들의 일부를 나타낼 수 있다. 일부 대안적인 구현들에서, 블록들에 언급된 기능들은 도면들에 언급된 순서와 다르게 발생할 수 있다. 예를 들어, 연속적으로 도시된 2개의 블록들은 한 단계로서 달성되거나, 동시에 실행되거나, 실질적으로 동시에 실행되거나, 부분적으로 혹은 전체적으로 일시적으로 중복 방식으로 실행될 수 있거나, 또는 상기 블록들은, 관련된 기능에 따라, 때때로 역순으로 실행될 수 있다. 또한 블록도들 및/또는 플로차트의 각 블록, 및 블록도들 및/또는 플로차트 그림의 블록들의 조합들은, 특정 기능들을 수행하거나 특수 목적 하드웨어와 컴퓨터 명령들의 조합들을 수행하거나 수행하는 특수 목적 하드웨어-기반 시스템들에 의해 구현될 수 있다.
[0097] 여기서 사용된 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 본 명세서에 사용된 바와 같이, 단수 형태는 문맥이 명백하게 달리 나타내지 않는 한 복수 형태도 포함하는 것으로 의도된다. 본 명세서에서 사용될 때 "포함한다" 및/또는 "포함하는"이라는 용어는 명시된 특징, 정수, 단계, 작업, 엘리멘트 및/또는 컴포넌트의 존재를 명시하지만 존재 또는 하나 또는 그 이상의 다른 특징, 정수, 단계, 연산, 엘리멘트, 컴포넌트 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않는다는 것이 추가로 이해될 것이다.
[0098] 아래의 청구범위에서 모든 수단 또는 단계와 기능 엘리멘트의 상응하는 구조, 재료, 작용 및 등가물은 구체적으로 청구된 바와 같이 다른 청구된 엘리멘트와 조합하여 기능을 수행하기 위한 모든 구조, 재료 또는 작용을 포함하도록 의도된다. 본 발명 내용의 설명은 예시 및 설명의 목적으로 제시되었지만, 개시된 형태의 개시내용이 전부라거나 제한하도록 의도되지 않는다. 본 발명의 범위 및 정신을 벗어나지 않으면서 많은 수정들 및 변형들이 당업자에게 명백할 것이다. 실시예들은 본 발명의 원리 및 실제 적용을 가장 잘 설명하고, 당업자가 고려되는 특정 용도에 적합한 다양한 수정을 갖는 다양한 실시예들에 대한 개시를 이해할 수 있도록 선택 및 설명된다.
실시예
[0099] 예 1은 클라우드 서비스 환경에서 상태 업데이트들을 제어하기 위한 컴퓨터 구현 방법을 포함한다. 상기 방법은 상태 제공자 관리 서비스에 의해 상태 제공자 레지스트리에서 상태 제공자 정의들 세트를 유지하는 단계를 포함한다. 각 상태 제공자 정의는 필수 입력 변수 정의들 세트, 출력 변수 정들 세트 및 관련 메타데이터를 포함한다. 상기 방법은, 서비스를 호출하는 것에 기초하여, 상기 호출된 서비스에 필요한 입력 변수 정의들 세트를 결정하는 단계; 상기 상태 제공자 관리 서비스에 의해 상기 결정된 입력 변수 정의들 세트를 수신하는 단계; 상태 제공자 레지스트리를 참조하여 상태 제공자 정의를, 상기 상태 제공자 관리 서비스에 의해, 선택하는 단계 - 상기 선택된 상태 제공자 정의는 상기 수신된 입력 변수 정의들 세트와 호환됨 -; 상기 선택된 상태 제공자 정의와 일치하는 상태 제공자 서비스들 세트를 결정하는 단계; 상기 결정된 상태 제공자 서비스들 세트의 상태 제공자 정의와 관련된 메타데이터를 사용하여 상기 결정된 상태 제공자 서비스들 세트를 스코어링하는 단계(scoring); 최고 스코어링 상태 제공자 서비스를 호출하는 단계, 그리고 이에 의해 상태 데이터를 생성하는 단계; 및 상기 상태 데이터를 상기 호출된 서비스에 전달하는 단계(passing)를 포함한다.
[0100] 예 2는 예1에 따른 방법을 포함하며, 또한, 상기 상태 제공자 서비스의 호출 시마다 상태 제공자 관리 서비스에 의해 증가되는(incremented) 호출 카운터(an invocation counter)를, 메타데이터 레지스터리의 상기 상태 제공자 관리 서비스에 의해, 각 상태 제공자 서비스에 대해, 저장하는 단계를 포함한다.
[0101] 예 3은 예 1 또는 예 2 중 어느 하나에 따른 방법을 포함하며, 또한, 상기 서비스의 실행이 완료되면, 상기 상태 데이터가 수신된 상태 제공자 서비스로 상기 서비스의 출력 값들을 반환하는 단계를 포함한다.
[0102] 예 4는 예 3에 따른 방법을 포함하고, 또한, 상기 상태 데이터가 수신된 상태 제공자 서비스에 의해 상기 수신된 상태 데이터를 지속적으로(persistently) 저장하는 단계를 포함한다.
[0103] 예 5는 예 1 내지 예 4 중 어느 하나에 따른 방법을 포함하고, 상기 호출된 상태 제공자 서비스는 제1 상태 제공자 서비스가 되며, 상기 방법은 또한, 상기 호출된 제1 상태 제공자 서비스가 제2 상태가 필요하다고 결정하는 것에 기초하여; 상기 상태 제공자 관리 서비스를 통해 제2 상태 제공자 서비스를 호출하는 단계; 상기 제2 상태 제공자 서비스에 대한 관련 입력 변수들 세트를 결정하는 단계; 상기 일치하는 제2 상태 제공자 서비스들의 세트를 결정하는 단계; 상기 일치하는 제2 상태 제공자 서비스들의 세트를 스코어링 하는 단계; 최고 점수의 제2 상태 제공자 서비스를 선택하는 단계와, 이에 의해 제2 상태 데이터를 생성하는 단계; 상기 제2 상태 데이터를 상기 제2 상태 제공자 서비스에 전달하는 단계; 및 상기 제2 상태 제공자 서비스의 실행 출력 값을 제2 상태로서 반환하는 단계를 포함한다.
[0104] 예 6은 예 1 내지 예 5 중 어느 하나에 따른 방법을 포함하며, 상기 결정된 상태 제공자 서비스들 세트를 스코어링 하는 단계는 동일 점수 값을 생성하는 최고 스코어링 상태 제공자 서비스들 세트를 생성하고, 상기 방법은 최고 스코어링 상태 제공자 서비스들 세트를 병렬로 호출하는 단계를 더 포함한다.
[0105] 예 7은 예 6에 따른 방법을 포함하며, 상기 방법은 또한 상기 최고 스코어링 상태 제공자 서비스들 세트를 실행하기 위한 성능 값을 측정하는 단계; 및 각 상태 제공자 서비스의 메타데이터에 각 성능 값을 저장하는 단계도 포함한다.
[0106] 예 8은 예 1 내지 예 7 중 어느 하나에 따른 방법을 포함하고, 상기 상태 제공자 서비스들의 세트를 결정하는 단계는 또한 상기 메타데이터에 관한 미리 정의된 규칙들에 따라 일치하는 상태 제공자 서비스들을 결정하는 단계도 포함한다.
[0107] 예 9는 예 1 내지 예 8 중 어느 하나에 따른 방법을 포함하며, 상기 상태 제공자 서비스들의 세트를 결정하는 단계는 또한 클라우드 컴퓨팅 환경에서 현재 워크로드 프로파일에 따라 일치하는 상태 제공자 서비스들을 결정하는 단계도 포함한다.
[0108] 예 10은 예 1 내지 예 9 중 어느 하나에 따른 방법을 포함하며, 최고 스코어링 상태 제공자 서비스는 라운드 로빈 원칙(a round-robin principle)에 따라 결정된다.
[0109] 예 11은 클라우드 서비스 환경에서 상태 업데이트를 제어하기 위한 상태 제어 시스템을 포함한다. 상기 상태 제어 시스템은 상태 제공자 관리 서비스 유닛에 의해 상태 제공자 정의들 세트를 유지하기 위해 구성된 상태 제공자 레지스트리 모듈을 포함하고, 각 상태 제공자 정의는 필수 입력 변수 정의들 세트, 출력 변수 정들 세트 및 관련 메타데이터를 포함한다. 상기 상태 제어 시스템은 또한, 서비스를 호출하는 것에 기초하여, 상기 호출된 서비스에 필요한 입력 변수 정의들 세트를 결정하기 위해 구성된 제1 결정 수단을 포함한다. 상기 상태 제공자 관리 서비스 유닛은 또한 상기 결정된 입력 변수 정의들 세트를 수신하기 위해 구성된다. 상기 상태 제공자 관리 서비스 유닛은 상기 상태 제공자 레지스트리를 참조하여 상태 제공자 정의를 선택하도록 구성된다. 상기 선택된 상태 제공자 정의는 상기 수신된 입력 변수 정의 세트와 호환된다. 상기 상태 제어 시스템은 또한 상기 선택된 상태 제공자 정의와 일치하는 상태 제공자 서비스들 세트를 결정하기 위해 구성된 제2 결정 수단; 상기 결정된 상태 제공자 서비스들 세트의 상태 제공자 정의와 관련된 메타데이터를 사용하여 상기 결정된 상태 제공자 서비스들 세트를 스코어링 하기 위해 구성된 스코어링 수단; 최고 스코어링 상태 제공자 서비스를 호출하고, 그리고 이에 의해 상태 데이터를 생성하기 위해 구성된 호출 수단; 및 상기 상태 데이터를 상기 호출된 서비스에 전달하기 위해 구성된 전송 수단을 포함한다.
[0110] 예 12는 예 11에 따른 상태 제어 시스템을 포함하며, 상기 상태 제공자 관리 서비스 모듈은 또한 상기 상태 제공자 서비스의 호출 시마다 상태 제공자 관리 서비스에 의해 증가되는(incremented) 호출 카운터(an invocation counter)를, 메타데이터 레지스터리에, 각 상태 제공자 서비스에 대해, 저장하기 위해 구성된다.
[0111] 예 13은 예 11 또는 예 12 중 어느 하나에 따른 상태 제어 시스템을 포함하며, 상기 상태 제어 시스템은, 상기 서비스의 실행이 완료되면, 상기 상태 데이터가 수신된 상태 제공자 서비스로 상기 서비스의 출력 값들을 반환하기 위해 구성된 반환 수단을 더 포함한다.
[0112] 예 14는 예 13에 따른 상태 제어 시스템을 포함하며, 상기 상태 제어 시스템은 또한 상기 상태 데이터가 수신된 상태 제공자 서비스에 의해 상기 수신된 상태 데이터를 지속적으로(persistently) 저장하기 위해 구성된 스토리지 수단을 포함한다.
[0113] 예 15는 예 11 내지 예 14 중 어느 하나에 따른 상태 제어 시스템을 포함하고, 상기 호출된 상태 제공자 서비스는 제1 상태 제공자 서비스가 되고, 상기 상태 제어 시스템은 또한, 상기 호출된 제1 상태 제공자 서비스가 제2 상태가 필요하다고 결정하는 것에 기초하여, 상기 상태 제공자 관리 서비스 유닛을 통해 제2 상태 제공자 서비스를 호출하는 단계를 수행하도록 구성된다. 상기 상태 제어 시스템은 또한 상기 제2 상태 제공자 서비스에 대한 관련 입력 변수들 세트를 결정하는 단계; 상기 일치하는 제2 상태 제공자 서비스들의 세트를 결정하는 단계; 상기 일치하는 제2 상태 제공자 서비스들의 세트를 스코어링 하는 단계; 최고 점수의 제2 상태 제공자 서비스를 선택하는 단계와, 이에 의해 제2 상태 데이터를 생성하는 단계; 상기 제2 상태 데이터를 상기 제2 상태 제공자 서비스에 전달하는 단계; 및 상기 제2 상태 제공자 서비스의 실행 출력 값을 제2 상태로서 반환하는 단계를 수행하도록 구성된다.
[0114] 예 16은 예 11 내지 예 15 중 어느 하나에 따른 상태 제어 시스템을 포함하며, 상기 스코어링 수단은 또한 상기 결정된 상태 제공자 서비스들 세트를 스코어링 하는 것이 동일 스코어 값을 생성하는 최고 스코어링 상태 제공자 서비스들 세트를 생성하도록 구성된다. 상기 상태 제어 시스템은 최고 스코어링 상태 제공자 서비스들 세트를 병렬로 호출하기 위해 추가로 구성된다.
[0115] 예 17은 예 16에 따른 상태 제어 시스템을 포함하며, 상기 상태 제어 시스템은 또한 상기 최고 스코어링 상태 제공자 서비스들 세트를 실행하기 위한 성능 값을 측정하기 위해 구성된; 그리고 각 상태 제공자 서비스의 메타데이터에 각 성능 값을 저장하기 위해 구성된 측정 수단을 포함한다.
[0116] 예 18은 예 11 내지 예 17 중 어느 하나에 따른 상태 제어 시스템을 포함하며, 상기 상태 제공자 서비스들의 세트를 결정하기 위한 상기 제2 결정 수단은 또한, 상기 메타데이터의 미리 정의된 규칙들에 따라 일치하는 상태 제공자 서비스들을 결정하기 위해 구성된다.
[0117] 예 19는 예 11 내지 예 18 중 어느 하나에 따른 상태 제어 시스템을 포함하고, 상기 상태 제공자 서비스들의 세트를 결정하기 위한 상기 제2 결정 수단은 또한, 클라우드 컴퓨팅 환경에서 현재 워크로드 프로파일에 따라 일치하는 상태 제공자 서비스들을 결정하기 위해 구성된다.
[0118] 예 20은 클라우드 서비스 환경에서 상태 업데이트들을 제어하기 위한 컴퓨터 프로그램 제품을 포함하고, 상기 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 스토리지 매체를 포함하고, 상기 컴퓨터 판독 가능 스토리지 매체는 구현된 프로그램 명령들을 가지며, 상기 프로그램 명령들은 하나 또는 그 이상의 컴퓨팅 시스템들 또는 컨트롤러들에 의해 실행 가능하고, 상기 하나 또는 그 이상의 컴퓨팅 시스템들이: 상태 제공자 관리 서비스에 의해 상태 제공자 레지스트리에서 상태 제공자 정의들 세트를 유지하는 단계 - 각 상태 제공자 정의는 필수 입력 변수 정의들 세트, 출력 변수 정들 세트 및 관련 메타데이터를 포함함 -; 서비스를 호출하는 것에 기초하여, 상기 호출된 서비스에 필요한 입력 변수 정의들 세트를 결정하는 단계; 상기 상태 제공자 관리 서비스에 의해 상기 결정된 입력 변수 정의들 세트를 수신하는 단계; 상태 제공자 레지스트리를 참조하여 상태 제공자 정의를, 상기 상태 제공자 관리 서비스에 의해, 선택하는 단계를 수행하도록 한다. 상기 선택된 상태 제공자 정의는 상기 수신된 입력 변수 정의들 세트와 호환된다. 상기 프로그램 명령들은 상기 하나 또는 그 이상의 컴퓨팅 시스템들 또는 컨트롤러들이 상기 선택된 상태 제공자 정의와 일치하는 상태 제공자 서비스들 세트를 결정하는 단계; 상기 결정된 상태 제공자 서비스들 세트의 상태 제공자 정의와 관련된 메타데이터를 사용하여 상기 결정된 상태 제공자 서비스들 세트를 스코어링하는 단계(scoring); 최고 스코어링 상태 제공자 서비스를 호출하는 단계, 그리고 이에 의해 상태 데이터를 생성하는 단계; 및 상기 상태 데이터를 상기 호출된 서비스에 전달하는 단계(passing)를 수행하도록 한다.

Claims (20)

  1. 클라우드 서비스 환경에서 상태 업데이트들을 제어하기 위한 컴퓨터 구현 방법에 있어서, 상기 방법은:
    상태 제공자 관리 서비스에 의해 상태 제공자 레지스트리에서 상태 제공자 정의들 세트를 유지하는 단계 - 각 상태 제공자 정의는 필수 입력 변수 정의들 세트, 출력 변수 정들 세트 및 관련 메타데이터를 포함함 -;
    서비스를 호출하는 것에 기초하여, 상기 호출된 서비스에 필요한 입력 변수 정의들 세트를 결정하는 단계;
    상기 상태 제공자 관리 서비스에 의해 상기 결정된 입력 변수 정의들 세트를 수신하는 단계;
    상태 제공자 레지스트리를 참조하여 상태 제공자 정의를, 상기 상태 제공자 관리 서비스에 의해, 선택하는 단계 - 상기 선택된 상태 제공자 정의는 상기 수신된 입력 변수 정의들 세트와 호환됨 -;
    상기 선택된 상태 제공자 정의와 일치하는 상태 제공자 서비스들 세트를 결정하는 단계;
    상기 결정된 상태 제공자 서비스들 세트의 상태 제공자 정의와 관련된 메타데이터를 사용하여 상기 결정된 상태 제공자 서비스들 세트를 스코어링하는 단계(scoring);
    최고 스코어링 상태 제공자 서비스를 호출하는 단계, 그리고 이에 의해 상태 데이터를 생성하는 단계; 및
    상기 상태 데이터를 상기 호출된 서비스에 전달하는 단계(passing)를 포함하는
    컴퓨터 구현 방법.
  2. 제1항에 있어서, 상기 방법은:
    상기 상태 제공자 서비스의 호출 시마다 상태 제공자 관리 서비스에 의해 증가되는(incremented) 호출 카운터(an invocation counter)를, 메타데이터 레지스터리의 상기 상태 제공자 관리 서비스에 의해, 각 상태 제공자 서비스에 대해, 저장하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  3. 제1항 또는 제2항에 있어서, 상기 방법은:
    상기 서비스의 실행이 완료되면, 상기 상태 데이터가 수신된 상태 제공자 서비스로 상기 서비스의 출력 값들을 반환하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  4. 제1항 내지 제3항의 항들 중 어느 한 항에 있어서, 상기 방법은:
    상기 상태 데이터가 수신된 상태 제공자 서비스에 의해 상기 수신된 상태 데이터를 지속적으로(persistently) 저장하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  5. 제1항 내지 제4항의 항들 중 어느 한 항에 있어서, 상기 호출된 상태 제공자 서비스는 제1 상태 제공자 서비스가 되며, 상기 방법은:
    상기 호출된 제1 상태 제공자 서비스가 제2 상태가 필요하다고 결정하는 것에 기초하여:
    상기 상태 제공자 관리 서비스를 통해 제2 상태 제공자 서비스를 호출하는 단계;
    상기 제2 상태 제공자 서비스에 대한 관련 입력 변수들 세트를 결정하는 단계;
    상기 일치하는 제2 상태 제공자 서비스들의 세트를 결정하는 단계;
    상기 일치하는 제2 상태 제공자 서비스들의 세트를 스코어링 하는 단계;
    최고 점수의 제2 상태 제공자 서비스를 선택하는 단계와, 이에 의해 제2 상태 데이터를 생성하는 단계;
    상기 제2 상태 데이터를 상기 제2 상태 제공자 서비스에 전달하는 단계; 및
    상기 제2 상태 제공자 서비스의 실행 출력 값을 제2 상태로서 반환하는 단계를 포함하는
    컴퓨터 구현 방법.
  6. 제1항 내지 제5항의 항들 중 어느 한 항에 있어서, 상기 결정된 상태 제공자 서비스들 세트를 스코어링 하는 단계는 동일 점수 값을 생성하는 최고 스코어링 상태 제공자 서비스들 세트를 생성하고, 상기 방법은:
    최고 스코어링 상태 제공자 서비스들 세트를 병렬로 호출하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  7. 제1항 내지 제6항의 항들 중 어느 한 항에 있어서, 상기 방법은:
    상기 최고 스코어링 상태 제공자 서비스들 세트를 실행하기 위한 성능 값을 측정하는 단계; 및
    각 상태 제공자 서비스의 메타데이터에 각 성능 값을 저장하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  8. 제1항 내지 제7항의 항들 중 어느 한 항에 있어서, 상기 상태 제공자 서비스들의 세트를 결정하는 단계는:
    상기 메타데이터에 관한 미리 정의된 규칙들에 따라 일치하는 상태 제공자 서비스들을 결정하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  9. 제1항 내지 제8항의 항들 중 어느 한 항에 있어서, 상기 상태 제공자 서비스들의 세트를 결정하는 단계는:
    클라우드 컴퓨팅 환경에서 현재 워크로드 프로파일에 따라 일치하는 상태 제공자 서비스들을 결정하는 단계를 더 포함하는
    컴퓨터 구현 방법.
  10. 제1항 내지 제9항의 항들 중 어느 한 항에 있어서, 최고 스코어링 상태 제공자 서비스는 라운드 로빈 원칙(a round-robin principle)에 따라 결정되는
    컴퓨터 구현 방법.
  11. 클라우드 서비스 환경에서 상태 업데이트들을 제어하기 위한 상태 제어 시스템에 있어서, 상기 상태 제어 시스템은:
    상태 제공자 관리 서비스 유닛에 의해 상태 제공자 정의들 세트를 유지하기 위해 구성된 상태 제공자 레지스트리 모듈 - 각 상태 제공자 정의는 필수 입력 변수 정의들 세트, 출력 변수 정들 세트 및 관련 메타데이터를 포함함 -;
    서비스를 호출하는 것에 기초하여, 상기 호출된 서비스에 필요한 입력 변수 정의들 세트를 결정하기 위해 구성된 제1 결정 수단을 포함하고;
    상기 상태 제공자 관리 서비스 유닛은 또한 상기 결정된 입력 변수 정의들 세트를 수신하기 위해 구성되며;
    상기 상태 제공자 관리 서비스 유닛은 또한 상기 상태 제공자 레지스트리를 참조하여 상태 제공자 정의를 선택하기 위해 구성되고, 상기 선택된 상태 제공자 정의는 상기 수신된 입력 변수 정의들 세트와 호환되며; 상기 상태 제어 시스템은 또한:
    상기 선택된 상태 제공자 정의와 일치하는 상태 제공자 서비스들 세트를 결정하기 위해 구성된 제2 결정 수단;
    상기 결정된 상태 제공자 서비스들 세트의 상태 제공자 정의와 관련된 메타데이터를 사용하여 상기 결정된 상태 제공자 서비스들 세트를 스코어링 하기 위해 구성된 스코어링 수단;
    최고 스코어링 상태 제공자 서비스를 호출하고, 그리고 이에 의해 상태 데이터를 생성하기 위해 구성된 호출 수단; 및
    상기 상태 데이터를 상기 호출된 서비스에 전달하기 위해 구성된 전송 수단을 포함하는
    상태 제어 시스템.
  12. 제11항에 있어서, 상기 상태 제공자 관리 서비스 모듈은 또한 상기 상태 제공자 서비스의 호출 시마다 상태 제공자 관리 서비스에 의해 증가되는(incremented) 호출 카운터(an invocation counter)를, 메타데이터 레지스터리에, 각 상태 제공자 서비스에 대해, 저장하기 위해 구성되는
    상태 제어 시스템.
  13. 제11항 또는 제12항에 있어서, 상기 상태 제어 시스템은:
    상기 서비스의 실행이 완료되면, 상기 상태 데이터가 수신된 상태 제공자 서비스로 상기 서비스의 출력 값들을 반환하기 위해 구성된 반환 수단을 더 포함하는
    상태 제어 시스템.
  14. 제11항 내지 제13항의 항들 중 어느 한 항에 있어서, 상기 상태 제어 시스템은:
    상기 상태 데이터가 수신된 상태 제공자 서비스에 의해 상기 수신된 상태 데이터를 지속적으로(persistently) 저장하기 위해 구성된 스토리지 수단을 더 포함하는
    상태 제어 시스템.
  15. 제11항 내지 제14항의 항들 중 어느 한 항에 있어서, 상기 호출된 상태 제공자 서비스는 제1 상태 제공자 서비스가 되고, 상기 상태 제어 시스템은 또한:
    상기 호출된 제1 상태 제공자 서비스가 제2 상태가 필요하다고 결정하는 것에 기초하여:
    상기 상태 제공자 관리 서비스 유닛을 통해 제2 상태 제공자 서비스를 호출하는 단계;
    상기 제2 상태 제공자 서비스에 대한 관련 입력 변수들 세트를 결정하는 단계;
    상기 일치하는 제2 상태 제공자 서비스들의 세트를 결정하는 단계;
    상기 일치하는 제2 상태 제공자 서비스들의 세트를 스코어링 하는 단계;
    최고 점수의 제2 상태 제공자 서비스를 선택하는 단계와, 이에 의해 제2 상태 데이터를 생성하는 단계;
    상기 제2 상태 데이터를 상기 제2 상태 제공자 서비스에 전달하는 단계; 및
    상기 제2 상태 제공자 서비스의 실행 출력 값을 제2 상태로서 반환하는 단계를 수행하도록 구성된
    상태 제어 시스템.
  16. 제11항 내지 제16항의 항들 중 어느 한 항에 있어서, 상기 스코어링 수단은 또한 상기 결정된 상태 제공자 서비스들 세트를 스코어링 하는 것이 동일 점수 값을 생성하는 최고 스코어링 상태 제공자 서비스들 세트를 생성하도록 구성되고, 이에 의해:
    최고 스코어링 상태 제공자 서비스들 세트를 병렬로 호출하기 위해 구성되는
    상태 제어 시스템.
  17. 제16항에 있어서, 상기 상태 제어 시스템은:
    상기 최고 스코어링 상태 제공자 서비스들 세트를 실행하기 위한 성능 값을 측정하기 위해 구성된; 그리고
    각 상태 제공자 서비스의 메타데이터에 각 성능 값을 저장하기 위해 구성된 측정 수단을 더 포함하는
    상태 제어 시스템.
  18. 제11항 내지 제17항의 항들 중 어느 한 항에 있어서, 상기 상태 제공자 서비스들의 세트를 결정하기 위한 상기 제2 결정 수단은 또한:
    상기 메타데이터의 미리 정의된 규칙들에 따라 일치하는 상태 제공자 서비스들을 결정하기 위해 구성되는
    상태 제어 시스템.
  19. 제11항 내지 제18항의 항들 중 어느 한 항에 있어서, 상기 상태 제공자 서비스들의 세트를 결정하기 위한 상기 제2 결정 수단은 또한:
    클라우드 컴퓨팅 환경에서 현재 워크로드 프로파일에 따라 일치하는 상태 제공자 서비스들을 결정하기 위해 구성되는
    상태 제어 시스템.
  20. 클라우드 서비스 환경에서 상태 업데이트들을 제어하기 위한 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 스토리지 매체를 포함하고, 상기 컴퓨터 판독 가능 스토리지 매체는 구현된 프로그램 명령들을 가지며, 상기 프로그램 명령들은 하나 또는 그 이상의 컴퓨팅 시스템에 의해 실행 가능하고, 상기 하나 또는 그 이상의 컴퓨팅 시스템이 컴퓨터 구현 방법을 수행하도록 하며, 상기 컴퓨터 구현 방법은:
    상태 제공자 관리 서비스에 의해 상태 제공자 레지스트리에서 상태 제공자 정의들 세트를 유지하는 단계 -각 상태 제공자 정의는 필수 입력 변수 정의들 세트, 출력 변수 정들 세트 및 관련 메타데이터를 포함함 -;
    서비스를 호출하는 것에 기초하여, 상기 호출된 서비스에 필요한 입력 변수 정의들 세트를 결정하는 단계;
    상기 상태 제공자 관리 서비스에 의해 상기 결정된 입력 변수 정의들 세트를 수신하는 단계;
    상태 제공자 레지스트리를 참조하여 상태 제공자 정의를, 상기 상태 제공자 관리 서비스에 의해, 선택하는 단계 - 상기 선택된 상태 제공자 정의는 상기 수신된 입력 변수 정의들 세트와 호환됨 -;
    상기 선택된 상태 제공자 정의와 일치하는 상태 제공자 서비스들 세트를 결정하는 단계;
    상기 결정된 상태 제공자 서비스들 세트의 상태 제공자 정의와 관련된 메타데이터를 사용하여 상기 결정된 상태 제공자 서비스들 세트를 스코어링하는 단계(scoring);
    최고 스코어링 상태 제공자 서비스를 호출하는 단계, 그리고 이에 의해 상태 데이터를 생성하는 단계; 및
    상기 상태 데이터를 상기 호출된 서비스에 전달하는 단계(passing)를 포함하는
    컴퓨터 프로그램 제품.
KR1020227029377A 2020-03-19 2021-02-11 상태 비보존형 서비스를 위한 적응형 상태 관리 KR20220127327A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/823,516 US11347545B2 (en) 2020-03-19 2020-03-19 Adaptive state management for stateless services
US16/823,516 2020-03-19
PCT/IB2021/051112 WO2021186259A1 (en) 2020-03-19 2021-02-11 Adaptive state management for stateless services

Publications (1)

Publication Number Publication Date
KR20220127327A true KR20220127327A (ko) 2022-09-19

Family

ID=77748140

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227029377A KR20220127327A (ko) 2020-03-19 2021-02-11 상태 비보존형 서비스를 위한 적응형 상태 관리

Country Status (8)

Country Link
US (1) US11347545B2 (ko)
JP (1) JP2023517565A (ko)
KR (1) KR20220127327A (ko)
CN (1) CN115298653A (ko)
AU (1) AU2021236960B2 (ko)
DE (1) DE112021000619T5 (ko)
GB (1) GB2609575A (ko)
WO (1) WO2021186259A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230221995A1 (en) * 2022-01-10 2023-07-13 Tangoe Us, Inc. Cloud application threshold based throttling

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040230681A1 (en) 2002-12-06 2004-11-18 John Strassner Apparatus and method for implementing network resources to provision a service using an information model
US7730123B1 (en) 2005-12-20 2010-06-01 At&T Intellectual Property Ii, Lp Software application implemented using services from a services repository generated using a target services roadmap
US8560563B2 (en) 2008-07-09 2013-10-15 International Business Machines Corporation Apparatus and method of semantic service correlation system
US9749387B2 (en) 2009-08-13 2017-08-29 Sap Se Transparently stateful execution of stateless applications
US9483312B2 (en) 2010-08-16 2016-11-01 International Business Machines Corporation Locating service endpoints from a service registry
JP5753908B2 (ja) 2010-11-18 2015-07-22 グーグル・インコーポレーテッド コンピューティングオブジェクトのコンテキストの履歴
US9934214B2 (en) * 2014-12-11 2018-04-03 International Business Machines Corporation DOM snapshot capture
US9967351B2 (en) 2015-01-31 2018-05-08 Splunk Inc. Automated service discovery in I.T. environments
US10498834B2 (en) 2015-03-30 2019-12-03 [24]7.ai, Inc. Method and apparatus for facilitating stateless representation of interaction flow states
US10277488B2 (en) * 2016-09-09 2019-04-30 International Business Machines Corporation System and method for management and recovery of multi-service web transactions
US10275235B2 (en) * 2017-09-18 2019-04-30 International Business Machines Corporation Adaptable management of web application state in a micro-service architecture

Also Published As

Publication number Publication date
JP2023517565A (ja) 2023-04-26
GB202215190D0 (en) 2022-11-30
WO2021186259A1 (en) 2021-09-23
CN115298653A (zh) 2022-11-04
GB2609575A (en) 2023-02-08
US11347545B2 (en) 2022-05-31
AU2021236960B2 (en) 2023-12-14
AU2021236960A1 (en) 2022-09-01
DE112021000619T5 (de) 2022-11-10
US20210294645A1 (en) 2021-09-23

Similar Documents

Publication Publication Date Title
US20210072966A1 (en) Method and system for service rolling-updating in a container orchestrator system
US9722886B2 (en) Management of cloud provider selection
US9513947B2 (en) Adaptive virtual machine request approver
US20180020077A1 (en) Live migration of containers based on geo-location
US10044837B2 (en) Generation and distribution of named, definable, serialized tokens
US10805228B2 (en) Injection of information technology management process into resource request flows
US11714638B2 (en) Availability level-based service management
US20180302487A1 (en) Concurrency reduction through publish-subscribe patterns
US10182121B2 (en) Cookie based session timeout detection and management
US10778753B2 (en) Deferential support of request driven cloud services
US9876861B2 (en) Autonomic discovery and integration of complementary internet services
KR20220127327A (ko) 상태 비보존형 서비스를 위한 적응형 상태 관리
US11900078B2 (en) Tuning a container orchestrator
US11487750B2 (en) Dynamically optimizing flows in a distributed transaction processing environment
US11307958B2 (en) Data collection in transaction problem diagnostic
US20230318954A1 (en) Enhancing software application hosting in a cloud environment

Legal Events

Date Code Title Description
E902 Notification of reason for refusal