KR20230109694A - 확장 가능한 애플리케이션에서 실행되는 요청들의 조정 - Google Patents

확장 가능한 애플리케이션에서 실행되는 요청들의 조정 Download PDF

Info

Publication number
KR20230109694A
KR20230109694A KR1020237020311A KR20237020311A KR20230109694A KR 20230109694 A KR20230109694 A KR 20230109694A KR 1020237020311 A KR1020237020311 A KR 1020237020311A KR 20237020311 A KR20237020311 A KR 20237020311A KR 20230109694 A KR20230109694 A KR 20230109694A
Authority
KR
South Korea
Prior art keywords
instances
request
response
application
completed
Prior art date
Application number
KR1020237020311A
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 KR20230109694A publication Critical patent/KR20230109694A/ko

Links

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/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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/143Termination or inactivation of sessions, e.g. event-controlled end of session
    • 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/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • 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/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Stored Programmes (AREA)
  • Peptides Or Proteins (AREA)

Abstract

확장 가능한 애플리케이션에서 실행되는 요청들의 조정(COORDINATING REQUESTS ACTIONED AT A SCALABLE APPLICATION)
확장 가능한 애플리케이션에서 실행되는 요청들을 조정하기 위한 방법, 컴퓨터 시스템, 및 컴퓨터 프로그램 제품이 제공된다. 본 발명은 다수의 애플리케이션 인스턴스들에 대해 클라이언트 요청을 실행할 때 적용될 응답 거동(response behavior)에 관한 메타데이터를 등록하는 단계를 포함할 수 있다. 본 발명은 상기 하나 혹은 그 이상의 애플리케이션 인스턴스들로부터 필요한 수의 응답 인스턴스들(a required number of response instances)의 완료를 조정하기 위해 증강된 요청 인스턴스들을 제공하도록 상기 메타데이터에 따라 상기 클라이언트 요청을 증강하는 단계(augmenting)를 포함할 수 있다. 본 발명은 필요한 수의 완료된 응답 인스턴스들이 수신될 때 미해결 증강 요청 인스턴스들을 종료하기 위해 상기 애플리케이션 인스턴스들에 걸쳐 상기 클라이언트 요청의 상태를 조정하는 단계(coordinating)를 포함할 수 있다.

Description

