KR20220147613A - 멀티-테넌트 서버리스 환경들을 위한 멀티-레벨 캐시-메시-시스템 - Google Patents

멀티-테넌트 서버리스 환경들을 위한 멀티-레벨 캐시-메시-시스템 Download PDF

Info

Publication number
KR20220147613A
KR20220147613A KR1020227031451A KR20227031451A KR20220147613A KR 20220147613 A KR20220147613 A KR 20220147613A KR 1020227031451 A KR1020227031451 A KR 1020227031451A KR 20227031451 A KR20227031451 A KR 20227031451A KR 20220147613 A KR20220147613 A KR 20220147613A
Authority
KR
South Korea
Prior art keywords
cache
mesh
computer
components
component
Prior art date
Application number
KR1020227031451A
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 KR20220147613A publication Critical patent/KR20220147613A/ko

Links

Images

Classifications

    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2885Hierarchically arranged intermediate devices, e.g. for hierarchical caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

워크로드 실행 환경 내의 노드 상에서 스테이트리스 서비스를 실행하기 위한 방법, 컴퓨터 시스템, 및 컴퓨터 프로그램 제품이 제공된다. 본 발명은 캐시-메시의 캐시 컴포넌트를 포함하는 워크로드 컨테이너를 각각의 노드에 대해 정의하는 단계를 포함할 수 있다. 본 발명은, 실행 컨테이너 내의 캐시-메시의 캐시 컴포넌트들 중 하나로부터의 스테이트리스 요청 서비스로부터 상태 요청을 수신하는 것에 응답하여, 요청된 상태가 관련된 실행 컨테이너의 캐시 컴포넌트에 존재하는지를 결정하는 단계를 포함할 수 있다. 본 발명은, 캐시 미스에 응답하여, 상기 상태 요청을 상기 캐시-메시의 다른 캐시 컴포넌트들로 브로드캐스트하는 단계를 포함하고, 상기 요청된 상태가 각각의 캐시들에 존재하는지를, 다른 캐시 컴포넌트들에 의해서, 결정하는 단계를 포함하며, 그리고 어느 캐시 컴포넌트가 상기 요청된 상태를 식별하는 것에 응답하여, 상기 요청된 상태를 상기 요청하는 서비스로 통신을 위한 상기 프로토콜을 사용하여 전송하는 단계를 포함한다.

Description

