KR20140096084A - 데이터 센터에서의 역할 인스턴스 도달성 - Google Patents

데이터 센터에서의 역할 인스턴스 도달성 Download PDF

Info

Publication number
KR20140096084A
KR20140096084A KR1020147014403A KR20147014403A KR20140096084A KR 20140096084 A KR20140096084 A KR 20140096084A KR 1020147014403 A KR1020147014403 A KR 1020147014403A KR 20147014403 A KR20147014403 A KR 20147014403A KR 20140096084 A KR20140096084 A KR 20140096084A
Authority
KR
South Korea
Prior art keywords
instance
role
endpoint
load
endpoints
Prior art date
Application number
KR1020147014403A
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 KR20140096084A publication Critical patent/KR20140096084A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1014Server selection for load balancing based on the content of a request
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

개별적인 역할 인스턴스 도달성 및 로드 밸런싱이 호스팅 환경에서 실행되는 애플리케이션의 역할 인스턴스에 동시에 제공된다. 인스턴스 엔드포인트는 각각의 역할 인스턴스에 배정될 수 있다. 각각의 인스턴스 엔드포인트는 IP 어드레스, 전송 프로토콜 및 고유 포트 번호의 조합을 포함할 수 있다. 또한, 로드 밸런싱된 엔드포인트가 역할 인스턴스의 그룹에 배정될 수 있다. 로드 밸런싱된 엔드포인트는 IP 어드레스, 전송 프로토콜 및 다른 고유 포트 번호의 조합을 포함할 수 있다. 애플리케이션 메시지가 데이터 센터로 발행되는 경우에, 메시지는 메시지에 의해 사용되는 엔드포인트에 따라 라우팅된다. 인스턴스 엔드포인트의 경우에, 메시지가 로드 밸런싱 없이 인스턴스 엔드포인트와 대응하는 역할 인스턴스로 라우팅된다. 로드 밸런싱된 엔드포인트에 관해, 메시지는 로드 밸런싱을 사용하여 역할 인스턴스 중 임의의 하나로 라우팅된다.

Description