확장 가능한 애플리케이션에서 실행되는 요청들의 조정
[0001] 본 발명은 일반적으로 컴퓨팅 분야에 관한 것으로, 보다 상세하게는, 확장 가능한 애플리케이션에서 실행되는 요청들(requests actioned at a scalable application)에 관한 것이며, 보다 상세하게는, 다수의 애플리케이션 인스턴스들(multiple application instances)에서 실행되는 요청들의 조정(coordinating)에 관한 것이다.
[0002] 클라우드 컴퓨팅은 플랫폼 서비스(platform as a service: PaaS)를 포함할 수 있고, 이 플랫폼 서비스는 소비자-생성 또는 획득 애플리케이션들(consumer-created or acquired applications)을 클라우드 하부구조(a cloud infrastructure)에 배치할 수 있는 기능을 소비자에게 제공할 수 있다. 클라우드 공급자들은, 일반적으로 운영 체제, 프로그래밍 언어 실행 환경, 데이터베이스 및 웹 서버를 포함하는, 컴퓨팅 플랫폼을 제공한다. 애플리케이션 개발자들은 클라우드 플랫폼에서 소프트웨어를 개발하고 실행할 수 있으며 기본 컴퓨터 및 스토리지 자원들(the underlying computer and storage resources)은 애플리케이션 수요에 맞게 자동으로 확장될 수 있다.
[0003] 일부 클라우드 플랫폼들은 배치될 애플리케이션의 다수의 인스턴스들(예: 복제본)을 제공함으로써 애플리케이션들이 확장되게 할 수 있다. 워크로드 밸런서(A workload balancer)는 다수의 애플리케이션 인스턴스들 앞에 위치하여 애플리케이션 인스턴스들 간의 작업 균형을 맞출 수 있다. 워크로드 밸런서는 애플리케이션 인스턴스들 간에 트래픽을 라운드-로빈(round-robin) 할 수 있으며 이는 런타임 워크로드에 적합하다. 일부 클라우드 플랫폼들은 클라이언트 요청들을 애플리케이션의 특정 인스턴스 또는 라운드 로빈으로 보내는 기능을 제공할 수 있다.
[0004] 추적 수집(collecting trace)과 같은, 일부 명령 요청들의 경우, 명령은 애플리케이션 인스턴스들 중 하나로만 이동할 수 있으므로 그러한 라운드-로빈은 이상적이지 않을 수 있다. 따라서, 이러한 상황들에서는 명령 요청이 다수의 애플리케이션 인스턴스들에서 실행될 수 있다(actioned).
[0005] 추적을 수집할 때, 특정 종료 이벤트가 나타날 때까지만 추적을 수집하는 옵션이 있을 수 있다. 이는 수집된 추적의 양과 관련 오버헤드들을 제한하여, 진단들을 더 쉽게 만들 수 있으므로, 유리할 수 있다. 추적이 다수의 애플리케이션 인스턴스들에서 실행되는 경우, 각 인스턴스는 그 인스턴스에서 종료 이벤트가 나타날 때까지 계속될 수 있으며 이로 인해 수집되는 추적 데이터가 증가하고 추적 데이터 수집에 관련된 높은 오버헤드들이 발생할 수 있다.
[0006] 본 발명의 실시예들은 확장 가능한 애플리케이션에서 실행되는 요청들을 조정하기 위한 방법, 컴퓨터 시스템, 및 컴퓨터 프로그램 제품을 개시한다. 본 발명은 다수의 애플리케이션 인스턴스들에 대해 클라이언트 요청을 실행할 때 적용될 응답 거동(response behavior)에 관한 메타데이터를 등록하는 단계를 포함할 수 있다. 본 발명은 상기 하나 혹은 그 이상의 애플리케이션 인스턴스들로부터 필요한 수의 응답 인스턴스들(a required number of response instances)의 완료를 조정하기 위해 증강된 요청 인스턴스들을 제공하도록 상기 메타데이터에 따라 상기 클라이언트 요청을 증강하는 단계(augmenting)를 포함할 수 있다. 본 발명은 필요한 수의 완료된 응답 인스턴스들이 수신될 때 미해결 증강 요청 인스턴스들을 종료하기 위해 상기 애플리케이션 인스턴스들에 걸쳐 상기 클라이언트 요청의 상태를 조정하는 단계(coordinating)를 포함할 수 있다.
[0007] 본 발명의 이러한 목적들 및 다른 목적들, 특징들 및 장점들은, 첨부된 도면들과 관련하여 읽을 수 있는, 예시적인 실시예들의 다음의 상세한 설명으로부터 명백해질 것이다. 도면들의 다양한 특징들은 예시들이 상세한 설명과 함께 본 발명을 이해하는 데 있어 당업자를 용이하게 하기 위한 명확성을 위한 것이므로 축척에 따른 것이 아니다. 도면들에서:
도 1은 적어도 하나의 실시예에 따른 시스템의 개략도이다;
도 2는 적어도 하나의 실시예에 따라 확장 가능한 애플리케이션에서 실행되는 요청들을 조정하기 위한 프로세스를 나타내는 동작 플로차트이다;
도 3은 적어도 하나의 실시예에 따라 다수의 요청 인스턴스들의 완료를 조정하기 위한 프로세스를 예시하는 동작 플로차트이다.
도 4는 적어도 하나의 실시예에 따라 도시된 시스템의 블록도이다.
도 5는 적어도 하나의 실시예에 따라 도 1에 도시된 컴퓨터들의 내부 및 외부 컴포넌트들의 블록도이다.
도 6은 본 발의 실시예에 따른, 도 1에 도시된 시스템을 포함하는 예시적인 클라우드 컴퓨팅 환경의 블록도이다; 및
도 7은 본 발명의 실시예에 따른 도 6의 예시적인 클라우드 컴퓨팅 환경의 기능 층들의 블록도이다.
[0008] 청구된 구조들 및 방법들의 상세한 실시예들이 여기에 개시된다; 그러나, 개시된 실시예들은 다양한 형태들로 구현될 수 있는 청구된 구조들 및 방법들의 예시일 뿐이라는 것을 이해할 수 있다. 그러나, 본 발명은, 여러 가지 상이한 형태들로 구현될 수 있으며 여기에서 설명하는 실시예들에 한정되지 않는다. 오히려, 이들 실시예들은 본 개시를 더욱 충실하고 완전하게 하며 당업자에게 본 발명의 사상을 완전하게 전달하기 위하여 제공되는 것이다. 설명에서, 제시된 실시예들을 불필요하게 이해하기 어렵게(obscuring) 하는 것을 피하기 위해 잘-알려진 특징들 및 기술들에 대한 세부 사항은 생략될 수 있다.
[0009] 본 발명의 실시 예들은 통합의 모든 가능한 기술적 세부 수준에서 시스템, 방법, 및/또는 컴퓨터 프로그램 제품이 될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 스토리지 매체(또는 매체)를 포함할 수 있으며, 이 매체 상에 프로세서가 본 발명의 실시 예들을 수행하도록 하는 컴퓨터 판독 가능 프로그램 명령들을 갖는다.
[0010] 상기 컴퓨터 판독 가능 스토리지 매체는 명령 실행 장치에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 상기 컴퓨터 판독 가능 스토리지 매체는, 예를 들면, 전자 스토리지 디바이스, 자기 스토리지 디바이스, 광 스토리지 디바이스, 전자기 스토리지 디바이스, 반도체 스토리지 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 스토리지 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거 및 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 기록된 홈에 있는 융기된 구조들 같이 머신적으로 인코드 된 장치, 및 전술한 것들의 모든 적절한 조합. 본 명세서에서 사용될 때, 컴퓨터 판독 가능 스토리지 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[0011] 본 명세서에 기술되는 컴퓨터 판독 가능 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 판독 가능 스토리지 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 스토리지 디바이스로부터 외부 컴퓨터로 다운로드 될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 유닛 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 판독 가능 스토리지 매체에 저장하기 위해 전송한다.
[0012] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 프로그래밍 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 집적회로를 위한 구성 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시 예들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.
[0013] 본 발명의 특징들이 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 플로 차트 예시도들 및/또는 블록도들을 참조하여 기술된다. 플로 차트 예시도들 및/또는 블록도들의 각 블록과 플로 차트 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[0014] 이들 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 유닛의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 유닛의 프로세서를 통해서 실행되어, 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 유닛 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 스토리지 매체가 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[0015] 상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 유닛, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 디바이스 상에서 실행되는 명령들이 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[0016] 도면들 내 플로 차트 및 블록도들은 본 발명의 여러 실시 예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능(functionality), 및 연산(operation)을 예시한다. 이와 관련하여, 상기 플로 차트 또는 블록도들 내 각 블록은 상기 명시된 로직 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행 가능한 명령들을 포함한 모듈, 세그먼트 또는 명령들의 일부분을 나타낼 수 있다. 일부 다른 실시 예들에서, 상기 블록에 언급되는 기능들은 도면들에 언급된 순서와 다르게 일어날 수도 있다. 예를 들면, 연속으로 도시된 두 개의 블록들은 실제로는 사실상 동시에 실행될 수도 있고, 또는 이 두 블록들은 때때로 관련된 기능에 따라서는 역순으로 실행될 수도 있다. 블록도들 및/또는 플로 차트 예시도의 각 블록, 및 블록도들 및/또는 플로 차트 예시도 내 블록들의 조합들은 특수목적용 하드웨어 및 컴퓨터 명령들의 명시된 기능들 또는 동작들, 또는 이들의 조합들을 수행하는 특수목적용 하드웨어-기반 시스템들에 의해 구현될 수 있다는 것에 또한 주목해야 한다.
[0017] 다음의 설명된 예시적인 실시예들은, 확장 가능한 애플리케이션에서 실행되는 요청들을 조정하기 위한(coordinating requests actioned at a scalable application), 시스템, 방법 및 프로그램 제품을 제공한다. 따라서, 본 실시예는 애플리케이션의 다수의 인스턴스들에 분사된 요청들 또는 작동들(requests or actions that have been sprayed out to multiple instances of an application)의 완료가 인스턴스들 간에 조정될 수 있는 메커니즘을 제공함으로써 확장 가능한 클라우드 환경에서 애플리케이션을 관리하고 진단하는 기술 분야를 개선할 수 있는 기능을 갖는다. 더 구체적으로, 본 발명은 다수의 애플리케이션 인스턴스들에 대한 클라이언트 요청을 실행할 때 적용될 응답 거동(response behavior to be applied)에 관한 메타데이터를 등록하는 단계(registering)를 포함할 수 있다. 본 발명은 증강된 요청 인스턴스들(the augmented request instances)이 라우팅되는 애플리케이션 인스턴스들로부터 필요한 수의 응답 인스턴스들에 관한 완료를 조정하도록 증강된 요청 인스턴스들을 제공하기 위해 메타데이터에 따라 클라이언트 요청을 증강하는 단계(augmenting)를 포함할 수 있다. 본 발명은 필요한 개수의 완료된 인스턴스들이 수신될 때 미해결 증강 요청 인스턴스들을 종료하기 위해 애플리케이션 인스턴스들에 걸쳐 클라이언트 요청의 상태를 조정하는 단계(coordinating)를 포함할 수 있다.
[0018] 전술한 바와 같이, 클라우드 컴퓨팅은 소비자-생성 또는 획득 애플리케이션들(consumer-created or acquired applications)을 클라우드 하부구조(a cloud infrastructure)에 배치할 수 있는 기능을 소비자에게 제공할 수 있는 플랫폼 서비스(platform as a service: PaaS)를 포함할 수 있다. 클라우드 공급자들은 일반적으로 운영 체제, 프로그래밍 언어 실행 환경, 데이터베이스, 및 웹 서버를 포함하는 컴퓨팅 플랫폼을 제공한다. 애플리케이션 개발자들은 클라우드 플랫폼에서 소프트웨어를 개발하고 실행할 수 있으며 기본 컴퓨터 및 스토리지 자원들(the underlying computer and storage resources)은 애플리케이션 수요에 맞게 자동으로 확장될 수 있다.
[0019] 일부 클라우드 플랫폼들에서는 배치될 애플리케이션들의 다수의 인스턴스들(예: 복제본들)을 제공하여 애플리케이션을 확장할 수 있다. 워크로드 밸런서(A workload balancer)는 여러 애플리케이션 인스턴스들 앞에 위치하여 애플리케이션 인스턴스들 간의 작업 균형을 맞출 수 있다. 워크로드 밸런서는 애플리케이션 인스턴스들 간에 트래픽을 라운드-로빈(round-robin)할 수 있으며 이는 런타임 워크로드에 적합하다. 일부 클라우드 플랫폼들은 클라이언트 요청들을 애플리케이션의 특정 인스턴스 또는 라운드-로빈으로 보내는 기능을 제공할 수 있다.
[0020] 추적 수집(collecting trace)과 같은, 일부 명령 요청들의 경우, 그러한 라운드-로빈은 명령이 애플리케이션 인스턴스들 중 하나로만 이동할 수 있으므로 이상적이지 않을 수 있다. 따라서, 그러한 상황들에서는 명령 요청이 여러 애플리케이션 인스턴스들에서 실행될 수 있다.
[0021] 추적을 수집할 때, 특정 종료 이벤트가 나타날 때까지만 추적을 수집하는 옵션이 있을 수 있다. 이는 수집된 추적의 양과 관련 오버헤드들을 제한하여, 진단들을 더 쉽게 만들 수 있으므로, 유리할 수 있다. 추적이 다수의 애플리케이션 인스턴스들에서 실행되는 경우, 각 인스턴스는 그 인스턴스에서 종료 이벤트가 나타날 때까지 계속될 수 있으며 이로 인해 수집되는 추적 데이터가 증가하고 추적 데이터 수집에 관련된 높은 오버헤드들이 발생할 수 있다.
[0022] 그러므로, 무엇보다도, 다수의 애플리케이션 인스턴스들에 대한 클라이언트 요청을 실행할 때 적용될 응답 거동(response behavior)에 관한 메타데이터를 등록하는 것(register), 증강된 요청 인스턴스들이 라우팅되는 애플리케이션 인스턴스들로부터 필요한 수의 응답 인스턴스들의 완료를 조정하도록 증강된 요청 인스턴스들을 제공하기 위해 메타데이터에 따라 클라이언트 요청을 증강하는 것(augment), 그리고 필요한 수의 완료된 인스턴스들이 수신될 때 미해결 증강된 요청 인스턴스들(outstanding augmented request instances)을 종료하기 위해 애플리케이션 인스턴스들에 걸쳐 클라이언트 요청의 상태를 조정하는 것(coordinate) 이 바람직할 수 있다.
[0023] 적어도 하나의 실시예에 따르면, 본 발명은 하나 혹은 그 이상의 다른 애플리케이션 인스턴스들로부터 이용 가능한 응답으로 인해 완료될 필요가 없는 애플리케이션 인스턴스들에서 요청 인스턴스들의 종료하는 것을 개선할 수 있다. 클라이언트 요청은 애플리케이션 인스턴스들에서 수행할 명령일 수 있다.
[0024] 적어도 하나의 실시예에 따르면, 본 발명은 사용자 경험을 향상시킬 수 있고 확장 가능한 클라우드 환경에서 애플리케이션들을 관리하는 능력을 향상시킬 수 있다.
[0025] 적어도 하나의 실시예에 따르면, 본 발명은 프로세서, 메모리, 및 응답 시간 측면에서, 자원 사용량을 감소시킴으로써 확장 가능한 클라우드 환경에서 애플리케이션의 관리를 개선할 수 있다.
[0026] 본 발명의 적어도 하나의 실시예에 따르면, 메타데이터에 따라 클라이언트 요청을 증강하는 단계(augmenting)는 요청 인스턴스의 헤더에 응답 조정 명령들(response coordination instructions)을 추가하는 단계(adding)를 포함할 수 있다. 애플리케이션 인스턴스들 전체에서 클라이언트 요청의 상태를 조정하면 완료된 요청 인스턴스에 관한 업데이트를 수신하기 위해 엔드포인트 체크(an endpoint check)를 제공할 수 있고 요청 인스턴스들이 다른 요청 인스턴스들이 완료되었는지 체크하기 위해 요청 인스턴스들에 대해 엔드포인트 체크를 제공할 수 있다. 일 실시예에서, 엔드포인트 체크는 응답 인스턴스가 완료될 때 애플리케이션 인스턴스들이 엔드포인트에 대해 업데이트를 제공하는 콜백 메커니즘(a callback mechanism in)에 의해 제공된다. 다른 실시예에서, 엔드포인트 체크는 애플리케이션 인스턴스들이 완료된 요청 인스턴스의 이벤트에 대해 등록하는 이벤트 등록 메커니즘에 의해 제공된다.
[0027] 본 발명의 적어도 하나의 실시예에 따르면, 상기 방법은 등록된 메타데이터에 기초하여 증강된 요청 인스턴스들을 다수의 애플리케이션 인스턴스들로 라우팅하는 단계를 포함할 수 있다. 상기 증강된 요청 인스턴스들은 모든 애플리케이션 인스턴스들로 라우팅될 수 있으며 필요한 수의 완료된 응답 인스턴스들은 단일 응답 인스턴스일 수 있다.
[0028] 본 발명의 적어도 하나의 실시예에 따르면, 상기 방법은 확장 가능한 클라우드 환경에 위치한 다수의 애플리케이션 인스턴스들이 가능한 확장 가능 애플리케이션 앞의 라우터 컴포넌트에서 수행될 수 있다.
[0029] 본 발명의 적어도 하나의 실시예에 따르면, 상기 방법은 등록된 메타데이터에 기초하여 집계 응답(an aggregate response)을 형성하기 위해 애플리케이션 인스턴스들로부터의 다수의 응답 인스턴스들을 결합하는 단계(combining)를 포함할 수 있으며, 상기 집계된 응답은 하나 혹은 그 이상의 완료된 응답 인스턴스들 및 종료된 응답 인스턴스들을 포함한다. 이 것은 모든 요청 인스턴스들로부터 응답 인스턴스들을 대기하는 단계(waiting)와 집계 응답을 형성하기 위해 하나 혹은 그 이상의 응답 인스턴스들을 결합하는 단계를 포함할 수 있다. 다른 대안으로, 상기 방법은 다른 요청 인스턴스들의 종료를 대기함이 없이 필요한 수의 응답 인스턴스들이 수신되었을 때 클라이언트 요청에 대한 응답을 보낼 수 있다.
[0030] 본 발명의 적어도 하나의 실시예에 따르면, 메타데이터를 등록하는 단계는 응답 인스턴스들의 완료 및 완료된 응답 인스턴스들의 필요한 수에 관한 규칙들을 명시하는 메타데이터를 포함하는 인터페이스 사양(an interface specification)을 애플리케이션에 등록하는 단계를 포함할 수 있다. 애플리케이션에 인터페이스 사양을 등록하는 단계는 요청 유형과 연관된 요구사항들에 따라 응답 거동에 관한 메타데이터를 생성하는 단계; 및 생성된 메타데이터를 인터페이스 사양과 연관시키는 단계를 를 포함할 수 있다.
[0031] 본 발명의 적어도 하나의 실시예에 따라, 확장 가능한 애플리케이션에서 실행되는 요청들을 조정하기 위한 컴퓨터-구현 방법이 제공될 수 있으며, 상기 방법은: 다수의 애플리케이션 인스턴스들로 라우팅되는 클라이언트 요청을 수신하는 단계; 상기 애플리케이션 인스턴스들로부터 필요한 수의 응답 인스턴스들의 완료를 조정하기 위해 등록된 메타데이터에 따라 클라이언트 요청의 인스턴스들을 증강하는 단계(augmenting)-상기 증강된 요청 인스턴스들은 상기 애플리케이션 인스턴스들로 라우팅됨-; 및 필요한 수의 완료된 응답 인스턴스들이 수신될 때 미해결 요청 인스턴스들(outstanding request instances)을 종료하기 위해 애플리케이션 인스턴스들에 걸쳐 요청 상태를 조정하는 단계(coordinating)를 포함한다.
[0032] 본 발명의 적어도 하나의 실시예에 따라, 확장 가능한 애플리케이션에서 실행되는 요청들을 조정하기 위한 시스템이 제공될 수 있으며, 상기 시스템은: 프로세서 및 컴포넌트들의 기능을 실행하기 위해 상기 프로세서에 컴퓨터 프로그램 명령들을 제공하도록 구성된 메모리를 포함하고, 상기 컴포넌트들은: 다수의 애플리케이션 인스턴스들에 대한 요청을 실행할 때 응답 거동에 관한 메타데이터를 등록하기 위한 등록 컴포넌트; 상기 애플리케이션 인스턴스들로부터 필요한 수의 응답 인스턴스들의 완료를 조정하기 위해 등록된 메타데이터에 따라 클라이언트 요청의 인스턴스들을 증강시키기 위한(augmenting) 요청 인스턴스들 증강 컴포넌트 -상기 증강된 요청 인스턴스들은 상기 애플리케이션 인스턴스들로 라우팅됨-; 및 필요한 수의 완료된 응답 인스턴스들이 수신될 때 미해결 요청 인스턴스들(outstanding request instances)을 종료하기 위해 애플리케이션 인스턴스들에 걸쳐 요청 상태를 조정하기 위한(coordinating) 요청 인스턴스 조정 컴포넌트를 포함한다.
[0033] 본 발명의 적어도 하나의 실시예에 따르면, 상기 시스템은 응답 인스턴스들의 완료 및 완료된 응답 인스턴스들의 필요한 수에 관한 규칙들을 명시하는 메타데이터를 포함하는 인터페이스 사양에서 등록된 메타데이터를 검사하기 위한 사양 검사 컴포넌트(a specification inspection component)를 포함할 수 있다.
[0034] 본 발명의 적어도 하나의 실시예에 따라, 상기 시스템은, 완료된 응답 인스턴스들 및 종료된 응답 인스턴스들을 포함하는, 등록된 메타데이터에 기초하여집계 응답을 형성하기 위해 상기 애플리케이션 인스턴스들로부터의 다수의 응답 인스턴스를들을 결합하기 위한 집계 컴포넌트(an aggregating component)를 포함할 수 있다.
[0035] 본 발명의 적어도 하나의 실시예에 따라, 상기 요청 인스턴스 조정 컴포넌트는 완료에 관한 업데이트를 전송하기 위해 완료된 요청 인스턴스에 대한 엔드포인트 체크와 다른 요청 인스턴스들이 완료되었는지 체크하기 위해 요청 인스턴스들에 대한 엔드포인트 체크를 제공할 수 있다 상기 요청 인스턴스 조정 컴포넌트는 콜백 메커니즘 컴포넌트 또는 이벤트 등록 컴포넌트를 포함할 수 있다.
[0036] 본 발명의 적어도 하나의 실시예에 따라, 상기 시스템은 요청 인스턴스 라우팅 컴포넌트를 포함할 수 있고, 상기 요청 인스턴스 라우팅 컴포넌트는: 상기 애플리케이션에 대해 상기 등록된 메타데이터를 분석하는 단계; 라우팅 메타데이터를 식별하는 단계; 및 상기 식별된 라우팅 메타데이터에 기초하여 상기 증강된 요청 인스턴스들을 상기 애플리케이션 인스턴스들로 라우팅하는 단계를 수행할 수 있다. 상기 시스템은 확장 가능한 클라우드 환경에 제공될 수 있는 다수의 애플리케이션 인스턴스들 앞의 라우터 컴포넌트일 수 있다.
[0037] 본 발명의 적어도 하나의 실시예에 따라, 다수의 애플리케이션 인스턴스들을 갖는 확장 가능한 애플리케이션에서 실행되는 요청들을 조정하기 위한 시스템이 제공될 수 있으며, 상기 시스템은: 프로세서 및 컴포넌트들의 기능을 실행하기 위해 상기 프로세서에 컴퓨터 프로그램 명령들을 제공하도록 구성된 메모리를 포함하고, 상기 컴포넌트들은: 다수의 애플리케이션 인스턴스들로 라우팅될 클라이언트 요청을 수신하기 위한 요청 수신 컴포넌트; 상기 애플리케이션 인스턴스들로부터 필요한 수의 응답 인스턴스들의 완료를 조정하기 위해 등록된 메타데이터에 따라 클라이언트 요청의 인스턴스들을 증강시키기 위한(augmenting) 요청 인스턴스들 증강 컴포넌트 -상기 증강된 요청 인스턴스들은 상기 애플리케이션 인스턴스들로 라우팅됨-; 및 필요한 수의 완료된 응답 인스턴스들이 수신될 때 미해결 요청 인스턴스들(outstanding request instances)을 종료하기 위해 애플리케이션 인스턴스들에 걸쳐 요청 상태를 조정하기 위한(coordinating) 요청 인스턴스 조정 컴포넌트를 포함한다.
[0038] 본 발명의 적어도 하나의 실시예에 따라, 확장 가능한 애플리케이션에서 실행되는 요청을 조정하기 위해 제공되는 컴퓨터 프로그램 제품이 제공될 수 있으며, 상기 컴퓨터 프로그램 제품은 프로그램 명령들이 구현된 컴퓨터 판독 가능 스토리지 매체를 포함하고, 상기 프로그램 명령들은 프로세서에 의해 실행 가능하며, 상기 프로세서가: 다수의 애플리케이션 인스턴스들에 대한 요청을 실행할 때 응답 거동에 관한 메타데이터를 등록하는 단계; 애플리케이션 인스턴스들로부터 필요한 수의 응답 인스턴스들의 완료를 조정하기 위해 등록된 메타데이터에 따라 클라이언트 요청의 인스턴스들을 증강하는 단계(augmenting)-상기 증강된 요청 인스턴스들은 상기 애플리케이션 인스턴스들로 라우팅됨-; 및 필요한 수의 완료된 응답 인스턴스들이 수신될 때 미해결 증강된 요청 인스턴스들(outstanding augmented request instances)을 종료하기 위해 애플리케이션 인스턴스들에 걸쳐 클라이언트 요청의 상태를 조정하는 단계(coordinating)를 수행하게 한다.
[0039] 본 발명의 적어도 하나의 실시예에 따르면, 상기 컴퓨터 판독 가능 스토리지 매체는 비-일시적 컴퓨터 판독 가능 스토리지 매체일 수 있고 상기 컴퓨터 판독 가능 프로그램 코드는 처리 회로에 의해 실행 가능할 수 있다.
[0040] 확장 가능한 애플리케이션과의 상호 작용을 제어하기 위한 개념이 제안된다. 클라우드 컴퓨팅의 맥락에서 확장성은 유능한 방식으로 트래픽 수요를 충족하기 위해 증가하거나 감소하는 자원들을 처리하는 능력으로 간주될 수 있다. 본질적으로, 확장성은 필요에 따라 확장하거나 축소할 수 있는 용량 수준을 제공할 수 있다. 확장 가능한 애플리케이션은 각각 애플리케이션의 기능을 수행할 수 있는 애플리케이션의 복제들 형태로 다수의 애플리케이션 인스턴스들을 가질 수 있다. 애플리케이션 인스턴스들은 멀티-클라우드 또는 하이브리드 클라우드 솔루션의 다양한 클라우드 서비스 공급자들을 포함하는 클라우드 자원들 전체에 걸쳐 제공될 수 있다.
[0041] 하이퍼 텍스트 전송 프로토콜(HTTP) 요청들 형식의 명령들(예: 한 컴퓨터가 통신을 위해 다른 컴퓨터로 보내는 정보 패킷)은 애플리케이션 인스턴스들 중 하나 또는 다수의 애플리케이션 인스턴스들로만 라우팅될 수 있다. 애플리케이션 인스턴스들의 수는 다양할 수 있으며, 확장 가능한 애플리케이션은 어느 시점에서든 단일 애플리케이션 인스턴스 또는 다수의 애플리케이션 인스턴스를 가질 수 있다.
[0042] 상기 설명된 방법 및 시스템은 하나의 메커니즘을 제공하고, 이 메커니즘에 의해 다수의 애플리케이션 인스턴스들로 분사된 요청들 또는 작업들의 완료가 애플리케이션 인스턴스들 간에 조정될 수 있다. 상기 방법 및 시스템은 클라우드 플랫폼의 일부로 제공되거나, 클라우드 플랫폼에 의해 호스팅되거나, 또는 클라우드 플랫폼에 연관될 수 있는 애플리케이션 인스턴스들과 클라이언트 명령들 사이에 제공되는 라우터 컴포넌트에서 제공된다.
[0043] 도 1을 참조하면, 도 1은 상기 설명된 방법이 구현될 수 있는 시스템(100)의 예시적인 실시예의 개략도를 도시한다. 도 1은 하나의 구현의 예시만을 제공하고 다른 실시예가 구현될 수 있는 환경들에 관한 어떠한 제한들도 의미하지 않음을 이해해야 한다. 상기 설명된 환경들에 대한 많은 수정들이 설계 및 구현 요구사항들에 따라 이루어질 수 있다.
[0044] 애플리케이션들을 개발, 실행, 또는 관리하기 위한 플랫폼을 제공하는 클라우드 플랫폼(110)이 도시되어 있다. 클라우드 플랫폼(110)은 멀티-클라우드 플랫폼, 하이브리드-클라우드 플랫폼 등을 포함하는 라우팅 및 확장 용량들을 제공하는 모든 형태의 클라우드 플랫폼일 수 있으며, 애플리케이션 또는 애플리케이션의 컴포넌트를 시스템의 나머지 부분과 독립적으로 배치 및 확장될 수 있는 마이크로 서비스 아키텍처들(microservice architectures)을 가능하게 할 수 있다.
[0045] 애플리케이션 프로그래밍 인터페이스(API)(140)는 플랫폼(110)에 배치된 애플리케이션에 대한 하이퍼 텍스트 전송 프로토콜(HTTP) 요청 메시지들 및 응답 메시지들의 정의들을 포함하는 한 세트의 사양들을 정의한다. 확장성을 위해, API(140)는, 예를 들어, 클라우드 플랫폼(110)의 서로 다른 서버에 제공될 수 있는 다수의 애플리케이션 인스턴스들(141-143)을 지원할 수 있다.
[0046] API(140)는 정의된 요청-응답 메시지 시스템에 대해 공개적으로 노출된 하나 혹은 그 이상의 엔드포인트들로 구성될 수 있다. 클라이언트(101)는 애플리케이션의 개발, 실행, 또는 관리와 관련하여 API(140)에 명령 요청들을 발행할 수 있다. 예를 들어, 이들은 표현 상태 전송(Representational state transfer: REST) API 요청들 또는 단순 객체 접근 프로토콜(Simple Object Access Protocol: SOAP) 요청들과 같은, HTTP 요청들일 수 있다.
[0047] 클라우드 플랫폼(110)은 클라이언트(101)로부터 API(140)로 클라이언트 요청들(102)을 라우팅하기 위한 라우터 컴포넌트(120)를 포함할 수 있다. 라우터 컴포넌트(120)는 라우터 컴포넌트(120)에 등록되거나 액세스 가능한 API(140)에 대한 인터페이스 사양(121)에 액세스할 수 있다. 라우터 컴포넌트(120)는 애플리케이션 인스턴스들 사이에서 워크로드의 균형을 맞추기 위한 워크로드 밸런서와 유사한 구현으로 제공될 수 있다. 설명된 라우터 컴포넌트(120)는 라우터 컴포넌트(120)의 기존 형태로 구현될 수 있는 요청 완료 조정 컴포넌트(130)의 추가 기능을 포함할 수 있다.
[0048] 상기 설명된 방법 및 시스템은 API(140)로 전송될 수 있는 요청(102)을 조정하기 위해 라우터 컴포넌트(120)에서 요청 완료 조정 컴포넌트(130)를 제공하며, 여기서 상기 요청은 API(140)의 다수의 애플리케이션 인스턴스들(141-143)에서 실행될 수 있다. 요청 완료 조정 컴포넌트(130)는 다수의 애플리케이션 인스턴스들로 분사된 클라이언트 요청의 요청 인스턴스들의 완료가 조정될 수 있는 메커니즘을 제공할 수 있다.
[0049] 상기 설명된 방법에 따라, 인터페이스 사양(121)은 애플리케이션 인스턴스들에 대한 하나 혹은 그 이상의 요청 인스턴스들로서 클라이언트 요청(102)을 실행할 때 구현될 응답 거동(response behavior)에 관한 메타데이터(122)를 포함할 수 있다. 메타데이터(122)는 다수의 애플리케이션 인스턴스들로의 필요한 라우팅 및 하나 혹은 그 이상의 애플리케이션 인스턴스들로부터 수신될 필요한 수의 완료된 응답 인스턴스들을 포함할 수 있다.
[0050] 요청(102)은 완료 조정 명령들을 포함하도록 라우터 컴포넌트(120)에서 증강될 수 있고, 그 결과 증강된 요청 인스턴스들(103)이 생성되고, 이들은 메타데이터(122)에 명시된 다수의 애플리케이션 인스턴스들(141-143)로 포워딩될 수 있다. 증강된 요청 인스턴스들(103)에 대한 응답 인스턴스들(104)은 요청 완료 조정 컴포넌트(130)에서 수신될 수 있고 그들의 완료는 메타데이터에 명시된 조정에 따라 조정될 수 있다. 집계된 응답(105)은 애플리케이션 인스턴스들(141-143)로부터 응답 인스턴스들(104)을 컴파일링하는 클라이언트(101)로 다시 전송될 수 있다.
[0051] 이 기능의 한 구현에서, 클라이언트 요청(102)은 다른 요청 인스턴스들(103)이 요청을 완료하지 않고 종료할 수 있도록 필요한 요청에 대한 하나의 완료된 응답 인스턴스(104)로 모든 애플리케이션 인스턴스들(141-143)에 의해 실행될 수 있다. 이것은 콜백 메커니즘 또는 이벤트 등록 메커니즘과 같은 조정 메커니즘에 의해 구현될 수 있으며, 이에 관해 후술한다.
[0052] 이제 도 2를 참조하면, 적어도 하나의 실시예에 따라 확장 가능한 애플리케이션 프로세스(200)에서 실행되는 요청들을 조정하는 단계의 예를 예시하는 동작 플로차트가 도시된다. 상기 기술된 방법은 확장 가능한 클라우드 환경에 위치할 수 있는 다수의 애플리케이션 인스턴스들(141-143) 앞에 제공되는 라우터 컴포넌트(120)에서 다음과 같이 수행될 수 있다.
[0053] 상기 방법은 다수의 애플리케이션 인스턴스들에 대해 요청을 실행할 때 응답 거동(response behavior)에 관한 메타데이터를 등록할 수 있다. 상기 메타데이터는 다수의 애플리케이션 인스턴스들에 대한 요청들의 라우팅과 관련된 메타데이터 포함하는 인터페이스 사양(an interface specification)을 애플리케이션에 등록하는 단계(201)에 의해 등록될 수 있으며, 상기 인터페이스 사양은 필요한 수의 완료된 응답 인스턴스들, 및 응답 인스턴스들 완료에 관한 규칙들을 명시한다. 인터페이스 사양을 애플리케이션에 등록하는 단계(201)는 요청 유형과 연관된 요구사항들에 따라 메타데이터를 생성하는 단계 및 생성된 메타데이터를 인터페이스 사양과 연관시키는 단계를 포함할 수 있다.
[0054] 상기 메타데이터는 상기 인터페이스 사양에 작성되는 주석들(annotations)일 수 있으며, 상기 주석들은 사용자에 의해 수동으로 생성되거나 머신-러닝 알고리즘을 사용하여 자동으로 생성될 수 있다. 개발자나 엔지니어는 메타데이터 주석들을 포함하는 인터페이스 사양을 생성할 수 있다. 메타데이터는 예상되는 요청 유형(PUT, GET, POST 등)에 기초하여 포함되거나 예상되는 요청들이 알려지지 않은 경우 기본 메타데이터 세트가 포함될 수 있다. 메타데이터는 요청 및/또는 응답의 라우팅(즉, 조정/관리)이 다르게 또는 특정 방식으로 처리되어야 한다는 표시를 제공할 수 있다. 예를 들어, 애플리케이션 추적을 가능하게 하는 명령(예: 요청)의 경우, 메타데이터를 제공하는 주석들은 요청이, 단지 하나의 인스턴스가 아니라, 모든 애플리케이션 인스턴스들로 전송되어야 함을 나타내며, 그리고 하나의 완료된 응답이 필요하고 완료된 응답을 구성하는 것에 관한 규칙이 명시될 수 있음을 나타낸다.
[0055] 인터페이스 사양은 배치 시 플랫폼 기술로 등록될 수 있으며 애플리케이션 인스턴스들 앞에 있는 라우터 컴포넌트가 액세스할 수 있다. 이러한 방식으로, 요청들은 라우터 컴포넌트에 의해 인터페이스 사양에 명시된 대응 애플리케이션 인스턴스들 각각에 분산될 수 있다.
[0056] 인터페이스 사양(The interface specification)은 인터페이스 문서, API(애플리케이션 프로그래밍 인터페이스) 문서, UI(사용자 인터페이스) 사양 등으로도 지칭될 수 있으며, 표준화된 프레임워크를 준수하는 애플리케이션에 대한 사양 또는 설명(a specification or description)을 포함할 수 있다. 애플리케이션에 대한 인터페이스 사양은 애플리케이션과 관련된 애플리케이션 인터페이스와의 상호작용 및/또는 통합에 관한 명령들을 포함할 수 있다. 인터페이스 사양은 소프트웨어 사용자 인터페이스의 세부사항들을 서면 문서(a written document)로 캡처하고 최종 사용자가 애플리케이션을 통해 수행할 수 있는 모든 가능한 작업들(all possible actions)과 애플리케이션의, 모든 시각, 청각 및 기타 상호 작용 엘리멘트들을 포함할 수 있다. 따라서 인터페이스 사양은 애플리케이션 작동 방식에 대한 구현/통합 정보의 주요 소스가 될 수 있다. 구현 외에도, 인터페이스 사양은 유용성(usability), 현지화(localization) 및 데모 제한들(demo limits)을 고려할 수 있다. 일반적으로, 요건 사양의 목표는 제품(예: 애플리케이션)의 기능을 설명하는 것일 수 있지만, 인터페이스 사양은 이들 요건들이 실제로 구현되는 방법을 자세히 설명할 수 있다.
[0057] 예를 들어, 인터페이스 사양(121)은 RESTful(표현 상태 전송) 웹 서비스들(즉, 애플리케이션들)을 설명, 생성, 소비 및 시각화하고 RESTful API를 문서화하기 위한 기계-판독 가능 인터페이스 파일들(machine-readable interface files)에 대한 사양 형식의 Swagger® 문서일 수 있다. Swagger®는 NutraClick, LLC의 등록 상표이다. 표현 상태 전송(Representational state transfer)은 웹 서비스들 생성하는 데에 사용되는 한 세트의 제약조건들을 정의하는 소프트웨어 아키텍처 스타일이다. REST 아키텍처 스타일(예: RESTful 웹 서비스들)을 준수하는 웹 서비스들은 인터넷 상의 컴퓨터 시스템들 간에 상호 운용성(interoperability)을 제공한다. RESTful API는 둘 혹은 그 이상의 애플리케이션들이 서로 통신할 수 있도록 HTTP 요청들을 사용하는 애플리케이션 프로그래밍 인터페이스이다.
[0058] 일단 인터페이스 사양(121)이 등록되면(201), 상기 방법은 클라이언트 요청을 수신(202)할 수 있다. 상기 요청은 애플리케이션 인스턴스들에서 수행될 명령을 포함할 수 있다. 이들은 HTTP(Hypertext Transfer Protocol) 요청일 수 있다. 상기 명령의 예들은, 애플리케이션 인스턴스들에서 오류들을 식별 및/또는 해결하기 위한 명령(예: TRACE HTTP 요청), 애플리케이션 인스턴스들의 상태를 포함하는 상태 알림을 수신하기 위한 명령(예: STATUS HTTP 요청), 애플리케이션 인스턴스로부터 정보를 검색하는 명령(예: GET HTTP 요청), 예를 들어 고객 정보, 파일 업로드 등과 같은 데이터를 애플리케이션에 보내는 명령(예: POST HTTP 요청), 미리 정의된 정보를 제거하는 명령(예: DELETE HTTP 요청), 애플리케이션과의 통신 흐름을 설정하는 명령(예: CONNECT HTTP 요청), 애플리케이션의 통신 ?낵풩?(options)을 설명하는 명령(예: OPTIONS HTTP 요청)을 포함되지만, 이에 제한되지는 않는다.
[0059] 제안된 실시예들은 애플리케이션의 모든 인스턴스들(또는 인스턴스들 중 선택)에 의해 라우팅되고 완료될 RESTful 인터페이스들을 통해 요청들을 호출하는 개념을 채용할 수 있다. 명령들이 호출되는 방식은 애플리케이션에 대한 인터페이스 사양과 연관된 메타데이터에 기초할 수 있다.
[0060] 상기 방법은 요청의 응답들을 라우팅 및 조정하는 것에 관한 명령들을 결정하기 위해 수신된 요청에 대한 인터페이스 사양을 검사하는 단계(203)를 포함할 수 있다. 만일 메타데이터가 요청 인스턴스들이 다수의 애플리케이션 인스턴스들(모든 인스턴스들 또는 인스턴스들의 서브세트)로 전송됨을 나타내고 응답 인스턴스들이 요청이 전송될 모든 애플리케이션 인스턴스들보다 적은 애플리케이션 인스턴스로부터만 요구됨을 나타낸다면, 상기 요청은 완료할 필요가 없는 요청 인스턴스들의 종료를 조정하기 위한 명령을 포함하는 증강된 요청 인스턴스들을 생성하도록 증강된다(augmented)(204).
[0061] 상기 방법은 다수의 애플리케이션 인스턴스들로 전송될 다수의 요청 인스턴스들을 증강시킬 수 있다(204). 각 요청 인스턴스는 요청이 라우팅되는 애플리케이션 인스턴스들로부터 요구되는 수의 응답들의 완료를 조정하기 위한 명령들을 제공하도록 증강(204)될 수 있다. 예를 들어, 상기 명령은 요청 인스턴스들의 헤더(header)에 포함될 수 있다.
[0062] 상기 증강된 요청 인스턴스들은 메타데이터를 라우팅함에 따라 애플리케이션 인스턴스들로 전송될 수 있다(205).
[0063] 상기 방법은 요구되는 수의 완료된 응답 인스턴스들이 수신될 때 미해결 요청 인스턴스들을 종료하기 위해 애플리케이션 인스턴스들에 걸쳐 모든 요청 인스턴스들을 포함하는 요청의 상태를 조정한다(206). 이렇게 하면 각 요청 인스턴스가 완료되어야 하는 경우 발생하는 클라이언트에 대한 응답 지연들과 자원들의 사용을 감소시킬 수 있다.
[0064] 상기 조정은 요청 인스턴스에 의해 완료에 대한 업데이트를 수신하고 요청 인스턴스들이 다른 요청 인스턴스들이 완료되었는지를 체크하기 위해 엔드포인트 체크(an endpoint check)를 제공할 수 있다. 애플리케이션 인스턴스가 엔드포인트 체크를 수행하거나 조정 컴포넌트가 적절한 응답 인스턴스를 수신할 때 등록할 수 있다. 엔드포인트 체크는 콜백 메커니즘에 의해서, 이벤트 등록 메커니즘에 의해서, 또는 요청 인스턴스들 간의 조정을 가능하게 하는 기타 방법에 의해서 제공될 수 있다.
[0065] 상기 방법은 완료된 응답들과 종료된 응답들을 포함하는 응답들을 함께 결합하여(207) 단일 집계 응답들을 클라이언트에 전송하기(208) 위해 애플리케이션 인스턴스들로 전송된 요청 인스턴스들의 모든 응답들을 대기할 수 있다. 대안으로, 상기 방법은 다른 요청 인스턴스들로부터의 응답을 대기함이 없이 응답 또는 응답들이 수신되자 마자 요청 인스턴스 또는 지정된 수의 요청 인스턴스들로부터 제1응답을 클라이언트로 다시 전송할 수 있다. 이렇게 하면 완료된 요청 응답이 가능한 한 빨리 전송될 수 있다.
[0066] 집계 응답을 형성하기 위해 애플리케이션 인스턴스들의 다수의 인스턴스들을 결합할지(207) 여부는 등록된 메타데이터에 명시될 수 있다.
[0067] 이제 도 3을 참조하면, 도 3은 적어도 하나의 실시예에 따른 콜백 메커니즘의 다수의 요청 인스턴스들 프로세스(300)의 완료를 조정하는 것의 예를 예시하는 동작 플로차트가 묘사된다.
[0068] 다수의 요청 인스턴스들이 콜백 명령으로 다수의 애플리케이션 인스턴스들에 전송될 수 있다(301). 요청 인스턴스들에 제공된 콜백은 한 애플리케이션 인스턴스가 요청을 완료하면 다른 인스턴스가 중지할 수 있도록 조정한다. 요청 인스턴스들은 인터페이스 사양의 메타데이터에 따라 모든 애플리케이션 인스턴스들 또는 인스턴스들의 서브세트로 전송될 수 있다(301).
[0069] 애플리케이션 인스턴스들 중 하나로 전송된 요청 인스턴스들 중 하나로부터 완료된 응답이 수신될 수 있다(302). 요청 인스턴스는 완료되었음을 나타내기 위해 요청 인스턴스에 대해 증강된 콜백을 호출할 수 있다(303).
[0070] 요청 인스턴스들을 처리하는 나머지 애플리케이션 인스턴스들은 애플리케이션 인스턴스들이 요청 인스턴스들 처리의 일부로서 상태에 대한 콜백을 폴링(poll)할 때 완료를 관찰할 수 있다(304). 따라서 나머지 요청 인스턴스들을 처리하는 나머지 애플리케이션 인스턴스들은 그들의 요청 인스턴스의 처리를 종료하고(305) 적절한 응답을 전송한다.
[0071] 다음 예시는 상기 설명된 방법의 구현의 예가 추적 요청에서 어떻게 작동하는지 보여준다.
[0072] 3개의 애플리케이션 인스턴스들(복제본들)을 갖는 애플리케이션이 클라우드 플랫폼에 배치되고, 미리 정의된 위치에서 연관된 API 사양을 가지며, 클라우드 플랫폼의 라우터 컴포넌트에 등록된다. API 사양은 요청들이 모든 인스턴스들로 팬아웃되어야 함을 나타내는 라우팅 메타데이터와 요청들이 하나의 인스턴스에 의해서만 처리되어야 하고(필수: 1) 응답들이 집계되어야 한다는 응답 메타데이터를 포함한다. 응답 메타데이터는 또한 데이터를 집계하는 방법에 관한 규칙도 포함할 수 있다. 예를 들어, 규칙 "200 if at least one 200 response, else most common"은, 응답 인스턴스들로부터 200 중 적어도 하나의 응답 코드가 있다면, 집계된 응답의 응답 코드는 200이어야 하고, 반면에, 200 응답 코드들이 없다면 가장 일반적인 응답 코드(즉, 503)가 사용될 수 있음을 의미한다.
[0073] 추적 요청에 대한 메타데이터는 다음을 포함할 수 있다:
[0074]버려질 예외(an exception to be thrown)를 발생시키는 문제는 식별되어야 하고 추적이 요구된다. 사용자는 REST API를 통해 명령을 발행하여 추적을 시작하고 예외가 관찰될 때 중지한다.
[0075] 요청은 API 사양이 검사될 수 있는 라우터 컴포넌트로 보내지는데, 애플리케이션의 한 인스턴스로 라우팅하는 대신, 요청은 메타데이터가 요구하는 대로, 모든 애플리케이션 인스턴스들로 라우팅될 수 있다, 즉 request: "all-instances".
[0076] 하나의 애플리케이션 인스턴스가 요청 인스턴스를 완료할 때 다른 인스턴스가 중지할 수 있도록 조정하기 위해 콜백이 요청 인스턴스들에 제공될 수 있다.
[0077] 각 애플리케이션 인스턴스는 요청 인스턴스를 수신하고 추적을 시작한다. 세 개의 애플리케이션 인스턴스들 중 제2의 애플리케이션 인스턴스는 예외를 기록하고 정의된 응답 인스턴스를 전송한다. 제2의 애플리케이션 인스턴스는 완료하였음을 나타내기 위해 라우터에 의해 요청 인스턴스에 증강된 콜백을 호출한다.
[0078] 나머지 제1 및 제3 애플리케이션 인스턴스들은 상태에 대한 콜백을 폴링하고 그들은 제2 애플리케이션 인스턴스로부터의 완료를 관찰하여 추적을 중지시키고, 적절한 응답 인스턴스들을 전송한다.
[0079] 라우터 컴포넌트는 요청들이 라우팅된 모든 애플리케이션 인스턴스들의 응답들을 대기한 다음, 메타데이터에 의해서 요구된 대로 클라이언트 애플리케이션에 대한 단일 응답으로 그들을 집계한다. 예를 들어: "HTTP 상태 코드는 다음과 같다:
200 [{"BIP3001이 서버 인스턴스 0001에서 관찰되지 않음"},{"BIP3001이 서버 인스턴스 0002에서 관찰됨"},{"BIP3001이 서버 인스턴스 0003에서 관찰되지 않음"}].
[0080] 이것은 모든 애플리케이션 인스턴스들에서 시작되는 추적을 제공하고 하나의 애플리케이션 인스턴스가 오류를 관찰한 때 추적을 중지된다. 사용자가 추적 로그들을 검색할 때, 그들은 이벤트를 캡처하고 자원 사용에서 효율적이 된다.
[0081] 다른 실시예에서, 구현은 요청 인스턴스들의 조정을 위해 콜백 메커니즘 대신 이벤트 등록 메커니즘을 선택할 수 있다.
[0082] 이벤트 등록 메커니즘에서, 애플리케이션 인스턴스는 특정 "이벤트들"에 대해 주어진 엔드포인트에 "등록" 요청을 보낼 수 있다. 그 다음, 일반적으로, 애플리케이션 인스턴스는 특정 이벤트 유형들이 실행될 때(fired) 실행될 다양한 유형들의 이벤트(예: onMessage() or onError() functions)를 처리하기 위한 "핸들러"를 가질 수 있다. 이 경우, 요청 인스턴스가 성공적으로 완료되면, 요청 인스턴스를 완료한 애플리케이션 인스턴스는 엔드포인트 또는 코디네이터(130)에게 알릴 수 있다. 그 다음, 이 것은 다른 애플리케이션 인스턴스에 알리는 "이벤트"가 트리거되게 하고 그들의 onMessage() function은 제1 애플리케이션 인스턴스가 완료되었음을 나타내는 메시지와 함께 실행된다. 그 다음, 애플리케이션 인스턴스들은 적절한 조치를 취한다.
[0083] 이제 도 4를 참조하면, 도 4는 적어도 하나의 실시예에 따라 도시된 시스템의 블록도이다. 블록도는 확장 가능한 클라우드 환경과 관련하여 제공되는 도 1에 도시된 라우터 컴포넌트(120)의 실시예를 도시한다. 라우터 컴포넌트(120)는 적어도 하나의 프로세서(401), 하드웨어 모듈, 또는 적어도 하나의 프로세서에서 실행되는 소프트웨어 유닛일 수 있는 상기 설명된 컴포넌트들의 기능들을 실행하기 위한 회로를 포함하는 컴퓨팅 시스템(400)에 제공될 수 있다. 병렬 처리 스레드들을 실행하는 다수의 프로세서들이 제공되어 컴포넌트들 기능들의 일부 또는 전부를 병렬 처리할 수 있다. 메모리(402)는 컴포넌트들의 기능을 수행하기 위해 적어도 하나의 프로세서(401)에 컴퓨터 명령들(403)을 제공하도록 구성될 수 있다.
[0084] 라우터 컴포넌트(120)는 다수의 애플리케이션 인스턴스들에 대한 요청을 실행할 때 응답 거동에 관한 메타데이터를 포함하는 인터페이스 사양(121)을 등록하기 위한 등록 컴포넌트(420)를 포함한다. 인터페이스 사양(121)에 의해 제공되는 메타데이터는, 요청이 전송되어야 하는 다수의 애플리케이션 인스턴스들과 같은, 요청에 대해 요구되는 라우팅 거동(the routing behavior)에 관련되는, 라우팅 메타데이터(421)를 포함한다. 인터페이스 사양(121)에 의해 제공되는 메타데이터는 또한 응답 인스턴스들의 완료에 관한 규칙들 및 완료된 응답 인스턴스들의 필요한 수를 포함하는 응답 메타데이터(422)를 포함한다. 인터페이스 사양(121)에 의해 제공되는 메타데이터는 또한 요청에 대한 응답의 보고 거동(the reporting behavior)을 명시하는 집계 메타데이터(aggregating metadata)(423)를 포함할 수 있다.
[0085] 라우터 컴포넌트(120)는 조치를 위해 다수의 애플리케이션 인스턴스들로 전송되는 요청의 요청 인스턴스들을 조정하기 위한 요청 완료 조정 컴포넌트(130)를 포함할 수 있다.
[0086] 요청 완료 조정 컴포넌트(130)는 애플리케이션 인스턴스들로의 라우팅에 대한 요청을 수신하기 위한 요청 수신 컴포넌트(431) 및 요청에 대해 등록된 인터페이스 사양(121)에서 메타데이터를 검사하기 위한 사양 검사 컴포넌트(432)를 포함할 수 있다. 메타데이터 액세스 컴포넌트(433)는 요청에 대한 라우팅 메타데이터(421), 응답 메타데이터(422) 및 집계 메타데이터(423)를 포함하는 등록된 메타데이터를 액세스할 수 있다.
[0087] 요청 완료 조정 컴포넌트(130)는 라우팅 메타데이터(421)에 따라 요청의 인스턴스들을 다수의 애플리케이션 인스턴스들로 라우팅하기 위한 요청 인스턴스 라우팅 컴포넌트(434)를 포함할 수 있고, 요청 인스턴스들이 라우팅되는 애플리케이션 인스턴스들로부터 필요한 수의 응답 인스턴스들의 완료를 조정하기 위한 명령들을 포함하도록 응답 메타데이터(422)에 따라 각각의 요청 인스턴스를 증강하기 위한(for augmenting) 요청 인스턴스 증강 컴포넌트(435)를 포함할 수 있다.
[0088] 요청 완료 조정 컴포넌트(130)는 필요한 수의 완료된 응답이 수신될 때 요청의 미해결 인스턴스들을 종료하기 위해 애플리케이션 인스턴스들에 걸쳐 요청의 상태를 조정하기 위한 요청 인스턴스 조정 컴포넌트(440)를 포함할 수 있다. 요청 인스턴스 조정 컴포넌트(440)는 완료에 관한 업데이트를 전송하기 위해 완료된 요청 인스턴스에 대한 엔드포인트 체크와 다른 요청 인스턴스들이 완료되었는지 체크하기 위해 요청 인스턴스들에 대한 엔드포인트 체크를 제공할 수 있다. 요청 인스턴스 조정 컴포넌트(440)는 콜백 메커니즘 컴포넌트(441) 또는 이벤트 등록 컴포넌트(442)를 포함할 수 있다.
[0089] 요청 완료 조정 컴포넌트(130)는 요청에 대한 등록된 집계 메타데이터(423)에 기초하여 집계 응답을 형성하기 위해 애플리케이션 인스턴스들로부터의 다수의 응답들 인스턴스들을 결합하기 위한 집계 컴포넌트(436)를 포함할 수 있다. 상기 집계된 응답은 완료된 응답들과 종료된 응답들을 포함할 수 있다.
[0090] 도 5는, 본 발명의 실시예에 따라, 클라우드 플랫폼(110)의 라우터 컴포넌트(120)의 도 1에 도시된 시스템에 사용되는 컴퓨팅 시스템의 컴포넌트들의 블록도를 도시한다. 도 5는 하나의 구현의 예시만을 제공하고 다양한 실시예들이 구현될 수 있는 환경들에 관한 어떠한 제한들도 의미하지 않음을 이해해야 한다. 도시된 환경에 대한 많은 수정들이 이루어질 수 있다.
[0091] 상기 컴퓨팅 시스템은 적어도 하나의 프로세서 회로(502), 적어도 하나의 컴퓨터-판독가능 RAM들(computer-readable RAMs)(504), 적어도 하나의 컴퓨터-판독가능 ROM(506), 적어도 하나의 컴퓨터-판독가능 스토리지 매체(508), 디바이스 드라이버(512), 읽기/쓰기 드라이브 또는 인터페이스(514), 및 네트워크 어댑터 또는 인터페이스(516)를 포함하며, 모두 통신 패브릭(518)을 통해 상호 연결될 수 있다. 통신 패브릭(518)은-프로세서들(마이크로프로세서들, 통신들 및 네트워크 프로세서들, 등과 같이), 시스템 메모리, 주변 디바이스들, 및 시스템 내의 모든 다른 하드웨어 컴포넌트들 사이에서-데이터 및/또는 컨트롤 정보를 전달하도록 디자인된 모든 아키텍처로 구현될 수 있다.
[0092] 적어도 하나의 운영 체제(510)와, 템플레이트 제공 시스템(150)과 같은, 애플리케이션 프로그램들(511)은 적어도 하나의 프로세서 회로(502)에 의해서 적어도 하나의 각각의 RAM들(504)(전형적으로 캐시 메모리를 포함한다)을 통해 실행되도록 적어도 하나의 컴퓨터-판독가능 스토리지 매체(508) 상에서 저장된다. 예시된 상기 실시 예에서, 컴퓨터-판독가능 스토리지 매체(508) 각각은 본 발명의 실시 예들에 따라, 컴퓨터 프로그램 및 디지털 정보를 저장할 수 있는, 내부 하드 드라이브의 자기 디스크 스토리지 디바이스, CD-ROM, DVD, 메모리 스틱, 자기 테이프, 자기 디스크, 광 디스크, RAM, ROM, EPROM, 플래시 메모리와 같은 반도체 저장 디바이스, 또는 모든 기타 컴퓨터-판독가능 스토리지 매체 일 수 있다.
[0093] 컴퓨팅 시스템은 또한 적어도 하나의 휴대용의 컴퓨터-판독가능 스토리지 매체(526)에서 읽고 쓸 수 있는 R/W 드라이브 또는 인터페이스(514)를 포함할 수 있다. 컴퓨팅 시스템 상의 애플리케이션 프로그램들(511)은 휴대용의 컴퓨터-판독가능 스토리지 매체(526) 중 적어도 하나에 저장될 수 있으며, 각각의 R/W 드라이브 또는 인터페이스(514)를 통해 읽히고 각각의 컴퓨터-판독가능 스토리지 매체(508)로 로드 될 수 있다.
[0094] 컴퓨팅 시스템은 또한 TCP/IP 어댑터 카드 또는 무선 통신 어댑터와 같은, 네트워크 어댑터 또는 인터페이스(516)를 포함할 수 있다. 컴퓨팅 시스템 상의 애플리케이션 프로그램들(511)은 네트워크(예를 들어, 인터넷, 근거리 네트워크 또는 기타 광역 네트워크들 또는 무선 네트워크들)와 네트워크 어댑터 또는 인터페이스(516)를 통해 외부 컴퓨터 또는 외부 저장 디바이스에서 컴퓨팅 디바이스로 다운로드 될 수 있다. 네트워크 어댑터 또는 인터페이스(516)로부터, 프로그램들은 컴퓨터-판독가능 스토리지 매체(508)로 로드 될 수 있다. 네트워크는 구리선들, 광섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및 엣지(edge) 서버들로 구성될 수 있다.
[0095] 컴퓨팅 시스템은 또한 디스플레이 스크린(520), 키보드 또는 키패드(522), 및 컴퓨터 마우스 또는 터치패드(524)를 포함할 수 있다. 디바이스 드라이버들(512)은 이미징을 위한 디스플레이 스크린(520), 키보드 또는 키패드(522), 컴퓨터 마우스 또는 터치패드(524), 및/또는 영숫자 문자 입력(alphanumeric character entry)과 사용자 선택들의 압력 감지를 위한 디스플레이 스크린(520)에서 인터페이스 한다. 디바이스 드라이버들(512), R/W 드라이브 또는 인터페이스(514), 및 네트워크 어댑터 또는 인터페이스(516)는 컴퓨터-판독가능 스토리지 매체(508) 및/또는 ROM(506)에서 저장된 하드웨어 및 소프트웨어를 포함할 수 있다.
[0096] 본 발명의 실시 예들은 통합의 모든 가능한 기술적 세부 수준에서 시스템, 방법, 및/또는 컴퓨터 프로그램 제품이 될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 스토리지 매체(또는 매체)를 포함할 수 있으며, 이 매체 상에 프로세서가 본 발명의 실시 예들을 수행하도록 하는 컴퓨터 판독 가능 프로그램 명령들을 갖는다.
[0097] 본 발명은 클라우드 컴퓨팅에 관해서 상세한 설명들을 포함하지만, 여기서 설명된 그러한 기술적 사상들의 구현은 클라우드 컴퓨팅 환경에만 한정되는 것은 아님을 이해하여야 한다. 오히려, 본 발명의 실시 예들은 지금 알려져 있거나 또는 나중에 개발될 모든 다른 유형의 컴퓨팅 환경과 함께 구현될 수 있다.
[0098] 클라우드 컴퓨팅은, 최소한의 관리 노력 또는 서비스 제공자와의 상호작용으로 빠르게 제공되고 해제될 수 있는, 구성 가능한(configurable) 컴퓨팅 자원들(예를 들어, 네트워크들, 네트워크 대역폭, 서버들, 처리, 메모리, 스토리지, 애플리케이션들, 가상 머신들, 및 서비스들)의 공유 풀에 대한 편리한 주문형(on-demand) 네트워크 액세스를 가능하게 하는 서비스 전달 모델이다. 이 클라우드 모델은 적어도 5가지의 특성(characteristics), 적어도 3가지 서비스 모델(service models), 및 적어도 4가지 배치 모델(deployment models)을 포함할 수 있다.
[0099] 클라우드 컴퓨팅 특성들은 다음과 같다:
주문형 셀프-서비스(On-demand self-service): 클라우드 소비자는, 서비스 제공자와의 인적 상호작용을 필요로 하지 않고 필요한 만큼 자동적으로, 서버 시간(server time) 및 네트워크 스토리지 같은 컴퓨팅 용량들을 일방적으로 제공(provision)할 수 있다.
광역 네트워크 액세스(Broad network access): 혼성의 씬 또는 씩 클라이언트 플랫폼들(heterogeneous thin or thick client platforms)(예를 들어, 모바일폰들, 랩탑들, 및 PDA들)에 의한 사용을 장려하는 표준 메커니즘들을 통해 액세스되는 기능들을 네트워크를 통해서 이용할 수 있다.
자원 풀링(Resource pooling): 제공자의 컴퓨팅 자원들은, 각기 다른 물리적 및 가상 자원들을 요구(demand)에 따라 동적으로 할당 및 재할당하는, 멀티-테넌트 모델(a multi-tenant model)을 사용하는 다수의 소비자들에게 서비스할 수 있도록 풀에 넣어둔다(pooled). 소비자는 일반적으로 제공된 자원들의 정확한 위치를 제어할 수 없거나 그에 대한 지식이 없지만 더 높은 추상 수준에서(예를 들어, 국가, 주, 또는 데이터센터) 위치를 명시할 수 있다는 점에서 위치 독립성이 있다.
기민한 탄력성(Rapid elasticity): 용량들(capabilities)이 기민하게 탄력적으로 제공되어 (어떤 경우엔 자동으로) 신속히 규모를 확장할 수도 있고(scale out) 그리고 탄력적으로 해제되어 신속히 규모를 축소할 수도 있다(scale in). 소비자에게 제공할 수 있는 가능성이 종종 무제한이고 언제든지 원하는 수량으로 구매할 수 있는 것처럼 보인다.
측정 가능한 서비스(Measured service): 클라우드 시스템들은 자원 사용을 자동으로 제어하고 최적화하는데, 서비스의 유형(예를 들어, 스토리지, 처리, 대역폭, 및 활성 사용자 계정)에 적절한 추상화 수준에서(at some level of abstraction) 계측 기능을 이용하여서 그렇게 한다. 자원 사용량은 모니터 되고, 제어되고, 그리고 보고될 수 있으며 이로써 이용하는 서비스의 제공자와 사용자 모두에게 투명성을 제공한다.
[0100] 서비스 모델들(Service Models)은 다음과 같다:
소프트웨어 서비스(Software as a Service)(SaaS): 소비자에게 제공되는 서비스는 클라우드 하부구조 상에서 실행되는 제공자의 애플리케이션들을 사용하게 해주는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹기반 이메일) 같은 씬(thin) 클라이언트 인터페이스를 통해 여러 클라이언트 장치들에서 액세스 가능하다. 소비자는 네트워크, 서버들, 운영 체제들, 스토리지, 또는 개별 애플리케이션 능력들을 포함하는 하부 클라우드 하부구조를 관리하거나 제어하지 않는다. 단, 제한된 사용자-특정 애플리케이션 구성 세팅들은 예외로서 가능하다.
플랫폼 서비스(Platform as a Service)(PaaS): 소비자에게 제공되는 서비스는 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 이용하여 생성된 소비자-생성 또는 획득 애플리케이션들을 클라우드 하부구조에 배치하게 해주는 것이다. 소비자는 네트워크, 서버들, 운영 체제들, 또는 스토리지를 포함하는 하부 클라우드 하부구조를 관리하거나 제어하지 않는다. 그러나 배치된 애플리케이션들에 대해서 그리고 가능한 경우 애플리케이션 호스팅 환경 구성들에 대해서 제어할 수 있다.
하부구조 서비스(Infrastructure as a Service)(IaaS): 소비자에게 제공되는 서비스는 처리, 스토리지, 네트워크, 및 기타 기본 컴퓨팅 자원들을 제공하여 주는 것이며, 여기서 소비자는 임의의 소프트웨어를 배치 및 실행할 수 있고, 이 소프트웨어에는 운영 체제들과 애플리케이션들이 포함될 수 있다. 소비자는 하부 클라우드 하부구조를 관리하거나 제어하지 않지만, 운영 체제들, 스토리지, 배치된 애플리케이션들, 및 가능한 경우 선택된 네트워킹 컴포넌트들의 제한적인 제어(예를 들어, 호스트 방화벽들)에 대하여 제어할 수 있다.
[0101] 배치 모델들(Deployment Models)은 다음과 같다:
사설 클라우드(Private cloud): 클라우드 하부구조는 오직 한 조직(an organization)을 위해서 운영되고, 그 조직 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(off-premises)에 위치할 수 있다.
커뮤니티 클라우드(Community cloud): 클라우드 하부구조는 여러 조직들에 의해 공유되고 관심사(예를 들어, 선교, 보안 요건, 정책, 및 규정 준수 심사)를 공유하는 특정 커뮤니티를 지원하며, 여러 조직들 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(off-premises)에 위치할 수 있다.
공공 클라우드(Public cloud): 클라우드 하부구조는 일반 대중 또는 대규모 산업 집단에서 이용할 수 있으며 클라우드 서비스를 판매하는 조직이 소유한다.
하이브리드 클라우드(Hybrid cloud): 클라우드 하부구조는 둘 또는 그 이상의 클라우드들(사설, 커뮤니티, 또는 공공)이 혼합된 구성이며, 이들은 고유한 주체들로 있지만 데이터 및 애플리케이션 이식가능성(portability)을 가능하게 해주는 표준화된 또는 소유권 있는 기술(예를 들어, 클라우드들 사이의 부하 균형을 위한 클라우드 버스팅(cloud bursting))에 의해 서로 결합되어 있다.
[0102] 클라우드 컴퓨팅 환경은 무국적(statelessness), 낮은 결합(low coupling), 모듈 방식(modularity), 및 의미적 상호운용성(semantic interoperability)에 집중하는 서비스를 지향한다. 클라우드 컴퓨팅의 중심에는 상호 연결된 노드들의 네트워크를 포함하는 하부구조가 있다.
[0103] 이제 도 6을 참조하면, 예시적인 클라우드 컴퓨팅 환경(50)이 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(50)은 예를 들어 개인 휴대 정보 단말기(PDA) 또는 휴대폰(54A), 데스크탑 컴퓨터(54B), 랩탑 컴퓨터(54C), 및/또는 자동차용 컴퓨터 시스템(54N)과 통신할 수 있는 것과 같이, 클라우드 소비자가 사용하는 로컬 컴퓨팅 디바이스가 하나 또는 그 이상의 클라우드 컴퓨팅 노드들(10)을 포함한다. 노드들(10)은 서로 통신할 수 있다. 이들은 여기에 기술된 바와 같은 사설, 커뮤니티, 공공, 또는 하이브리드 클라우드들 또는 이들의 조합 등의 하나 또는 그 이상의 네트워크들에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이것은 클라우드 소비자가 로컬 컴퓨팅 장치 상에 자원들을 유지할 필요가 없게 클라우드 컴퓨팅 환경(50)이 하부구조, 플랫폼들 및/또는 소프트웨어를 서비스로서 제공할 수 있게 해준다. 도 6에 도시된 컴퓨팅 장치들(54A-N)의 유형들은 단지 예시의 목적으로 기술한 것이며 컴퓨팅 노드들(10)과 클라우드 컴퓨팅 환경(50)은 모든 유형의 네트워크 및/또는 네트워크 주소지정가능 연결을 통해서 (예를 들어, 웹 브라우저를 사용하여) 모든 유형의 컴퓨터화된 디바이스와 통신할 수 있다는 것을 이해해야 한다.
[0104] 이제 도 7을 참조하면, 클라우드 컴퓨팅 환경(50) (도 6)에 의해 제공되는 일 세트의 기능별 추상화 층들이 도시된다. 도 7에 도시된 컴포넌트들, 층들, 및 기능들은 단지 예시의 목적이며 본 발명의 바람직한 실시 예들은 이것에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 층들과 그에 대응하는 기능들이 제공된다:
[0105] 하드웨어 및 소프트웨어 층(60)은 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들의 예들에는: 메인프레임들(61); RISC(Reduced Instruction Set Computer) 아키텍처 기반 서버들(62); 서버들(63); 블레이드 서버들(64); 스토리지 디바이스들(65); 그리고 네트워크 및 네트워킹 컴포넌트들(66)이 포함된다. 일부 실시 예들에서, 소프트웨어 컴포넌트들은 네트워크 애플리케이션 서버 소프트웨어(67) 및 데이터베이스 소프트웨어(68)를 포함한다.
[0106] 가상화 층(70)은 추상화 층을 제공하며 이로부터 다음의 가상 주체들의 예들이 제공될 수 있다: 가상 서버들(71); 가상 스토리지(72); 가상 사설 네트워크를 포함하는, 가상 네트워크들(73); 가상 애플리케이션들 및 운영 체제들(74); 및 가상 클라이언트들(75).
[0107] 한 예에서, 관리 층(80)은 아래에 기술하는 기능들을 제공한다. 자원 제공(Resource provisioning)(81)은 클라우드 컴퓨팅 환경 내에서 작업들을 수행하는 데 이용되는 컴퓨팅 자원들 및 기타 자원들의 동적 조달을 제공한다. 계측 및 가격 책정(Metering and Pricing)(82)은 자원들이 클라우드 컴퓨팅 환경 내에서 이용될 때 비용 추적, 및 이 자원들의 소비에 대한 요금 청구 또는 송장을 제공한다. 한 예에서, 이 자원들은 애플리케이션 소프트웨어 라이센스를 포함할 수 있다. 보안(Security)은 데이터 및 기타 자원들에 대한 보호뿐 아니라 클라우드 소비자들과 작업들에 대한 신원 확인을 제공한다. 사용자 포털(User portal)(83)은 소비자들 및 시스템 관리자들에게 클라우드 컴퓨팅 환경에 대한 액세스를 제공한다. 서비스 수준 관리(Service level management)(84)는 요구되는 서비스 수준이 충족되도록 클라우드 컴퓨팅 자원 할당 및 관리를 제공한다. 서비스 수준 협약서(SLA) 기획 및 충족(planning and fulfillment)(85)은 SLA에 부합하는 예상되는 미래 요건에 맞는 클라우드 컴퓨팅 자원들의 사전-배치(pre-arrangement) 및 조달(procurement)을 제공한다.
[0108] 워크로드 층(90)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능들의 예들을 제공한다. 이 층에서 제공될 수 있는 워크로드들과 기능들의 예들은 다음을 포함한다: 맵핑 및 네비게이션(91); 소프트웨어 개발 및 라이프사이클 관리(92); 가상 교실 교육 전달(93); 데이터 분석 처리(94); 트랜잭션 처리(95); 및 요청 라우팅 처리(request routing processing)(96).
[0109] 본 발명의 컴퓨터 프로그램 제품은 본 발명의 방법들을 구현하기 위해 하나 또는 그 이상의 프로세서 회로에 의해 실행 가능한 컴퓨터 판독 가능한 프로그램 코드를 내부에 저장하는 하나 또는 그 이상의 컴퓨터 판독 가능한 하드웨어 스토리지 디바이스를 포함한다.
[0110] 본 발명의 컴퓨터 시스템은 하나 또는 그 이상의 프로세서 회로들, 하나 또는 그 이상의 메모리들 및 하나 또는 그 이상의 컴퓨터가 읽을 수 있는 하드웨어 스토리지 디바이스를 포함하고, 상기 하나 또는 그 이상의 컴퓨터가 읽을 수 있는 하드웨어 스토리지 디바이스는 본 발명 방법들을 구현하기 위해 상기 하나 또는 그 이상의 메모리들을 통해 상기 하나 또는 그 이상의 프로세서 회로들에 의해 실행 가능한 프로그램 코드를 포함한다.
[0111] 본 발명의 다양한 실시 예들의 설명들은 예시의 목적으로 제공되는 것이며, 개시된 실시 예들이 전부라거나 이들에 한정하려는 의도가 있는 것은 아니다. 많은 수정들 및 변형들이 설명된 실시 예들의 범위와 정신을 벗어남이 없이 이 기술 분야에서 통상의 지식을 가진 자에게는 명백할 것이다. 여기서 사용된 용어들은 실시 예들의 원리들, 실제 애플리케이션 또는 시장에서 발견된 기술들에 대한 기술적 개선을 가장 잘 설명하기 위해 또는 이 기술 분야에서 통상의 지식을 가진 자들이 여기서 개시된 실시 예들을 이해할 수 있도록 하기 위해 선택되었다.
[0112] 본 발명의 범위를 벗어나지 않고 전술한 내용을 개선들 및 수정들이 만들어질 수 있다.