멀티-테넌트 서버리스 환경들을 위한 멀티-레벨 캐시-메시-시스템
[0001] 본 발명은 일반적으로 디지털 컴퓨터 시스템들의 분야에 관한 것이며, 보다 구체적으로 워크로드 환경의 노드에서 스테이트리스 서비스의 컴퓨터-구현 실행(computer-implemented execution of a stateless service)에 관한 것이다.
[0002] 클라우드 컴퓨팅 플랫폼들 및 클라우드 프레임워크들에서 종종 배치되는, 현대 컴퓨팅 환경들은, 복수의 상호 작용을 하는 서비스들 및/또는 마이크로-서비스들(micro-services)로 구성된다. 그러한 마이크로-서비스들의 특성들 중 하나는 그러한 서비스들은 종종 스테이트리스(stateless), 즉, 그러한 서비스들의 상태(state)는 하나의 호출(invocation)로부터 다음 호출까지 지속되지 않는다(not persistent)는 것이다. 그러나, 일부 경우들에서 마이크로-서비스들의 다음 호출을 위해 마이크로-서비스들의 상태를 이용할 수 있도록 하는 것이 유용할 수 있다. 이는 트랜잭션 애플리케이션들에 대한 기본 기술 -즉, 기술적인 전자 상거래 하부구조(technical e-commerce infrastructure)로서 흥미가 있을뿐만아니라 클라우드 컴퓨팅 환경들에서 클라우드 컴퓨팅 프레임워크들 및/또는 멀티-프로세서 시스템들의 관리를 위해서도 흥미가 있는 일이다. 그러한 자원들은 다양한 조건들(conditions), 성과 수준들(performance levels) 및 서비스 수준 협약들(service level agreements) 아래에서 다양한 제공자 조직들로부터 이용 가능할 수 있다. 그러나, 만일 그러한 자원들에 대한 자원 관리가 또한 스테이트리스 서비스들 및/또는 마이크로-서비스들의 상호 작용에 기초할 수 있다면, 그러한 상황들에서 각각의 서비스/마이크로-서비스의 "과거(old)" 상태를 액세스하는 것이 유용할 수 있다.
[0003] 클라우드 제공자들은 일반적으로 클라이언트들이 서비스 컴퓨팅 환경의 자원들을 구독하고(subscribe) 사용할 수 있는 물리적 또는 가상의 컴퓨팅 자원들을 제공하지만, 할당과 기본 컴퓨팅 및 네트워크 인프라는 클라우드 제공자가 관리할 수 있다. 이 운영 모델은 운영 비용들을 최적화할 수 있기 때문에, 클라이언트에게 유리하다. 한편, 클라우드 제공자의 당면 관심은 비즈니스 모델이 실현 가능하도록 하기 위한 운영 및 투자 비용들을 최소화하는 것이다. 따라서, 클라우드 제공자는 일반적으로 컴퓨터 자원 할당을 제한하며, 상기 제한은 통상적으로 특정 프로그래밍 방법에 의해서 지원된다. 따라서 기본 프로그래밍 모델은 스테이트리스, 이벤트 구동, 처리 시간 제한 서버리스 모델(stateless, event driven, processing time limited serverless model)이다.
[0004] 이 모델은 특정 실행 요건들에 대해서 유리한 점들이 있는 반면, 또한 몇 가지 불리한 점들도 갖고 있다. 분명히, 한 가지 불리한 점은 이것이 스테이트리스 라는 것이고, 즉, 데이터 또는 상태 정보가 기능의 하나의 실행 사이클에서 기능의 다음 실행 사이클까지 또는 서로 다른 기능들 또는 서비스들 사이에서 쉽게 공유될 수 없다는 것이다.
[0005] 워크로드 실행 환경에서의 노드 상에서 스테이트리스 서비스를 실행하기 위한 방법에 관한 여러 선행 문헌들이 있다.
[0006] 문헌 US 8112525 B2는 클러스터 네트워크 환경 상에 분산된 엔진 계층 및 상태 계층을 포함하는 세션 개시 프로토콜(SIP) 서버를 개시한다. 엔진 계층은 다양한 메시지들을 전송하고, 수신하고 및 프로세스할 수 있다. 상태 계층은 다양한 SIP 세션들과 연관된 메모리-내(in-memory) 상태 데이터를 유지할 수 있다. 인접 캐시가 상태 계층에서 포함된 일부 상태 데이터의 로컬 복사본을 유지하기 위해서 엔진 계층에 상주할 수 있다. 엔진 계층에서의 다양한 엔진들은 상태 계층으로부터 상태 데이터를 검색하기 전에 메시지를 프로세스하는 데 필요한 상태의 현재 버전을 인접 캐시가 포함하는지를 판단할 수 있다.
[0007] 문헌 US 8161163 B2는, 서버 상태 정보를 보유하는, 상태-캐싱 객체들이 서버보다는 클라이언트 또는 네트워크에서 유지되도록, 허용하는 스테이트리스 분산된 컴퓨터 아키텍처를 개시하고 있다. 하나의 실시 예에서, 상기 컴퓨터 아키텍처는 분산된 컴포넌트 객체 모델(DCOM)에 따라 객체-지향 프로그램 모듈들(object-oriented program modules)을 구현한다. 객체-지향 네트워크 프로토콜(예: 원격 프로시저 호출)을 이용하여, 서버 컴퓨터에 상주하는 프로그램 객체인, 애플리케이션 프로그램 인터페이스를 통해서 클라이언트-측 애플리케이션 호출(a client-side application call)이 이루어진다. 호출에 응답하여, 프로그램 객체는, 클라이언트 연결이 존재하는 상태 정보를 포함하는 상태 캐싱 객체를 생성한다. 서버는 상태-캐싱 객체를 로컬 위협 맥락에 삽입하고 요청을 처리하여 응답을 생성한다.
[0008] 그러나, 알려진 솔루션들의 불리한 점은 워크로드 실행 환경에서 영구 스토리지를 통해 상태를 유지하는 데 집중하는 경우가 종종 있다는 것이다. 따라서, 스테이트리스 소프트웨어 컨테이너들을 위한 유연한 워크로드 실행 환경에 보다 동적인 상태 관리를 제공할 필요가 있을 수 있다.
[0009] 본 발명의 실시 예들은 워크로드 환경 내의 노드 상에서 스테이트리스 서비스(a stateless service)를 실행하기 위한 방법, 컴퓨터 시스템 및 컴퓨터 프로그램 제품을 개시한다. 본 발명은 복수의 노드들 각각의 노드에 대해 적어도 하나의 워크로드 컨테이너를 정의하는 단계를 포함할 수 있고, 상기 적어도 하나의 워크로드 컨테이너는 캐시-메시의 캐시 컴포넌트를 포함하며, 상기 캐시-메시는 복수의 캐시 컴포넌트들을 포함하며, 상기 복수의 캐시 컴포넌트들은 서로 간의 통신을 위한 프로토콜을 포함한다.
[0010] 일 실시 예에 따라, 본 발명은, 실행 컨테이너 내의 캐시-메시의 복수의 캐시 컴포넌트들 중 하나로부터의 상태 요청 서비스로부터 상태 요청을 수신하는 것에 응답하여, 상기 상태 요청과 연관된 요청 상태가 관련된 실행 컨테이너의 캐시 컴포넌트에 존재하는지를 결정하는 단계를 포함할 수 있다.
[0011] 일 실시 예에 따라, 본 발명은, 캐시 미스에 응답하여, 상기 상태 요청을 상기 캐시-메시의 복수의 캐시 컴포넌트들의 다른 캐시 컴포넌트들로 브로드캐스트하는 단계를 포함할 수 있다.
[0012] 일 실시 예에 따라, 본 발명은 상기 요청된 상태가 상기 다른 캐시 컴포넌트들의 각각의 캐시들에 존재하는지를, 상기 캐시-메시의 복수의 캐시 컴포넌트들 중 다른 캐시 컴포넌트들에 의해, 결정하는 단계를 포함할 수 있다.
[0013] 일 실시 예에 따라, 본 발명은, 어느 캐시 컴포넌트가 상기 요청된 상태를 식별하는 것에 응답하여, 상기 요청된 상태를 상기 요청하는 서비스로 통신을 위한 상기 프로토콜을 사용하여 전송하는 단계를 포함할 수 있다.
[0014] 본 발명의 다른 실시 예들에 따라, 워크로드 실행 환경 내의 노드 상에서 스테이트리스 서비스를 실행하기 위한 관련 캐시-메시 시스템이 제공될 수 있다. 상기 워크로드 실행 환경은 복수의 노드들을 포함할 수 있다. 상기 캐시-메시 시스템은 캐시-메시의 일부인 캐시 컴포넌트를 포함하는 적어도 하나의 워크로드 컨테이너를 복수의 노드들 각각에 대해 정의한 것들을 저장하도록 구성된 스토리지를 포함할 수 있다. 상기 캐시-메시의 캐시 컴포넌트들은 서로 간의 통신을 위한 프로토콜을 사용할 수 있다.
[0015] 상기 캐시-메시 시스템은 또한: 실행 컨테이너 내의 캐시-메시의 캐시 컴포넌트들 중 하나로부터의 스테이트리스 요청 서비스(a stateless requesting service)로부터 상태 요청을 수신하는 것에 응답하여, 상기 요청된 상태가 상기 관련된 실행 컨테이너의 캐시 컴포넌트에 존재하는지를 결정하는 단계; 및 캐시 미스(miss)에 응답하여, 상기 상태 요청을 상기 캐쉬-메시의 캐시 컴포넌트들로 브로드캐스트하는 단계; 상기 요청된 상태가 상기 각각의 캐시들에 존재하는지를, 상기 캐쉬-메시의 다른 캐시 컴포넌트들에 의해서, 결정하는 단계; 및 어느 캐시 컴포넌트가 상기 요청된 상태를 식별하는 것에 응답하여, 상기 요청된 상태를 상기 요청하는 서비스로 상기 프로토콜을 사용하여 전송하는 단계를 수행하기 위해 구성된 수신 수단을 포함할 수 있다.
[0016] 워크로드 환경의 노드 내의 노드 상에서스테이트리스 서비스를 실행하기 위한 제안된 컴퓨터 구현 방법은 다음과 같은 여러 가지 이점들, 기술적 효과들, 기여들 및/또는 개선들을 제공할 수 있다.
[0017] 상기 제안된 컴퓨터 구현 방법은 선행 기술의 한계를 극복할 수 있는데, 특히 캐시-메시 컴포넌트들 사이의 통신 프로토콜의 계층 암호화에 의해 달성될 수 있는 멀티-테넌트(Multi-tenant) 환경에서도 또한 안전하게 기능할 수 있는 능력을 통해서 극복할 수 있다. 또한, 여기서 제안된 개념은 캐시-메시 컴포넌트의 형태로 소위 사이드카 컨테이너들(sidecar containers)을 사용하는 방법에 의해 다양한 팟들 사이의 미싱 격리(the missing isolation)를 극복한다. 기존의, 오리지널 사이드카 개념과 Kubernetes는 멀티-테넌트가 가능하도록 설계되지 않았다.
[0018] 따라서, 상기 제안된 개념은 스테이트리스 서비스의 레벨 1(L1) 캐시들 사이에서 콘텐츠를 교환하도록 활성화될 수 있다. 이에 의해서, L1 캐시 서비스들의 풀은 캐시-메시로 표시될 수 있다. 또한, 여기서 제안된 개념은 캐시-메시 컴포넌트들 사이의 공통 상태들을 교환하기 위해 다층 캐시 셋업(a multi-layer cache setup)에 의해 강화될 수 있다. 이를 위해, 상기 캐시-메시는 캐싱 서비스들의 풀이며, 특히 동일 유형의 워크로드들이 있는, 예를 들어 동일 실행 언어를 사용하거나 또는, 예를 들어 Java, node.js, Python 등과 같은, 워크로드 컨테이너의 동일 실행 환경에서 실행되는 서비스들에 대한, 캐싱 서비스들의 풀이다.
[0019] 따라서, 여기서 제안된 개념은 캐시-메시 구현을 유지하는 실제 워크로드 실행 환경에 인접한 사이드카 컴포넌트에 의존할 수 있다. 상기 캐시-메시를 셋업하기 위해, 사용된 프로토콜은 워크로드 유형들의 개념으로 향상될 수 있다. 이에 의해서, 워크로드 유형들은 그들의 실행 패턴(예: 런타임 엔진, 테넌트 정보 및/또는 기타 메타데이터)에 기초하여 유사한 워크로드들을 정의할 수 있다. 워크로드 실행 엔진은 풀 및 푸시 기반 모델(a pull and push based model)에서 캐시-메시 사이드카와 상호 작용할 수 있다. 일관된 제2 레벨 캐시를 보장하기 위해, 중앙 캐싱 컴포넌트(L2)를 사용하여 다양한 유형들의 워크로드들 사이에서 상태를 공유할 수 있다. 따라서, L1 캐시-메시 상태들은 중앙 캐싱 컴포넌트(L2)에 저장되는 통합 포맷으로 변환될 수 있다. 마지막으로, 글로벌 스케줄러 컴포넌트(a global scheduler component)가 도입되는데, 상기 글로벌 스케줄러 컴포넌트는 또한 다양한 위치들에서 다양한 클러스터들에 걸쳐 보안 암호화 키를 기반으로 사용자 워크로드들의 적절한 라우팅을 보장할 수 있다.
[0020] 마지막으로, 기존의 멀티-테넌트(Multi-tenant) 서버리스 환경에서는 실행 코드와 실행을 위해 스케줄된 노드는 상관 관계가 없다. 동일 노드들은 동일 기능의 실행을 위해 사용될 수는 없다. 그러나 가동 중인 모든 노드들은 자신의 캐시에 일부 상태를 저장할 수 있다. 사이드카들의 메시를 생성함으로써 캐시된 상태가 다양한 캐시-메시 컴포넌트들 사이에서 공유될 수 있다.
[0021] 이하에서는, 본 발명의 개념의 추가적인 실시 예들을 설명하며, 이들은 관련 시스템뿐만 아니라 방법에도 적용될 수 있다.
[0022] 상기 방법의 하나의 유용한 실시 예에 따라, 통신을 위한 프로토콜은 암호화될 수 있다. 따라서, 캐시-캐시 통신의 보안이 손상되지 않을 수 있다. 따라서 제공된 워크로드 실행 환경은 또한 보안 표준을 준수하기에 적합하게 될 수 있다. 사용자들은 보안 문제없이 그 것을 사용할 수 있다.
[0023] 바람직한 실시 예에 따라, 상기 방법은 또한, 노드 상에서 실행 컨테이너의 실행이 완료되는 것에 응답하여, 종료 상태를 캐시-메시로 브로드캐스트하는 단계를 포함할 수 있다. 따라서, 실행이 종료된 실행 컨테이너의 상태를 요구하는 모든 노드들은 통지될 수 있다. 추가 통신 프로토콜이 필요하지 않을 수 있다.
[0024] 다른 바람직한 실시 예에 따라, 상기 방법은 또한 복수의 노드들에 대한 제 1 중앙 캐싱 컴포넌트를 제공하는 단계를 포함할 수 있다. 이는 수신된 데이터(예: 상태 정보)를 지속적으로 저장할 수 있는 노드들(및 워크로드 컨테이너들(예: 팟들)에 대한 레벨-2 캐시일 수 있다.
[0025] 또 다른 바람직한 실시 예에 따라, 상기 방법은 또한, 상기 요청된 상태가 상기 캐시-메시의 복수의 캐시 컴포넌트들에서 이용 가능하지 않다고 결정하는 것에 응답하여, 상기 제 1 중앙 캐싱 컴포넌트로부터 상기 요청된 상태를 로드 하는 단계를 포함할 수 있다. 이는 영구적인 캐시 미스가 있는 상황을 나타낼 수 있다. 따라서 데이터는 (예: 이전 상태) 제 1의 중앙 캐시 스토리지로부터 로드 될 수 있고, 제 1의 중앙 캐시 스토리지는, 예를 들어, 레벨 2 캐시로 기능한다.
[0026] 상기 방법의 하나의 허용적 실시 예에 따라, 통신을 위한 상기 프로토콜은 사용자의 식별자, 캐시된 값을 식별하는 키, 및 상기 캐시된 값(예를 들어, 캐시 식별자를 통해)으로 구성된 그룹으로부터 선택되는 컴포넌트를 포함할 수 있다. 또한, 예를 들어, 특정 워크로드 실행 환경에 대한 다른 파라미터들도 교환된 프로토콜 데이터를 향상시킬 수 있다.
[0027] 다른 허용적 실시 예에 따라, 상기 방법은 또한, 상기 각각의 노드 상에서 실행 컨테이너의 실행을 완료하는 것에 응답하여, 상기 종료 상태를 상기 제 1 중앙 캐싱 컴포넌트로 브로드캐스트 하는 단계를 포함할 수 있다. 이러한 상태 전송 단계는 캐시-메시의 다른 멤버들(예를 들어, 캐시 컴포넌트들)로 상태를 전송하는 단계와 병렬로 수행될 수 있다. 따라서, 실행 컨테이너의 마지막 상태는 어쨌든 영구히 저장될 수 있다. 또한 그 것은 서비스(예: 워크로드 컨테이너)를 다시 인스턴스화(re-instantiation)한 후 동일 서비스(예: 새로운 인스턴스)에 의해서 사용될 수도 있다.
[0028] 상기 방법의 개선된 일 실시 예에 따라, 상기 캐시-메시의 복수의 캐시 컴포넌트들은 비교 가능한(comparable) 워크로드 유형을 갖는 캐시 컴포넌트들의 풀을 포함한다. 상기 비교 가능한 워크로드 유형은 동일 런타임 엔진(예: Java 또는 node. js), 사용자 정보(예: 사용자 ID) 및 동일한 프로그래밍 언어로 구성된 그룹에서 선택된 실행 패턴을 포함할 수 있다. 일부 실시 예들에서, 다른 메타데이터들도 또한 비교 가능한 워크로드 유형들을 정의할 수 있다. 이는 또한 사용된 워크로드 실행 환경에 따라 정의될 수도 있다.
[0029] 하나의 확장된 실시 예에 따라, 상기 방법은 또한 복제 프로토콜을 사용하여 제 2 중앙 캐싱 컴포넌트를 상기 제 1 중앙 캐싱 컴포넌트와 동기화하는 단계를 포함할 수 있다. 일 실시 예에서, 상기 제 2 중앙 캐싱 컴포넌트는 제 2 원격 워크로드 실행 환경에서 유지될 수 있다. 따라서 제안된 개념들은 로컬 컴퓨팅 환경(예: 단일 데이터 센터)에서 동작할 뿐만 아니라 데이터 센터들에 거쳐, 심지어 국가들에 걸쳐 그리고 대륙들어 걸쳐서도 동작할 수 있다. 따라서, 글로벌하게 활동하는 클라우드 컴퓨팅 제공자들에 의해서 제안된 개념들의 전 세계적인 사용이 가능하게 될 수 있다.
[0030] 또한, 실시 예들은 컴퓨터 또는 모든 명령 실행 시스템에 의해, 또는 이들과 연결하여, 사용하기 위해 프로그램 코드를 제공하는 컴퓨터 사용 가능 또는 컴퓨터 판독 가능한 매체로부터 액세스 가능한, 관련 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 본 명세서의 목적상, 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체는 상기 명령 실행 시스템, 장치 또는 디바이스에 의해, 도는 이들과 연결하여, 사용하기 위해 상기 프로그램을 저장, 통신, 전파 또는 운반하는 수단을 포함할 수 있는 모든 장치일 수 있다.
[0031] 본 발명의 실시 예들은 서로 다른 주제들(subject-matters)을 참조하여 설명된다는 것에 주목해야 한다. 특히, 일부 실시 예들이 방법 유형 청구항들을 참조하여 설명되는 반면, 기타 실시 예들은 장치 유형 청구항들을 참조하여 설명된다. 그러나, 상기 기술 분야에서 통상의 지식을 가진 자들은 위의 및 다음 설명으로부터 수집될 것이며, 달리 통지가 없는 한, 하나의 유형의 주제에 속하는 특징들의 모든 조합에 더하고, 또한 서로 다른 주제와, 특히, 방법 유형 청구항들의 특징들 사이에서, 관련이 있는 특징들 사이의 모든 조합에도 더하며, 및 장치 유형 청구항들의 특징들에 더하여, 이 문서 내의 개시된 것으로 간주될 것이다.
[0032] 위에서 정의된 실시 예들, 및 본 발명의 추가 실시 예들은, 후술하는 실시 예들의 예들로부터 분명하고, 실시 예들의 예들을 참조하여 설명되며, 그러나 본 발명이 이에 한정되지는 않는다.
[0033] 본 발명의 바람직한 실시 예들은 예의 방식으로만, 기술될 것이며, 다음 도면들을 참조하여 설명될 것이다:
[0034] 도 1은 적어도 하나의 실시 예에 따라 워크로드 환경에서의 노드 상에서 스테이트리스 서비스를 실행하기 위한 프로세스를 예시하는 동작 플로차트이다;
[0035] 도 2는 적어도 하나의 실시 예에 따라 몇 개의 노드들을 갖는 실행 환경의 블록도이다;
[0036] 도 3은 적어도 하나의 실시 예에 따라 원격 위치에서의 실행 환경의 확장에 대한 블록도이다;
[0037] 도 4는 적어도 하나의 실시 예에 따라 워크로드 환경에서의 노드 상에서 스테이트리스 서비스를 실행하기 위한 캐시-메시 시스템의 블록도이다.
[0038] 도 5는 적어도 하나의 실시 예에 따라 도 4의 캐시-메시 시스템을 구성하는 컴퓨터 시스템의 내부 및 외부 컴포넌트들에 대한 블록도이다.
[0039] 도 6은 본 문서의 일 실시 예에 따라, 도 5에서 도시된 컴퓨터 시스템을 포함하는 예시적 클라우드 컴퓨팅 환경의 블록도이다.
[0040] 도 7은 본 문서의 일 실시 예에 따라, 도 6의 예시적 클라우드 컴퓨팅 환경의 기능 층들의 블록도이다.
[0041] 이 설명의 맥락에서, 다음 규약들(conventions), 용어들 및/또는 표현식들(expressions)이 사용될 수 있다:
[0042] 본 발명의 적어도 하나의 실시 예에 따라, "스테이트리스 서비스(stateless service)"라는 용어는, 가능할 때 상태 데이터로부터 서비스들을 분리함으로써 확장 가능한(scalable) 서비스들을 설계하기 위해 서비스-지향 설계 패러다임(service-orientation design paradigm) 내에 적용되는, 설계 원리에 기초한 컴퓨팅 기능을 의미할 수 있다. 두 개의 임의의 소프트웨어 프로그램들의 상호 작용은 상호 작용-특정 데이터(interaction-specific data)를 추적하는 단계를 포함할 수 있는데, 이는 후속 상호 작용들이 상기 두 개의 소프트웨어 프로그램들 사이의 이전 상호 작용의 결과(outcome)에 좌우될 수 있기 때문이다. 그러나, 스테이트리스 컴퓨팅 환경들에서, 소프트웨어 프로그램의 상태는 프로그램 실행이 종료된 후에는 유지되지 않는다. 상태들을 이전하려면 다른 메커니즘들을 사용할 필요가 있을 수 있다.
[0043] 본 발명의 적어도 하나의 실시 예에 따라, "노드"라는 용어는 사용된 클러스터에 따라 물리적 컴퓨팅 머신 또는 가상 머신을 의미할 수 있다. 각 노드는 마스터 컴포넌트에 의해서 관리될 수 있다. 단일 기능들 또는 서비스들은 워크로드 컨테이너들, 워크로드 실행 컨테이너들로 또는, 워크로드 실행 환경인 Kubernetes의 경우에, 소위 팟들(pods)로 구현될 수 있다.
[0044] 본 발명의 적어도 하나의 실시 예에 따라, "워크로드 실행 환경"이라는 용어는 클러스터들, 노드들의 정의뿐만 아니라 워크로드 컨테이너들, 예를 들어 특정 서비스들에 파일하기 위한 노드들 내의 팟들의 정의를 허용하는 프로그래밍 프레임워크를 의미할 수 있다. 워크로드 실행 환경의 예들은 Marathon for Apache Mesos®(Apache Mesos 및 모든 Apache-기반 상표들 및 로고들이 Apache Software Foundation 및/또는 해당 계열사들의 상표들 또는 등록된 상표들임), Docker® Swarm(Docker 및 모든 Docker-기반 상표들 및 로고들이 Docker, Inc. 및/또는 해당 계열사들의 상표들 또는 등록된 상표들임), CoreOS®(CoreOS 및 모든 CoreOS-기반 상표들 및 로고들이 CoreOS, Inc. 및/또는 해당 계열사들의 상표들 또는 등록된 상표들임), Red Hat Openshift®(Red Hat Openshift 및 모든 Red Hat-기반 상표들 및 로고들이 Red Hat, Inc. 및/또는 해당 계열사들의 상표들 또는 등록된 상표들임), 및 Kubernetes®(Kubernetes 및 모든 Kubernetes-기반 상표들 및 로고들이 Linux Foundation 및/또는 해당 계열사들의 상표들 또는 등록된 상표들임)이다.
[0045] 본 발명의 적어도 하나의 실시 예에 따라, "워크로드 컨테이너"라는 용어는 워크로드 실행 환경 내에서 서비스 또는 마이크로-서비스(micro-service)를 전달할 수 있는 최소의 독립형 유닛(self-contained unit)을 의미할 수 있다. 다양한 실시 예들에서, "워크로드 실행 컨테이너"라는 용어가 사용될 수 있다.
[0046] 본 발명의 적어도 하나의 실시 예에 따라, "캐시 컴포넌트"라는 용어는 워크로드 컨테이너용 로컬 메모리로써 사용되는 워크로드 컨테이너 내의 특정 컴포넌트를 의미할 수 있다. 캐시 컴포넌트와 관련된 메모리는 워크로드 컨테이너의 상태 또는 서비스의 상태를 저장할 수 있다. 그러나, 워크로드 컨테이너가 자신의 실행을 종료하며, 캐시 컴포넌트 및 관련된 메모리 내의 데이터가 사라질 수 있다. 따라서, 기존의 워크로드 실행 환경들에서, 워크로드 컨테이너들의 및 캐시 컴포넌트들 내 상태 정보가 영구적이지 않을 수 있다. 본 발명의 실시 예들은 이 제한을 극복할 수 있다.
[0047] 본 발명의 적어도 하나의 실시 예에 따라, "캐시-메시(cache-mesh)"라는 용어는 상태 데이터를, 예를 들어, 노드들에 걸쳐, 그리고 동일한 노드 내의 워크로드 컨테이너들에 걸쳐, 교환할 수 있는 클러스터 내의 다양한 노드들에 걸쳐 캐시 컴포넌트들의 느슨하게 결합된 네트워크를 의미할 수 있다.
[0048] 본 발명의 적어도 하나의 실시 예에 따라, "캐시 미스(cache miss)"이라는 용어는 캐시 메모리에서 요구되는 상태 데이터에 서비스가 액세스할 수 없음을 의미할 수 있다.
[0049] 본 발명의 적어도 하나의 실시 예에 따라, "서로 간의 통신을 위한 프로토콜"이라는 용어는 클러스터 내의 캐시 컴포넌트들 사이에서 메시지들 및 데이터를 교환하기 위한 통신 프로토콜을 의미할 수 있다. 본 발명의 제안된 개념의 확장된 버전에 따라 캐시 컴포넌트들 사이의 통신을 위한 프로토콜은 또한 다양한 지리적 영역들의 클러스터들에 걸쳐 작동할 수 있다. 상기 프로토콜은 암호화된 메시지들을 사용할 수 있다.
[0050] 본 발명의 적어도 하나의 실시 예에 따라, "상태 요청"이라는 용어는 하나의 캐시 컴포넌트로부터 클러스터(또는 클러스터들 전반에 걸쳐) 내의 다른 캐시 컴포넌트로의 요청을 의미할 수 있다. 상기 상태 요청은 브로드캐스트 형태로 전송될 수 있다. 요청된 상태를 전달할 수 있는 수신 캐시 컴포넌트는 요청된 상태를 요청하는 캐시 컴포넌트로 반환할 수 있다.
[0051] 본 발명의 적어도 하나의 실시 예에 따라, "중앙 집중식 캐시 컴포넌트"라는 용어는 다양한 노드들에서 다양한 실행 컨테이너들의 상태 정보를 지속적으로 저장하도록 구성된 클러스터 내의 영구 스토리지를 의미할 수 있다. 따라서, 다양한 워크로드 컨테이너들의 다양한 캐시 컴포넌트들 사이에서 상태 데이터를 교환하는 대신, 상태 정보는 또한 제 1의 중앙 집중식 캐시 컴포넌트로부터 요청될 수 있다. 본 발명의 제안된 개념은 제 1의 중앙 집중식 캐시 컴포넌트 및 제 2의 중앙 집중식 캐시 컴포넌트와 관련이 있다. 이들은 제 1의 중앙 집중식 캐시 컴포넌트들의 콘텐츠가 원격 클러스터 및 다른 중앙 집중식 캐시 컴포넌트에 이용 가능할 수 있다는 점에서(및 반대도 마찬가지임) 서로와 관련이 있다. 중앙 집중식 캐시 컴포넌트들 모두는 상태 라우터를 사용하여 사전에 정의된(predefined) 프로토콜을 통해 동기화될 수 있다.
[0052] 본 발명의 적어도 하나의 실시 예에 따라, "원격 워크로드 실행 환경"이라는 용어는 초기 워크로드 실행 환경의 관점(perspective)으로부터 바라본 원격 위치에서의 제 2의 클러스터를 의미할 수 있다.
[0053] 본 발명의 적어도 하나의 실시 예에 따라, "클라우드 컴퓨팅" 및 "클라우드 서비스 환경"이라는 용어는 이러한 맥락에서 최소한의 관리 노력 또는 서비스 제공자와의 상호작용으로 빠르게 제공되고 해제될 수 있는, 구성 가능한(configurable) 컴퓨팅 자원들(예를 들어, 네트워크들, 네트워크 대역폭, 서버들, 처리, 메모리, 스토리지, 애플리케이션들, 가상 머신들, 및 서비스들)의 공유 풀에 대한 편리한, 주문형(on-demand) 네트워크 액세스를 가능하게 하는 모델로서 해석될 수 있다. 이 클라우드 모델은 가용성을 촉진하며 적어도 5가지의 필수 특성들(essential characteristics), 적어도 3가지 서비스 모델(service models), 및 적어도 4가지 배치 모델(deployment models)로 구성될 수 있다.
[0054] 클라우드 컴퓨팅의 필수 특성들은 다음과 같다:
(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) 계측 기능을 이용하여서 그렇게 한다. 자원 사용량은 모니터 되고, 제어되고, 그리고 보고될 수 있으며 이로써 이용하는 서비스의 제공자와 사용자 모두에게 투명성을 제공한다.
[0055] 클라우드 컴퓨팅을 위한 서비스 모델들(Service Models)은 다음과 같다:
(i) 클라우드 소프트웨어 서비스(Cloud Software as a Service)(SaaS): 소비자에게 제공되는 서비스는 클라우드 하부구조 상에서 실행되는 제공자의 애플리케이션들을 사용하게 해주는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹기반 이메일) 같은 씬(thin) 클라이언트 인터페이스를 통해 여러 클라이언트 장치들에서 액세스 가능하다. 소비자는 네트워크, 서버들, 운영 체제들, 스토리지, 또는 개별 애플리케이션 능력들을 포함하는 하부 클라우드 하부구조를 관리하거나 제어하지 않는다. 단, 제한된 사용자-특정 애플리케이션 구성 세팅들은 예외로서 가능하다.
(ii) 클라우드 플랫폼 서비스(Cloud Platform as a Service)(PaaS): 소비자에게 제공되는 서비스는 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 이용하여 생성된 소비자-생성 또는 획득 애플리케이션들을 클라우드 하부구조에 배치하게 해주는 것이다. 소비자는 네트워크, 서버들, 운영 체제들, 또는 스토리지를 포함하는 하부 클라우드 하부구조를 관리하거나 제어하지 않는다. 그러나 배치된 애플리케이션들에 대해서 그리고 가능한 경우 애플리케이션 호스팅 환경 구성들에 대해서 제어할 수 있다.
(iii) 클라우드 하부구조 서비스(Cloud Infrastructure as a Service)(IaaS): 소비자에게 제공되는 서비스는 처리, 스토리지, 네트워크, 및 기타 기본 컴퓨팅 자원들을 제공하여 주는 것이며, 여기서 소비자는 임의의 소프트웨어를 배치 및 실행할 수 있고, 이 소프트웨어에는 운영 체제들과 애플리케이션들이 포함될 수 있다. 소비자는 하부 클라우드 하부구조를 관리하거나 제어하지 않지만, 운영 체제들, 스토리지, 배치된 애플리케이션들, 및 가능한 경우 선택된 네트워킹 컴포넌트들의 제한적인 제어(예를 들어, 호스트 방화벽들)에 대하여 제어할 수 있다.
[0056] 클라우드 컴퓨팅을 위한 배치 모델들(Deployment Models)은 다음과 같다:
(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))에 의해 서로 결합되어 있다.
[0057] 클라우드 소프트웨어는 스테이트리스(statelessness)(예외들이 있는), 낮은 결합(low coupling), 모듈 방식(modularity), 및 의미적 상호운용성(semantic interoperability)에 집중하는 서비스를 지향함으로써 클라우드 패러다임의 모든 장점을 취한다는 것에 주목해야 한다.
[0058] 아래에서, 도면들에 대한 상세히 설명이 주어질 것이다. 도면들에서 모든 명령들은 개략적이다. 먼저, 워크로드 환경의 노드 상에서 스테이트리스 서비스를 실행하기 위한 컴퓨터-구현 방법의 일 실시 예의 블록도가 주어진다. 그 뒤에, 워크로드 실행 환경의 노드 상에서 스테이트리스 서비스를 실행하기 위한 캐시-메시 시스템의 실시 예들을뿐만 아니라, 추가 실시 예들이, 기술될 것이다.
[0059] 이제 도 1을 참조하면, 워크로드 실행 환경에서의 노드 상에서 스테이트리스 서비스(예: 애플리케이션)를 실행-특히, 가속된 실행을-하기 위한 컴퓨터-구현 프로세스(100)의 예시적 일 실시 예를 동작 플로차트가 예시한다. 워크로드 실행 환경에 대한 1차 타겟은 Kubernetes일 수 있다. 그러나, 상기 개념은 또한 Marathon for Apache Mesos, Docker Swarm, CoreOS, 및 Red Hat Openshift와 비슷한, 다른 비교 가능한 워크로드 실행 환경들과 함께 호환될 수 있다.
[0060] 단계(102)에서, 프로세스(100)는 복수의 노드들 각각에 대해 적어도 하나의 워크로드 컨테이너를 정의하는 단계를 포함한다. 하나의 실시 예에 따라, 워크로드 실행 환경은 복수의 노드들을 포함할 수 있다. (적어도) 하나의 캐시 컴포넌트를 포함하는 적어도 하나의 워크로드 컨테이너, 예를 들어, Kubernetes 내의 하나의 팟(pod)은 복수의 노드들 각각에 대해 정의될 수 있다. 하나의 실시 예에서, 상기 캐시 컴포넌트는 캐시-메시(cache-mesh)의 일부일 수 있다. 논의된 바와 같이, 상기 캐시는 레벨-1 캐시(a level-1 cache)로 작동할 수 있다. 상기 워크로드 컨테이너는 또한 런타임 환경, 예를 들어, Java 런타임, node.js 런타임, 등과 같은, 런타임 환경을 포함할 수 있다.
[0061] 하나의 실시 예에서, 상기 캐시-메시의 캐시 컴포넌트들은 전체적으로(fully) 연결되지 않을 수 있다. 따라서, 캐시 컴포넌트들은 서로 간의 통신을 위한 프로토콜을 구현할 수 있다. 상기 통신의 일반적인 원리는 동일 또는 유사한 실행 패턴을 갖는 워크로드 컨테이너의 캐시들에 대해서 브로드캐스트 하는 것을 통해 수행될 수 있다. 이렇게 함으로써 상기 브로드캐스트 하는 것의 범위를 제한할 수 있으며, 따라서 고성능 환경(high performance environment)을 지원할 수 있다.
[0062] 단계(104)에서, 프로세스(100)는 실행 컨테이너 내의(예: 팟 내의) 캐시-메시의 캐시 컴포넌트들 중 하나로부터의 스테이트리스 요청 서비스로부터 상태 요청을 수신하는 것에 기초하여 단계(106)에서: 상기 요청된 상태가 상기 관련된 실행 컨테이너, 특히 스테이트리스 요청 서비스와 관련된 실행 컨테이너의 캐시 컴포넌트 내에 존재하는지를 결정하는 단계를 수행한다.
[0063] 단계(108)에서, 프로세스(100)는, 캐시 미스(a cache miss)에 기초하여, 단계들(110, 112, 114)을 수행한다. 단계(110)에서 상기 상태 요청을 유사한 실행 패턴들이 있는 캐시-메시의 캐시 컴포넌트들로 브로드캐스트하는 단계를 포함한다. 프로세스(100)는 또한 단계(112)에서, 상기 캐시-메시의 다른 캐시 컴포넌트들에 의해서, 상기 요청된 상태가 각각의 캐시들에 존재하는지를 결정하는 단계를 포함하고, 그리고 어떠한 캐시 컴포넌트가 요청된 상태를 식별하면, 단계(114)에서, 상기 요청된 상태를 상기 프로토콜을 사용하여 상기 요청하는 서비스로, 전송하는 단계(예: 이것을 다시 전송하는 단계)를 포함할 수 있다. 상기 노드들은 또한 다른 디바이스들 또는 가상 머신들로 구현될 수 있다는 것에 주목해야 한다.
[0064] 프로세스(100)는 다음의 예를 사용하여 예시될 수 있고, 이 예에서 사용자는 상태 처리(state handling)가 있는 서버리스 기능들에 기초한 전자-상거래 사이트(an e-commerce site)를 셋업하고자 할 수 있다.
[0065] 쇼핑 카트가 상태 정보를 요청하는 일 예가 될 수 있다. 그래서, 만일 고객이 자신의 카트에 항목을 추가한다면, 서버리스 기능이 트리거 될 수 있는데, 자신의 암호화 키를 주입하는 전자-상거래 스테이트리스 애플리케이션에 의해서 트리거 될 수 있다. 스케줄러 컴포넌트는 상기 고객을 식별하고 잠재적인 캐시 미스에 대비하도록 L2 캐시(예: 중앙 캐시 컴포넌트)에 요청한다. 또한, 상기 요청은 결정된 기능 유형의 워크로드 실행 엔진(예: 이 경우에 node.js 환경일 수 있다)에 스케줄 된다. 만일 상기 기능이 이제 스케쥴 되고 실행된다면, 상기 기능은 캐시-메시 프로토콜에 기초하여 쇼핑 카트의 현재 상태에 액세스하려고 시도한다.
[0066] 이제 도 2를 참조하면, 일 실시 예에 따라 구현-근접 형태(an implementation-near)의 여러 노드들이 있는 실행 환경의 블록도(200)가 도시되어 있다. 하나 또는 그 이상의 클러스터들(202)은 복수의 노드들(204, 206, 208)(예: 노드 1, 노드 2, 노드 3)을 포함할 수 있다. 상기 노드들 각각은 워크로드 컨테이너들을 나타내는, 하나 또는 그 이상의 팟들(210, 216, 222, 228)(예: 팟A, 팟B, 팟C, 팟 _)을 포함할 수 있다. 워크로드 컨테이너들(예: 팟들) 각각은 캐시 컴포넌트(또한 캐시-메시 컴포넌트(CMC)라고 지칭됨)(214, 220, 226, 232)를, 각각, 포함할 수 있다. 팟들(210, 216, 222, 228) 각각은 또한 런타임 환경(212, 218, 224, 230)(예: Java 런타임 엔진(Java), node.js (NJS), Python 엔진)을 포함할 수 있다. 캐시-메시 컴포넌트들(214, 220, 206, 232) 각각은 상기 캐시 메시의 다른 캐시 컴포넌트들 중 하나로부터 상태 요청을 수신할 수 있다. 만일 상기 캐시 컴포넌트가 관련된 실행 컨테이너에 존재하지 않는다면, 브로드캐스트 메시지가 전송되고 상기 캐시-메시의 다른 멤버들에 의해서 수신된다. 요청하는 캐시 메시 컴포넌트와 관련되어 있거나 비교 가능한 워크로드 시간을 갖는 캐시-메시 컴포넌트들만 어드레스 되는 것이 바람직하다. 이는 프로토콜의 유형에 의해서 컨트롤될 수 있다.
[0067] 만일 요청된 캐시 컴포넌트가 어드레스 된 다른 캐시-메시 컴포넌트들 중 하나에서 식별되었다면, 요청된 상태는 기본 통신 캐시-메시 프로토콜을 사용하여 요청하는 서비스로 다시 전송된다. 만일 워크로드 실행 환경이 Kubernetes라면, 캐시-메시 컴포넌트는, 예를 들어, "사이드카들(sidecars)" 로서 구현될 수 있다.
[0068] 그러나, 만일 상태 컴포넌트가 클러스터(202) 내의 다양한 팟들에서 다른 캐시-메시 컴포넌트들 중 어느 하나에서도 발견되지 않는다면, 상기 요청된 상태는 팟들(210, 216, 222, 228)의 상태들을 지속적으로 저장할 수 있는 중앙 캐싱 컴포넌트(334)로부터 요구될 수 있다. 이는 폴백 솔루션(a fallback solution) 일 수 있다; 그러나, 클러스터(202) 내의 복수의 노드들(204, 206, 208)에 대한 중앙 캐싱 컴포넌트(234)를 액세스하기 위한 실행 시간은 상기 상태 요청들에 대해 캐시-메시 컴포넌트들(214, 222, 226, 232) 사이의 제안된 직접 통신보다 더 오래 걸릴 수 있다. 예들로서, 캐시-메시 컴포넌트(214) 및 캐시-메시 컴포넌트(232) 사이의 화살표(arrow)는 두 개의 캐시-메시 컴포넌트들 사이의 그러한 직접 통신을 나타낸다. 또한, 캐시-메시 컴포넌트들(220 및 226) 사이의 이중 화살표 및 관련된 라인은 캐시-메시 프로토콜을 사용하여 그러한 직접 상태 교환을 나타낸다.
[0069] 중앙 캐싱 컴포넌트(234) 및 캐시-메시 컴포넌트들(214, 220, 226, 232) 사이의 점으로 된 라인들(dotted lines)에 의해서 또한 표시된 바와 같이, 중앙 캐싱 컴포넌트(234)는 다양한 팟들(210, 216, 222, 208)의 상태들의 중앙 클러스터-지향 영구 스토리지(central cluster-oriented persistent storage)를 포함할 수 있다.
[0070] 또한, 스케줄러/게이트웨이(236)는 로컬 실행 환경들(212, 218, 224, 230)의 실행 호출(invocation)의 스케줄링을 컨트롤할 수 있다. 또한 캐시-메시 컴포넌트들의 안전한 프로토콜 관리를 위해서-예를 들어, 사용자 또는 또 다른 컨트롤 프로세스로부터-암호화 키를 수신할 수도 있다.
[0071] 하나의 실시 예에 따라, 스케줄러/게이트웨이(236)는 다양한 클러스터들(202 및 302)(예: 도 3 참조) 사이의 상태 정보를 동기화하도록 구성될 수 있는 상태 라우터(238)를 포함할 수 있다.
[0072] 위의 주어진 예(쇼핑 카트)와 연결하여, 상기 시나리오는 다음과 같이 확장될 수 있다: 사용자는 워크로드 실행 환경에서 스니펫(a snippet)의 실행을 위해 REST 요청을 전송한다. 각 요청과 함께, 사용자의 ID(identity) 및 요청 유형에 기초하여, 상기 캐시-메시 사이드카 서비스는, 이전에 저장된 상태(존재한다면)를 자신의 L1 캐시에 로드하고, 이전에 저장된 상태가 존재하지 않는다면 캐시-메시를 생성한다(상기 프로토콜은 아래에서 더 기술됨).
[0073] 실행이 발생할, 노드 상에서, 상기 캐시-메시 컴포넌트는 이전에 존재한 상태를 상기 대응하는 L1 캐시에 로드하기로 결정한다. 상기 L1 캐시의 크기는 제한되어 있으므로, L1 캐시의 콘텐츠는 다른 캐시-메시 컴포넌트들로 브로드캐스트되고 또한 실행이 완료된 후 L2 캐시(즉, 중앙 캐싱 컴포넌트(234))로 다시 로드된다. 상기 캐시-메시 컴포넌트들은 상기 프로토콜에 의해서 컨트롤되는 것처럼 작동하며, 이에 관하서는 다음에 기술된다:
[0074] 상기 캐시-메시 컴포넌트들은 캐싱 서비스들의 풀이며, 각 서비스는 관련된 실행 노드에 대해서 사이드카로서 작동한다. 상기 메시는 다음에 기초하여 다음에 의하여 형성될 수 있다: 1. 호스트 노드 실행 환경(예: 노드들은 동일 또는 비교 가능한 실행 환경들을 가짐)에 기초하여; 2. 실행을 위한 단일 애플리케이션에 의해 사용될 수 있는 노드에 의해서 형성될 수 있다.
[0075] 사용자 요청이 도착하면, 상기 캐시-메시 사이드카 컴포넌트는 자신의 캐시에서 이전 상태가 존재하는지를 검증한다(validate). 캐시-미스(cache-miss)가 있으면, 상기 캐시-메시 사이드카 컴포넌트는 다른 캐시-메시 컴포넌트들로부터 캐시된 상태를 요청한다(브로드캐스트 메시지에 의해서). 따라서 상기 요청하는 캐시-메시 사이드카 컴포넌트는 사용자의 ID 및 캐시-메시의 요청 유형을 브로드캐스트 할 수 있다.
[0076] 캐시-히트(cache-hit) 시 사용자 및 요청 유형을 검증한 후, 상기 메시 내의 모든 다른 캐시-메시 사이드카 컴포넌트는, 캐시된 상태를 상기 요청한 캐시-메시 사이드카 컴포넌트로 전송할 수 있다. 만일 상기 상태가 상기 캐시-메시에(예를 들어, 다른 캐시-메시 컴포넌트들에)에 없다면, 그것은 L2 캐시로부터의 상태를 로드한다. L2 캐시에 캐시-미스가 있다면, 캐시된 콘텐츠 및/또는 상태는 존재하지 않는다.
[0077] 노드 상에서의 실행이 완료되면, 종료-상태(end-state)가 상기 캐시-메시 내에서 브로드캐스트 된다. 따라서, 만일 다음 실행 요청이 동일 사용자로부터 도착하고 메시 내의 다른 어떠한 노드가 예약된다면, 상기 캐시-메시 컴포넌트는 자신의 L1 캐시에 이전에 로드된 상태를 가질 수 있다. 상기 L1 캐시 크기가 제한되므로, 상기 콘텐츠는 기본 FIFO(선입선출(first-in-first-out)) 프로토콜에 기초하여 저장된다.
[0078] 적절한 레벨의 보안을 보장하기 위해, 각 요청은 각각의 캐시-메시 컴포넌트의 콘텐츠를 암호화/암호 해독하는 데 사용될 수 있는 암호화 키를 전송할 수 있다.
[0079] 이제 도 3을 참조하면, 적어도 하나의 실시 예에 따라 원격 위치에서의 실행 환경의 확장에 대한 블록도(300)가 도시되어 있다. 두 개의 클러스터들(302 및 202)(예: 도 2를 참조)은 공중망, 에를 들어 인터넷을 통해 연결될 수 있다. 또한 클러스터(302)는 복수의 노드들(예: "노드_")를 포함할 수 있으며, 이들 중에서 오직 노드(304)만 도시되어 있다. 또한 여기서, 복수의 워크로드 실행 컨테이너들(310)(예: 복수의 팟들 "팟_") 각각은 실행 환경(예: (312) Java) 및 관련된 캐시-메시 컴포넌트들(314)을 포함할 수 있다. 또한, 클러스터(302)는 중앙 캐싱 컴포넌트(334)를 포함할 수 있으며, 이는 클러스터(302)의 노드(304)의 팟(310)의 캐시-메시 컴포넌트(314)와 통신할 수 있다. 또한 여기서, 다양한 워크로드 실행 컨테이너들/팟들(310)의 상태들이 중앙 캐싱 컴포넌트(334)에 저장될 수 있다.
[0080] 심볼(340)은 파선 화살표(dashed line arrow)가 도 2의 중앙 캐싱 컴포넌트(234)를 참조할 수 있는 공중망(예: 인터넷)을 나타낼 수 있다. 이 링크는 중앙 캐싱 컴포넌트(234) 및 원격 중앙 캐싱 컴포넌트(334) 사이의 스테이터스 정보의 복제(a replication of status information)를 위해서 사용될 수 있다. 이 프로세스는 2개의 파선 화살표들(two dashed arrows)(240, 242)에 의해 표시된 도 2의 상태 라우터(238)에 의해서 컨트롤될 수 있다.
[0081] 이제 도 4를 참조하면, 적어도 하나의 실시 예에 따라 워크로드 환경에서의 노드 상에서 스테이트리스 서비스를 실행하기 위한 캐시-메시 시스템(400)이 도시되어 있다. 하나의 실시 예에서, 상기 워크로드 실행 환경은 복수의 노드들(도시되지 않음)을 포함할 수 있다. 캐시-메시 시스템(400)은 복수의 노드들 중 각각에 대한 정의들(예: 스토리지 시스템(402)에서)을 저장할 수 있으며, 상기 정의들은 적어도 하나의 워크로드 컨테이너(복수의 노드들 중 각각에 대해)를 나타낸다. 하나의 실시 예에서, 상기 워크로드 컨테이너는 캐시-메시의 캐시 컴포넌트를 포함할 수 있다. 상기 캐시-메시의 캐시 컴포넌트들은 서로 간의 통신을 위한 프로토콜을 사용할 수 있다.
[0082] 캐시-메시 시스템(400)은 다음 단계를 수행하도록 구성된 수신 컴포넌트(예: 수신기 또는 송수신기(transceiver) 컴포넌트(404))를 포함할 수 있다: 실행 컨테이너 내의 캐시-메시의 캐시 컴포넌트들 중 하나로부터의 스테이트리스 요청 서비스로부터 상태 요청을 수신하는 것에 기초하여, 상기 요청된 상태가 관련된 실행 컨테이너의 캐시 컴포넌트에 존재하는지를 결정하는 단계, 및 캐시 미스에 기초하여, 상기 상태 요청을 상기 캐시-메시의 캐시 컴포넌트들로 브로드캐스트하는 단계, 상기 요청된 상태가 상기 각 캐시들에 존재하는지를, 상기 캐시-메시의 다른 캐시 컴포넌트들에 의해서, 결정하는 단계, 그리고 어느 하나의 캐시 컴포넌트가 상기 요청된 상태를 식별하는 것에 기초하여, 상기 요청된 상태를 상기 요청하는 서비스로 상기 프로토콜을 사용하여 전송하는 단계. 위에서 언급한 바와 같이, 상기 프로토콜은 더 나은 보안을 위해서 암호화될 수 있다.
[0083] 이제 도 5를 참조하면, 본 발명의 실시 예들에 관련된 프로그램 코드를 실행하기에 적합한 컴퓨터 시스템(500)이 도시된다. 실시 예들은, 프로그램 코드를 저장하고 및/또는 실행하기에 적합한 플랫폼에 관계없이, 사실상 모든 유형의 컴퓨터와 함께 구현될 수 있다.
[0084] 컴퓨터 시스템(500)은 적합한 컴퓨터 시스템의 한 예일뿐이며 여기에 설명된 본 발명의 실시예의 기능 또는 사용 범위에 대한 제한을 제시하려는 것은 아니다. 그럼에도 불구하고, 컴퓨터 시스템(500) 구현될 수 있고/있거나 위에서 설명된 기능 모두를 수행할 수 있다. 컴퓨터 시스템(500)에는, 수많은 다른 범용 또는 특수 목적 컴퓨팅 환경들 또는 구성들과 함께 운영되는, 컴포넌트들이 있다. 컴퓨터 시스템 /서버(500)와 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템들, 환경들, 및/또는 구성들의 예들은, 개인용 컴퓨터 시스템들, 서버 컴퓨터 시스템들, 씬 클라이언트들, 씩 클라이언트들, 핸드헬드 또는 랩탑 디바이스들, 멀티-프로세서 시스템들, 마이크로프로세서-기반 시스템 셋톱 박스들, 프로그래밍 가능한 소비자 전자 제품들, 네트워크 PC들, 미니 컴퓨터 시스템들, 메인프레임 컴퓨터 시스템들, 및 상기 시스템들 또는 디바이스들 중 하나를 포함하는 분산 클라우드 컴퓨팅 환경들, 등을 포함하나, 이에 국한하는 것은 아니다. 컴퓨터 시스템/서버(500)는, 컴퓨터 시스템(500)에 의해 실행되는, 프로그램 모듈들과 같은, 컴퓨터 시스템-실행 가능한 명령들의 일반적인 컨텍스트로 기술될 수 있다. 일반적으로 프로그램 모듈들은 특정 작업들을 수행하거나 또는 특정 추상 데이터 유형들을 구현하는 루틴들, 프로그램들, 객체들, 컴포넌트들, 로직, 데이터 구조들 등을 포함할 수 있다. 컴퓨터 시스템/서버(500)는 통신 네트워크를 통해 링크되는 원격 처리 디바이스들에 의해 작업들이 수행되는 분산 클라우드 컴퓨팅 환경에서 실시될 수 있다. 분산 클라우드 컴퓨팅 환경에서, 프로그램 모듈들은 메모리 스토리지 디바이스들을 포함하는 로컬 및 원격 컴퓨터 시스템 스토리지 매체 모두에 위치할 수 있다.
[0085] 도면에서 도시된 바와 같이, 컴퓨터 시스템/서버(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)는 일반적으로 다양한 컴퓨터 시스템 판독 가능한 매체를 포함한다. 그러한 매체는 컴퓨터 시스템/서버(500)에 의해 액세스 가능한 모든 이용 가능한 매체일 수 있으며 , 휘발성 및 비휘발성 매체, 착탈식 및 비-착탈식 매체를 모두 포함한다.
[0086] 시스템 메모리(504)은, 예컨대 랜덤 액세스 메모리(RAM)(508) 및/또는 캐시 메모리(510)와 같은, 휘발성 메모리의 형태의 컴퓨터 시스템 판독 가능한 매체를 포함할 수 있다. 컴퓨터 시스템/서버(500)는 또한, 다른 착탈식/비-착탈식, 휘발성/비휘발성 컴퓨터 시스템 스토리지 매체를 포함할 수 있다. 단지 예로서, 스토리지 시스템(512)이 비착탈식, 비휘발성 자기 매체(도시되지 않고 일반적으로 "하드 드라이브"라고 함)로부터 읽고 쓰기 위해 제공될 수 있다. 도시되지는 않았지만, 착탈가능 비휘발성 자기 디스크(예: "플로피 디스크") 에서 읽고 쓰기 위한 자기 디스크 드라이브 및, CD-ROM, DVD-ROM 또는 기타 광학 매체와 같은, 착탈가능 비휘발성 광학 디스크에서 읽거나 쓰기 위한 광학 디스크 드라이브가 제공될 수 있다. 그러한 경우에, 각각은 하나 또는 그 이상의 데이터 매체 인터페이스들에 의해 버스(506)에 연결될 수 있다. 아래에서 추가로 도시되고 설명되는 바와 같이, 메모리(504)는 본 발명의 실시예들의 기능들을 수행하도록 구성된 프로그램 모듈들의 세트(예를 들어, 적어도 하나)를 갖는 적어도 하나의 프로그램 제품을 포함할 수 있다.
[0087] 프로그램 모듈들의 (적어도 하나)세트(516)를 갖는, 프로그램/유틸리티는, 예를 들어, 메모리(504)에 저장될 수 있지만, 이에 국한되는 것은 아니다. 운영 체제, 하나 또는 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터 또는 이들의 조합은 네트워킹 환경의 구현을 포함할 수 있다. 프로그램 모듈들(516)은 일반적으로 본 명세서에 기술된 바와 같은 본 발명의 실시예의 기능들 및/또는 방법들을 수행한다.
[0088] 컴퓨터 시스템/서버(500)는 키보드, 포인팅 디바이스, 디스플레이(520) 등과 같은, 하나 또는 그 이상의 외부 디바이스들(518); 사용자가 컴퓨터 시스템/서버(500)와 상호작용할 수 있게 하는 하나 또는 그 이상의 디바이스들; 및/또는 컴퓨터 시스템/서버(500)가 하나 또는 그 이상의 다른 컴퓨팅 디바이스들과 통신할 수 있게 하는 모든 디바이스들(예를 들어, 네트워크 카드, 모뎀 등)과 통신 할 수 있다. 그러한 통신은 입/출력(I/O) 인터페이스(514)를 통해 발생할 수 있다. 또한, 컴퓨터 시스템/서버(500)는 근거리 통신망(LAN), 일반 광역 통신망(WAN), 및/또는 네트워크 어댑터(522)를 통한 공중 네트워크(예를 들어, 인터넷)와 같은, 하나 또는 그 이상의 네트워크들과 통신할 수 있다. 도시된 바와 같이, 네트워크 어댑터(522)는 버스(506)를 통해 컴퓨터 시스템/서버(500)의 다른 컴포넌트들과 통신한다. 도시되지는 않았지만, 다른 하드웨어 및/또는 소프트웨어 컴포넌트들이 컴퓨터 시스템/서버(500)와 함께 사용될 수 있음을 이해해야 한다. 이들의 예들에는: 마이크로코드, 디바이스 드라이버들, 리던던트 처리 유닛들, 외부 디스크 드라이브 어레이들, RAID 시스템들, 테이프 드라이브들 및 데이터 아카이벌 스토리지 시스템들이 포함되지만 이에 국한되지는 않는다.
[0089] 또한, 워크로드 실행 환경의 노드에서 스테이트리스 서비스를 실행하기 위한 캐시-메시 시스템(400)이 버스 시스템(506)에 부착될 수 있다.
[0090] 이제 도 6을 참조하면, 예시적인 클라우드 컴퓨팅 환경(1000)이 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(1000)은 예를 들어 개인 휴대 정보 단말기(PDA) 또는 휴대폰(1000A), 데스크탑 컴퓨터(1000B), 랩탑 컴퓨터(1000C), 및/또는 자동차용 컴퓨터 시스템(1000N)과 통신할 수 있는 것과 같이, 클라우드 소비자가 사용하는 로컬 컴퓨팅 디바이스가 하나 또는 그 이상의 클라우드 컴퓨팅 노드들(100)을 포함한다. 노드들(100)은 서로 통신할 수 있다. 이들은 여기에 기술된 바와 같은 사설, 커뮤니티, 공공, 또는 하이브리드 클라우드들 또는 이들의 조합 등의 하나 또는 그 이상의 네트워크들에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이것은 클라우드 소비자가 로컬 컴퓨팅 장치 상에 자원들을 유지할 필요가 없게 클라우드 컴퓨팅 환경(1000)이 하부구조, 플랫폼들 및/또는 소프트웨어를 서비스로서 제공할 수 있게 해준다. 도 6에 도시된 컴퓨팅 장치들(1000A-N)의 유형들은 단지 예시의 목적으로 기술한 것이며 컴퓨팅 노드들(100)과 클라우드 컴퓨팅 환경(1000)은 모든 유형의 네트워크 및/또는 네트워크 주소지정가능 연결을 통해서 (예를 들어, 웹 브라우저를 사용하여) 모든 유형의 컴퓨터화된 디바이스와 통신할 수 있다는 것을 이해해야 한다.
[0091] 이제 도 7를 참조하면, 클라우드 컴퓨팅 환경(1000)에 의해 제공되는 일 세트의 기능별 추상화 층들이 도시된다. 도 7에 도시된 컴포넌트들, 층들, 및 기능들은 단지 예시의 목적이며 본 발명의 바람직한 실시 예들은 이것에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 층들과 그에 대응하는 기능들이 제공된다:
[0092] 하드웨어 및 소프트웨어 층(1102)은 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들의 예들에는: 메인프레임들(1104); RISC(Reduced Instruction Set Computer) 아키텍처 기반 서버들(1106); 서버들(1108); 블레이드 서버들(1110); 스토리지 디바이스들(1112); 그리고 네트워크 및 네트워킹 컴포넌트들(1114)이 포함된다. 일부 실시 예들에서, 소프트웨어 컴포넌트들은 네트워크 애플리케이션 서버 소프트웨어(1116) 및 데이터베이스 소프트웨어(1118)를 포함한다.
[0093] 가상화 층(1120)은 추상화 층을 제공하며 이로부터 다음의 가상 주체들의 예들이 제공될 수 있다: 가상 서버들(1122); 가상 스토리지(1124); 가상 사설 네트워크를 포함하는, 가상 네트워크들(1126); 가상 애플리케이션들 및 운영 체제들(1128); 및 가상 클라이언트들(1130).
[0094] 한 예에서, 관리 층(1132)은 아래에 기술하는 기능들을 제공한다. 자원 제공(Resource provisioning)(1134)은 클라우드 컴퓨팅 환경 내에서 작업들을 수행하는 데 이용되는 컴퓨팅 자원들 및 기타 자원들의 동적 조달을 제공한다. 계측 및 가격 책정(Metering and Pricing)(1136)은 자원들이 클라우드 컴퓨팅 환경 내에서 이용될 때 비용 추적, 및 이 자원들의 소비에 대한 요금 청구 또는 송장을 제공한다. 한 예에서, 이 자원들은 애플리케이션 소프트웨어 라이센스를 포함할 수 있다. 보안(Security)은 데이터 및 기타 자원들에 대한 보호뿐 아니라 클라우드 소비자들과 작업들에 대한 신원 확인을 제공한다. 사용자 포털(User portal)(1138)은 소비자들 및 시스템 관리자들에게 클라우드 컴퓨팅 환경에 대한 액세스를 제공한다. 서비스 수준 관리(Service level management)(1140)는 요구되는 서비스 수준이 충족되도록 클라우드 컴퓨팅 자원 할당 및 관리를 제공한다. 서비스 수준 협약서(SLA) 기획 및 충족(planning and fulfillment)(1142)은 SLA에 부합하는 예상되는 미래 요건에 맞는 클라우드 컴퓨팅 자원들의 사전-배치(pre-arrangement) 및 조달(procurement)을 제공한다.
[0095] 워크로드 층(1144)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능들의 예들을 제공한다. 이 층에서 제공될 수 있는 워크로드들과 기능들의 예들은 다음을 포함한다: 맵핑 및 네비게이션(1146); 소프트웨어 개발 및 라이프사이클 관리(1148); 가상 교실 교육 전달(1150); 데이터 분석 처리(1152); 트랜잭션 처리(1154); 및 캐시-메시 시스템(1156)(도 4의 400과 비교한다).
[0096] 본 발명의 다양한 실시 예들의 설명들은 예시의 목적으로 제공되는 것이며, 개시된 실시 예들이 전부라거나 이들에 한정하려는 의도가 있는 것은 아니다. 많은 수정들 및 변형들이 설명된 실시 예들의 범위와 정신을 벗어남이 없이 이 기술 분야에서 통상의 지식을 가진 자에게는 명백할 것이다. 여기서 사용된 용어들은 실시 예들의 원리들, 실제 애플리케이션 또는 시장에서 발견된 기술들에 대한 기술적 개선을 가장 잘 설명하기 위해 또는 이 기술 분야에서 통상의 지식을 가진 자들이 여기서 개시된 실시 예들을 이해할 수 있도록 하기 위해 선택되었다.
[0097] 본 발명의 실시 예들은 시스템, 방법, 및/또는 컴퓨터 프로그램 제품이 될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 스토리지 매체(또는 매체)를 포함할 수 있으며, 이 매체 상에 프로세서가 본 발명의 실시 예들을 수행하도록 하는 컴퓨터 판독 가능 프로그램 명령들을 갖는다.
[0098] 상기 매체는 전파매체를 위한 전자, 자기, 광학, 전자기, 적외선 또는 반도체 시스템일 수 있다. 컴퓨터가 읽을 수 있는 매체의 예로는 반도체 또는 솔리드 스테이트 메모리, 자기 테이프, 착탈식 컴퓨터 디스켓, RAM(Random Access Memory), ROM(Read-Only Memory), 강성 자기 디스크 및 광 디스크를 들 수 있다. 현재 광학 디스크의 예로는 CD-ROM, CD-R/W, DVD, 블루레이 디스크가 있다.
[0099] 상기 컴퓨터 판독 가능 스토리지 매체는 명령 실행 장치에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 상기 컴퓨터 판독 가능 스토리지 매체는, 예를 들면, 전자 스토리지 디바이스, 자기 스토리지 디바이스, 광 스토리지 디바이스, 전자기 스토리지 디바이스, 반도체 스토리지 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 스토리지 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거 및 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 기록된 홈에 있는 융기된 구조들 같이 머신적으로 인코드 된 장치, 및 전술한 것들의 모든 적절한 조합. 본 명세서에서 사용될 때, 컴퓨터 판독 가능 스토리지 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[00100]본 명세서에 기술되는 컴퓨터 판독 가능 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 판독 가능 스토리지 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 스토리지 디바이스로부터 외부 컴퓨터로 다운로드 될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 유닛 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 판독 가능 스토리지 매체에 저장하기 위해 전송한다.
[00101] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 프로그래밍 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 집적회로를 위한 구성 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시 예들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.
[00102] 본 발명의 특징들이 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 플로 차트 예시도들 및/또는 블록도들을 참조하여 기술된다. 플로 차트 예시도들 및/또는 블록도들의 각 블록과 플로 차트 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[00103] 이들 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 유닛의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 유닛의 프로세서를 통해서 실행되어, 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 유닛 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 스토리지 매체가 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[00104] 상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 유닛, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 디바이스 상에서 실행되는 명령들이 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[00105] 도면들 내 플로 차트 및 블록도들은 본 발명의 여러 실시 예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능(functionality), 및 연산(operation)을 예시한다. 이와 관련하여, 상기 플로 차트 또는 블록도들 내 각 블록은 상기 명시된 로직 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행 가능한 명령들을 포함한 모듈, 세그먼트 또는 명령들의 일부분을 나타낼 수 있다. 일부 다른 실시 예들에서, 상기 블록에 언급되는 기능들은 도면들에 언급된 순서와 다르게 일어날 수도 있다. 예를 들면, 연속으로 도시된 두 개의 블록들은 실제로는 사실상 동시에 실행될 수도 있고, 또는 이 두 블록들은 때때로 관련된 기능에 따라서는 역순으로 실행될 수도 있다. 블록도들 및/또는 플로 차트 예시도의 각 블록, 및 블록도들 및/또는 플로 차트 예시도 내 블록들의 조합들은 특수목적용 하드웨어 및 컴퓨터 명령들의 명시된 기능들 또는 동작들, 또는 이들의 조합들을 수행하는 특수목적용 하드웨어-기반 시스템들에 의해 구현될 수 있다는 것에 또한 주목해야 한다.
[00106] 본 명세서에서 사용되는 용어는 특정 실시 예를 설명하기 위한 것일 뿐, 발명을 제한하기 위한 것은 아니다. 본 명세서에서 사용되는 단수 형태는 문맥이 명확하게 달리 명시하지 않는 한 복수 형태도 포함하도록 의도된다. 또한 본 명세서에서 "포함하다" 및/또는 "포함하는"이라는 용어는 명시된 특징, 정수, 단계, 동작, 엘리먼트 및/또는 컴포넌트의 존재를 명시하지만 하나 또는 그 이상의 다른 특징, 정수, 단계, 동작, 엘리먼트, 컴포넌트 및/또는 그것의 그룹의 존재 또는 추가를 배제하지 않는다는 것을 이해해야 한다.
[00107] 하기의 청구항들 중 모든 수단들 또는 단계들과 기능 엘리먼트들의 구조들, 재료들, 작용들 및 등가물들은 구체적으로 청구항과 같이 다른 청구항 엘리먼트들과 조합하여 기능을 수행하기 위한 구조들, 재료들 또는 작용들을 포함하는 것을 목적으로 한다. 본 발명에 대한 설명은 예시 및 설명을 목적으로 제시되었으나, 개시된 형태가 본 발명의 전부라거나 이들에 한정하려는 것은 아니다. 본 발명의 범위와 정신에서 벗어나지 않고 당업계에서 통상의 기술을 가진 자에게 많은 수정들과 변형들이 명백할 것이다. 실시 예들은 본 발명의 원리 및 실용화를 가장 잘 설명하고, 이 기술 분야에서 통상의 지식을 가진 자들이 간주되는 특정 용도에 적합하게 다양한 변형된 다양한 실시 예들에 대한 발명을 이해할 수 있도록 하기 위해 선택 및 설명된다.