데이터 센터에서의 역할 인스턴스 도달성{ROLE INSTANCE REACHABILITY IN DATA CENTER}
대규모 네트워크 시스템(large scale networked system)은 애플리케이션을 실행시키고 비즈니스 및 운영 기능을 위한 데이터를 보관하기 위한 다양한 환경에서 사용되는 일반적인 플랫폼(commonplace platforms)이다. 예를 들어, 데이터 센터(예, 물리적인 클라우드 컴퓨팅 인프라스트럭처)와 같은 호스팅 환경은 복수의 고객에게 동시에 다양한 서비스(예를 들면, 웹 애플리케이션, 이메일 서비스, 검색 엔진 서비스 등)를 제공할 수 있다. 이러한 대규모 네트워크 시스템은 일반적으로 데이터 센터 전체에 분산된 많은 수의 자원을 포함하며, 각각의 자원은 물리적인 호스트에서 동작하는 물리적 머신 또는 가상 머신과 유사하다. 데이터 센터가 복수의 테넌트(예, 고객 애플리케이션)를 호스팅하는 경우에, 이러한 자원은 동일한 데이터 센터로부터 서로 다른 테넌트에 선택적으로 할당된다.
고객의 애플리케이션이 데이터 센터에서 구현되는 경우에, 애플리케이션은 애플리케이션의 코드의 일부를 포함하는 하나 이상의 역할(role)에 의해 제공될 수 있다. 각각의 역할은 일반적으로 복수의 역할 인스턴스를 가질 수 있고, 로드 밸런싱(load balancing)이 메시지를 애플리케이션(예, 외부 애플리케이션)으로부터 다양한 인스턴스로 배포하는 데 사용된다. 이러한 인프라스트럭처 내에서, 고객이 물리적 머신, 가상 머신 및/또는 이들의 서비스에 할당되는 역할 인스턴스를 증가 또는 감소시킴으로써 자신의 서비스를 투명하게 스케일 아웃(scale out)하도록 하는 것이 바람직하다. 추가로, 고객이 인터넷과 같은 네트워크에서 특정한 역할 인스턴스를 처리하기를 원하는 많은 시나리오가 존재할 수 있다. 그 예로는, 원격 데스크톱, 디버깅, 인스턴스 모니터링, 태스크 매니지먼트(예, 특정 애플리케이션에 대한 부착 세션(sticky session)을 제공하는 것), 및 서로 다른 애플리케이션 사이의 테넌트간(inter-tenant) 통신이 있다.
로드 밸런싱된 설정(load balanced setting)에서 공유 어드레스를 통해 인스턴스 도달성(instance reachability)을 제공하는 하나의 접근법은 로드 밸런싱된 어드레스를 통해 애플리케이션 메시지를 송신하고 이어서 적합한 인스턴스로 메시지를 라우팅하기 위한 애플리케이션 특정 연결 포워더(application-specific connection forwarder)를 작성하는 것이다. 그러나, 이러한 접근법은 효과적이지 않고 각각의 애플리케이션 프로토콜에 대한 고객 프로토콜 포워더를 작성하는 것이 요구된다. 인스턴스 도달성을 제공하기 위한 다른 접근법은 각각의 역할 인스턴스에 대해 전용의 IP 어드레스를 할당하는 것이다. 그러나, 그러한 솔루션은 대규모 블록의 IP 어드레스를 필요로 하기 때문에 잘 스케일 하기가 어렵다. 또한, 이는 방화벽과 같은 인프라스럭처를 셋업하는 것을 더 어렵게 만드는데, 인스턴스의 수가 증가하거나 감소함에 따라 어드레스가 동적으로 변경될 것이기 때문이다.
본 요약은 상세한 설명에서 이하에 추가로 기술되는 개념에 대한 선택사항을 소개하기 위해 제공된다. 본 요약은 청구되는 발명의 대상의 주요 특징 또는 핵심 특징을 식별시키려는 것이 아니고, 청구되는 발명의 대상의 범주를 정하는 데 보조내용으로 사용하려는 위한 것도 아니다.
본 발명의 실시예는 고유 포트 번호(unique port number)를 역할 인스턴스에 배정함으로써 데이터 센터에서 역할 인스턴스 도달성을 제공하는 것에 관한 것이다. 실시예에 따르면, 인스턴스 엔드포인트는 데이터 센터에서 실행되는 애플리케이션 내의 역할을 위한 역할 인스턴스에 할당될 수 있다. 각각의 인스턴스 엔드포인트는 IP 어드레스, 전송 프로토콜(transport protocol) 및 고유 포트 번호(unique port number)의 조합을 포함할 수 있다. 추가로, 동일한 공유 어드레스의 로드 밸런싱된 엔드포인트(load balanced endpoints)가 역할 인스턴스의 그룹에 할당될 수 있다. 로드 밸런싱된 엔드포인트는 IP 어드레스, 전송 프로토콜 및 다른 고유 포트 번호의 조합을 포함한다. 로드 밸런서는 인스턴스 엔드포인트 및 로드 밸런싱된 엔드포인트로 프로그램될 수 있다. 추가로, 인스턴스 엔드포인트 및 로드 밸런싱된 엔드포인트가 데이터 센터에서 실행되는 서비스 애플리케이션을 액세스하는 애플리케이션에 노출될 수 있다. 이에 따라 외부 애플리케이션이 인스턴스 엔드포인트와 로드 밸런싱된 엔드포인트를 사용하여 메시지를 데이터 센터로 발행하는 경우에, 로드 밸런서는 메시지를 역할 인스턴스에게 적절하게 라우팅할 수 있다. 특히, 메시지가 인스턴스 엔드포인트를 포함하는 경우에, 메시지는 로드 밸런싱 없이 인스턴스 엔드포인트와 대응하는 역할 인스턴스로 직접 라우팅될 수 있다. 메시지가 로드 밸런싱된 엔드포인트를 포함하는 경우에, 인스턴스는 로드 밸런싱 알고리즘에 따른 역할 인스턴스 중 임의의 하나에 전달될 수 있다.
본 발명은 첨부된 도면을 참조하여 이하에서 상세하게 설명된다.
도 1은 본 발명의 실시예를 구현하는 데 사용하기에 적합한 예시적인 컴퓨팅 환경의 블록도이다.
도 2는 본 발명의 실시예를 구현하는 데 사용하기에 적합한 예시적인 클라우드 컴퓨팅 플랫폼을 나타내는 블록도이다.
도 3은 본 발명의 실시예에 따라 애플리케이션이 직접적으로 또는 로드 밸런싱을 통해 데이터 센터의 역할 인스턴스를 액세스할 수 있는 분산형 컴퓨팅 환경을 나타내는 블록도이다.
도 4는 본 발명의 실시예에 따라 로드 밸런싱된 엔드포인트 및 인스턴스 엔드포인트를 할당하고 메시지를 역할 인스턴스로 보내는 데이터 센터를 나타내는 블록도이다.
도 5는 본 발명의 실시예에 따라 역할 인스턴스로의 직접적인 트래픽 및 로드 밸런싱된 트래픽을 용이하게 하는 할당된 인스턴스 엔드포인트 및 로드 밸런싱된 엔드포인트를 가지는 역할 인스턴스를 이용하여 데이터 센터를 구성하는 방법을 나타내는 흐름도이다.
도 6은 본 발명의 실시예에 따라 인스턴스 엔드포인트와 로드 밸런싱된 엔드포인트를 이용하여 로드 밸런서를 프로그램하고 메시지를 역할 인스턴스로 라우팅하는 방법을 나타내는 흐름도이다.
본 발명의 청구 대상은 법적 요구조건을 만족시키기 위해 본 명세서에 구체적으로 설명된다. 그러나, 설명 자체는 본 특허의 범주를 제한하는 것이 아니다. 오히려, 본 발명자는 청구된 발명의 대상이 현재의 또는 미래의 다른 기술과 함께 본 명세서에 설명된 것과 다른 단계 또는 유사한 단계의 조합을 포함하도록 다른 방식으로 구현될 수도 있다는 것을 고려하였다. 또한, "단계(step)" 및/또는 "블록(block)"이라는 용어가 본 명세서에서 사용되는 방법이 서로 다른 요소를 포함한다는 의미로 사용될 수 있으나, 그러한 용어는 개별적인 단계의 순서가 명시적으로 설명되지 않는 한 그리고 명시적으로 설명되는 경우를 제외하고 본 명세서의 다양한 단계들 간에 임의의 특정한 순서를 암시하는 것으로 해석되어서는 안 된다.
본 발명의 실시예는 단일 IP 어드레스를 복수의 엔드포인트로 나눔으로써 직접적인 역할 인스턴스 도달성을 제공하는 방법에 관한 것이다. 일반적으로, 실시예는 고유 포트 번호를 역할 인스턴스에 할당하고, 각각의 역할 인스턴스를 IP 어드레스와 특정 전송 프로토콜(예를 들면, TCP 및 UDP)에 대한 고유 포트 번호의 조합인 고유 공개 엔드포인트(즉, 인스턴스 엔드포인트)로서 각각의 역할 인스턴스를 노출하는 것에 관한 것이다. 이러한 인스턴스 엔드포인트는 동일한 세트의 역할 인스턴스를 위해 로드 밸런싱된 엔드포인트와 공존할 수 있다(coexist). 따라서, 실시예는 일반적인 방식 및 모든 애플리케이션 프로토콜에 쓰일 수 있는 방식(in a generic and application protocol agnostic way)으로 역할 인스턴스 도달성을 처리할 수 있다. 이러한 접근법은 공유 어드레스(shared address)를 통해 로드 밸런싱 및 인스턴스 도달성의 상호 공존을 가능하게 한다. 그와 같이 실시예는 데이터 센터에서의 비즈니즈 및 공학적 확장성(business and engineering scalability)을 유지한다.
본 발명의 실시예에 따르면, 고객은, 노출되고 개별적으로 도달가능한 역할 인스턴스를 포함하여, 서비스 모델에서 데이터 센터에 의해 제공되는 서비스의 측면을 지정할 수 있다. 서비스 모델에서의 고객의 지정사항(specification)에 기초하여, 데이터 센터는 자원(예, 물리적 머신 및 가상 머신)을 고객의 비즈니스 애플리케이션에 할당하고, 또한 비즈니스 애플리케이션의 특정한 역할을 위한 역할 인스턴스의 그룹을 자원에 할당한다. 일부 실시예에서, 데이터 센터는 로드 밸런싱된 엔드포인트를 역할 인스턴스의 그룹에 배정하여 역할 인스턴스에 걸친 애플리케이션 메시지의 로드 밸런싱을 가능하게 할 수 있다. 로드 밸런싱된 엔드포인트는 공공 IP 어드레스, 전송 프로토콜 및 포트 번호의 조합을 포함하는 일반용 엔드포인트(public-facing endpoint)일 수 있다. 로드 밸런싱된 엔드포인트를 역할 인스턴스의 그룹에 할당하는 것에 추가하여, 데이터 센터는 또한 인스턴스 엔드포인트를 각각의 역할 인스턴스에 할당한다. 구체적으로, 데이터 센터는 각각의 역할 인스턴스를 위한 인스턴스 엔드포인트가 공공 IP 어드레스, 전송 프로토콜 및 고유 포트 번호의 조합을 포함할 수 있도록 각각의 역할 인스턴스에 고유 포트 번호를 배정할 수 있다. 역할 인스턴스에 대한 각각의 포트 번호는 다른 역할 인스턴스에 배정된 다른 포트 번호 간에 고유하고, 로드 밸런스 엔드포인트와 역할 인스턴스가 동일한 공공 IP 어드레스를 공유하는 경우에 로드 밸런싱된 엔드포인트에 배정된 포드 번호로부터 고유하다.
데이터 센터의 로드 밸런서는 로드 밸런싱된 엔드포인트 및 역할 인스턴스의 그룹에 대한 인스턴스 엔드포인트를 이용하여 프로그램된다. 또한, 로드 밸런싱된 엔드포인트 및 인스턴스 엔드포인트는 애플리케이션(예, 외부 애플리케이션, 호스팅되는 애플리케이션 및/또는 다른 애플리케이션)에 노출된다. 따라서, 애플리케이션은 로드 밸런싱된 엔드포인트 또는 인스턴스 엔드포인트를 사용하여 데이터 센터로의 연결을 개시할 수 있다. 로드 밸런서가 로드 밸런싱된 엔드포인트를 통해 메시지를 수신하는 경우에, 로드 밸런서는 로드 밸런싱된 알고리즘에 따라 메시지를 역할 인스턴스 중 하나에 보낸다. 로드 밸런서가 인스턴스 엔드포인트 중 하나를 통해 메시지를 수신하는 경우에, 로드 밸런서는 메시지를 인스턴스 엔드포인트와 대응하는 특정한 역할 인스턴스로 보낸다.
따라서, 일 측면에서, 본 발명의 일 실시예는 하나 이상의 컴퓨팅 장치에 의해 사용되는 경우에 하나 이상의 컴퓨팅 장치로 하여금 방법을 수행하게 하는 컴퓨터 사용가능 명령어가 저장된 하나 이상의 컴퓨터 저장 매체에 관한 것이다. 이러한 방법은 호스팅 환경에서 복수의 역할 인스턴스를 제공하는 단계를 포함한다. 각각의 역할 인스턴스는 호스팅 환경에서 실행되는 고객 애플리케이션에 대한 코드를 포함한다. 방법은 복수의 역할 인스턴스에 복수의 인스턴스 엔드포인트를 할당하는 단계를 포함한다. 각각의 인스턴스 엔드포인트는 제1 IP 어드레스, 제1 전송 프로토콜 및 고유 포트 번호의 조합을 포함하고, 역할 인스턴스 중 하나에 매핑한다. 방법은 추가로 인스턴스 엔드포인트를 애플리케이션에 노출하여 애플리케이션으로 하여금 특정한 역할 인스턴스에 매핑하는 인스턴스 엔드포인트를 사용하여 특정한 역할 인스턴스에 액세스하게 하는 단계를 포함한다.
다른 실시예에서, 본 발명의 일 측면은 로드 밸런서가 로드 밸런싱된 메시지 및 인스턴스 메시지를 호스팅 환경의 역할 인스턴스에 보내는 방법에 관한 것이다. 이 방법은 호스팅 환경에서 실행되는 서비스 애플리케이션의 역할에 관한 복수의 역할 인스턴스에 대한 엔드포인트 정보를 수신하는 단계를 포함한다. 엔드포인트 정보는 복수의 역할 인스턴스에 대한 복수의 인스턴스 엔드포인트를 식별한다. 각각의 인스턴스 엔드포인트는 제1 IP 어드레스, 제1 전송 프로토콜 및 고유 포트 번호의 조합을 포함하고, 역할 인스턴스 중 하나에 매핑한다. 또한, 엔드포인트 정보는 복수의 역할 인스턴스에 대한 로드 밸런싱된 엔드포인트를 식별한다. 로드 밸런싱된 엔드포인트는 제2 IP 어드레스, 제2 전송 프로토콜 및 다른 고유 포트 번호의 조합을 포함한다. 또한, 방법은 복수의 인스턴스 엔드포인트로부터의 제1 인스턴스 엔드포인트를 포함하는 제1 메시지를 애플리케이션으로부터 수신하는 경우에, 제1 메시지를 제1 인스턴스 엔드포인트와 대응하는 제1 역할 인스턴스로 보내는 단계를 포함한다. 이 방법은 추가로 로드 밸런싱된 엔드포인트를 포함하는 제2 요청을 어플리케이션으로부터 수신하는 경우에, 로드 밸런싱 알고리즘에 기초하여 제2 요청을 역할 인스턴스 중 하나로 보내는 단계를 포함한다.
본 발명의 추가 실시예는 클라우드 컴퓨팅 플랫폼을 위한 시스템에 관한 것이다. 시스템은 고객 애플리케이션에 대한 코드를 제공하는 복수의 역할 인스턴스를 실행하는 복수의 가상 머신을 호스팅하는 하나 이상의 물리적 머신을 포함한다. 또한, 이 시스템은 각각의 역할 인스턴스에 고유 포트 번호를 배정하여 각각의 역할 인스턴스에 대한 인스턴스 엔드포인트를 생성하는 테넌트 매니저를 포함한다. 각각의 인스턴스 엔드포인트는 IP 어드레스, 전송 프로토콜 및 고유 포드 번호 중 하나의 조합을 포함한다. 시스템은 추가로 로드 밸런싱된 엔드포인트 및 인스턴스 엔드포인트로 프로그램된 로드 밸런서를 포함한다. 로드 밸런서는 인스턴스 엔드포인트를 사용하여 애플리케이션 메시지를 직접적으로 대응하는 역할 인스턴스로 라우팅하고, 로드 밸런싱 알고리즘에 기초하여 로드 밸런싱된 엔드포인트를 사용하여 애플리케이션 메시지를 역할 인스턴스로 라우팅하도록 구성된다.
본 발명의 실시예에 대한 개요가 설명되었으나, 본 발명의 실시예가 구현될 수 있는 예시적인 운영 환경이 본 발명의 다양한 측면에 대한 일반적인 맥락을 제공하도록 이하에 설명될 수 있다. 먼저 도 1을 참조하면, 본 발명의 실시예를 구현하는 예시적인 운영 환경이 도시되며 일반적으로 컴퓨팅 장치(100)로 나타내진다. 컴퓨팅 장치(100)는 단지 적합한 컴퓨팅 환경의 일 예이며, 본 발명의 기능 또는 용도의 범주에 관한 임의의 제한을 제시하려는 것이 아니다. 컴퓨팅 장치(100)는 도시된 컴포넌트 중 임의의 하나 또는 이들의 조합에 관한 임의의 종속성이나 필요조건을 갖는 것으로 해석되어서는 안 된다.
본 발명은 컴퓨터 또는 다른 머신(예를 들면, PDA(personal data assistant)또는 기타 핸드헬드 장치)에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어를 포함하는 컴퓨터 코드 또는 머신-사용가능 명령어에 대한 일반적인 맥락으로 설명될 수 있다. 일반적으로, 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함하는 프로그램 모듈은, 특정한 태스크를 수행하거나 특정한 추상 데이터 타입을 구현하는 코드를 나타낸다. 본 발명은 핸드-헬드 장치, 소비자 가전, 범용 컴퓨터, 더 특수화된 컴퓨팅 장치 등과 같은 다양한 시스템 구성에서 실시될 수 있다. 본 발명의 실시예는 또한, 통신 네트워크를 통해 연결된 원격-처리 장치에 의해 작업이 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다.
도 1을 참조하여, 컴퓨팅 장치(100)는 다음의 장치들, 메모리(112), 하나 이상의 프로세서(114), 하나 이상의 프레젠테이션 컴포넌트(presentation component)(116), 입/출력 포트(118), 입/출력 컴포넌트(120), 및 예시적인 전원(122)을 직접 또는 간접적으로 연결하는 버스(110)를 포함한다. 버스(110)는 하나 이상의 버스들(예컨대, 주소 버스, 데이터 버스, 또는 이들의 조합)일 수 있는 것을 나타낸다. 도 1의 다양한 블록은 간결성을 위해 선으로 나타나지만, 실제로, 다양한 컴포넌트를 묘사하는 것이 그렇게 명료하지 않고, 비유적으로, 선들은 더 정확하게는 회색(grey)이고 흐릿(fuzzy)할 것이다. 예를 들어, 디스플레이 장치와 같은 프레젠테이션 컴포넌트가 I/O 컴포넌트인 것을 고려할 수 있다. 추가로, 많은 프로세서들이 메모리를 가진다. 본 발명자는 이러한 것이 해당 기술의 속성이며, 도 1의 다이어그램은 본 발명의 하나 이상의 실시예와 함께 사용될 수 있는 예시적인 컴퓨팅 장치의 예에 불과함을 강조한다. "워크스테이션", "서버", "랩톱", "핸드헬드 장치" 등의 카테고리들 간에 구별은 이뤄지지 않는데, 이들 모두 도 1의 범위 내에 있고 "컴퓨팅 장치"를 지칭하기 때문이다.
일반적으로 컴퓨팅 장치(100)는 다양한 컴퓨터 판독 가능 매체를 포함한다. 컴퓨터 판독 가능 매체는 컴퓨팅 장치(100)에 의해 액세스될 수 있고 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체 모두를 포함하는 임의의 이용 가능한 매체일 수 있다. 예를 들어, 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는, RAM(Random Access Memory), ROM(Read Only Memory), EEPROM(Electronically Erasable Programmable Read Only Memory), 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 홀로그램 메모리, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 반송파, 또는 원하는 정보를 인코딩하기 위해 사용될 수 있고 컴퓨팅 장치(100)가 액세스할 수 있는 기타 임의의 매체를 포함하지만, 이에 국한되지는 않는다. 통신 매체는 일반적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 변조된 데이터 신호(가령, 반송파) 또는 그 밖의 다른 수송 메커니즘으로 된 그 밖의 다른 데이터에 의해 구현될 수 있고, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내 정보를 인코딩하기 위한 방식으로 설정 또는 변경된 하나 이상의 특성 세트를 갖는 신호를 의미한다. 비-제한적 예를 들면, 통신 매체는 유선 매체, 가령 유선 네트워크 또는 직접 배선된 연결, 및 무선 매체, 가령, 음향, 라디오 주파수(RF), 적외선, 및 그 밖의 다른 무선 매체를 포함할 수 있다. 또한, 전술한 것의 임의의 조합이 컴퓨터 판독가능 매체의 범주 내에 포함된다.
메모리(112)는 휘발성 및/또는 비휘발성 메모리의 형태로 된 컴퓨터-저장 매체를 포함한다. 상기 메모리는 이동식, 비이동식, 또는 이들의 조합일 수 있다. 예시적인 하드웨어 장치는 고체 상태 메모리, 하드 드라이브, 광-디스크 드라이브 등을 포함한다. 컴퓨팅 장치(100)는 메모리(112) 또는 I/O 컴포넌트(120)와 같은 다양한 엔티티들로부터 데이터를 판독하는 하나 이상의 프로세서를 포함한다. 프레젠테이션 컴포넌트(들)(116)는 사용자 또는 다른 장치에게 데이터 표시를 제공한다. 예시적인 프레젠테이션 컴포넌트는 디스플레이 장치, 스피커, 인쇄 컴포넌트, 진동 컴포넌트 등을 포함한다.
I/O 포트(118)는 컴퓨팅 장치(100)가 I/O 컴포넌트(120)를 포함하는 다른 장치들에 논리적으로 연결되도록 하며, 이들 중 일부는 내장될 수 있다. 예시적인 컴포넌트는 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너, 인쇄기, 무선 장치 등을 포함한다.
본 발명의 일부 실시예는 플랫폼으로서 동작하는 데이터 센터 내에 고객의 애플리케이션을 개발 및 실행하기 위한 플랫폼을 제공하는 클라우드 서비스 인프라스트럭처 내의 고객의 애플리케이션이 실행되는 테넌트/서비스 모델을 사용하여 서비스(PAAS)로서 구현될 수 있다. 데이터 센터는 가상 머신이 할당될 수 있고 고객 애플리케이션이 실행될 수 있는 다수의 물리적 머신을 포함할 수 있다.
도 2를 참조하면, 본 발명의 실시예에 따른 예시적인 클라우드 컴퓨팅 플랫폼(200)을 나타내는 블록도가 제공된다. 도 2에 도시된 클라우드 컴퓨팅 플랫폼(200)은 하나의 적합한 컴퓨팅 시스템 환경의 예일 뿐이고 본 발명의 실시예의 용도 또는 기능의 범주에 대한 임의의 제한을 제시하려는 것이 아님을 이해할 수 있을 것이다. 예를 들어, 클라우드 컴퓨팅 플랫폼(200)은 공공 클라우드, 사적 클라우드, 또는 전용 클라우드 또는 단순히 구분된 컴퓨팅 장치의 집합일 수 있다. 클라우드 컴퓨팅 플랫폼(200)은 임의의 단일 컴포넌트 또는 본 명세서에 설명된 컴포넌트의 조합에 관한 임의의 종속성 또는 필요조건을 가지는 것으로 해석되어서는 안된다. 또한, 도 2의 다양한 블록이 명확성을 위해 라인으로 도시되어 있으나, 실제로 다양한 컴포넌트를 구분하는 것은 그리 명료하지 않고, 비유적으로, 선들은 더 정확하게는 회색(grey)이고 흐릿(fuzzy)할 것이다. 또한, 임의의 수의 물리적 머신, 가상 머신, 데이터 센터, 역할 인스턴스 또는 이들의 조합이 본 발명의 실시예의 범주 내에서 원하는 기능을 획득하는 데 사용될 수 있다.
클라우드 컴퓨팅 플랫폼(200)은 특정한 서비스 애플리케이션의 역할 인스턴스(214, 216)의 동작을 호스팅하고 지원하도록 구성되는 데이터 센터(202)를 포함한다. 본 명세서에 사용되는 "서비스 애플리케이션"이라는 표현은 포괄적으로는 임의의 소프트웨어 또는 데이터 센터(202)의 상부에서 실행되거나 데이터 센터 내의 저장 위치를 액세스하는 소프트웨어의 일부를 지칭할 수 있다. 실시예에서, 서비스 애플리케이션은 서비스 애플리케이션의 로직 부분을 포함하는 하나 이상의 역할로서 구현된다. 각각의 역할은 특정한 코드 세트를 포함할 수 있다. 각각의 역할(예를 들면, 역할 인스턴스(214 및 216))의 복수의 인스턴스가 데이터 센터(202)에서 실행될 수 있고, 로드 밸런싱은 역할 인스턴스에 걸쳐 메시지를 분산시키는 데 사용될 수 있다. 역할 인스턴스가 유사하고 상호교환가능하도록 지정된 역할에 대한 역할 인스턴스는 동일한 코드를 실행할 수 있다.
일반적으로, 가상 머신(210 및 212)은 고객의 서비스 모델에서 고객에 의해 특정되는 서비스 애플리케이션 및/또는 서비스 정의에 배치되는 요구(예, 로드를 처리하는 양)에 기초하여 서비스 애플리케이션의 역할 인스턴스(214 및 216)에 할당된다. 본 명세서에 사용되는 "가상 머신"이라는 표현은 제한적인 의미가 아니며, 역할 인스턴스(214 및 216)의 기능을 뒷받침하기 위해 프로세싱 유닛에 의해 실행되는 임의의 소프트웨어, 애플리케이션, 운영체제 또는 프로그램을 나타낼 수 있다. 또한, 가상 머신(210, 212)은 처리 용량, 저장 위치 및 역할 인스턴스(214 및 216)를 적절히 지원하기 위한 데이터 센터(202) 내의 다른 자산(assets)을 포함할 수 있다.
동작시에, 가상 머신(210, 212)은 데이터 센터(202)의 물리적 자원(예, 제1 컴퓨팅 장치(204) 및 제2 컴퓨팅 장치(206)) 내에 동적으로 할당되고, 역할 인스턴스(예, 역할 인스턴스(214 및 216))는 현재의 처리 로드를 만족시키기 위해 할당된 가상 머신(210 및 212)에 동적으로 배치된다. 일 예에서, 패브릭 컨트롤러(208)는 가상 머신(210 및 212)을 동적으로 할당하고 데이터 센터(202) 내에 역할 인스턴스(214 및 216)를 배치할 책임이 있다. 예로서, 패브릭 컨트롤러(208)는 어떻게 그리고 언제 가상 머신(210 및 212)을 할당하고 역할 인스턴스(214 및 216)를 가상 머신에 배치하는지에 대한 가이드(guidance)를 제공하기 위한 서비스 정의(예를 들면, 서비스 애플리케이션을 소유하는 고객에 의해 지정됨)에 의존할 수 있다.
전술한 바와 같이, 가상 머신(210 및 212)은 제1 컴퓨팅 장치(204) 및 제2 컴퓨팅 장치(206) 내에 동적으로 할당될 수 있다. 본 발명의 실시예에 따르면, 컴퓨팅 장치(204 및 206)는 도 1의 컴퓨팅 장치(100)와 같은 임의의 형태의 컴퓨팅 장치를 나타낼 수 있다. 컴퓨팅 장치(204 및 206)는 가상 머신(210 및 212)의 동작을 호스팅하고 지원하며, 동시에 상이한 고객에 의해 소유되는 서로 다른 서비스 애플리케이션의 역할 인스턴스를 지원하는 것을 포함하여, 데이터 센터(202)의 다른 테넌트를 지원하기 위해 분할되는 다른 가상 머신을 호스팅한다.
일 측면에서, 역할 인스턴스(214 및 216)는 클라우드 컴퓨팅 플랫폼(200)의 콘텍스트 내에서 동작하고, 이에 따라 가상 머신(210 및 212) 사이에 동적으로 이루어지는 연결을 통해 내부적으로 통신할 수 있고, 원격 네트워크의 자원에 대한 물리적 네트워크 토폴로지를 통해 외부적으로 통신할 수 있다. 내부 연결은 데이터 센터(202)의 물리적 자원에 걸쳐 분산된 가상 머신(210 및 212)을 네트워크 클라우드(도시되지 않음)를 통해 상호연결하는 것을 포함할 수 있다. 네트워크 클라우드는 이러한 자원을 상호연결하여, 그들 사이의 통신을 설정하기 위해 역할 인스턴스가 다른 역할 인스턴스의 위치를 인식할 수 있도록 한다. 또한, 네트워크 클라우드는 서비스 애플리케이션의 역할 인스턴스(214 및 216)를 연결하는 채널에 대해 이러한 통신을 설정할 수 있다.
이제 도 3으로 돌아가서, 애플리케이션(302)과 같은 원격 애플리케이션이 네트워크(306)를 통해 데이터 센터(304)에서 실행되는 서비스 애플리케이션에 의해 제공되는 서비스에 액세스할 수 있고, 네트워크는 하나 이상의 LAN(local area network) 및/또는 WAN(wide area network)을 포함할 수 있으나 이에 한정되는 것은 아니다. 이러한 네트워킹 환경은 사무실, 기업 범위 컴퓨터 네트워크, 인트라넷 및 인터넷에서 흔히 사용된다. 도 3에 도시된 것과 같이, 복수의 역할 인스턴스(즉, 역할 인스턴스(310), 역할 인스턴스(312), 역할 인스턴스(314) 및 역할 인스턴스(316))가 데이터 센터(304)에서 실행되는 서비스 애플리케이션의 특정한 역할을 위한 코드를 제공한다. 본 발명의 실시예에 따르면, 애플리케이션(302)과 같은 애플리케이션은, 애플리케이션으로부터의 메시지가 역할 인스턴스(310, 312, 314, 316)에 걸쳐 분산되는 로드 밸런싱을 통해 역할 인스턴스(310, 312, 314, 316)에 액세스할 수 있고, 또는 역할 인스턴스(310, 312, 314, 316) 중 하나에 직접 액세스할 수 있다.
역할 인스턴스(310, 312, 314, 316)에 대한 로드 밸런싱 및 직접적인 역할 인스턴스 액세스 모두를 제공하기 위해, 본 발명의 실시예는 역할 인스턴스(310, 312, 314, 316)에 대한 로드 밸런싱된 엔드포인트 및 역할 인스턴스(310, 312, 314, 316) 각각에 대한 인스턴스 엔드포인트 양자를 이용한다. 구체적으로, 공공 IP 어드레스, 전송 프로토콜, 고유 포트 번호의 조합이 로드 밸런싱된 엔드포인트로서 역할 인스턴스(310, 312, 314, 316)에 할당된다. 로드 밸런싱된 엔드포인트를 타겟으로 하는 애플리케이션(예를 들면, 애플리케이션(302))으로부터의 메시지가 데이터 센터(304)의 로드 밸런서(308)에 의해 다양한 인스턴스 엔드포인트로 멀티플렉싱(multiplex)된다. 예를 들어, http://customer.domain.name:80이 역할 인스턴스(310, 312, 314, 316)에 의해 제공되는 역할을 위한 로드 밸런싱된 엔드포인트이며, 이러한 URL로의 메시지는 이용가능한 역할 인스턴스(310, 312, 314, 316) 사이에 로드 밸런서(308)에 의해 분산된다. 임의의 로드 밸런싱 알고리즘이 로드 밸런서(308)에 의해 사용되어 다양한 역할 인스턴스(310, 312, 314, 316)로의 트랙픽을 분산시킬 수 있다는 것을 이해해야 한다.
로드 밸런싱된 엔드포인트를 역할 인스턴스(310, 312, 314, 316)에 배정하는 것에 더하여, 인스턴스 엔드포인트가 역할 인스턴스(310, 312, 314, 316) 각각에 배정된다. 각각의 인스턴스 엔드포인트는 공공 IP 어드레스, 전송 프로토콜 및, 역할 인스턴스(310, 312, 314, 316)들 중 하나에 매핑하는 고유 포트 번호의 조합을 포함한다. 예를 들어, IP:Port1이 역할 인스턴스(310)에 대한 인스턴스 엔드포인트로서 할당될 수 있고, IP:Port2가 역할 인스턴스(312)에 대한 인스턴스 엔드포인트로서 할당될 수 있으며, IP:Port3이 역할 인스턴스(314)에 대한 인스턴스 엔드포인트로서 할당될 수 있고, IP:Port4가 역할 인스턴스(316)에 대한 인스턴스 엔드포인트로서 할당될 수 있다. 로드 밸런싱된 엔드포인트에 관해 사용되는 동일한 공공 IP 어드레스는 인스턴스 엔드포인트를 위한 공공 IP 어드레스로서 사용될 수 있다. 예를 들어, 일부 실시예에서, IPv4 어드레스가 사용될 수 있다. 인스턴스 엔드포인트를 포함하는 애플리케이션(302)으로부터의 메시지가 로드 밸런싱 없이 인스턴스 엔드포인트와 대응하는 역할 인스턴스로 라우팅된다. 예를 들어, 애플리케이션(302)으로부터의 메시지가 IP:Port1을 포함하는 경우에, 메시지는 역할 인스턴스로 직접 라우팅된다.
일부 실시예에서, 동일한 역할 인스턴스가 복수의 인스턴스 엔드포인트를 가질 수 있다. 이러한 실시예에서, 서비스 모델이 각각의 역할 인스턴스에 제공될 인스턴스 엔드포인트의 수를 특정할 수 있다. 이후에 데이터 센터는 어드레스, 전송 프로토콜, 포트 조합을 각각의 역할을 위해 각각 요청된 인스턴스 엔드포인트에 할당한다.
로드 밸런서(308)는 소프트웨어, 하드웨어 또는 이들의 임의의 조합으로 구현될 수 있다. 실시예에서, 로드 밸런서(308)는 로드 밸런싱된 엔드포인트 및 인스턴스 엔드포인트 모두로 프로그램된다. 이는 대응하는 역할 인스턴스에 각각의 인스턴스 엔드포인트를 매핑하는 정보와 함께 역할 인스턴스(310, 312, 314, 316)의 그룹에 로드 밸런싱된 엔드포인트를 매핑하는 정보를 포함할 수 있다. 이와 같이, 로드 밸런서(308)는 인스턴스 엔드포인트를 사용하는 트래픽을 직접 포트를 통해 대응하는 역할 인스턴스로, 그리고 로드 밸런싱 알고리즘에 기초하여 로드 밸런싱된 엔드포인트를 통해 역할 인스턴스(310, 312, 314, 316) 중 하나로 보내는 데 충분한 정보를 가진다.
이제, 도 4를 참조하면, 본 발명의 실시예에 따라 로드 밸런싱된 엔드포인트 및 인스턴스 엔드포인트를 할당하고 메시지를 역할 인스턴스로 보내는 데이터 센터를 포함하는 전체 시스템(400)을 나타내는 블록도가 제공된다. 처음으로, 고객은 자신이 직접적인 연결(direct connectivity)을 가지기를 원하는 각각의 역할에 대해 서비스 정의의 일부로서 인스턴스 엔드포인트를 정의할 수 있다. 서비스 정의가 인증될 수 있고, 서비스 정의를 포함하는 대응하는 서비스 패키지(404)가 생성된다.
서비스 정의는 본 발명의 다양한 실시예에 따라 인스턴스 엔드포인트의 용도 및 복수의 다른 방식으로의 포트 할당을 특정할 수 있다. 예를 들어, 일부 실시예에서, 서비스 정의는 고객이 역할에 대한 인스턴스 엔드포인트를 사용하기 원한다는 것을 간단히 특정할 수 있고, 데이터 센터(402)는 포트를 역할 인스턴스에 할당하는 것을 처리할 수 있다. 일부 실시예에서, 데이터 센터(402)는 서로 다른 포트 할당 스킴(port allocation schemes)(예, 랜덤 포트 할당)을 제공할 수 있고, 고객은 서비스 정의에 포트 할당 스킴을 특정하는 선택을 하거나 하지 않을 수 있다. 추가 실시예에서, 고객은 포트 번호를 인스턴스 엔드포인트에 할당하기 위해 사용하기 위한 서비스 정의에 포트 범위(port range)를 특정할 수 있다. 예를 들어, 서비스 정의는 5000-5099의 포트 범위를 특정할 수 있고, 포트(5000)는 제1 역할 인스턴스에 할당될 수 있으며, 포트(5099)는 100번째 역할 인스턴스에 할당될 수 있다.
서비스 정의를 설정하고 서비스 패키지(404)를 생성한 후에, 서비스 패키지(404)가 개발자 포털(406)을 통해 또는 SDK(408)를 사용하여 데이터 센터(402)에서 고객의 가입에 관해 사용될 수 있다. 프론트엔드(410)는 서비스 정의를 검증할 수 있고 사용(deployment)을 위해 이를 데이터 센터 패브릭(data center fabric)(412)으로 전달할 수 있다.
패브릭(412)은, 서비스 정의에 따라 필수 자원을 할당하고 서비스 정의에 기초하여 저장소(416)에 대한 목표 상태(goal state)를 유지할 수 있는 테넌트 매니저(414)를 포함한다. 또한, 테넌트 매니저(414)는 역할 인스턴스에 인스턴스 엔드포인트를 제공하기 위한 서비스 정의에 따라 포트 할당을 수행하고, 저장소(416)에 대한 목표 상태를 유지한다.
데이터 센터 매니저(418)는 인스턴스 엔드포인트를 포함하는 목표 상태를 사용하여 로드 밸런서(420)를 프로그램한다. 추가로, 패브릭(412)의 노드 목표 상태 구동 워크플로우(node goal state driving workflow of the fabric)는 목표 상태(예, OS 디플로이먼트(OS deployment), 부트스트래핑 역할 등)에 대한 구동 자원(driving resources)을 조정한다.
역할 인스턴스(422)가 준비 상태에 있으면, 고객의 애플리케이션(424)은 로드 밸런서(420)를 통해 개별적인 역할 인스턴스 각각에 연결할 수 있다. 일부의 경우에, 애플리케이션(422)은 로드 밸런싱된 엔드포인트를 사용하여 메시지를 발행할 수 있다. 이러한 경우에, 로드 밸런서(420)는 로드 밸런싱 알고리즘을 사용하여 메시지를 역할 인스턴스(422) 중 하나로 보낸다. 대안으로, 애플리케이션(424)은 특정한 역할 인스턴스에 액세스하기 위해 특정한 인스턴스 엔드포인트(즉, 특정한 역할 인스턴스에 매핑된 IP:port 조합)를 사용하여 메시지를 발행할 수 있다.
일부 실시예에서, 애플리케이션(424)은 SDK를 통해 프론트 엔드(410)를 호출하여 특정한 역할 인스턴스가 액세스되는 인스턴스 엔드포인트를 결정할 수 있다. 프론트 엔드(410)는 테넌트 매니저(414)를 호출하여 이러한 정보를 검색하고 이들을 다시 애플리케이션(424)으로 넘겨줄 수 있다. 로드 밸런서(420)가 특정한 인스턴스 엔드포인트를 사용하여 메시지를 수신하는 경우에, 로드 밸런서(420)는 로드 밸런서(420)에 프로그램된 인스턴스 엔드포인트 정보에 기초하여 메시지를 라우팅하는 역할 인스턴스(422)로부터 정확한 역할 인스턴스를 식별할 수 있다. 예를 들어, 실시예에서, 로드 밸런서(420)는 일반용 엔드포인트(public-facing endpoint)를 데이터 센터(402) 내의 역할 인스턴스에 대한 직접적인 IP 매핑(direct IP mapping)에 매핑하는 매핑 정보를 포함할 수 있다.
이제, 도 5도 돌아가서, 본 발명의 실시예에 따라 역할 인스턴스로의 직접 트래픽 및 로드 밸런싱된 트래픽을 용이하게 하기 위해 할당된 인스턴스 엔드포인트 및 로드 밸런싱된 엔드포인트를 가지는 역할 인스턴스를 이용하여 데이터 센터를 구성하는 방법(500)을 도시하는 흐름도가 제공된다. 블록(502)에 도시된 것과 같이, 처음으로, 데이터 센터에서 서비스 정의가 고객으로부터 수신된다. 서비스 정의는 요청된 자원 및 인스턴스화하기 위한 역할 인스턴스와 같은 고객의 서비스 애플리케이션에 관한 다양한 정보를 특정할 수 있다. 추가로, 서비스 정의는 데이터 센터가 인스턴스 엔트포인트를 서비스 애플리케이션의 역할에 대한 역할 인스턴스에 배정함을 특정할 수 있다.
블록(504)에 도시된 것과 같이, 데이터 센터는 서비스 정의에 따라 데이터 센터 자원을 할당한다. 이는 데이터 센터 내의 물리적 머신에 가상 머신을 할당하는 것 및 역할 인스턴스를 가상 머신에 할당하는 것을 포함할 수 있다. 또한, 데이터 센터는 블록(506)에 도시된 것과 같이, 서비스 정의에 따라 인스턴스 엔드포인트를 역할 인스턴스에 할당한다. 이는 고유 포트 번호를 역할 인스턴스에 할당하여 공공 IP 어드레스, 전송 프로토콜 및 고유 포트 번호의 조합으로서 인스턴스 엔드포인트를 생성하는 것을 포함할 수 있다. 다양한 포트 할당 스킴 중 임의의 스킴이 데이터 센터에 의해 사용될 수 있다. 일부 실시예에서, 고객은 데이터 센터에 의해 사용될 포트 할당 스킴을 서비스 정의에 특정할 수 있는 반면, 다른 실시예에서는, 포트 할당 스킴이 서비스 정의에 특정될 수 없고 데이터 센터가 어느 스킴을 사용할 것인지를 선택할 수 있다.
인스턴스 엔드포인트를 각각의 역할 인스턴스에 배정하는 것에 추가하여, 데이터 센터는 로드 밸런싱된 엔드포인트를 역할 인스턴스의 그룹에 배정한다(블록(508)에 도시됨). 인스턴스 엔드포인트는 외부 애플리케이션이 로드 밸런싱 없이 개별적인 역할 인스턴스에 직접 액세스하는 것을 허용하나, 로드 밸런싱된 엔드포인트는 역할 인스턴스에 걸쳐 애플리케이션 메시지가 로드 밸런싱되어 분산되는 것을 허용한다.
데이터 센터의 로드 밸런서는 인스턴스 엔드포인트 및 로드 밸런싱된 엔드포인트에 관한 정보 내에서 프로그램된다(블록(510)에 도시됨). 또한, 인스턴스 엔드포인트 및 로드 밸런싱된 엔드포인트가 애플리케이션에 노출된다(블록(512)에 도시됨). 인스턴스 엔드포인트 및 로드 밸런싱된 엔드포인트는 복수의 다른 방식으로 애플리케이션에 노출될 수 있다. 일부 실시예에서, 인스턴스 엔드포인트 및 로드 밸런싱된 엔드포인트는 API를 통해 노출될 수 있다. API는 역할 인스턴스를 인스턴스 엔드포인트에 매핑하는 매핑 정보를 제공할 수 있다. 따라서, 애플리케이션은 인스턴스 엔드포인트 또는 로드 밸런싱된 엔드포인트를 사용하여 메시지를 발행하여, 역할 인스턴스를 직접 엑세스하거나(인스턴스 엔드포인트를 사용함) 로드 밸런싱을 통해 임의의 역할 인스턴스를 액세스할 수 있다(로드 밸런싱된 엔드포인트를 사용함).
도 6으로 돌아가서, 본 발명의 일 실시예에 따라, 로드 밸런서를 인스턴스 엔드포인트 및 로드 밸런싱된 엔드포인트를 사용하여 프로그래밍하고, 메시지를 역할 인스턴스로 라우팅하는 방법(600)을 도시하는 흐름도가 제공된다. 블록(602)에 도시된 것과 같이, 초기에, 고객의 서비스 애플리케이션의 특정한 역할에 대응하는 역할 인스턴스의 그룹에 대한 엔드포인트 정보가 로드 밸런서를 프로그램하기 위해 로드 밸런서에서 수신된다. 엔드포인트 정보는 역할 인스턴스에 대한 인스턴스 엔드포인트를 식별한다. 실시예에서, 각각의 인스턴스 엔드포인트는 IP 어드레스, 전송 프로토콜 및 고유 포트 번호의 조합을 포함할 수 있다. 또한, 엔드포인트 정보는 역할 인스턴스에 걸친 로드 밸런싱을 위한 로드 밸런싱된 엔드포인트를 포함한다. 실시예에서, 로드 밸런싱된 엔드포인트는 IP 어드레스, 전송 프로토콜 및 다른 고유 포트 번호의 조합을 포함할 수 있다.
블록(604)에 도시된 것과 같이, 로드 밸런서는 애플리케이션으로부터 제1 인스턴스 엔드포인트를 포함하는 제1 메시지를 수신한다. 로드 밸런서를 프로그램하는 데 사용되는 엔드포인트 정보에 기초하여, 로드 밸런서는 제1 인스턴스 엔드포인트와 대응하는 제1 역할 인스턴스를 식별한다(블록(606)에 도시됨). 또한, 로드 밸런서는 제1 메시지를 제1 인스턴스 엔드포인트로 직접 라우팅한다(블록(608)에 도시됨).
또한, 로드 밸런서는 애플리케이션으로부터 로드 밸런싱된 엔드포인트를 포함하는 제2 메시지를 수신한다(블록(610)에 도시됨). 로드 밸런서를 프로그램하는 데 사용되는 엔드포인트 정보에 기초하여, 로드 밸런서는 로드 밸런싱된 엔드포인트를 인식하고, 로드 밸런싱 알고리즘을 사용하여 특정한 역할 인스턴스를 선택한다(블록(612)에 도시됨). 로드 밸런서는 이후에 제2 메시지를 선택된 역할 인스턴스로 보낸다(블록(614)에 도시됨).
이해할 수 있는 바와 같이, 본 발명의 실시예는 고유 포트 번호를 역할 인스턴스에 할당함으로써 로드 밸런싱 및 직접적인 역할 인스턴스 액세스를 사용하여 데이터 센터에서의 역할 인스턴스 도달성을 제공한다. 본 발명은 특정한 실시예에 관해 설명되었으나, 이는 모든 면에서 제한을 위한 것이라기보다는 설명을 위한 것이다. 본 발명의 범주를 벗어나지 않는 범위에서 본 발명이 관련된 대안적인 실시예도 본 발명이 속하는 기술분야의 당업자에게 자명할 것이다.
전술한 바로부터, 본 발명은 상기 시스템 및 방법에 자명하고 고유한 다른 효과와 함께, 앞서 설명한 모든 목적 및 목표를 이루도록 조정된 것임을 알 수 있다. 특정 특징들 및 서브컴비네이션들이 유용하고, 이들은 다른 특징들 및 서브컴비네이션들과 관계없이 이용될 수 있음을 이해할 것이다. 이는 특허청구범위에 의해 그리고 그 범위 내에서 고려된다.