Claims (20)

  1. 확장 가능한 애플리케이션에서 실행되는(actioned) 요청들을 조정하기 위한 방법에 있어서, 상기 방법은:
    하나 혹은 그 이상의 애플리케이션 인스턴스들(application instances)에 대해 클라이언트 요청을 실행할 때 적용될 응답 거동(response behavior)에 관한 메타데이터를 등록하는 단계;
    상기 하나 혹은 그 이상의 애플리케이션 인스턴스들로부터 필요한 수의 응답 인스턴스들(a required number of response instances)의 완료를 조정하기 위해 증강된 요청 인스턴스들을 제공하도록 상기 메타데이터에 따라 상기 클라이언트 요청을 증강하는 단계(augmenting); 및
    필요한 수의 완료된 응답 인스턴스들이 수신될 때 미해결 증강 요청 인스턴스들을 종료하기 위해 상기 애플리케이션 인스턴스들에 걸쳐 상기 클라이언트 요청의 상태를 조정하는 단계(coordinating)를 포함하는
    방법.
  2. 제1항에 있어서, 상기 메타데이터에 따라 상기 클라이언트 요청을 증강하는 단계는 증강된 요청 인스턴스의 헤더에 응답 조정 명령들을 추가하는 단계(adding response coordination instructions)를 포함하는
    방법.
  3. 제1항에 있어서, 상기 하나 혹은 그 이상의 애플리케이션 인스턴스들에 걸쳐 상기 클라이언트 요청의 상태를 조정하는 단계는 완료된 요청 인스턴스에 관한 업데이트를 수신하고 요청 인스턴스들이 다른 요청 인스턴스들이 완료되었는지를 체크하기 위해 엔드포인트 체크(an endpoint check)를 제공하는
    방법.
  4. 제3항에 있어서, 상기 엔드포인트 체크는, 상기 응답 인스턴스가 완료될 때 상기 하나 혹은 그 이상의 애플리케이션 인스턴스들이 상기 엔드포인트 체크에 업데이트를 제공하는, 콜백 메커니즘(a callback mechanism)에 의해 제공되는
    방법.
  5. 제3항에 있어서, 상기 엔드포인트 체크는, 상기 하나 혹은 그 이상의 애플리케이션 인스턴스들이 완료된 요청 인스턴스의 이벤트에 대해 등록하는 이벤트 등록 메커니즘(an event registration mechanism)에 의해 제공되는
    방법.
  6. 제1항에 있어서, 상기 방법은:
    상기 등록된 메타데이터에 기초한 집계 응답(an aggregate response)을 형성하기 위해, 하나 혹은 그 이상의 완료된 응답 인스턴스들과 종료된 응답 인스턴스를 포함하는, 상기 애플리케이션 인스턴스들로부터 다수의 응답 인스턴스들(multiple response instances)을 결합하는 단계(combining)를 더 포함하는
    방법.
  7. 제6항에 있어서, 상기 방법은:
    상기 요청 인스턴스들로부터 상기 응답 인스턴스들을 대기하는 단계(waiting); 및
    상기 집계 응답을 형성하기 위해 상기 하나 혹은 그 이상의 응답 인스턴스들을 결합하는 단계를 더 포함하는
    방법.
  8. 확장 가능한 애플리케이션에서 요청들을 조정하기 위한 컴퓨터 시스템에 있어서, 상기 시스템은:
    하나 혹은 그 이상의 프로세서들, 하나 혹은 그 이상의 컴퓨터 판독가능 메모리들, 하나 혹은 그 이상의 컴퓨터 판독가능 유형의 스토리지 매체, 및 상기 하나 혹은 그 이상의 유형 스토리지 매체 중 적어도 하나에 의한 실행을 위해 하나 혹은 그 이상의 유형 스토리지 매체 중 적어도 하나에 저장된 프로그램 명령들을 포함하고, 상기 프로그램 명령들은 상기 하나 혹은 그 이상의 메모리들 중 적어도 하나를 통해 상기 하나 혹은 그 이상의 프로세서들에 의해 실행 가능하며, 상기 컴퓨터 시스템은 방법을 수행할 수 있고, 상기 방법은:
    하나 혹은 그 이상의 애플리케이션 인스턴스들(application instances)에 대해 클라이언트 요청을 실행할 때 적용될 응답 거동(response behavior)에 관한 메타데이터를 등록하는 단계;
    상기 하나 혹은 그 이상의 애플리케이션 인스턴스들로부터 필요한 수의 응답 인스턴스들(a required number of response instances)의 완료를 조정하기 위해 증강된 요청 인스턴스들을 제공하도록 상기 메타데이터에 따라 상기 클라이언트 요청을 증강하는 단계(augmenting); 및
    필요한 수의 완료된 응답 인스턴스들이 수신될 때 미해결 증강 요청 인스턴스들을 종료하기 위해 상기 애플리케이션 인스턴스들에 걸쳐 상기 클라이언트 요청의 상태를 조정하는 단계(coordinating)를 포함하는
    컴퓨터 시스템.
  9. 제8항에 있어서, 상기 메타데이터에 따라 상기 클라이언트 요청을 증강하는 단계는 증강된 요청 인스턴스의 헤더에 응답 조정 명령들을 추가하는 단계(adding response coordination instructions)를 포함하는
    컴퓨터 시스템.
  10. 제8항에 있어서, 상기 하나 혹은 그 이상의 애플리케이션 인스턴스들에 걸쳐 상기 클라이언트 요청의 상태를 조정하는 단계는 완료된 요청 인스턴스에 관한 업데이트를 수신하고 요청 인스턴스들이 다른 요청 인스턴스들이 완료되었는지를 체크하기 위해 엔드포인트 체크(an endpoint check)를 제공하는
    컴퓨터 시스템.
  11. 제10항에 있어서, 상기 엔드포인트 체크는, 상기 응답 인스턴스가 완료될 때 상기 하나 혹은 그 이상의 애플리케이션 인스턴스들이 상기 엔드포인트 체크에 업데이트를 제공하는, 콜백 메커니즘(a callback mechanism)에 의해 제공되는
    컴퓨터 시스템.
  12. 제10항에 있어서, 상기 엔드포인트 체크는, 상기 하나 혹은 그 이상의 애플리케이션 인스턴스들이 완료된 요청 인스턴스의 이벤트에 대해 등록하는 이벤트 등록 메커니즘(an event registration mechanism)에 의해 제공되는
    컴퓨터 시스템.
  13. 제8항에 있어서, 상기 시스템은:
    상기 등록된 메타데이터에 기초한 집계 응답(an aggregate response)을 형성하기 위해, 하나 혹은 그 이상의 완료된 응답 인스턴스들과 종료된 응답 인스턴스를 포함하는, 상기 애플리케이션 인스턴스들로부터 다수의 응답 인스턴스들(multiple response instances)을 결합하는 단계(combining)를 더 포함하는
    컴퓨터 시스템.
  14. 제13항에 있어서, 상기 시스템은:
    상기 요청 인스턴스들로부터 상기 응답 인스턴스들을 대기하는 단계(waiting); 및
    상기 집계 응답을 형성하기 위해 상기 하나 혹은 그 이상의 응답 인스턴스들을 결합하는 단계를 더 포함하는
    컴퓨터 시스템.
  15. 확장 가능한 애플리케이션에서 실행되는 요청을 조정하기 위한 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램 제품은:
    하나 혹은 그 이상의 비-일시적 컴퓨터-판독가능 스토리지 매체 및 상기 하나 혹은 그 이상의 유형 스토리지 매체 중 적어도 하나에 저장된 프로그램 명령들을 포함하고, 상기 프로그램 명령들은 프로세서에 의해 실행 가능하며, 상기 프로세서가 방법을 수행하게 하고, 상기 방법은:
    하나 혹은 그 이상의 애플리케이션 인스턴스들(application instances)에 대해 클라이언트 요청을 실행할 때 적용될 응답 거동(response behavior)에 관한 메타데이터를 등록하는 단계;
    상기 하나 혹은 그 이상의 애플리케이션 인스턴스들로부터 필요한 수의 응답 인스턴스들(a required number of response instances)의 완료를 조정하기 위해 증강된 요청 인스턴스들을 제공하도록 상기 메타데이터에 따라 상기 클라이언트 요청을 증강하는 단계(augmenting); 및
    필요한 수의 완료된 응답 인스턴스들이 수신될 때 미해결 증강 요청 인스턴스들을 종료하기 위해 상기 애플리케이션 인스턴스들에 걸쳐 상기 클라이언트 요청의 상태를 조정하는 단계(coordinating)를 포함하는
    컴퓨터 프로그램 제품.
  16. 제15항에 있어서, 상기 메타데이터에 따라 상기 클라이언트 요청을 증강하는 단계는 증강된 요청 인스턴스의 헤더에 응답 조정 명령들을 추가하는 단계(adding response coordination instructions)를 포함하는
    컴퓨터 프로그램 제품.
  17. 제15항에 있어서, 상기 하나 혹은 그 이상의 애플리케이션 인스턴스들에 걸쳐 상기 클라이언트 요청의 상태를 조정하는 단계는 완료된 요청 인스턴스에 관한 업데이트를 수신하고 요청 인스턴스들이 다른 요청 인스턴스들이 완료되었는지를 체크하기 위해 엔드포인트 체크(an endpoint check)를 제공하는
    컴퓨터 프로그램 제품.
  18. 제17항에 있어서, 상기 엔드포인트 체크는, 상기 응답 인스턴스가 완료될 때 상기 하나 혹은 그 이상의 애플리케이션 인스턴스들이 상기 엔드포인트 체크에 업데이트를 제공하는, 콜백 메커니즘(a callback mechanism)에 의해 제공되는
    컴퓨터 프로그램 제품.
  19. 제17항에 있어서, 상기 엔드포인트 체크는, 상기 하나 혹은 그 이상의 애플리케이션 인스턴스들이 완료된 요청 인스턴스의 이벤트에 대해 등록하는 이벤트 등록 메커니즘(an event registration mechanism)에 의해 제공되는
    컴퓨터 프로그램 제품.
  20. 제15항에 있어서, 상기 컴퓨터 프로그램 제품은:
    상기 등록된 메타데이터에 기초한 집계 응답(an aggregate response)을 형성하기 위해, 하나 혹은 그 이상의 완료된 응답 인스턴스들과 종료된 응답 인스턴스를 포함하는, 상기 애플리케이션 인스턴스들로부터 다수의 응답 인스턴스들(multiple response instances)을 결합하는 단계(combining);
    상기 요청 인스턴스들로부터 상기 응답 인스턴스들을 대기하는 단계(waiting); 및
    상기 집계 응답을 형성하기 위해 상기 하나 혹은 그 이상의 응답 인스턴스들을 결합하는 단계를 더 포함하는
    컴퓨터 프로그램 제품.