Claims (20)

  1. 컴퓨터-구현 방법에 있어서, 상기 방법은:
    복수의 노드들 중 각각의 노드에 대해 적어도 하나의 워크로드 컨테이너를 정의하는 단계 - 상기 적어도 하나의 워크로드 컨테이너는 캐시-메시(cache-mesh)의 캐시 컴포넌트를 포함하고, 상기 캐시-메시는 복수의 캐시 컴포넌트들을 포함하며, 상기 복수의 캐시 컴포넌트들은 서로 간의 통신을 위한 프로토콜을 포함함-;
    실행 컨테이너 내의 캐시-메시의 복수의 캐시 컴포넌트들 중 하나로부터의 스테이트리스 요청 서비스(a stateless requesting service)로부터 상태 요청을 수신하는 것에 응답하여, 상기 상태 요청과 연관된 요청된 상태가 관련된 실행 컨테이너의 상기 캐시 컴포넌트에 존재하는지를 결정하는 단계;
    캐시 미스(miss)에 응답하여, 상기 상태 요청을 상기 캐쉬-메시의 복수의 캐시 컴포넌트들 중 다른 캐시 컴포넌트들로 브로드캐스트하는 단계;
    상기 요청된 상태가 상기 다른 캐시 컴포넌트들의 각각의 캐시들에 존재하는지를, 상기 캐쉬-메시의 복수의 캐시 컴포넌트들 중 다른 캐시 컴포넌트들에 의해서, 결정하는 단계; 및
    어느 캐시 컴포넌트가 상기 요청된 상태를 식별하는 것에 응답하여, 상기 요청된 상태를 상기 요청한 서비스로 통신을 위한 상기 프로토콜을 사용하여 전송하는 단계를 포함하는
    컴퓨터-구현 방법.
  2. 제 1항에 있어서, 통신을 위한 상기 프로토콜은 암호화되는
    컴퓨터-구현 방법.
  3. 제 1항 또는 제 2항에 있어서, 상기 방법은:
    상기 각각의 노드 상에서 실행 컨테이너의 실행을 완료하는 것에 응답하여, 종료 상태(an end state)를 상기 캐시-메시로 브로드캐스트하는 단계를 더 포함하는
    컴퓨터-구현 방법.
  4. 제 1항 내지 제 3항의 항들 중 어느 하나에 있어서, 상기 방법은:
    상기 복수의 노드들을 위한 제 1 중앙 캐싱 컴포넌트를 제공하는 단계를 더 포함하는
    컴퓨터-구현 방법.
  5. 제 1항 내지 제 4항의 항들 중 어느 하나에 있어서, 상기 방법은:
    상기 요청된 상태가 상기 캐시-메시의 복수의 캐시 컴포넌트들에서 이용 가능하지 않다고 결정하는 것에 응답하여, 상기 제 1 중앙 캐싱 컴포넌트로부터 상기 요청된 상태를 로드하는 단계를 더 포함하는
    컴퓨터-구현 방법.
  6. 제 1항 내지 제 5항의 항들 중 어느 하나에 있어서, 통신을 위한 상기 프로토콜은 사용자의 식별자, 캐시된 값을 식별하는 키, 및 상기 캐시된 값으로 구성된 그룹으로부터 선택되는 컴포넌트를 포함하는
    컴퓨터-구현 방법.
  7. 제 4항에 있어서, 상기 방법은:
    상기 각각의 노드 상에서 실행 컨테이너의 실행을 완료하는 것에 응답하여, 상기 종료 상태를 상기 제 1 중앙 캐싱 컴포넌트로 브로드캐스트 하는 단계를 더 포함하는
    컴퓨터-구현 방법.
  8. 제 1항 내지 제 7항의 항들 중 어느 하나에 있어서, 상기 캐시-메시의 복수의 캐시 컴포넌트들은 비교 가능한(comparable) 워크로드 유형을 갖는 캐시 컴포넌트들의 풀을 포함하는
    컴퓨터-구현 방법.
  9. 제 8항에 있어서, 상기 비교 가능한 워크로드 유형은 동일(identical) 런타임 엔진, 사용자 정보, 및 동일 프로그래밍 언어로 구성된 그룹으로부터 선택되는 실행 패턴을 포함하는
    컴퓨터-구현 방법.
  10. 제 4항에 있어서, 상기 방법은:
    복제 프로토콜을 사용하여 제 2 중앙 캐싱 컴포넌트를 상기 제 1 중앙 캐싱 컴포넌트와 동기화하는 단계를 더 포함하고, 상기 제 2 중앙 캐싱 컴포넌트는 제 2 원격 워크로드 실행 환경에서 유지되는
    컴퓨터-구현 방법.
  11. 워크로드 실행 환경 내의 노드 상에서 스테이트리스 서비스를 실행하기 위한 컴퓨터 시스템에 있어서. 상기 컴퓨터 시스템은:
    하나 또는 그 이상의 프로세서들, 하나 또는 그 이상의 컴퓨터-판독 가능(computer-readable) 메모리들, 하나 또는 그 이상의 컴퓨터-판독 가능 유형의 스토리지 매체, 및 상기 하나 또는 그 이상의 메모리들 중 적어도 하나를 통해 상기 하나 또는 그 이상의 프로세서들 중 적어도 하나에 의해서 실행되기 위해 상기 하나 또는 그 이상의 컴퓨터-판독 가능한 유형의 스토리지 매체 중 적어도 하나에 저장되는 프로그램 명령들을 포함하고, 상기 컴퓨터 시스템은 방법을 수행할 수 있으며, 상기 방법은:
    복수의 노드들 중 각각의 노드에 대해 적어도 하나의 워크로드 컨테이너를 정의하는 단계 - 상기 적어도 하나의 워크로드 컨테이너는 캐시-메시(cache-mesh)의 캐시 컴포넌트를 포함하고, 상기 캐시-메시는 복수의 캐시 컴포넌트들을 포함하며, 상기 복수의 캐시 컴포넌트들은 서로 간의 통신을 위한 프로토콜을 포함함-;
    실행 컨테이너 내의 캐시-메시의 복수의 캐시 컴포넌트들 중 하나로부터의 스테이트리스 요청 서비스(a stateless requesting service)로부터 상태 요청을 수신하는 것에 응답하여, 상기 상태 요청과 연관된 요청된 상태가 관련된 실행 컨테이너의 상기 캐시 컴포넌트에 존재하는지를 결정하는 단계;
    캐시 미스(miss)에 응답하여, 상기 상태 요청을 상기 캐쉬-메시의 복수의 캐시 컴포넌트들 중 다른 캐시 컴포넌트들로 브로드캐스트하는 단계;
    상기 요청된 상태가 상기 다른 캐시 컴포넌트들의 각각의 캐시들에 존재하는지를, 상기 캐쉬-메시의 복수의 캐시 컴포넌트들 중 다른 캐시 컴포넌트들에 의해서, 결정하는 단계; 및
    어느 캐시 컴포넌트가 상기 요청된 상태를 식별하는 것에 응답하여, 상기 요청된 상태를 상기 요청한 서비스로 통신을 위한 상기 프로토콜을 사용하여 전송하는 단계를 포함하는
    컴퓨터 시스템.
  12. 제 11항에 있어서, 상기 컴퓨터 시스템은:
    상기 각각의 노드 상에서 실행 컨테이너의 실행을 완료하는 것에 응답하여, 종료 상태(an end state)를 상기 캐시-메시로 브로드캐스트하는 단계를 더 포함하는
    컴퓨터 시스템.
  13. 제 11항 또는 제 12항에 있어서, 상기 컴퓨터 시스템은:
    상기 복수의 노드들을 위한 제 1 중앙 캐싱 컴포넌트를 제공하는 단계를 더 포함하는
    컴퓨터 시스템.
  14. 제 13항에 있어서, 상기 컴퓨터 시스템은:
    상기 요청된 상태가 상기 캐시-메시의 복수의 캐시 컴포넌트들에서 이용 가능하지 않다고 결정하는 것에 응답하여, 상기 제 1 중앙 캐싱 컴포넌트로부터 상기 요청된 상태를 로드하는 단계를 더 포함하는
    컴퓨터 시스템.
  15. 제 11항 내지 제 14항의 항들 중 어느 하나에 있어서, 통신을 위한 상기 프로토콜은 사용자의 식별자, 캐시된 값을 식별하는 키, 및 상기 캐시된 값으로 구성된 그룹으로부터 선택되는 컴포넌트를 포함하는
    컴퓨터 시스템.
  16. 제 13항에 있어서, 상기 컴퓨터 시스템은:
    상기 각각의 노드 상에서 실행 컨테이너의 실행을 완료하는 것에 응답하여, 상기 종료 상태를 상기 제 1 중앙 캐싱 컴포넌트로 브로드캐스트 하는 단계를 더 포함하는
    컴퓨터 시스템.
  17. 제 11항 내지 제 16항의 항들 중 어느 하나에 있어서, 상기 캐시-메시의 복수의 캐시 컴포넌트들은 비교 가능한(comparable) 워크로드 유형을 갖는 캐시 컴포넌트들의 풀을 포함하는
    컴퓨터 시스템.
  18. 제 11항 내지 제 17항의 항들 중 어느 하나에 있어서, 상기 비교 가능한 워크로드 유형은 동일(identical) 런타임 엔진, 사용자 정보, 및 동일 프로그래밍 언어로 구성된 그룹으로부터 선택되는 실행 패턴을 포함하는
    컴퓨터 시스템.
  19. 제 13항에 있어서, 상기 컴퓨터 시스템은:
    복제 프로토콜을 사용하여 제 2 중앙 캐싱 컴포넌트를 상기 제 1 중앙 캐싱 컴포넌트와 동기화하는 단계를 더 포함하고, 상기 제 2 중앙 캐싱 컴포넌트는 제 2 원격 워크로드 실행 환경에서 유지되는
    컴퓨터 시스템.
  20. 워크로드 실행 환경 내의 노드 상에서 스테이트리스 서비스를 실행하기 위한 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램 제품은:
    하나 또는 그 이상의 컴퓨터-판독 가능한 스토리지 매체와 상기 하나 또는 그 이상의 컴퓨터-판독 가능한 스토리지 매체 상에 전체적으로 저장되는 프로그램 명령들을 포함하고, 상기 프로그램 명령들은:
    복수의 노드들 중 각각의 노드에 대해 적어도 하나의 워크로드 컨테이너를 정의하는 단계 - 상기 적어도 하나의 워크로드 컨테이너는 캐시-메시(cache-mesh)의 캐시 컴포넌트를 포함하고, 상기 캐시-메시는 복수의 캐시 컴포넌트들을 포함하며, 상기 복수의 캐시 컴포넌트들은 서로 간의 통신을 위한 프로토콜을 포함함-;
    실행 컨테이너 내의 캐시-메시의 복수의 캐시 컴포넌트들 중 하나로부터의 스테이트리스 요청 서비스(a stateless requesting service)로부터 상태 요청을 수신하는 것에 응답하여, 상기 상태 요청과 연관된 요청된 상태가 관련된 실행 컨테이너의 상기 캐시 컴포넌트에 존재하는지를 결정하는 단계;
    캐시 미스(miss)에 응답하여, 상기 상태 요청을 상기 캐쉬-메시의 복수의 캐시 컴포넌트들 중 다른 캐시 컴포넌트들로 브로드캐스트하는 단계;
    상기 요청된 상태가 상기 다른 캐시 컴포넌트들의 각각의 캐시들에 존재하는지를, 상기 캐쉬-메시의 복수의 캐시 컴포넌트들 중 다른 캐시 컴포넌트들에 의해서, 결정하는 단계; 및
    어느 캐시 컴포넌트가 상기 요청된 상태를 식별하는 것에 응답하여, 상기 요청된 상태를 상기 요청한 서비스로 통신을 위한 상기 프로토콜을 사용하여 전송하는 단계를 수행하는 프로그램 명령들을 포함하는
    컴퓨터 프로그램 제품.