Claims (10)

  1. 하나 이상의 컴퓨팅 장치에 의해 사용되는 경우에 상기 하나 이상의 컴퓨터 장치로 하여금 방법을 수행하게 하는 컴퓨터 사용가능 명령어가 저장된 하나 이상의 컴퓨터 판독가능 저장 매체로서,
    상기 방법은,
    호스팅 환경(hosting environment)에서 복수의 역할 인스턴스(role instance)를 제공하는 단계 - 각각의 역할 인스턴스는 상기 호스팅 환경에서 실행되는 고객 애플리케이션을 위한 코드를 포함함 - 와,
    상기 복수의 역할 인스턴스에 복수의 인스턴스 엔드포인트(instance endpoints)를 배정하는 단계 - 각각의 인스턴스 엔드포인트는 제1 IP 어드레스, 제1 전송 프로토콜 및 고유 포트 번호의 조합을 포함하고 상기 역할 인스턴스 중 하나에 매핑함 - 와,
    상기 인스턴스 엔드포인트를 애플리케이션에 노출하여 상기 애플리케이션으로 하여금 특정한 역할 인스턴스에 매핑하는 인스턴스 엔드포인트를 사용하여 상기 특정한 역할 인스턴스에 액세스하게 하는 단계
    를 포함하는 컴퓨터 판독가능 저장 매체.
  2. 제1항에 있어서,
    상기 방법은,
    상기 복수의 역할 인스턴스에 로드 밸런싱된 엔드포인트(load balanced endpoint)를 배정하는 단계 - 상기 로드 밸런싱된 엔드포인트는 제2 IP 어드레스, 제2 전송 프로토콜 및 다른 고유 포트 번호의 조합을 포함함 - 와,
    상기 로드 밸런싱된 엔드포인트를 상기 애플리케이션에 노출하여 상기 애플리케이션으로 하여금 상기 로드 밸런싱된 엔드포인트를 사용하여 로드 밸런싱을 통해 상기 역할 인스턴스 중 임의의 하나에 액세스하게 하는 단계
    를 더 포함하는 컴퓨터 판독가능 저장 매체.
  3. 제2항에 있어서,
    상기 제1 및 제2 IP 어드레스는 동일한
    컴퓨터 판독가능 저장 매체.
  4. 제2항에 있어서,
    상기 방법은
    상기 인스턴스 엔드포인트와 상기 로드 밸런싱된 엔드포인트를 사용하여 로드 밸런서(load balance)를 프로그램하는 단계
    를 더 포함하는 컴퓨터 판독가능 저장 매체.
  5. 제1항에 있어서,
    상기 방법은,
    상기 고객 애플리케이션에 대한 서비스 정의(service definition)를 수신하는 단계와,
    상기 서비스 정의를 검증하는 단계와,
    상기 서비스 정의에 따라 호스팅 환경 자원(hosting environment resources)을 할당하는 단계
    를 더 포함하는 컴퓨터 판독가능 저장 매체.
  6. 제5항에 있어서,
    상기 서비스 정의는 상기 역할 인스턴스에 포트 번호를 배정하기 위해 상기 호스팅 환경에 의해 사용되는 포트 할당 스킴(port allocation scheme)을 특정하는
    컴퓨터 판독가능 저장 매체.
  7. 제5항에 있어서,
    상기 서비스 정의는 상기 역할 인스턴스에 포트 번호를 할당하기 위한 포트 범위(port range)를 특정하는
    컴퓨터 판독가능 저장 매체.
  8. 제1항에 있어서,
    상기 인스턴스 엔드포인트는 API에 의해 상기 애플리케이션에 노출되고,
    상기 API는 역할 인스턴스를 인스턴스 엔드포인트에 매핑하는 매핑 정보를 제공하는
    컴퓨터 판독가능 저장 매체.
  9. 로드 밸런서가 로드 밸런싱된 메시지 및 인스턴스 메시지를 호스팅 환경의 역할 인스턴스에 보내는 방법으로서,
    상기 방법은,
    상기 호스팅 환경에서 실행되는 서비스 애플리케이션의 역할을 위한 복수의 역할 인스턴스에 관한 엔드포인트 정보를 수신하는 단계 - 상기 엔드포인트 정보는 상기 복수의 역할 인스턴스에 대한 복수의 인스턴스 엔드포인트를 식별하고, 각각의 인스턴스 엔드포인트는 제1 IP 어드레스, 제1 전송 프로토콜 및 고유 포트 번호의 조합을 포함하고 상기 역할 인스턴스 중 하나에 매핑하며, 상기 엔드포인트 정보는 또한 상기 복수의 역할 인스턴스에 대한 로드 밸런싱된 엔드포인트를 식별하고, 상기 로드 밸런싱된 엔드포인트는 제2 IP 어드레스, 제2 전송 프로토콜 및 다른 고유 포트 번호의 조합을 포함함 - 와,
    상기 복수의 인스턴스 엔드포인트 중 제1 인스턴스 엔드포인트를 포함하는 제1 메시지를 애플리케이션으로부터 수신하는 경우에, 상기 제1 메시지를 상기 제1 인스턴스 엔드포인트와 대응하는 제1 역할 인스턴스로 보내는 단계와,
    상기 로드 밸런싱된 엔드포인트를 포함하는 제2 요청을 상기 애플리케이션으로부터 수신하는 경우에, 로드 밸런싱 알고리즘(load-balancing algorithm)에 기초하여 상기 제2 요청을 상기 역할 인스턴스 중 하나로 보내는 단계
    를 포함하는 방법.
  10. 클라우드 컴퓨팅 플랫폼을 위한 시스템으로서,
    고객 애플리케이션을 위한 코드를 제공하는 복수의 역할 인스턴스를 실행하는 복수의 가상 머신을 호스팅하는 하나 이상의 물리적 머신과,
    고유 포트 번호를 각각의 역할 인스턴스에 할당하여 각각의 역할 인스턴스에 대한 인스턴스 엔드포인트를 생성하는 테넌트 매니저(tenant manger) - 각각의 인스턴스 엔드포인트는 IP 어드레스, 전송 프로토콜 및 상기 고유 포트 번호 중 하나의 포트 번호의 조합을 포함함 - 와,
    로드 밸런싱된 엔드포인트와 상기 인스턴스 엔드포인트를 사용하여 프로그램된 로드 밸런서 - 상기 로드 밸런서는 애플리케이션 메시지를 인스턴스 엔드포인트를 사용하여 직접 대응하는 역할 인스턴스로 라우팅하고, 로드 밸런싱 알고리즘에 기초하여 애플리케이션 메시지를 상기 로드 밸런싱된 엔드포인트를 사용하여 역할 인스턴스로 라우팅하도록 구성됨 -
    를 포함하는 시스템.