KR1020237020311A 2020-12-18 2021-11-25 확장 가능한 애플리케이션에서 실행되는 요청들의 조정 KR20230109694A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/247,615 US11356524B1 (en) 2020-12-18 2020-12-18 Coordinating requests actioned at a scalable application
US17/247,615 2020-12-18
PCT/EP2021/083051 WO2022128394A1 (en) 2020-12-18 2021-11-25 Coordinating requests actioned at a scalable application

Publications (1)

Publication Number Publication Date
KR20230109694A true KR20230109694A (ko) 2023-07-20

Family

ID=78822269

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237020311A KR20230109694A (ko) 2020-12-18 2021-11-25 확장 가능한 애플리케이션에서 실행되는 요청들의 조정

Country Status (8)

Country Link
US (1) US11356524B1 (ko)
JP (1) JP2024500420A (ko)
KR (1) KR20230109694A (ko)
CN (1) CN116635834A (ko)
AU (1) AU2021398915A1 (ko)
DE (1) DE112021005848T5 (ko)
GB (1) GB2617499A (ko)
WO (1) WO2022128394A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11875196B1 (en) * 2023-03-07 2024-01-16 Appian Corporation Systems and methods for execution in dynamic application runtime environments

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6889254B1 (en) 1999-03-30 2005-05-03 International Business Machines Corporation Scalable merge technique for information retrieval across a distributed network
US7480705B2 (en) 2001-07-24 2009-01-20 International Business Machines Corporation Dynamic HTTP load balancing method and apparatus
US7496916B2 (en) 2003-09-18 2009-02-24 International Business Machines Corporation Service and recovery using multi-flow redundant request processing
US7493380B2 (en) 2003-12-02 2009-02-17 International Business Machines Corporation Method for determining load balancing weights using application instance topology information
US20060193263A1 (en) * 2005-02-25 2006-08-31 Microsoft Corporation Method and system to simulate delays in geographically distributed computing environments
US7778972B1 (en) * 2005-12-29 2010-08-17 Amazon Technologies, Inc. Dynamic object replication within a distributed storage system
DE602006004856D1 (de) 2006-06-02 2009-03-05 Software Ag System und Verfahren zur Verwaltung von Webdiensten
US20080028086A1 (en) 2006-07-27 2008-01-31 Chetuparambil Madhu K Method and Apparatus for Preserving Isolation of Web Applications when Executing Fragmented Requests
JP4901357B2 (ja) 2006-07-31 2012-03-21 花王株式会社 離型剤分散液
US20080046890A1 (en) * 2006-08-17 2008-02-21 Stanley Steven Dunlap Method and apparatus for balancing workloads in a cluster
US8229945B2 (en) 2008-03-20 2012-07-24 Schooner Information Technology, Inc. Scalable database management software on a cluster of nodes using a shared-distributed flash memory
US7962597B2 (en) 2008-03-31 2011-06-14 Amazon Technologies, Inc. Request routing based on class
US20090259736A1 (en) 2008-04-15 2009-10-15 Juniper Networks, Inc. Label-based target host configuration for a server load balancer
DE102008040416A1 (de) 2008-07-15 2010-01-21 Bundesdruckerei Gmbh Verfahren zum Lesen von Attributen aus einem ID-Token
US7966383B2 (en) 2009-03-27 2011-06-21 Business Objects Software Ltd. Client-server systems and methods for accessing metadata information across a network using proxies
US8266290B2 (en) * 2009-10-26 2012-09-11 Microsoft Corporation Scalable queues on a scalable structured storage system
US9047136B2 (en) * 2010-06-11 2015-06-02 Oracle International Corporation Method and system for migrating the state of a virtual cluster
US8812627B2 (en) * 2010-08-20 2014-08-19 Adobe Systems Incorporated System and method for installation and management of cloud-independent multi-tenant applications
US8595267B2 (en) * 2011-06-27 2013-11-26 Amazon Technologies, Inc. System and method for implementing a scalable data storage service
US20130007376A1 (en) * 2011-07-01 2013-01-03 Sailesh Kottapalli Opportunistic snoop broadcast (osb) in directory enabled home snoopy systems
KR101821603B1 (ko) * 2011-11-28 2018-03-09 전자부품연구원 스케일러블 어플리케이션 서비스 시스템에서의 사용자 맞춤형 광고/뉴스의 제공 방법
US9239851B1 (en) 2012-07-12 2016-01-19 Cross Commerce Media, Inc. Advanced database systems and methods
US20130198154A1 (en) * 2012-01-26 2013-08-01 Microsoft Corporation Method and system for managing database applications
US10063443B2 (en) 2012-05-29 2018-08-28 Openet Telecom Ltd. System and method for managing VoLTE session continuity information using logical scalable units
US9170330B2 (en) 2012-09-13 2015-10-27 Analogic Corporation Velocity estimation for vector flow imaging (VFI) in ultrasound
US9207969B2 (en) 2013-01-25 2015-12-08 Microsoft Technology Licensing, Llc Parallel tracing for performance and detail
US8954546B2 (en) 2013-01-25 2015-02-10 Concurix Corporation Tracing with a workload distributor
US8997063B2 (en) 2013-02-12 2015-03-31 Concurix Corporation Periodicity optimization in an automated tracing system
US10091282B2 (en) 2013-06-12 2018-10-02 Sap Se Metadata-driven dynamic load balancing in multi-tenant systems
US9225621B2 (en) 2013-06-25 2015-12-29 Netflix, Inc. Progressive deployment and termination of canary instances for software analysis
US9633051B1 (en) * 2013-09-20 2017-04-25 Amazon Technologies, Inc. Backup of partitioned database tables
US9495478B2 (en) * 2014-03-31 2016-11-15 Amazon Technologies, Inc. Namespace management in distributed storage systems
US9779015B1 (en) * 2014-03-31 2017-10-03 Amazon Technologies, Inc. Oversubscribed storage extents with on-demand page allocation
US10264071B2 (en) * 2014-03-31 2019-04-16 Amazon Technologies, Inc. Session management in distributed storage systems
US10372685B2 (en) * 2014-03-31 2019-08-06 Amazon Technologies, Inc. Scalable file storage service
US9323569B2 (en) * 2014-09-10 2016-04-26 Amazon Technologies, Inc. Scalable log-based transaction management
US10642663B2 (en) 2014-09-10 2020-05-05 Oracle International Corporation Coordinated garbage collection in distributed systems
CN111913875B (zh) 2014-10-24 2024-04-26 谷歌有限责任公司 用于基于软件执行跟踪自动加标签的方法和系统
CN106156168B (zh) 2015-04-16 2019-10-22 华为技术有限公司 在跨分区数据库中查询数据的方法及跨分区查询装置
US9971675B2 (en) 2016-04-04 2018-05-15 International Business Machines Corporation Triggering debug processing within a scalable cloud environment
US10516672B2 (en) 2016-08-05 2019-12-24 Oracle International Corporation Service discovery for a multi-tenant identity and data security management cloud service
US10540210B2 (en) 2016-12-13 2020-01-21 International Business Machines Corporation Detecting application instances that are operating improperly
US10467241B2 (en) 2017-03-24 2019-11-05 Ca, Inc. Dynamically provisioning instances of a single-tenant application for multi-tenant use
US10671621B2 (en) 2017-12-08 2020-06-02 Microsoft Technology Licensing, Llc Predictive scaling for cloud applications
US20200050694A1 (en) 2018-08-13 2020-02-13 Amazon Technologies, Inc. Burst Performance of Database Queries According to Query Size
US11423111B2 (en) 2019-02-25 2022-08-23 Oracle International Corporation Client API for rest based endpoints for a multi-tenant identify cloud service
US10938923B2 (en) 2019-04-17 2021-03-02 Home Depot Product Authority, Llc Customizable router for managing traffic between application programming interfaces
US11080114B2 (en) 2019-11-26 2021-08-03 International Business Machines Corporation Controlling interaction with a scalable application