KR1020227031451A 2020-03-30 2021-02-11 멀티-테넌트 서버리스 환경들을 위한 멀티-레벨 캐시-메시-시스템 KR20220147613A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/834,754 US11316947B2 (en) 2020-03-30 2020-03-30 Multi-level cache-mesh-system for multi-tenant serverless environments
US16/834,754 2020-03-30
PCT/IB2021/051126 WO2021198803A1 (en) 2020-03-30 2021-02-11 Multi-level cache-mesh-system for multi-tenant serverless environments

Publications (1)

Publication Number Publication Date
KR20220147613A true KR20220147613A (ko) 2022-11-03

Family

ID=77856831

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227031451A KR20220147613A (ko) 2020-03-30 2021-02-11 멀티-테넌트 서버리스 환경들을 위한 멀티-레벨 캐시-메시-시스템

Country Status (8)

Country Link
US (1) US11316947B2 (ko)
JP (1) JP2023521569A (ko)
KR (1) KR20220147613A (ko)
CN (1) CN115349117B (ko)
AU (1) AU2021246978B2 (ko)
DE (1) DE112021000410B4 (ko)
GB (1) GB2608954A (ko)
WO (1) WO2021198803A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230103402A1 (en) * 2021-10-05 2023-04-06 Hewlett Packard Enterprise Development Lp Distributed state store supporting multiple protocols
CN115866088A (zh) * 2022-11-30 2023-03-28 京东科技信息技术有限公司 协议转换方法、装置、电子设备和计算机可读存储介质

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7127514B2 (en) 2000-12-28 2006-10-24 Microsoft Corporation Stateless distributed computer architecture with server-oriented state-caching objects maintained on network or client
US6981138B2 (en) 2001-03-26 2005-12-27 Microsoft Corporation Encrypted key cache
US7065587B2 (en) 2001-04-02 2006-06-20 Microsoft Corporation Peer-to-peer name resolution protocol (PNRP) and multilevel cache for use therewith
US7673101B2 (en) * 2005-05-16 2010-03-02 Texas Instruments Incorporated Re-assigning cache line ways
US8112525B2 (en) 2006-05-16 2012-02-07 Oracle International Corporation Engine near cache for reducing latency in a telecommunications environment
US8924743B2 (en) 2009-05-06 2014-12-30 Empire Technology Development Llc Securing data caches through encryption
GB2503437A (en) 2012-06-26 2014-01-01 Ibm Fetching cache lines into a plurality of caches with different states
EP3161669B1 (en) * 2014-06-26 2021-02-17 Intel Corporation Memcached systems having local caches
US10296551B2 (en) * 2015-09-30 2019-05-21 Juniper Networks, Inc. Analytics for a distributed network
US10037220B2 (en) 2015-11-20 2018-07-31 International Business Machines Corporation Facilitating software-defined networking communications in a container-based networked computing environment
US10565008B2 (en) 2016-07-28 2020-02-18 International Business Machines Corporation Reducing service downtime during service migration
US10362092B1 (en) * 2016-10-14 2019-07-23 Nutanix, Inc. Entity management in distributed systems
CN108664324B (zh) 2017-03-30 2022-02-01 微软技术许可有限责任公司 云服务实例分配的更新日志
US20180302490A1 (en) * 2017-04-13 2018-10-18 Cisco Technology, Inc. Dynamic content delivery network (cdn) cache selection without request routing engineering
US11243807B2 (en) * 2017-05-04 2022-02-08 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing a scheduler and workload manager with workload re-execution functionality for bad execution runs
US10817392B1 (en) * 2017-11-01 2020-10-27 Pure Storage, Inc. Ensuring resiliency to storage device failures in a storage system that includes a plurality of storage devices
KR102042431B1 (ko) 2018-05-24 2019-11-08 주식회사 티맥스소프트 클라우드 환경에서 웹 캐싱을 위한 메타 정보 저장 방법 및 이를 사용한 웹 서버
US20200019330A1 (en) * 2018-07-11 2020-01-16 EMC IP Holding Company LLC Combined Read/Write Cache for Deduplicated Metadata Service
US11016939B2 (en) * 2018-07-11 2021-05-25 EMC IP Holding Company, LLC Architecture for scalable metadata microservices orchestration
US10855531B2 (en) * 2018-08-30 2020-12-01 Juniper Networks, Inc. Multiple networks for virtual execution elements
US11212369B2 (en) * 2018-10-19 2021-12-28 Arris Enterprises Llc Distributed storage of state information and session recovery using state information
US10986150B2 (en) * 2019-03-01 2021-04-20 Netskope, Inc. Load balancing in a dynamic scalable services mesh
US10972386B2 (en) * 2019-03-29 2021-04-06 Juniper Networks, Inc. Scalable multi-tenant underlay network supporting multi-tenant overlay network