KR1020147014403A 2011-11-28 2012-11-15 데이터 센터에서의 역할 인스턴스 도달성 KR20140096084A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/305,105 US20130138813A1 (en) 2011-11-28 2011-11-28 Role instance reachability in data center
US13/305,105 2011-11-28
PCT/US2012/065377 WO2013081848A1 (en) 2011-11-28 2012-11-15 Role instance reachability in data center

Publications (1)

Publication Number Publication Date
KR20140096084A true KR20140096084A (ko) 2014-08-04

Family

ID=47857988

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147014403A KR20140096084A (ko) 2011-11-28 2012-11-15 데이터 센터에서의 역할 인스턴스 도달성

Country Status (6)

Country Link
US (1) US20130138813A1 (ko)
EP (1) EP2786251B1 (ko)
JP (1) JP2015503158A (ko)
KR (1) KR20140096084A (ko)
CN (1) CN102984254A (ko)
WO (1) WO2013081848A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170046786A (ko) * 2014-12-08 2017-05-02 후아웨이 테크놀러지 컴퍼니 리미티드 리소스 관리 방법, 호스트 및 엔드포인트
WO2021210801A1 (ko) * 2020-04-14 2021-10-21 삼성전자 주식회사 이동 통신 네트워크에서 동적이고 효율적인 로드 밸런싱을 위한 방법 및 장치

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104410712B (zh) * 2014-12-16 2018-09-11 国家电网公司 应用实例管理方法、用户访问请求处理方法及系统
CA2984191C (en) * 2015-04-30 2021-07-27 Amazon Technologies, Inc. Managing load balancers associated with auto-scaling groups
CN104780106B (zh) * 2015-04-30 2018-05-08 新华三技术有限公司 多实例实现方法及装置
EP3400497B1 (en) * 2016-01-07 2020-12-23 Vapor Io Inc. Data center management
US11269889B1 (en) * 2018-05-09 2022-03-08 Christopher James Aversano Graphical user interface driven programming development environment
CN110535964B (zh) * 2019-09-03 2021-12-14 北京首都在线科技股份有限公司 基于Paas连接器实现的数据处理方法及装置
CN111930392B (zh) * 2020-07-09 2024-02-23 北京皮尔布莱尼软件有限公司 一种应用服务部署方法、计算设备及可读存储介质
CN112685409B (zh) * 2020-12-24 2024-07-02 北京浪潮数据技术有限公司 Paas应用服务拓扑生成方法、装置及可读存储介质

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06324978A (ja) * 1993-05-14 1994-11-25 Sumitomo Electric Ind Ltd サーバプログラムのポート番号の割当て方式
US6643287B1 (en) * 1999-11-24 2003-11-04 Pluris, Inc. Apparatus and method for forwarding encapsulated data packets on a network having multiple links between nodes
US6661799B1 (en) * 2000-09-13 2003-12-09 Alcatel Usa Sourcing, L.P. Method and apparatus for facilitating peer-to-peer application communication
US7333482B2 (en) * 2000-12-22 2008-02-19 Interactive People Unplugged Ab Route optimization technique for mobile IP
US20030074467A1 (en) * 2001-10-11 2003-04-17 Oblak Sasha Peter Load balancing system and method for data communication network
US8224985B2 (en) * 2005-10-04 2012-07-17 Sony Computer Entertainment Inc. Peer-to-peer communication traversing symmetric network address translators
US20050265252A1 (en) * 2004-05-27 2005-12-01 International Business Machines Corporation Enhancing ephemeral port allocation
CN100525202C (zh) * 2004-05-28 2009-08-05 中兴通讯股份有限公司 一种基于h.323协议的私网终端向网守注册的方法
CN1299476C (zh) * 2004-05-28 2007-02-07 中兴通讯股份有限公司 一种h.323代理服务器代理网络地址转换后的终端向网守注册的方法
JP4672405B2 (ja) * 2005-03-17 2011-04-20 パナソニック株式会社 通信システム、情報処理システム、接続サーバ、処理サーバ、情報処理装置、及び情報処理方法
US20070070996A1 (en) * 2005-09-26 2007-03-29 Oran David R Port hopping scheme for peer-to-peer connections
US20070276920A1 (en) * 2006-05-12 2007-11-29 Daniel Buchmann Consistency of routing rules in distributed system landscapes
US8336078B2 (en) * 2006-07-11 2012-12-18 Fmr Corp. Role-based access in a multi-customer computing environment
CN101127759B (zh) * 2006-08-15 2010-07-07 华为技术有限公司 一种无源光网络数据收发方法、装置及系统
US7904508B2 (en) * 2008-10-24 2011-03-08 Microsoft Corporation Providing functionality to client services by implementing and binding contracts
US9300532B2 (en) * 2008-10-24 2016-03-29 Microsoft Technology Licensing, Llc Automating deployment of service applications by exposing hosting environment constraints
US8392915B2 (en) * 2008-11-19 2013-03-05 Oracle International Corporation Efficient volume manager hot swapping
US7979551B2 (en) * 2009-02-04 2011-07-12 Microsoft Corporation Enhancing availability of remote applications
JP5352367B2 (ja) * 2009-07-27 2013-11-27 株式会社エヌ・ティ・ティ・データ 仮想マシン起動端末および仮想マシン起動プログラム
US8310950B2 (en) * 2009-12-28 2012-11-13 Oracle America, Inc. Self-configuring networking devices for providing services in a nework

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170046786A (ko) * 2014-12-08 2017-05-02 후아웨이 테크놀러지 컴퍼니 리미티드 리소스 관리 방법, 호스트 및 엔드포인트
US20170199767A1 (en) 2014-12-08 2017-07-13 Huawei Technologies Co., Ltd. Resource management method, host, and endpoint
KR101880407B1 (ko) * 2014-12-08 2018-07-19 후아웨이 테크놀러지 컴퍼니 리미티드 리소스 관리 방법, 호스트 및 엔드포인트
US10489207B2 (en) 2014-12-08 2019-11-26 Huawei Technologies Co., Ltd. System for resource management using performance specification and description information of the process
US11379265B2 (en) 2014-12-08 2022-07-05 Huawei Technologies Co., Ltd. Resource management method, host, and endpoint based on performance specification
WO2021210801A1 (ko) * 2020-04-14 2021-10-21 삼성전자 주식회사 이동 통신 네트워크에서 동적이고 효율적인 로드 밸런싱을 위한 방법 및 장치