Also Published As

Publication number Publication date
US11356524B1 (en) 2022-06-07
GB202310318D0 (en) 2023-08-16
CN116635834A (zh) 2023-08-22
JP2024500420A (ja) 2024-01-09
WO2022128394A1 (en) 2022-06-23
GB2617499A (en) 2023-10-11
AU2021398915A1 (en) 2023-06-22
DE112021005848T5 (de) 2023-08-31
US20220201091A1 (en) 2022-06-23

Similar Documents

Publication Publication Date Title
US10972586B2 (en) Reusable message flow between applications of a message broker integrated systems environment
US10929567B2 (en) Parallel access to running electronic design automation (EDA) application
US10044837B2 (en) Generation and distribution of named, definable, serialized tokens
US9590859B2 (en) Discovering resources of a distributed computing environment
US9948702B2 (en) Web services documentation
US20180060443A1 (en) Providing modified protocol responses
KR20230109694A (ko) 확장 가능한 애플리케이션에서 실행되는 요청들의 조정
US11290541B2 (en) Synchronous client-side log service
US10812406B2 (en) Assigning processing elements to stream computing servers
US11645583B2 (en) Automatic rule learning in shared resource solution design
US20180246860A1 (en) Dynamic cognitive optimization of web applications
US11487750B2 (en) Dynamically optimizing flows in a distributed transaction processing environment
US11875202B2 (en) Visualizing API invocation flows in containerized environments
US20230109053A1 (en) Configuring application instances on scaling
US11954506B2 (en) Inspection mechanism framework for visualizing application metrics
US20230409419A1 (en) Techniques for controlling log rate using policy

Legal Events

Date Code Title Description
A201 Request for examination