Also Published As

Publication number Publication date
DE112021000410B4 (de) 2024-01-04
CN115349117B (zh) 2023-03-31
GB202215368D0 (en) 2022-11-30
CN115349117A (zh) 2022-11-15
AU2021246978B2 (en) 2024-01-04
DE112021000410T5 (de) 2022-12-22
AU2021246978A1 (en) 2022-09-01
JP2023521569A (ja) 2023-05-25
WO2021198803A1 (en) 2021-10-07
US20210306438A1 (en) 2021-09-30
GB2608954A (en) 2023-01-18
US11316947B2 (en) 2022-04-26

Similar Documents

Publication Publication Date Title
JP7203444B2 (ja) 代替サーバ名を使用する相互トランスポート層セキュリティを選択的に提供すること
US10721293B2 (en) Hybrid cloud applications
US10614117B2 (en) Sharing container images between mulitple hosts through container orchestration
US9973573B2 (en) Concurrency reduction service
US10360410B2 (en) Providing containers access to container daemon in multi-tenant environment
US8694777B2 (en) Securely identifying host systems
US20130227232A1 (en) Partition aware quality of service feature
US10620928B2 (en) Global cloud applications management
US11762743B2 (en) Transferring task data between edge devices in edge computing
US9591079B2 (en) Method and apparatus for managing sessions of different websites
US10761886B2 (en) Dynamically optimizing load in cloud computing platform using real-time analytics
AU2021246978B2 (en) Multi-level cache-mesh-system for multi-tenant serverless environments
US11861386B1 (en) Application gateways in an on-demand network code execution system
US9537948B2 (en) Method and apparatus for chunk-level sharing-based open virtualization format (OVF) package distribution through dependency analysis
WO2022105617A1 (en) Private key management
EP4000239B1 (en) 3rd generation partnership project (3gpp) framework for live uplink streaming (flus) sink capabilities determination
US20220300611A1 (en) Run-time communications protocol parameter adjustment in containerized applications
US20150095482A1 (en) Method and System for Deploying Service in a Cloud Computing System
US11048630B2 (en) Symmetrical multi-processing node
KR20230109660A (ko) 발행-구독 시스템에서의 키 순환
Gupta et al. Improving scope of Cloud technology under Open SourceTools

Legal Events

Date Code Title Description
A201 Request for examination