Also Published As

Publication number Publication date
WO2013081848A1 (en) 2013-06-06
EP2786251A4 (en) 2015-05-20
EP2786251A1 (en) 2014-10-08
JP2015503158A (ja) 2015-01-29
CN102984254A (zh) 2013-03-20
US20130138813A1 (en) 2013-05-30
EP2786251B1 (en) 2017-08-23

Similar Documents

Publication Publication Date Title
KR20140096084A (ko) 데이터 센터에서의 역할 인스턴스 도달성
US10375015B2 (en) Methods and system for allocating an IP address for an instance in a network function virtualization (NFV) system
US12068889B2 (en) Scalable tenant networks
US20220377045A1 (en) Network virtualization of containers in computing systems
JP6670025B2 (ja) クラウド・ネットワーキングのためのマルチテナント認識型動的ホスト構成プロトコル(dhcp)機構
US11108740B2 (en) On premises, remotely managed, host computers for virtual desktops
US10735499B2 (en) Virtual network interface multiplexing
KR101774326B1 (ko) 네트워크들을 통한 접속을 보장하기 위한 오버레이 사용
EP2864875B1 (en) Method and apparatus for ip commissioning and decom-missioning in orchestrated computing environments
US9143582B2 (en) Interoperability for distributed overlay virtual environments
US10129096B2 (en) Commissioning/decommissioning networks in orchestrated or software-defined computing environments
US20130185404A1 (en) Efficient port management for a distributed network address translation
US10785158B1 (en) System and method for provisioning both IPV4 and IPV6 internet service and load balancer service
KR20100126280A (ko) 관리성 및 효율적인 확장 배포를 위한 애플리케이션 기술 시스템 및 방법
US10237235B1 (en) System for network address translation
US9055117B1 (en) Distributed network address translation
JP6905990B2 (ja) オーケストレーションされた計算環境又はソフトウェアで定義された計算環境におけるネットワークに対する委任/委任解除
CN109067573B (zh) 一种流量调度方法及装置
US11283648B2 (en) Resilient tunnels

Legal Events

Date Code Title Description
N231 Notification of change of applicant
E902 Notification of reason for refusal
E601 Decision to refuse application