KR20140138871A - 고객 하드웨어에 대한 플랫폼들의 인프라스트럭쳐 배치에 의한 장소 이동 - Google Patents

고객 하드웨어에 대한 플랫폼들의 인프라스트럭쳐 배치에 의한 장소 이동 Download PDF

Info

Publication number
KR20140138871A
KR20140138871A KR1020147028141A KR20147028141A KR20140138871A KR 20140138871 A KR20140138871 A KR 20140138871A KR 1020147028141 A KR1020147028141 A KR 1020147028141A KR 20147028141 A KR20147028141 A KR 20147028141A KR 20140138871 A KR20140138871 A KR 20140138871A
Authority
KR
South Korea
Prior art keywords
platform
identified
customer
request
hardware
Prior art date
Application number
KR1020147028141A
Other languages
English (en)
Other versions
KR101629596B1 (ko
Inventor
에제키엘 제이 제이 크루그릭
Original Assignee
엠파이어 테크놀로지 디벨롭먼트 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 filed Critical 엠파이어 테크놀로지 디벨롭먼트 엘엘씨
Publication of KR20140138871A publication Critical patent/KR20140138871A/ko
Application granted granted Critical
Publication of KR101629596B1 publication Critical patent/KR101629596B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/119Details of migration of file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Telephonic Communication Services (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Computer And Data Communications (AREA)

Abstract

장소 이동에 관련된 기술들이 일반적으로 설명된다. 일부 예들에서, 플랫폼 고객과 연관된 소프트웨어 및/또는 데이터는 새로운 플랫폼으로 "이동될" 수 있는 한편 플랫폼 고객의 소프트웨어 및/또는 데이터가 동일한 하드웨어에 남아 있는 것을 허용할 수 있다. 데이터 센터 및/또는 서비스형 인프라스트럭쳐 (IaaS) 제공자는, 예를 들어, 요청 시에 하드웨어 식별자들을 제공하며, 요청 시에 플랫폼 식별자들을 제공하며, 요청 시에 플랫폼 호환성 정보를 제공하고/하거나, 장소 이동 동작들에 대한 플랫폼을 승인하며, 장소 이동 하드웨어에 플랫폼 모듈들을 배치하며, 장소 이동 동작들 동안 사용자 세션 지원을 제공하고/하거나, 보안 동작들을 수행함으로써, 장소 이동을 지원하도록 구성될 수도 있다.

Description

장소 이동{MIGRATION IN PLACE}
본원에서 달리 표시되지 않는 한, 본 섹션에서 설명된 소재들은 본 출원에서의 청구항들에 대한 선행 기술이 아니고 본 섹션에 포함됨으로 인해 선행기술이 되는 것으로 인정되지 않는다.
주 컴퓨터 이용은 개별적으로 관리되는, 독립형 컴퓨팅 디바이스들에서 네트워크 접속을 통해 소프트웨어 및/또는 데이터에 액세스하는 접속된 디바이스들로 진화한다. "클라우드 컴퓨팅" 은 컴퓨팅 자원들이 네트워크 접속을 통해 액세스될 수도 있는 컴퓨팅 모델을 지칭하고, 네트워크로부터 이용가능한 자원들은 "클라우드에서" 라고 지칭될 수도 있다.
네트워크 접속 뒤에, "클라우드" 는 종종 전문적으로 관리되는 하드웨어 및 소프트웨어를 포함할 수도 있다. 데이터 센터 오퍼레이터는 하드웨어 인프라스트럭쳐 그 자체, 예를 들어, 물리적 구조 내에 있고 프로세서들, 메모리, 케이블류, 및 냉각 시스템들을 포함하는 서버들의 랙 (rack) 들 및 로우 (row) 들을 공급할 수도 있다. 일부 경우들에서, 하나 이상의 "서비스형 인프라스트럭쳐 (Infrastructure as a Service)" (IaaS) 제공자들은 데이터 센터 오퍼레이터의 하드웨어를 이용하여 인프라스트럭쳐 계층을 공급할 수도 있다. IaaS 제공자들은, 예를 들어, 데이터 센터 내의 그러한 자원들의 IaaS 제공자의 풀 (pool) 로부터, (물리적 머신들 및/또는 가상 머신들로서) 서버들, 미가공물 저장부, 방화벽들, 부하 균형기들, 및 네트워크들을 공급할 수도 있다. 데이터 센터 오퍼레이터들 및 IaaS 제공자들 양자 모두는 하드웨어 인프라스트럭쳐를 제공하고 양자 모두 본원에서 "인프라스트럭쳐 제공자들" 이라고 지칭된다.
하나 이상의 "서비스형 플랫폼 (Platform as a Service)" (PaaS) 제공자들, 또는 "플랫폼 제공자들" 은 인프라스트럭쳐 제공자 하드웨어 상에 플랫폼 계층을 공급할 수도 있다. 플랫폼 제공자들은, 예를 들어, 운영 체제들과 같은 컴퓨팅 플랫폼들, 프로그래밍 언어 실행 환경들, 데이터베이스들, 및 웹 서버들을 공급할 수도 있다.
예를 들어, 사업체들 및/또는 개인들을 포함하는 하나 이상의 플랫폼 고객들은 선택된 플랫폼 제공자의 플랫폼 상에 소프트웨어 및 데이터를 저장할 수도 있다. 예시적인 플랫폼 고객은, 예를 들어, 전자상거래 활동들에 종사하는 비즈니스를 포함할 수도 있다. 다른 예시적인 플랫폼 고객은, 예를 들어, 플랫폼 제공자의 플랫폼을 이용하여 소프트웨어 계층을 공급하는 "서비스형 소프트웨어 (Software as a Service)" (SaaS) 제공자를 포함할 수도 있다. SaaS 제공자들은, 예를 들어, 사용자들에게 클라우드에서 이용가능하게 될 수 있는 애플리케이션 소프트웨어를 공급할 수도 있다.
"클라우드에서" 플랫폼 고객의 소프트웨어/데이터에 액세스하는 고객들 또는 엔티티들은 "클라우드 클라이언트들" 또는 "사용자들" 이라고 지칭될 수도 있다. 따라서, 예시적인 배열에서, 인프라스트럭쳐 제공자들은 플랫폼 제공자들에게 클라우드 인프라스트럭쳐를 판매할 수도 있으며, 플랫폼 제공자들은 플랫폼 고객들에게 클라우드 플랫폼들을 판매할 수도 있고, 플랫폼 고객들은 클라우드에 액세스하는 사용자들에게 플랫폼 고객들의 상품들/서비스들을 판매할 수도 있다.
본 개시물은 일반적으로 장소 이동에 관련되는 디바이스들, 방법들, 및 컴퓨터 판독가능 매체들을 포함하는 기술들을 설명한다. 일부 예시적인 방법들은 장소 이동을 지원하기 위해 하드웨어 식별자들을 제공하는 단계를 포함할 수도 있다. 하드웨어 식별자들을 제공하도록 구성된 방법들은, 예를 들어, 소프트웨어를 갖는 데이터 센터/IaaS 하드웨어 및/또는 요청 시에 식별된 플랫폼 고객과 연관된 데이터를 식별하는 정보를 제공할 수도 있다. 예시적인 방법들은, 플랫폼 제공자들에 의한 이용을 위해 복수의 서버들을 포함하는 하드웨어를 제공하는 단계 (여기서 플랫폼 제공자들은 플랫폼 고객들과 연관되고, 플랫폼 고객들은 서버들 중 하나 이상의 서버에 저장된 플랫폼 고객 데이터와 연관된다); 예를 들어, 식별된 플랫폼 고객 또는 플랫폼 제공자로부터 플랫폼 고객 식별을 포함하는 하드웨어 식별 요청을 수신하는 단계 (여기서 하드웨어 식별 요청은 제 1 플랫폼 제공자의 식별된 플랫폼 고객과 연관된 고객 데이터를 포함하는 서버들을 식별하기 위한 요청을 포함한다); 및 하드웨어 식별 요청에 응답하여, 식별된 플랫폼 고객과 연관된 고객 데이터를 포함하는 서버 (들) 에 대응하는 하드웨어 식별자 (들) 를 제공하는 단계를 포함할 수도 있다. 일부 실시형태들에서, 사용자 인터페이스 (User Interface; UI) 또는 애플리케이션 프로그래밍 인터페이스 (Application Programming Interface; API) 가 하드웨어 식별 요청을 수신 및/또는 그에 응답하기 위해 제공될 수도 있다. 일부 실시형태들에서, 하드웨어 식별자 (들) 는, 예를 들어, 데이터 센터 내의 서버 로우 (row), 서버 랙 (rack), 또는 하나 이상의 특정한 서버들과 같은, 물리적 위치에 있는 모든 서버들, 또는 서버들의 서브세트를 포함하여, 특정 물리적 위치에 있는 데이터 센터에서 임의의 개수의 서버들을 식별할 수도 있다.
일부 예시적인 방법들은 장소 이동을 지원하기 위해 플랫폼 식별자들을 제공하는 단계를 포함할 수도 있다. 플랫폼 식별자들을 제공하도록 구성된 방법들은, 예를 들어, 요청 시에 식별된 플랫폼 고객과 연관된 소프트웨어 및/또는 데이터를 갖는 데이터 센터/IaaS 하드웨어에서 이용가능한 플랫폼들을 식별하는 정보를 제공할 수도 있다. 예시적인 방법들은, 플랫폼 제공자들에 의한 이용을 위해 물리적 위치에 있는 복수의 서버들을 포함하는 하드웨어를 제공하는 단계 (각각의 플랫폼 제공자는 플랫폼 고객들과 연관되고, 여기서 플랫폼 고객 소프트웨어 및/또는 데이터는 물리적 위치에 있는 서버들 상에 저장된다); 예를 들어, 식별된 플랫폼 고객 또는 플랫폼 제공자로부터, 플랫폼 고객 식별을 포함하는 장소 이동 리스트 요청을 수신하는 단계; 및 장소 이동 리스트 요청에 응답하여, 식별된 플랫폼 고객에 대응하는 장소 이동 리스트를 제공하는 단계 (여기서 제공된 장소 이동 리스트는 물리적 위치의 외부로 식별된 플랫폼 고객의 소프트웨어/데이터를 이동하지 않으면서 식별된 플랫폼 고객에게 이용가능한 플랫폼 제공자들을 식별한다) 를 포함할 수도 있다. 장소 이동 리스트는, 물리적 위치에 있는 데이터 센터의 외부로 이동시키지 않으면서, 또는 데이터 센터 내의 하드웨어의 서브세트, 예컨대, 데이터 센터 내의 서버 로우, 서버 랙, 또는 하나 이상의 특정한 서버들에서 외부로 이동시키지 않으면서, 식별된 플랫폼 고객에게 이용가능한 플랫폼 제공자들을 식별할 수도 있다. 일부 실시형태들에서, UI 또는 API 는 장소 이동 리스트 요청을 수신하기 위해 제공될 수도 있다.
일부 예시적인 방법들은 장소 이동을 지원하기 위해 플랫폼 호환성 정보를 제공하는 단계를 포함할 수도 있다. 플랫폼 호환성 정보를 제공하도록 구성된 방법들은, 데이터 센터/IaaS 하드웨어와의 플랫폼 제공자 호환성의 결정들을 위해, 플랫폼 호환성 요청에서 식별된 하드웨어와 하나 이상의 플랫폼들의 플랫폼 호환성을 정의하는 플랫폼 호환성 정보를 제공할 수도 있다. 예시적인 방법들은 하나 이상의 하드웨어 식별자들을 포함하는 플랫폼 호환성 요청을 수신하는 단계, 플랫폼 호환성 요청에 응답하여, 플랫폼 호환성 요청에서 식별된 하드웨어 식별자 (들) 에 대응하는 서버 (들) 가 요청에서 식별된 플랫폼 제공자와 연관된 기준을 충족시키는지 여부를 결정하거나, 하드웨어 식별자 (들) 에 대응하는 서버 (들) 의 호환성 속성들을 결정하는 단계, 및 플랫폼 호환성 요청에 응답하여, 플랫폼 호환성 정보를 제공하는 단계를 포함할 수도 있다. 플랫폼 호환성 정보는 플랫폼 호환성 요청에서 하드웨어 식별자들에 의해 식별되는 하나 이상의 서버들의 장소 이동 및/또는 속성들에 대한 승인의 허락 또는 거부를 포함할 수도 있다.
일부 예시적인 방법들은 장소 이동 하드웨어에 플랫폼 모듈들을 배치하여 장소 이동을 지원하는 단계를 포함할 수도 있다. 장소 이동 하드웨어에 플랫폼 모듈들을 배치하도록 구성된 방법들은 플랫폼 고객 또는 플랫폼 제공자로부터의 요청에 응답하여 데이터 센터/IaaS 하드웨어에, 새로운 플랫폼 모듈들, 예를 들어, 식별된 플랫폼 제공자와 연관된 플랫폼 모듈들을 배치할 수도 있다. 예시적인 방법들은 식별된 플랫폼 고객과 연관된 플랫폼 고객 데이터를 포함하는 서버들에 식별된 플랫폼 제공자의 플랫폼 서비스 모듈들을 배치하기 위한 요청들을 포함하는 장소 이동 요청을 수신하는 단계; 및 장소 이동 요청에 응답하여, 식별된 플랫폼 고객과 연관된 플랫폼 고객 데이터를 포함하는 서버들에 식별된 플랫폼 제공자의 플랫폼 서비스 모듈들을 배치하는 단계를 포함할 수도 있다. 배치된 플랫폼 서비스 모듈들은 그 다음에 이동 동작들을 수행하여 식별된 플랫폼 제공자의 플랫폼으로 식별된 플랫폼 고객의 소프트웨어 및/또는 데이터를 이동시킬 수도 있다.
일부 예시적인 방법들은 장소 이동 동작들 동안 사용자 세션 지원을 제공하는 단계를 포함할 수도 있다. 예시적인 방법들은, 장소 이동 동작이 이행됨에 따라, 새로운 플랫폼, 예를 들어, 식별된 플랫폼 제공자와 연관된 플랫폼 모듈들로 서비스 호 (call) 들을 보냄으로써 세션들을 이용하는 것을 지원할 수도 있다. 식별된 플랫폼 고객과 연관된 증가하는 개수의 서비스 호들은 식별된 플랫폼 고객의 데이터가 식별된 플랫폼 제공자의 플랫폼으로 이동됨에 따라 식별된 플랫폼 제공자에 의해 제공되는 플랫폼으로 보내질 수도 있다.
일부 예시적인 방법들은 장소 이동을 지원하기 위해 보안 동작들을 수행하는 단계를 포함할 수도 있다. 예시적인 방법들은 제공된 하드웨어 식별자들을 마스킹하여 데이터 센터 맵핑 공격 또는 클라우드 지도제작 공격을 방지할 수도 있다. 일부 실시형태들에서, 하드웨어 식별 요청들에 응답하여 제공되는 하드웨어 식별자들은, 본원에서 설명되는 바와 같이, 일시적-사용 및/또는 그렇지 않으면 제한된-사용 하드웨어 식별자들을 포함할 수도 있다. 방법들의 각각은 다른 방법들의 일부 또는 전부와 결합될 수도 있다.
본원에서 설명된 다양한 방법들을 수행하기 위한 명령들을 갖는 컴퓨팅 디바이스들 및 컴퓨터 판독가능 매체들이 또한 개시된다. 예시적인 컴퓨터 판독가능 매체들은 프로세서에 의해 실행가능한 컴퓨터 실행가능 명령들을 갖는 비일시적 컴퓨터 판독가능 저장 매체들을 포함할 수도 있으며, 명령들은, 프로세서에 의해 실행되는 경우, 프로세서로 하여금 본원에서 제공되는 다양한 방법들의 임의의 조합을 이행하게 한다. 예시적인 컴퓨팅 디바이스들은 프로세서, 메모리, 및 본원에서 보다 상세히 설명된 바와 같은, 상술된 방법들의 양상들을 수행하도록 구성된, 하나 이상의 이동 지원 모듈들, 예컨대, 하드웨어 식별 요청 서비스 모듈들, 장소 이동 리스트 요청 서비스 모듈들, 플랫폼 호환성 요청 서비스 모듈들, 장소 이동 배치 모듈들, 적절한 UI 및/또는 API 모듈들, 보안 모듈들, 및 SBC 모듈들을 포함하는 서버를 포함할 수도 있다.
앞서의 요약은 단지 예시적인 것이며 어떤 식으로도 제한하려는 의도는 아니다. 상술된 예시적인 양상들, 실시형태들, 및 특징들에 부가하여, 다른 양상들, 실시형태들, 및 특징들이 도면들 및 다음의 상세한 설명을 참조하여 더욱 명확해질 것이다.
본 개시물의 앞서의 특징 및 다른 특징은 첨부 도면들을 함께 취하여, 다음의 설명 및 첨부된 청구항들로부터 보다 완전히 명백해질 것이다. 이러한 도면들은 단지 본 개시물에 따른 몇몇 실시형태들만을 도시하고, 따라서 그 범위를 제한하는 것으로 고려되지 않음을 이해하면, 본 개시물은 첨부 도면들의 이용을 통해 추가적인 특수성 및 세부사항들로 설명될 것이다:
도 1a 는 제 1 상태에서의 예시적인 인프라스트럭쳐 제공자, 플랫폼 고객, 플랫폼 제공자, 및 사용자를 도시하는 블록도이다;
도 1b 는 제 2 상태에서의 예시적인 인프라스트럭쳐 제공자, 플랫폼 고객, 플랫폼 제공자, 및 사용자를 도시하는 블록도이다;
도 2 는 인프라스트럭쳐 제공자가 장소 이동을 지원하기 위해 하드웨어 식별자들을 제공하도록 구성되는 실시형태들에서의 플랫폼 고객, 다양한 플랫폼 제공자들, 및 인프라스트럭쳐 제공자 사이의 예시적인 상호작용들을 도시하는 도면이다;
도 3 은 인프라스트럭쳐 제공자가 장소 이동을 지원하기 위해 플랫폼 식별자들을 제공하도록 구성되는 실시형태들에서의 플랫폼 고객, 다양한 플랫폼 제공자들, 및 인프라스트럭쳐 제공자 사이의 예시적인 상호작용들을 도시하는 도면이다;
도 4 는 인프라스트럭쳐 제공자 서버의 일 예로서 컴퓨팅 디바이스를 도시하는 도면이다;
도 5 는 인프라스트럭쳐 제공자 서버 디바이스에 의해 수행될 수도 있는 예시적인 방법을 도시하는 흐름도이다;
도 6 은 인프라스트럭쳐 제공자 서버 디바이스 내에 구성될 수도 있는 예시적인 SBC 모듈들을 도시하는 블록도이다; 그리고
도 7 은 플랫폼 제공자 서버 디바이스에 의해 수행될 수도 있는 예시적인 방법을 도시하는 흐름도이며; 모두는 본 개시물의 적어도 일부 실시형태들에 따라 배열된다.
다음의 상세한 설명에서는, 본원의 일부분을 형성하는 첨부 도면들에 대한 참조가 이루어진다. 도면들에서, 문맥상 다르게 지시하지 않는 한, 유사한 부호들은 통상 유사한 컴포넌트를 식별한다. 상세한 설명, 도면들, 및 청구항들에서 설명된 예증적인 실시형태들은 제한적인 것을 의미하는 것은 아니다. 본원에서 제시된 청구물의 취지 또는 범위를 벗어나지 않으면서, 다른 실시형태들이 활용될 수도 있고, 다른 변경들이 이루어질 수도 있다. 본원에서 일반적으로 설명되고, 도면들에서 도시된 본 개시물의 양상들은 아주 다양하고 상이한 구성들로 배열되고, 대체되고, 조합되고, 설계될 수 있으며, 이들 모두는 본원에서 명시적으로 고려되고 본 개시물의 일부분을 이룬다는 것이 쉽게 이해될 것이다.
본 개시물은 일반적으로, 장소 이동과 관련하여 본원에서 배치된 방법들, 디바이스들, 시스템들, 및/또는 컴퓨터 판독가능 매체들을 포함하는 기술들 중에서 도출된다. 일부 예들에서, 플랫폼 고객과 연관된 소프트웨어 및/또는 데이터는 새로운 플랫폼으로 "이동될" 수 있는 한편 플랫폼 고객의 소프트웨어 및/또는 데이터가 동일한 하드웨어에 남아 있는 것을 허용할 수 있다. 인프라스트럭쳐 (infrastructure) 제공자는, 예를 들어, 요청 시에 하드웨어 식별자들을 제공하며, 요청 시에 플랫폼 식별자들을 제공하며, 요청 시에 플랫폼 호환성 정보를 제공하며, 식별된 하드웨어에 플랫폼 모듈들을 배치하며, 장소 이동 동작들 동안 사용자 세션 지원을 제공하고/하거나, 보안 동작들을 수행함으로써 장소 이동을 지원하도록 구성될 수도 있다.
도 1a 및 도 1b 는, 본 개시물의 적어도 일부 실시형태들에 따라 배열된, 예시적인 인프라스트럭쳐 제공자 (100), 플랫폼 고객 (171), 플랫폼 제공자 (181), 및 사용자 (141) 를 도시하는 블록도들이다. 도 1a 및 도 1b 는 집합적으로 도 1 이라고 지칭될 수도 있다. 도 1 에서, 인프라스트럭쳐 제공자 (100) 는 SBC (101), 이동 지원 모듈들 (102), 플랫폼 A 모듈들 (151), 플랫폼 B 모듈들 (152), 플랫폼 C 모듈들 (153), 및 하드웨어 (105) 를 포함한다. 하드웨어 (105) 는 플랫폼 C (133) 상의 플랫폼 고객 소프트웨어/데이터 (121), 플랫폼 B (132) 상의 플랫폼 고객 소프트웨어/데이터 (122), 및 하드웨어 (106) 를 포함한다. 도 1a 에서, 하드웨어 (106) 는 플랫폼 A (131) 상의 플랫폼 고객 소프트웨어/데이터 (123) 를 포함한다. 도 1b 에서, 하드웨어 (106) 는 플랫폼 B (132) 상의 플랫폼 고객 소프트웨어/데이터 (123) 를 포함한다.
도 1 을 참조하여 본원에서 설명된 예들에서, 플랫폼 고객 소프트웨어/데이터 (123) 는 플랫폼 고객 (171) 과 연관되는데, 예를 들어, 소프트웨어/데이터 (123) 는 플랫폼 고객 (171) 에 의해 소유될 수도 있다. 플래폼 B (132) 및 플랫폼 B 모듈들 (152) 은 플랫폼 제공자 (181) 와 연관되는데, 예를 들어, 플랫폼 제공자 (181) 에 의해 소유될 수도 있으며, 한편 플랫폼 A (131) 및 플랫폼 A 모듈들 (151) 은 플랫폼 제공자 (181) 와는 상이한 플랫폼 제공자와 연관될 수도 있고, 플랫폼 C (133) 및 플랫폼 C 모듈들 (153) 은 또한 플랫폼 제공자 (181) 와는 상이한 플랫폼 제공자와 연관될 수도 있다. 플랫폼 고객 소프트웨어/데이터 (123) 는 식별된 소프트웨어/데이터 (123) 라고 지칭될 수도 있는데, 소프트웨어/데이터 (123) 가 장소 이동 동작을 위해 식별될 수도 있기 때문이다. 유사하게, 플랫폼 고객 (171) 은 식별된 플랫폼 고객 (171) 으로 지칭될 수도 있는데, 플랫폼 고객 (171) 이 장소 이동 동작을 위해 식별될 수도 있기 때문이고, 플렛폼 제공자 (181) 및/또는 플랫폼 B (132) 는, 각각, 식별된 플랫폼 제공자 (181) 및 식별된 플랫폼으로 지칭될 수도 있는데, 플랫폼 제공자 (181) 및/또는 플랫폼 B (132) 가 장소 이동 동작에 따라 식별된 소프트웨어/데이터 (123) 가 이동되는 목표 플랫폼을 제공하는 것으로 식별될 수도 있기 때문이다.
도 1a 는 제 1 상태에서의 인프라스트럭쳐 제공자 (100), 및 인프라스트럭쳐 제공자 (100), 플랫폼 고객 (171), 플랫폼 제공자 (181), 및 사용자 (141) 사이의 상호작용들을 도시한다. 인프라스트럭쳐 제공자 (100), 플랫폼 고객 (171), 플랫폼 제공자 (181), 및 사용자 (141) 사이의 접속들은 임의의 네트워크 접속 기술, 예를 들어, 인터넷을 통한 접속들에 의해 구현될 수도 있다. 인프라스트럭쳐 제공자 (100) 와 플랫폼 고객 (171) 사이의 상호작용, 인프라스트럭쳐 제공자 (100) 와 플랫폼 제공자 (181) 사이의 상호작용, 및 플랫폼 고객 (171) 과 플랫폼 제공자 (181) 사이의 상호작용은 도 2 및 도 3 을 참조하여 더 논의되는 바와 같은 요청 및 응답 상호작용들을 포함할 수도 있다.
인프라 제공자 (100) 와 사용자 (141) 사이의 상호작용들은 사용자 (141) 와 같은 클라우드 클라이언트과, 인프라스트럭쳐 제공자 (100) 에 의해 제공될 수도 있는 데이터 센터 하드웨어 (105, 106) 사이에서 보통 이행되는 바와 같은 사용자 세션 상호작용들을 포함할 수도 있다. SBC (101) 는, 장소 이동 동작이 수행됨에 따라, 제 1 플랫폼, 예를 들어, 플랫폼 A (131) 대신에, 플랫폼 B (132) 와 같은 식별된 플랫폼으로 사용자 세션 내의 서비스 호들을 동적으로 보내도록 구성될 수도 있다. 식별된 플랫폼은 또한 본원에서 제 2 플랫폼, 새로운 플랫폼, 또는 선택된 플랫폼이라고 지칭될 수도 있다.
도 1a 는 또한 장소 이동 동작을 수행하기 위한, 하드웨어 (106) 에 대한 플랫폼 B 모듈들 (152) 의 배치를 도시하며, 여기서 식별된 소프트웨어/데이터 (123) 는 제 1 플랫폼 A (131) 으로부터 식별된 플랫폼 B (132) 로 이동된다. 도 1b 는 제 2 상태에서의 인프라스트럭쳐 제공자 (100) 를 도시하며, 여기서 식별된 소프트웨어/데이터 (123) 는 플랫폼 B (132) 에 의해 지원되고, SBC (101) 는 플랫폼 B (132) 상의 플랫폼 고객 소프트웨어/데이터 (123) 로 사용자 (141) 와의 사용자 세션 내에서 서비스 호들을 보내도록 구성될 수도 있다.
일부 실시형태들에서, 장소 이동 동작들은 도 1a 에 도시된 바와 같은 플랫폼 A (131) 와 같은 제 1 플랫폼으로부터 도 1b 에 도시된 바와 같은 플랫폼 B (132) 와 같은 제 2 플랫폼으로 식별된 소프트웨어/데이터 (123) 를 이동시키는 것을 포함할 수도 있으며, 한편 식별된 소프트웨어/데이터 (123) 는 동일한 하드웨어, 예를 들어, 하드웨어 (106) 상에 남아 있다. 일부 실시형태들에서, "동일한 하드웨어" 는 식별된 소프트웨어/데이터 (123) 를 갖는 하드웨어 (106) 와 같은 동일한 물리적 위치 내의 하드웨어의 임의의 서브세트를 포함할 수도 있다. 따라서, 동일한 하드웨어 상에 남아 있는 것은, 일부 실시형태들에서, 하드웨어 (106), 하드웨어 (105), 또는 하드웨어 (106) 와 동일한 구성인 것과 같은 동일한 물리적 위치에서의 인프라스트럭쳐 제공자 (100) 에 의해 동작되는 임의의 하드웨어 상에 남아 있는 것을 포함할 수도 있다. 일부 실시형태들에서, 동일한 하드웨어 상에 남아 있는 것은 동일한 특정한 서버 또는 서버들 상에 남아 있는 것, 서버들의 동일한 랙 상에 남아 있는 것, 서버들의 동일한 로우 상에 남아 있는 것, 또는 플랫폼 고객 소프트웨어/데이터 (123) 를 갖는 특정한 서버 또는 서버들과 동일한 물리적 위치에 있는 동일한 데이터 센터에 남아 있는 것을 포함할 수도 있다. 그러나, 본원에서는 설명들을 간소화하기 위해, 장소 이동이 하드웨어 (106) 상에 남아 있는 플랫폼 고객 소프트웨어/데이터 (123) 를 포함하는 실시형태들이 설명된다. 하드웨어 (106) 는 따라서 식별된 하드웨어 (106) 라고 지칭될 수도 있는데, 하드웨어 (106) 는 식별된 소프트웨어/데이터 (123) 가 장소 이동 동작 전에, 동안, 그리고 후에 남아 있는 하드웨어로 식별될 수도 있기 때문이다. 일부 실시형태들에서, "동일한 하드웨어" 는 비공공 네트워크, 예를 들어, 인프라스트럭쳐 제공자 (100) 의 독점적인 이용을 위해 인프라스트럭쳐 제공자 (100) 에 의해 동작되는 네트워크를 통해 하드웨어 (106) 에 접속되는 하드웨어의 임의의 서브세트를 포함할 수도 있다.
식별된 소프트웨어/데이터 (123) 가 새로운 플랫폼으로 이동되는 것에 반해 식별된 하드웨어 (106) 에 남아 있는 것을 허용하는 것은 보안 측면에서 유리한데, 상이한 하드웨어로 플랫폼 고객 소프트웨어/데이터를 이동시키는데 내재하는 사이드 채널 공격들 및/또는 다른 보안 위험들에 플랫폼 고객 소프트웨어/데이터를 노출시키지 않기 때문이다. 일부 정황들에서, 장소 이동은 또한 이동 전과 후의 상이한 하드웨어 환경들로 인한 예상치 못한 오류들을 감소시키는 것과 같은 다른 이점들을 가질 수도 있다.
다수의 상이한 플랫폼 제공자들은 인프라스트럭쳐 제공자 (100) 하드웨어에 의해 지원되는 플랫폼 서비들을 제시할 수도 있다. 예를 들어, 제 1 플랫폼 제공자 (도 1 에 미도시) 는 플랫폼 A 모듈들 (151) 에 의해 플랫폼 고객을 위해 하드웨어 (106) 에 배치될 수도 있는 플랫폼 A (131) 를 제시할 수도 있으며, 제 2 플랫폼 제공자 (181) 는 플랫폼 B 모듈들 (152) 에 의해 플랫폼 고객을 위해 하드웨어 (105) 에 배치될 수도 있는 플랫폼 B (132) 를 제시할 수도 있고, 제 3 플랫폼 제공자 (도 1 에 미도시) 는 플랫폼 C 모듈들 (153) 에 의해 플랫폼 고객을 위해 (105) 에 배치될 수도 있는 플랫폼 C (133) 를 제시할 수도 있다. 플랫폼 A (131), 플랫폼 B (132), 및 플랫폼 C 는 모두 인프라스트럭쳐 제공자 하드웨어 (105) 를 이용할 수도 있다. 예를 들어, 다수의 Paas 제공자들은 단일 IaaS 기능부 내에서 동작할 수도 있다.
상이한 플랫폼 제공자들은 상이한 비즈니스 모델들, 가격책정, 및 그것들이 동일한 하드웨어를 이용한다는 사실에도 불구하고 상이한 결합의 유형들을 제시할 수도 있다. 예를 들어, 주로 소규모의 신규업체들에게 서빙하는 플랫폼 제공자는 미세립 제어를 허용하나, 최소의 고객 지원 및 최소의 사이트-대-사이트 동기화나 컨텐츠 전달 서비스들을 가질 수도 있다. 대규모의 다수의 사이트의 회사들에 대한 플랫폼 제공자는, 반면, 결정적인 다수의 사이트 데이터 이용가능성 및 인-하우스 시스템들 통합 전문가들 및 지원 컨설팅에 초점이 맞추어진 비즈니스 모델에 대한 컨설팅 서비스들에 대한 초점을 제시할 수도 있다. 또한 대조적으로, 온라인 무역 동작들에 대한 플랫폼 제공자는 그들의 사용자들이 컴퓨터에 정통하기 때문에 컨설팅을 제시할 이유가 거의 없을 수도 있으나, 빠른 응답 시간들 및 효율적인 부하 밸런싱 및 결제 프로세싱에 확실한 초점을 둘 수도 있다. 이러한 3 개의 시나리오들의 각각은 플랫폼 제공자들의 플랫폼 고객들을 위해 상이한 서비스들에 투자하는 플랫폼 제공자를 보여주고, 플랫폼 고객들은 시간이 경과함에 따라 상이한 플랫폼 제공자들을 필요로 하는 것을 겪으며 변할 수도 있다. 플랫폼 고객은 소규모의 신규업체들에 대한 플랫폼 제공자를 필요로 하는 것으로 시작하여, 보다 큰 회사 프로젝트가 됨에 따라 대규모의 다수 사이트에 대한 플랫폼 제공자를 필요로 하는 것으로 변하고, 최종적으로 프로젝트가 많은 고객들을 갖는 성공적인 비즈니스가 됨에 따라 온라인 무역 오퍼레이션들에 대한 플랫폼 제공자를 필요로 하는 것으로 변화한다.
본 개시물의 일부 실시형태들은 동일한 인프라스트럭쳐 제공자 하드웨어, 예를 들어, 하드웨어 (106) 상에 배치될 수 있는 플랫폼 제공자들을 결정하는 플랫폼 고객 (171) 을 위한 기술들을 제공한다. 일부 실시형태들은 또한 플랫폼 고객 소프트웨어/데이터 (123) 가 아니라, 적용가능한 플랫폼들을 옮김으로써 플랫폼 제공자들 사이에서의 이동 전과 후에 플랫폼 고객 소프트웨어/데이터 (123) 가 동일한 하드웨어 (106) 상에서 구동할 수도 있는 장소 이동에 대한 기술들을 제공할 수도 있다. 일부 실시형태들에서, 장소 이동은, 새로운 하드웨어, 메모리 모델들, 또는 네트워크 아키텍쳐들에 대한 변화들을 처리하는 애플리케이션들의 예상치 못한 충격들에 관해 전혀 고려할 필요 없이, 성장하는 회사가 상이한 레벨들의 고객 지원 및 스케일링을 전문적으로 다루는 플랫폼 제공자들 사이에서 통과될 수 있는 라이프사이클 모델을 가능하게 한다. 플랫폼 고객 소프트웨어/데이터 (123) 가 하드웨어 사이에서 전송될 필요가 없기 때문에 보안 쟁점들이 또한 최소화된다. 또한, 일부 실시형태들에서, 플랫폼 고객은 인-하우스 클라우드를 구축할 수도 있어, 플랫폼 고객 (171) 및 인프라스트럭쳐 제공자 (100) 가 동일한 회사 또는 다른 엔티티에 의해 제어된다. 플랫폼 고객 (171) 은, 민감한 데이터가 건물, 하드웨어 서브세트, 또는 플랫폼 고객 (171) 에 대해 보관된 특정한 서버들을 떠나지 않도록, 플랫폼 제공자 서비스들의 승계를 이용하고 시장에 과도한 인프라스트럭쳐 제공자 (100) 용량을 제시할 수도 있다.
일부 실시형태들에서, 이동 지원 모듈들 (102) 은 플랫폼 고객 (171) 이 예를 들어 플랫폼 A (131), 플랫폼 B (132), 플랫폼 C (133) 의 제공자들 사이에서 플랫폼 제공자를 선택하는 것을 허용하도록 구성될 수도 있으며, 한편 플랫폼 고객 (171) 과 연관된 플랫폼 고객 소프트웨어/데이터 (123) 는 인프라스트럭쳐 제공자 (100) 내에, 그리고 선택적으로 하드웨어 (105) 와 같은 인프라스트럭쳐 제공자 (100) 에 의해 제공되는 하드웨어의 서브세트에, 또는 하드웨어 (106) 와 같은 인프라스트럭쳐 제공자 (100) 에 의해 제공되는 특정한 서버 내에 남아 있다. 하드웨어 ID 참조들 및 저장 엘리어싱해제 (dealiasing) 가 사용되어 플랫폼 고객 (171) 이 식별된 하드웨어 (106) 를 제시하는 플랫폼 제공자를 찾는 것을 허용할 수도 있다. 식별된 플랫폼 제공자 (181) 는 플랫폼 고객 (171) 에 의해 선택되어 인프라스트럭쳐 제공자 (100) 내의 식별된 하드웨어 (106) 상에서 개시할 수도 있다. 식별된 소프트웨어/데이터 (123) 는 식별된 하드웨어 (106) 에서 떨어진 곳으로 식별된 소프트웨어/데이터 (123) 를 운송하지 않으면서 식별된 플랫폼 제공자 (181) 의 플랫폼 B (132) 로 이동될 수도 있다. 일부 경우들에서, 장소 이동 동작들은, 본원에서 더 설명되는 바와 같이, 식별된 소프트웨어/데이터 (123) 의 배치 기능을 중단하지 않으면서 이행될 수도 있다.
도 2 는, 본 개시물의 적어도 일부 실시형태들에 따라 배열된, 인프라스트럭쳐 제공자가 장소 이동을 지원하기 위해 하드웨어 식별자들을 제공하도록 구성되는 실시형태들에서 플랫폼 고객, 다양한 플랫폼 제공자들, 및 인프라스트럭쳐 제공자 사이의 예시적인 상호작용들을 도시하는 도면이다. 플랫폼 고객 (171) 은 제 1 플랫폼, 예를 들어, 플랫폼 A (131) 로부터 새로운 플랫폼으로 스위칭하길 바랄 수도 있으나, 플랫폼 고객 (171) 은 가능하다면 동일한 하드웨어 상에 플랫폼 고객 소프트웨어/데이터 (123) 가 남아 있기를 원할 수도 있다. 도 2 에 따른 하드웨어 식별자 실시형태들에서, 플랫폼 고객 (171) 은 인프라스트럭쳐 제공자 (100) 에 하드웨어 식별 요청을 전송할 수도 있다. 하드웨어 식별 요청은 플랫폼 고객 소프트웨어/데이터 (123) 를 포함하는 서버들을 식별하는 요청을 포함할 수도 있다. 인프라스트럭쳐 제공자 (100) 에 있는 이동 지원 모듈들 (102) 은 하드웨어 식별 요청을 수신하고, 하드웨어 식별 요청에 응답하여, 플랫폼 고객 소프트웨어/데이터 (123) 를 포함하는 하드웨어 (106) 에 대응하는 하나 이상의 하드웨어 식별자들을 제공하도록 구성될 수도 있다.
플랫폼 고객 (171) 은 플랫폼 제공자들 (181, 201, 및 202) 에게 플랫폼 호환성 요청들을 전송할 수도 있다. 플랫폼 호환성 요청은, 플랫폼 제공자들 (181, 201, 및 202) 에 의해 제공되는 플랫폼들이 식별된 하드웨어, 본 예에서, 하드웨어 (106) 에 배치될 수 있는지 여부의 결정에 대한 요청과 함께, 하드웨어 식별 요청에 응답하여 인프라스트럭쳐 제공자 (100) 로부터 수신된 하드웨어 식별자들을 포함할 수도 있다. 플랫폼 제공자들 (181, 201, 및 202) 은 차례로 인프라스트럭쳐 제공자 (100) 에 플랫폼 호환성 요청들을 전송할 수도 있다. 플랫폼 제공자들 (181, 201, 및 202) 로부터 인프라스트럭쳐 제공자 (100) 로 전송된 플랫폼 호환성 요청들은, 플랫폼 제공자 호환성 결정들을 가능하게 하기 위해, 선택적으로 추가적인 정보, 예컨대, 플랫폼 호환성 요구사항들 및/또는 하드웨어 (106) 의 명시된 속성들에 대한 요청들을 포함할 수도 있다. 플랫폼 호환성 요청들은 또한, 플랫폼 호환성을 결정하는데 이용을 위해, 플랫폼 제공자 및/또는 플랫폼의 식별을 제공할 수도 있다. 인프라스트럭쳐 제공자 (100) 에 있는 이동 지원 모듈들 (102) 은, 예를 들어, 하드웨어 (106) 의 속성들 및/또는 플랫폼 승인들/거부들을 포함하여, 플랫폼 호환성 요청들에 응답하여 플랫폼 호환성 정보를 제공하도록 구성될 수도 있다. 플랫폼 제공자들 (181, 201, 및 202) 은 선택적으로 제공된 플랫폼 호환성 정보에 기초하여 호환성 결정들을 할 수도 있고, 플랫폼 승인들/거부들로 플랫폼 고객 (171) 에게 응답할 수도 있다. 도 2 에서, 플랫폼 제공자 (202) 에 의해 제공되는 플랫폼은 하드웨어 (106) 와 호환불가능할 것으로 결정되고, 그래서 플랫폼 고객 (171) 에 대한 플랫폼 제공자 (202) 의 응답은 호환불가능을 표시할 수도 있으며, 한편 플랫폼 제공자들 (181, 201) 로부터의 응답들은 하드웨어 (106) 와의 승인/호환성을 표시할 수도 있다. 일부 실시형태들에서, 플랫폼 고객 (171) 은 인프라스트럭쳐 제공자 (100) 에 직접적으로 플랫폼 호환성 요청들을 전송할 수도 있고, 인프라스트럭쳐 제공자는 마찬가지로 플랫폼 고객 (171) 에게 직접적으로 응답할 수도 있다.
플랫폼 고객 (171) 은 장소 이동 동작을 위해 호환가능한 플랫폼 또는 플랫폼 제공자, 본 예에서, 식별된 플랫폼 제공자 (181) 에 의해 제공되는 식별된 플랫폼 B (132) 를 선택할 수도 있다. 플랫폼 고객 (171) 은 식별된 플랫폼 제공자 (181) 또는 직접적으로 인프라스트럭쳐 제공자 (100) 에 장소 이동 요청을 전송하여, 식별된 소프트웨어/데이터 (123) 를 포함하는 식별된 하드웨어 (106) 에 식별된 플랫폼 B (132) 를 배치할 것을 인프라스트럭쳐 제공자 (100) 에게 요청할 수도 있다. 인프라스트럭쳐 제공자 (100) 에 있는 이동 지원 모듈들 (102) 은 플랫폼 고객 (171) 또는 플랫폼 제공자 (181) 로부터 장소 이동 요청을 수신하고, 장소 이동 요청에 응답하여, 식별된 하드웨어 (106) 에 식별된 플랫폼 제공자 (181) 의 식별된 플랫폼 B 모듈들 (152) 을 배치하도록 구성될 수도 있다. 플랫폼 B 모듈들은 플랫폼 제공자 (181) 로부터, 또는 인프라스트럭쳐 제공자 (100) 내의 이전에 저장된 메모리로부터 취출될 수도 있다. 플랫폼 B 모듈들 (152) 은 식별된 하드웨어 (106) 상에 식별된 플랫폼 B (132) 를 설치하고, 식별된 플랫폼 B (132) 로 식별된 소프트웨어/데이터 (123) 를 이동시키기에 유효한 이동 동작들을 선택적으로 이행하도록 구성될 수도 있다.
도 3 은, 본 개시물의 적어도 일부 실시형태들에 따라 배열된, 인프라스트럭쳐 제공자가 장소 이동을 지원하기 위해 플랫폼 식별자들을 제공하도록 구성되는 실시형태들에서 플랫폼 고객, 다양한 플랫폼 제공자들, 및 인프라스트럭쳐 제공자 사이의 예시적인 상호작용들을 도시하는 도면이다. 플랫폼 고객 (171) 은 제 1 플랫폼 제공자 (도 1 에 미도시) 에 의해 제공되는 플랫폼 A (131) 에 의해 지원되는 플랫폼 고객 소프트웨어/데이터 (123) 를 가질 수도 있다. 플랫폼 고객 (171) 은 새로운 플랫폼으로 스위칭하길 바랄 수도 있으나, 상술된 바와 같이, 가능한 경우 동일한 하드웨어에 플랫폼 고객 소프트웨어/데이터 (123) 를 남기길 원할 수도 있다. 플랫폼 고객 (171) 은 인프라스트럭쳐 제공자 (100) 에 장소 이동 리스트 요청을 전송하여, 그것의 동일한 물리적 위치의 외부로의 식별된 소프트웨어/데이터 (123) 의 이동 없이, 예를 들어, 식별된 소프트웨어/데이터 (123) 에 대해 현재 이용되는 것과 동일한 하드웨어, 본 예에서, 하드웨어 (106) 외부로의 이동 없이, 플랫폼 고객 (171) 에게 이용가능한 플랫폼 제공자들을 식별하는 장소 이동 리시트를 요청할 수도 있다. 이동 지원 모듈들 (102) 은 장소 이동 리스트 요청을 수신하며, 식별된 소프트웨어/데이터 (123) 에 대해 이용되어진 식별된 하드웨어 (106) 를 결정하며, 식별된 하드웨어 (106) 와 복수의 플랫폼 제공자들의 플랫폼 호환성을 결정하고, 플랫폼 고객 (171) 에 대응하는 장소 이동 리스트, 즉, 식별된 하드웨어 (106) 에 배치될 수 있는 플랫폼 제공자들을 식별하는 리스트를 플랫폼 고객 (171) 에게 제공하도록 구성될 수도 있다. 플랫폼 호환성을 결정하는 것은, 상술된 것들과 유사하고, 예를 들어, 하드웨어 (106) 의 하드웨어 속성들을 포함하는, 플랫폼 제공자들 (181, 201, 202) 과의 플랫폼 호환성 정보 교환들, 및 다양한 플랫폼 제공자들에 의해 제공되는 플랫폼들의 플랫폼 호환성 요구사항들을 포함할 수도 있다. 일부 실시형태들에서, 인프라스트럭쳐 제공자 (100) 는 플랫폼 고객 소프트웨어/데이터 (123) 가 식별된 하드웨어 (106) 상에 배치된다는 것을 플랫폼 고객 (171) 또는 플랫폼 제공자들 (181, 201, 202) 에 알릴 필요가 없다.
도 3 에서는, 도 2 에서와 같이, 플랫폼 고객 (171) 은 장소 이동 동작을 위해 호환가능한 플랫폼 또는 플랫폼 제공자, 예를 들어, 플랫폼 제공자 (181) 에 의해 제공되는 플랫폼 B (132) 를 선택할 수도 있다. 플랫폼 고객 (171) 은 식별된 플랫폼 제공자 (181) 또는 직접적으로 인프라스트럭쳐 제공자 (100) 에 장소 이동 요청을 전송하여, 식별된 소프트웨어/데이터 (123) 를 포함하는 하드웨어에 식별된 플랫폼 B (132) 를 배치할 것을 인프라스트럭쳐 제공자 (100) 에게 요청할 수도 있다. 플랫폼 고객 (171) 이 하드웨어 (106) 에 대한 하드웨어 식별자를 가지고 있지 않은 실시형태들에서, 플랫폼 고객 (171) 이 장소 이동을 요청할 수도 있고, 인프라스트럭쳐 제공자 (100) 가 장소 이동 동작을 위해 식별된 하드웨어를 결정할 수도 있다. 인프라스트럭쳐 제공자 (100) 에 있는 이동 지원 모듈들 (102) 은, 상술된 바와 같이, 플랫폼 고객 (171) 또는 플랫폼 제공자 (181) 로부터 장소 이동 요청을 수신하고, 장소 이동 요청에 응답하여, 식별된 하드웨어 (106) 에 식별된 플랫폼 제공자 (181) 의 플랫폼 B 모듈들 (152) 을 배치하도록 구성될 수도 있다.
도 4 는, 본 개시물의 적어도 일부 실시형태들에 따라 배열된, 인프라스트럭쳐 제공자 서버의 일 예로서 컴퓨팅 디바이스를 도시하는 도면이다. 아주 기본적인 구성 (401) 에서, 컴퓨팅 디바이스 (400) 는 하나 이상의 프로세서들 (410) 및 시스템 메모리 (420) 를 포함할 수도 있다. 메모리 버스 (430) 는 프로세서 (410) 와 시스템 메모리 (420) 사이에서 통신하는데 이용될 수도 있다.
희망하는 구성에 따라, 프로세서 (410) 는 마이크로프로세서 (μΡ), 마이크로제어기 (μC), 필드 프로그램가능 게이트 어레이 (FPGA), 디지털 신호 프로세서 (DSP), 또는 이들의 임의의 조합을 포함하나 이로 제한되지는 않는 임의의 유형일 일 수도 있다. 프로세서 (410) 는 레벨 1 캐시 (411) 및 레벨 2 캐시 (412) 와 같은 하나 이상의 레벨들의 캐싱, 프로세서 코어 (413), 및 레지스터들 (414) 을 포함할 수도 있다. 프로세서 코어 (413) 는 산술 로직 유닛 (arithmetic logic unit; ALU), 부동 소수점 유닛 (floating point unit; FPU), 디지털 신호 프로세싱 코어 (DSP Core), 또는 이들의 임의의 조합을 포함할 수도 있다. 메모리 제어기 (415) 가 또한 프로세서 (410) 와 함께 이용될 수도 있거나, 일부 구현예들에서, 메모리 제어기 (415) 는 프로세서 (410) 의 내부 부분일 수도 있다.
희망하는 구성에 따라, 시스템 메모리 (420) 는 휘발성 메모리 (예컨대, RAM), 비휘발성 메모리 (예컨대, ROM, 플래시 메모리 등), 또는 이들의 임의의 조합을 포함하는 포함하나 이로 제한되지는 않는 임의의 형태일 수도 있다. 시스템 메모리 (420) 는 통상적으로 운영 체제 (421), 하나 이상의 애플리케이션들 (422), 및 프로그램 데이터 (425) 를 포함한다. 애플리케이션들 (423 내지 224) 은, 예를 들어, SBC 모듈(들) (101) 및 이동 지원 모듈(들) (102) 을 포함할 수도 있다. 프로그램 데이터 (425) 는 애플리케이션들 (423 내지 224) 에 의해 이용될 수도 있는 하드웨어 ID 데이터 (426), 플랫폼 ID 데이터 (427), 및 플랫폼 데이터 (427) 를 포함할 수도 있다. 본원에서 보다 상세히 설명되는 바와 같이, SBC 모듈(들) (101) 및 이동 지원 모듈(들) (102) 은 다양한 장소 이동 동작들을 지원하도록 구성될 수도 있다. 하드웨어 ID 데이터 (426) 는 플랫폼 고객들 및 인프라스트럭쳐 제공자 (100) 내의 대응하는 하드웨어를 열거하는 테이블들을 포함할 수도 있다. 플랫폼 ID 데이터 (427) 는 인프라스트럭쳐 제공자 (100) 내의 하드웨어 및 그러한 하드웨어와 호환가능한 플랫폼 제공자들을 열거하는 테이블들을 포함할 수도 있다. 플랫폼 데이터 (427) 는, 예를 들어, 인프라스트럭쳐 제공자 (100) 내의 하드웨어의 하드웨어 속성들을 포함하는 호환성 정보, 및 플랫폼 A 모듈, 플랫폼 B 모듈, 및 플랫폼 C 모듈 (151, 152, 153) 과 같은, 하드웨어에 플랫폼들을 배치하도록 구성된 플랫폼 모듈들을 포함할 수도 있다.
컴퓨팅 디바이스 (400) 는 기본 구성 (401) 과 임의의 요구되는 디바이스들 및 인터페이스들 사이의 통신들을 가능하게 하기 위한 부가적인 특징들 또는 기능, 및 부가적인 인터페이스들을 구비할 수도 있다. 예를 들어, 버스/인터페이스 제어기 (440) 는 기본 구성 (401) 및 하나 이상의 데이터 저장 디바이스들 (450) 사이의 저장 인터페이스 버스 (441) 를 통한 통신들을 가능하게 하기 위해 이용될 수도 있다. 데이터 저장 디바이스들 (450) 은 이동식 저장 디바이스들 (451), 비이동식 저장 디바이스들 (452), 또는 이들의 조합일 수도 있다. 이동식 저장 디바이스 및 비이동식 저장 디바이스의 예들은, 몇몇을 거론하자면, 플렉시블 디스크 드라이브들 및 하드 디스크 드라이브들 (HDD) 와 같은 자기 디스크 디바이스들, 컴팩트 디스크 (CD) 드라이브들 또는 디지털 다기능 디스크 (DVD) 드라이브들과 같은 광학 디스크 드라이브들, 솔리드 스테이트 드라이브들 (SSD), 및 테이프 드라이브들을 포함한다. 예시적인 컴퓨터 저장 매체들은, 컴퓨터 판독 가능 명령들, 데이터 구조들, 프로그램 모듈들, 또는 다른 데이터와 같은, 정보의 저장을 위한 임의의 방법 또는 기술에 의해 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체들을 포함할 수도 있다.
시스템 메모리 (420), 이동식 저장부 (451), 및 비이동식 저장부 (452) 는 모두 컴퓨터 저장 매체들의 예들이다. 컴퓨터 저장 매체들은, RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크들 (DVD) 또는 다른 광학 저장부, 자기 카세트들, 자기 테이프, 자기 디스크 저장부 또는 다른 자기 저장 디바이스들, 또는 희망하는 정보를 저장하기 위해 이용될 수도 있고 컴퓨팅 디바이스 (400) 에 의해 액세스될 수도 있는 임의의 다른 매체를 포함하지만, 이들에 제한되는 것은 아니다. 임의의 그러한 컴퓨터 저장 매체들은 컴퓨팅 디바이스 (400) 의 일부일 수도 있다.
컴퓨팅 디바이스 (400) 는 또한 다양한 인터페이스 디바이스들 (예를 들어, 출력 인터페이스들, 주변 인터페이스들, 및 통신 인터페이스들) 로부터 기본 구성 (401) 으로의 버스/인터페이스 제어기 (440) 를 통한 통신을 가능하게 하기 위한 인터페이스 버스 (442) 를 포함할 수도 있다. 예시적인 출력 디바이스들 (460) 은 그래픽 프로세싱 유닛 (461), 및 오디오 프로세싱 유닛 (462) 을 포함하며, 이들은 하나 이상의 A/V 포트들 (463) 을 통해 디스플레이 또는 스피커들과 같은 다양한 외부 디바이스들과 통신하도록 구성될 수도 있다. 예시적인 주변 인터페이스 (470) 는 직렬 인터페이스 제어기 (471) 또는 병렬 인터페이스 제어기 (472) 를 포함하며, 이들은 하나 이상의 I/O 포트들 (473) 을 통해 입력 디바이스들 (예를 들어, 키보드, 마우스, 펜, 음성 입력 디바이스, 터치 입력 디바이스 등) 과 같은 외부 디바이스, 또는 다른 주변 디바이스들 (예를 들어, 프린터, 스캐너 등) 과의 유선 접속 또는 무선 접속을 통해 통신하도록 구성될 수도 있다. 마우스, 키보드 등과 같은 다른 종래의 I/O 디바이스들 또한 접속될 수도 있다. 예시적인 통신 디바이스 (480) 는 네트워크 제어기 (481) 를 포함하며, 이것은 하나 이상의 통신 포트들 (482) 을 통한 네트워크 통신을 통해 하나 이상의 다른 컴퓨팅 디바이스들 (490) 과의 통신들을 가능하게 하도록 배열될 수도 있다.
컴퓨터 저장 매체들은 통신 매체들의 일 예일 수도 있다. 통신 매체들은 통상적으로 컴퓨터 판독가능 명령들, 데이터 구조들, 프로그램 모듈들, 또는 반송파나 다른 통신 매커니즘과 같이 변조된 데이터 신호에서의 다른 데이터에 의해 구현되고, 임의의 정보 전달 매체들을 포함할 수도 있다. "변조된 데이터 신호" 는 하나 이상의 특성들 세트를 구비하거나 또는 신호에 정보를 인코딩하는 그러한 방식으로 변경된 신호일 수도 있다. 예로서, 통신 매체들은 유선 네트워크 또는 직접 접속과 같은 유선 매체들, 및 음향, 무선 주파수 (RF), 적외선 (IR), 및 다른 무선 매체들과 같은 무선 매체들을 포함할 수도 있으며, 이들에 제한되는 것은 아니다.
컴퓨팅 디바이스 (400) 는 인프라스트럭쳐 제공자 (100) 에서의 하나 이상의 관리 서버 (administration server) 들로서 구현될 수도 있다. 관리 서버들은 플랫폼 고객들 및 플랫폼 제공자들과의 상호작용들을 지원하고, 선택적으로 105 와 같은 인프라스트럭쳐 제공자 하드웨어와의 사용자 세션들을 지원하기 위한 SBC (101) 를 제공하도록 구성될 수도 있다. 일부 실시형태들에서, 관리 서버들은 하드웨어 (105) 와 독립적으로 구성될 수도 있고, 관리 서버들은 플랫폼 고객 소프트웨어/데이터 (121, 122, 123) 에 의해 이용되기 보다는 관리 기능들을 위해 확보될 수도 있다. 물론, 인프라스트럭쳐 제공자는 SBC 모듈들 (101) 및 이동 지원 모듈들 (102) 에 의해 제공되는 것들과 같은 관리 기능들을 제공하기 위해 임의의 구성의 서버들을 제공할 수도 있다는 것이 이해될 것이다.
도 5 는, 본 개시물의 적어도 일부 실시형태들에 따라 배열된, 인프라스트럭쳐 제공자 서버 디바이스 (400) 에 의해 수행될 수도 있는 예시적인 방법을 도시하는 흐름도이다. 예시적인 흐름도는 블록들 (102 및 501 내지 506) 에 의해 도시되는 바와 같은 하나 이상의 동작들/모듈들을 포함할 수도 있으며, 블록들 (102 및 501 내지 506) 은 일 방법에서 수행될 수도 있는 바와 같은 동작들, 서버 디바이스 (400) 에서의 기능적 모듈들, 및/또는 컴퓨터 판독가능 매체 (550) 상에 기록될 수도 있는 바와 같은 명령들을 나타낸다. 도시된 블록들 (102 및 501 내지 505) 은 블록 (102) 에 있는 "이동 지원 모듈들", 블록 (501) 에 있는 "UI/API", 블록 (502) 에 있는 "하드웨어 ID/MIP 리스트 요청 서비스", 블록 (503) 에 있는 "보안", 블록 (504) 에 있는 "플랫폼 호환성", 블록 (505) 에 있는 "MIP 배치", 및/또는 블록 (506) 에 있는 "SBC 통합" 중 하나 이상에 대응하는 기능적 동작들을 제공하도록 배열될 수도 있다.
도 5 에서, 블록들 (102 및 501 내지 506) 은, 블록 (102) 이 블록 (501) 을 제공하며, 블록 (501) 이 블록들 (502, 504, 및 505) 을 제공하며, 블록 (502) 이 블록 (503) 을 제공하고, 블록 (505) 이 블록 (506) 을 제공하면서, 순차적으로 수행되는 것으로 도시된다. 그러나, 이러한 블록들은 특정 실시형태들에 적합하도록 편의에 따라 재배열될 수도 있고, 이러한 블록들 또는 그의 부분들은 일부 실시형태들에서는 동시에 수행될 수도 있다는 것이 이해될 것이다. 일부 예들에서, 다양한 블록들은 제거되거나, 추가적인 블록들로 나누어지고/지거나, 다른 블록들과 결합될 수도 있다는 것이 또한 이해될 것이다.
도 5 는, 플랫폼 고객 (171) 에 의한 플랫폼 제공자들의 선택을 가능하게 하도록 하드웨어 ID 들 또는 장소 이동 리스트들을 제공하거나 장소 이동 요청에 따라 선택된 플랫폼을 배치하기 위해, 도 2 및/또는 도 3 에 도시된 바와 같은, 플랫폼 고객 (171) 및/또는 플랫폼 제공자 (181) 와 상호작용하도록 구성되는, 인프라스트럭쳐 제공자 (100) 가 블록 (102) 에 있는 "이동 지원 모듈들" 을 통해 장소 이동을 지원할 수도 있는 예시적인 방법을 도시한다.
"UI/API" 블록 (501) 에서, 하나 이상의 UI 및/또는 API 모듈들은 네트워크를 통해 착신 요청들을 수신하고, 수신된 요청들에 대한 응답들을 제공하도록 구성될 수도 있다. 착신 요청들은, 예를 들어, 하드웨어 ID 요청들, 장소 이동 리스트 요청들, 플랫폼 호환성 요청들, 및/또는 장소 이동 배치 요청들을 포함할 수도 있다. 블록 (501) 은 블록들 (502 내지 505) 중 하나 이상의 블록에 수신된 요청들을 건네주도록, 그리고/또는 그렇지 않으면 수신된 요청들에 응답하여 블록들 (502, 504, 및/또는 505) 중 하나 이상의 블록의 동작들을 개시되게 하도록 구성될 수도 있다. 블록 (501) 은 네트워크에, 예를 들어, 플랫폼 고객, 플랫폼 고객 애플리케이션, 또는 요청을 개시한 플랫폼 제공자에, 블록들 (502 내지 506) 에 의해 발생된 응답 데이터를 포함하는, 수신된 요청들에 대한 응답들을 제공하도록 구성될 수도 있다.
수많은 UI 및 API 구성들이 가능하고, 일반적으로, UI 및 API 구성들은 인간 및/또는 각각 인간 사용자들 및 애플리케이션들과 상호작용하도록 구성된 컴퓨터 동작가능 제어들을 포함할 수도 있다는 것이 이해될 것이다. UI 및 API 구성들은 응답 정보를 포함하는 출력 데이터를 제공하도록 구성될 수도 있으며, 응답 정보는 UI 에서의 디스플레이를 위해 또는 호출하는 애플리케이션에 의한 소비를 위해 구성될 수도 있다. 블록 (501) 은, 예를 들어, HTTP GET 및/또는 POST 커맨드들을 수신하도록 구성된 API 를 구현할 수도 있다. 블록 (501) 은, 예를 들어, 임의의 플랫폼 고객 또는 플랫폼 제공자가 이용하도록 API 기능으로 라우팅하는 도메인 이름 서버 (DNS) 주소를 구현할 수도 있다.
일부 실시형태들에서, 블록 (501) 에 의해 제공된 UI/API 는 플랫폼 고객들 및/또는 플랫폼 제공자들이 그들의 인프라스트럭쳐 제공자와의 관계들을 관리하는 것을 허용하는 다양한 제어들을 포함할 수도 있다. 예를 들어, 블록 (501) 은 제어, 청구 내역 (billing history) 의 디스플레이 및/또는 취출, 계정 정보, 서비스 레벨들, 비즈니스 관계의 다른 양상들을 지원하도록 구성될 수도 있다. 블록들 (502 내지 506) 에 따른 장소 이동 지원은 종합적인 관계/계정 관리 UI/API 의 다양한 다른 특징들 중에서 블록 (501) 에 의해 제공되는 양상 또는 특징을 포함할 수도 있다. 블록 (501) 은 하드웨어 ID 요청 또는 장소 이동 리스트 요청을 수신할 수도 있고, 블록 (501) 은 블록 (502) 이 개시되게 하도록 구성될 수도 있다.
블록 (502) 에 있는 "하드웨어 ID/MIP 리스트 요청 서비스" 에서, 수신된 하드웨어 ID 요청들 및/또는 장소 이동 리스트 요청들이 프로세싱될 수도 있고 대응하는 응답들이 발생될 수도 있다. 하드웨어 ID 요청들을 수신하도록 구성된 실시형태들은 플랫폼 고객들 및/또는 플랫폼 제공자들로부터 하드웨어 ID 요청들을 수신할 수도 있다. 하드웨어 ID 요청은, 제 1 플랫폼 제공자의 식별된 플랫폼 고객과 연관된 소프트웨어/데이터를 포함하는, 물리적 위치에 있는 서버들, 서버 랙들, 서버 로우들, 또는 서버들의 다른 서브세트들과 같은, 하드웨어를 식별하기 위한 요청을 포함할 수도 있다. 유사하게, 장소 이동 리스트 요청들을 수신하도록 구성된 실시형태들은 플랫폼 고객들 및/또는 플랫폼 제공자들로부터 장소 이동 리스트 요청들을 수신할 수도 있다. 장소 이동 리스트 요청은, 제 1 플랫폼 제공자의 플랫폼 고객과 연관되는 식별된 소프트웨어/데이터를 포함하는, 물리적 위치에 있는 서버들, 서버 랙들, 서버 로우들, 서버들의 다른 서브세트들과 같은, 하드웨어와 호환가능한 플랫폼들 또는 플랫폼 제공자들을 식별하기 위한 요청을 포함할 수도 있다.
블록 (502) 은 하드웨어 ID 요청들에 응답하여 하드웨어 ID 들을 결정하도록 구성될 수도 있다. 다양한 기술들이 하드웨어 ID 들을 결정하는데 이용될 수도 있다. 일부 실시형태들에서, 인프라 제공자 (100) 는 플랫폼 제공자들 및 플랫폼 고객 소프트웨어/데이터를 특정한 하드웨어에 맵핑하는 테이블을 유지할 수도 있다. 적절한 하드웨어 ID 들을 결정하는 것은 테이블에서 플랫폼 제공자 및/또는 플랫폼 고객을 찾아봄으로써 달성될 수도 있다. 플랫폼 제공자들 및 플랫폼 고객 소프트웨어/데이터를 특정한 하드웨어에 맵핑하는 테이블들은, 예를 들어, 하드웨어 ID 들을 물리적 위치에 있는 하드웨어 서브세트들에 할당하고, 상이한 플랫폼 제공자들/플랫폼 고객들을 하드웨어의 상이한 서브세트들에 할당함으로써 유지될 수도 있다. 일부 실시형태들에서, 하드웨어의 서브세트는 특정 물리적 위치에 있는 모든 하드웨어에 대응할 수도 있고, 상이한 하드웨어 ID 들이 상이한 물리적 위치들에 있는 하드웨어에 대해 이용될 수도 있다. 일부 실시형태들에서, 하드웨어 ID 들은 따라서 데이터 센터에 있는 모든 하드웨어, 또는 데이터 센터 내의 서버 로우들, 서버 랙들, 또는 특정한 서버들에 대응할 수도 있다.
하드웨어 ID 요청들에 응답하여 하드웨어 ID 들을 결정하도록 구성된 일부 실시형태들에서, 블록 (502) 은 MAC ID 들 또는 칩 시리얼 넘버들을 이용하여 하드웨어를 식별하도록 구성될 수도 있다. 일부 실시형태들에서, 블록 (502) 은 그 자체의 인터넷 프로토콜 (IP) 주소를 검출하도록 구성된 가상 머신 (VM) 인스턴스를 배치하도록 구성될 수도 있다. 예를 들어, VM 은 하드웨어 ID 요청에 대응하는 플랫폼 고객 소프트웨어/데이터를 갖는 하드웨어에 배치될 수도 있다. VM 은 Dom 0 IP 주소에 액세스하고/하거나 하드웨어 ID 로서 VM 의 자체 내부 IP 주소를 추출하도록 구성될 수도 있다. Dom 0 IP 주소는 고유하고 안정적인 가상 머신 관리자 식별자일 수도 있고, 따라서 VM 은 하드웨어 ID 로서 Dom 0 IP 주소에 액세스하도록 구성될 수도 있다. VM 자체의 내부 IP 주소는 또한 일부 실시형태들에서 이용하기 위한 지속성 있는 하드웨어 ID 를 제공할 수도 있다. 하드웨어 ID 로서 VM 자체의 내부 IP 주소를 사용하는 실시형태들은 하드웨어 ID 를 검출하는데 이용되는 VM 의 수명보다 짧은 시간 안에 도 5 의 방법 단계들을 수행할 수도 있다. 하드웨어 ID 를 검출하는데 이용되는 기법과 상관없이, VM 은 블록 (501) 에 검출된 하드웨어 ID 를 보고하도록 구성될 수도 있다. 상술된 접근법들의 변형예들은 또한 플랫폼 고객들이 인프라스트럭쳐 제공자 지원 없이 하드웨어 ID 들을 습득하는 것을 허용할 수도 있다. 예를 들어, 플랫폼 고객 (171) 은, Dom 0 IP 주소 및/또는 VM 의 자체 내부 IP 주소를 이용하여, 하드웨어 ID 들을 검출하고 보고하기 위해 그 자체의 VM 을 구성할 수도 있다.
하드웨어 ID 요청들에 응답하여 하드웨어 ID 들을 결정하도록 구성된 일부 실시형태들에서, 블록 (502) 은 블록 (503) 을 포함할 수도 있다. "보안" 블록 (503) 은, 예를 들어, 하드웨어 ID 들을, 일시적-사용 하드웨어 ID 들, 플랫폼 고객 특정한 하드웨어 ID 들, 또는 그렇지 않으면 제한된 사용 하드웨어 ID 들로 컨버팅함으로써 하드웨어 ID 들을 변경하도록 구성될 수도 있으며, 제한된-사용 하드웨어 ID 들은 영구적인 하드웨어 ID 들에 맵핑될 수도 있다. 제한된-사용 하드웨어 ID 들은 (예를 들어, MAC ID 또는 칩 시리얼 넘버로부터 관련되거나 해싱된) 영구적인 하드웨어 ID 들에 대한 알고리즘적 관계로 발생될 수도 있다. 블록 (503) 은 그렇게 함으로써 다르게는 데이터 센터 맵핑 유형 공격 및 클라우드 지도제작 유형 공격에 이용될 수 있는 영구적인 하드웨어 ID 들 또는 정보를 표출하는 것을 방지할 수도 있다. 일부 실시형태들에서, 블록 (503) 은 간단한 룩업 테이블을 이용하여 의사 랜덤 고유 하드웨어 ID 들을 하드웨어의 각각의 부분과 관련시키도록 구성될 수도 있다. 블록 (502) 은 블록 (503) 에 의해 제공되는 하드웨어 ID 들을 이용하여 하드웨어 ID 를 요청한 각각의 상이한 플랫폼 고객 또는 플랫폼 제공자에게 상이한 하드웨어 ID 들을 반환하고/하거나 하드웨어 ID 들의 상이한 세트들을 각각의 하드웨어 ID 요청에 대한 응답들과 연관시킬 수도 있다.
하드웨어 ID 들을 제공하도록 구성된 실시형태들에서, 블록 (504) 의 플랫폼 호환성 동작들은, 블록 (502) 의 상호작용들 후에, 플랫폼 고객 또는 플랫폼 제공자와의 하나 이상의 이어지는 상호작용들에서 수행될 수도 있다. 하기에서 논의되는, 장소 이동 리스트들을 제공하도록 구성된 실시형태들에서, 블록 (502) 은 블록 (503) 과 상호작용하도록 구성될 수도 있다.
블록 (502) 은 장소 이동 리스트 요청들에 응답하여 식별된 하드웨어와 호환가능한 플랫폼들 또는 플랫폼 제공자들을 결정하도록 구성될 수도 있다. 장소 이동 리스트 요청들에 응답하도록 구성된 실시형태들에서, 블록 (502) 은 상술된 바와 같이 플랫폼 고객에 대응하는 하드웨어 ID 들을 결정하도록 구성될 수도 있다. 블록 (502) 은 블록 (504) 과 추가적으로 상호작용하여 식별된 하드웨어와의 플랫폼 호환성을 결정할 수도 있다. 호환가능한 플랫폼들은 장소 이동 리스트 요청에 응답하여 장소 이동 리스트로 컴파일링되고 요청 플랫폼 고객 또는 플랫폼 제공자에게 제공될 수도 있다. 블록 (502) 에는 블록 (504) 이 뒤따를 수도 있다.
"플랫폼 호환성" 블록 (504) 에서, 이동 지원 모듈들 (102) 은 인프라스트럭쳐 제공자 (100) 내의 식별된 플랫폼 고객 (171) 과 연관된 식별된 하드웨어, 예를 들어, 하드웨어 (106) 와의 플랫폼 호환성을 결정하도록 구성될 수도 있다. 블록 (504) 은 하드웨어 속성들을 취출하며, 플랫폼 제공자 하드웨어 상호동작가능성 요구사항들을 취출하고, 취출된 하드웨어 속성들을 취출된 하드웨어 상호동작성 요구사항들에 대해 비교함으로써 식별된 하드웨어와의 플랫폼 호환성을 결정할 수도 있다. 일부 실시형태들에서, 플랫폼 호환성 결정들은 테이블들로 컴파일링 될 수도 있으며, 테이블들은 블록 (504) 에 의해 참조될 수도 있다. 일부 실시형태들에서, 블록 (504) 은, 예를 들어, 플랫폼 고객 (171), 플랫폼 제공자 (181), 및/또는 블록 (502) 으로부터의 플랫폼 호환성 요청들에 응답하여 실시간으로 플랫폼 호환성 결정들을 하도록 구성될 수도 있다.
일부 실시형태들에서, 블록 (504) 은 플랫폼 고객 (171) 및/또는 플랫폼 제공자 (181) 와 상호작용하도록 구성될 수도 있다. 예를 들어, 블록 (504) 은 네트워크를 통해 플랫폼 호환성 요청을 수신하도록 구성될 수도 있으며, 플랫폼 호환성 요청은 하드웨어 ID 들 및 선택적으로 플랫폼 제공자 식별을 포함한다. 블록 (504) 은 식별된 하드웨어가 식별된 플갯폼 제공자에 대한 임의의 알려진 플랫폼 요구사항들 충족시키는지 여부를 검사하고, 플랫폼 호환성 요청에 응답하여, 식별된 하드웨어와 하나 이상의 플랫폼들의 플랫폼 호환성을 정의하는 플랫폼 호환성 정보를 제공하도록 구성될 수도 있다. 일부 실시형태들에서, 플랫폼 호환성 정보는 호환성 승인 또는 거부의 형태를 취할 수도 있다. 대안으로, 블록 (504) 은, 호환성 요청에 응답하여, 식별된 하드웨어에 대해 이용가능한 모든 이용가능한 플랫폼 제공자들을 결정하고, 장소 이동 리스트를 제공하도록 구성될 수도 있다.
일부 실시형태들에서, 블록 (504) 은, 예를 들어, 블록 (502) 으로부터 하드웨어 ID 들을 수신하고, 응답으로, 블록 (502) 에 장소 이동 리스트를 제공함으로써, 블록 (502) 과 상호작용하도록 구성될 수도 있다. 일부 실시형태들에서, 블록 (504) 은, 예를 들어, 플랫폼 제공자 호환성 결정들을 가능하게 하기 위해, 식별된 하드웨어에 대응하는 하드웨어 속성들을 공급하도록 구성될 수도 있다. 플랫폼 제공자는, 플랫폼 호환성 요청에 응답하여, 블록 (504) 으로부터 수신된 하드웨어 속성들에 기초하여 플랫폼 호환성에 관해 그 자체의 결정들을 할 수도 있다. 블록 (504) 에는 블록 (505) 이 뒤따를 수도 있다.
"장소 이동 (Migration In Place; MIP) 배치" 블록 (505) 에서, 장소 지원 모듈들 (102) 은 장소 이동 요청을 수신하고 (장소 이동 요청은 플랫폼 제공자 식별을 포함한다), 장소 이동 요청에 응답하여, 식별된 플랫폼 제공자의 플랫폼 서비스 모듈들을 배치하도록 구성될 수도 있다. 예를 들어, 플랫폼 고객 (171) 또는 플랫폼 제공자 (181) 는 블록 (505) 에 장소 이동 요청을 전송할 수도 있다. 블록 (505) 은 장소 이동 요청에 따라 장소 이동 동작이 개시되게 하거나 그렇지 않으면 허용하도록 구성될 수도 있다. 장소 이동 동작에서, 식별된 플랫폼 제공자의 플랫폼 서비스 모듈들, 예를 들어, 플랫폼 고객에 대한 식별된 새로운 플랫폼으로서 선택된 플랫폼 제공자는, 플랫폼 고객의 소프트웨어/데이터를 제 1 플랫폼 제공자에 의해 제공되는 플랫폼으로부터 식별된 플랫폼 제공자에 의해 제공되는 플랫폼으로 이동시키는 것을 가능하게 하도록, 플랫폼 고객의 소프트웨어 및 데이터와 동일한 물리적 위치에 있는 하나 이상의 서버들과 같은 하드웨어에 배치될 수도 있다. 플랫폼 제공자들 사이에서 고객 소프트웨어 및 데이터를 이동시키는 것은 현재 존재하거나 미래에 개발될 수도 있는 것과 같은 다양한 기법들 및 기술들 중 임의의 것을 이용하여 행해질 수도 있으며, 이동 동작들에서 수행되는 데이터 운송 단계들은 대체로 생략될 수도 있다는 예외를 갖는다. 새로운 식별된 플랫폼 제공자는 (저장 API 들을 통해 그리고/또는 인프라스트럭쳐 제공자 저장부를 통해 이용가능하게 될 수도 있는) 플랫폼 고객 소프트웨어/데이터의 저장 위치에 대한 유효 네트워크 주소가 제공될 수도 있고, 식별된 플랫폼 제공자는 플랫폼 고객의 소프트웨어/데이터와 동일한 하드웨어 상에 새로운 플랫폼 VM 이미지들을 개시할 수도 있으며, VM 들은 VM 들의 현재 위치로부터 플랫폼 고객의 소프트웨어/데이터를 이용할 수도 있다. 배치 VM 개시들은, 예를 들어, 기존의 플랫폼 고객 배치와 동일한 로우 또는 랙 내에서 행해질 수 있거나, 심지어 본원의 방법들을 이용하여 정확하게 동일한 서버들을 인수할 수 있다. 블록 (505) 에는 블록 (506) 이 뒤따를 수도 있다.
"SBC 통합" 블록 (506) 에서, 이동 지원 모듈들 (102) 은 SBC (101) 와 상호작용하도록 구성될 수도 있다. 블록 (506) 은 새로운 플랫폼으로 이동을 SBC (101) 에 통지하고/하거나 새로운 플랫폼으로 서비스 호들을 보내기 위해 SBC (101) 를 구성하도록 구성될 수도 있다. 일부 실시형태들에서, 블록 (506) 은 이동이 진행 중인 때를 SBC (101) 에게 통지하여, 이동이 이행됨에 따라, SBC (101) 가 플랫폼 고객 (171) 과 연관된 증가하는 개수의 서비스 호들을 플랫폼 B (132) 로 보내는 것을 가능하게 하도록 할 수도 있다.
도 6 은, 본 개시물의 적어도 일부 실시형태들에 따라 배열된, 인프라스트럭쳐 제공자 서버 디바이스 (400) 내에 구성될 수도 있는 예시적인 SBC 모듈들을 도시하는 블록도이다. 일부 실시형태들에서, 도 6 을 구현하는 인프라스트럭쳐 제공자 서버 디바이스는, 이해될 바와 같이, 도 5 를 구현하는 것들과 같이 하나 이상의 별도의 디바이스들을 포함할 수도 있다. 그러나, 도 5 및 도 6 양자 모두가 컴퓨팅 디바이스들로 구현되기 때문에, 도 5 및 도 6 은 양자 모두 디바이스 (400) 로서 지칭된다. 블록도는 블록들 (101 및 601) 에 의해 도시되는 바와 같은 하나 이상의 동작들/모듈들을 포함할 수도 있으며, 블록들 (101 및 601) 은 일 방법에서 수행될 수도 있는 바와 같은 동작들, 서버 디바이스 (400) 에서의 기능적 모듈들, 및/또는 컴퓨터 판독가능 매체 (650) 상에 기록될 수도 있는 바와 같은 명령들을 나타낸다. 도시된 블록들 (101 및 601) 은 블록 (101) 에 있는 "SBC 모듈들", 및 또는 블록 (601) 에 있는 "이동 지원 통합" 중 하나 이상에 대응하는 기능적 동작들을 제공하도록 배열될 수도 있다.
도 6 에서, 블록들 (101 및 601) 은 순차적으로 수행되는 것으로 도시되며, 블록 (101) 은 블록 (601) 을 제공한다. 그러나, 이러한 블록들은 특정 실시형태들에 적합하도록 편의에 따라 재배열될 수도 있고, 이러한 블록들 및 그의 부분들은 일부 실시형태들에서는 동시에 수행될 수도 있다는 것이 이해될 것이다. 일부 예들에서, 다양한 블록들은 제거되거나, 추가적인 블록들로 나누어지고/지거나, 다른 블록들과 결합될 수도 있다는 것이 또한 이해될 것이다.
"SBC 모듈들" 블록 (101) 에서, SBC (101) 는 공지되었거나 미래에 개발될 수도 있는 바와 같은 임의의 SBC 동작들을 일반적으로 수행하도록 구성될 수도 있다. SBC (101) 는 플랫폼 고객 소프트웨어/데이터 (123) 와 141 과 같은 사용자들 사이의 사용자 세션 상호작용들을 지원하여, 사용자 세션 서비스 호들을 플랫폼 고객 소프트웨어/데이터 (123) 사이에서 제공되는 다양한 상이한 서비스들로 보내는 한편, 전반적인 사용자 세션 상태를 유지할 수도 있다. 블록 (101) 은 블록 (601) 을 포함하도록 구성될 수도 있다.
"이동 지원 통합" 블록 (601) 에서, SBC (101) 는, 상술된 바와 같이, 블록 (506) 으로부터 통지들 및/또는 구성 커맨드들을 수신하도록 구성될 수도 있다. 블록 (601) 은, 플랫폼 고객 소프트웨어/데이터 (123) 가 플랫폼 B (132) 로 이동함에 따라, 수신된 통지들/커맨드들에 응답하여, 예를 들어, 사용자 (141) 와의 임의의 라이브 사용자 세션들에서의 서비스 호들을, 도 1b 에 도시된 바와 같은, 식별된 플랫폼 B (132) 상의 플랫폼 고객 소프트웨어/데이터 (123) 로 보내도록 SBC (101) 를 구성할 수도 있다. 일부 실시형태들에서, 블록 (601) 은, 플랫폼 고객의 소프트웨어/데이터 (123) 가 식별된 플랫폼 제공자 (181) 에 의해 제공되는 플랫폼 B (132) 로 이동됨에 따라, 식별된 플랫폼 제공자 (181) 에 의해 제공되는 플랫폼 B (132) 로, 플랫폼 고객 (171) 과 연관된 증가하는 개수의 서비스 호들을 보내도록 구성될 수도 있다. 이동 동작 동안 플랫폼 B (132) 가 플랫폼 고객의 소프트웨어/데이터 (123) 의 증가하는 세그먼트들을 제어함에 따에, SBC (101) 는, 이동이 완료되고 모든 서비스 호들이 플랫폼 B (132) 로 보내질 수 있을 때까지, 플랫폼 B (132) 로 증가하는 개수의 서비스 호들을 보내도록 구성될 수도 있다.
도 7 은, 본 개시물의 적어도 일부 실시형태들에 따라 배열된, 플랫폼 제공자 서버 디바이스 (700) 에 의해 수행될 수도 있는 예시적인 방법을 도시하는 흐름도이다. 예시적인 흐름도는 블록들 (701 및 710 내지 713) 에 의해 도시되는 바와 같은 하나 이상의 동작들/모듈들을 포함할 수도 있으며, 블록들 (701 및 710 내지 713) 은 일 방법에서 수행될 수도 있는 바와 같은 동작들, 디바이스 (700) 에서의 기능적 모듈들, 및/또는 컴퓨터 판독가능 매체 (750) 상에 기록될 수도 있는 바와 같은 명령들을 나타낸다. 도시된 블록들 (701 및 710 내지 713) 은 블록 (701) 에 있는 "플랫폼 제공자 MIP 지원 모듈들", 블록 (710) 에 있는 "UI/API", 블록 (711) 에 있는 "하드웨어 ID 습득", 블록 (712) 에 있는 "플랫폼 호환성", 및/또는 블록 (713) 에 있는 "플랫폼 제공자-개시된 MIP 배치" 중 하나 이상에 대응하는 기능적 동작들을 제공하도록 배열될 수도 있다.
도 7 에서, 블록들 (701 및 710 내지 713) 은 순차적으로 수행되는 것으로 도시되며, 블록 (701) 은 블록 (710) 을 제공하고, 블록 (710) 은 블록들 (711 내지 713) 을 제공한다. 그러나, 이러한 블록들은 특정 실시형태들에 적합하도록 편의에 따라 재배열될 수도 있고, 이러한 블록들 및 그의 부분들은 일부 실시형태들에서는 동시에 수행될 수도 있다는 것이 이해될 것이다. 일부 예들에서, 다양한 블록들은 제거되거나, 추가적인 블록들로 나누어지고/지거나, 다른 블록들과 결합될 수도 있다는 것이 또한 이해될 것이다.
도 7 은 플랫폼 제공자 서버 디바이스 (700), 예를 들어, 플랫폼 제공자 (181) 에 의해 동작되는 디바이스가 플랫폼 고객 (171) 및 인프라스트럭쳐 제공자 (100) 와의 상호작용들을 통해 장소 이동을 지원할 수도 있는 예시적인 방법을 도시한다. 예를 들어, 식별될 플랫폼 제공자 (181) 는 플랫폼 고객 (171) 으로부터의 질의들과 관련된 장소 이동을 수신하며, 잠재적인 장소 이동 동작들을 위해 수집하는 정보를 지원하고, 최종적으로 인프라스트럭쳐 제공자 (100) 내의 식별된 소프트웨어/데이터 (132) 에 대한 장소 이동 배치를 개시되게 하거나 그렇지 않으면 그에 참여하도록 구성된 블록 (701) 을 사용할 수도 있다.
"UI/API" 블록 (710) 에서, 하나 이상의 UI 및/또는 API 모듈들은 네트워크를 통해 착신 요청들을 수신하고, 수신된 요청들에 대한 응답들을 제공하도록 구성될 수도 있다. 착신 요청들은, 예를 들어, 장소 이동 질의들, 플랫폼 호환성 요청들, 및/또는 장소 이동 배치 요청들을 포함할 수도 있다. 블록 (701) 은 블록들 (711 내지 713) 중 하나 이상의 블록에 수신된 요청들을 건네주거나, 그렇지 않으면 수신된 요청들에 응답하여 블록들 (711 내지 713) 중 하나 이상의 블록의 동작들을 개시되게 하도록 구성될 수도 있다. 블록 (710) 은 네트워크에, 예를 들어, 요청을 개시한 플랫폼 고객, 플랫폼 고객 애플리케이션, 또는 인프라스트럭쳐 제공자에, 블록들 (711 내지 713) 에 의해 발생된 응답 데이터를 포함하는, 수신된 요청들에 대한 응답들을 제공하도록 구성될 수도 있다. 수많은 UI 및 API 구성들이 가능하다는 것이 이해될 것이며, 일반적으로, 상술한 바와 같이, UI 및 API 구성들은 인간 및/또는 각각 인간 사용자들 및 애플리케이션들과 상호작용하도록 구성된 컴퓨터 동작가능 제어들을 포함할 수도 있다. 블록 (710) 은 블록들 (711 내지 713) 을 포함하거나 그와 상호작용할 수도 있다.
"하드웨어 ID 습득" 블록 (711) 에서, 플랫폼 제공자 MIP 지원 모듈들 (710) 은, 예를 들어, 식별된 하드웨어와의 플랫폼 제공자 호환성을 결정하기 위한 요청과 함께, 플랫폼 고객 (171) 으로부터 하드웨어 ID 들을 수신하도록 구성될 수도 있다. 일부 실시형태들에서, 블록 (711) 은 하드웨어 ID 들을 포함하지 않는 장소 플랫폼 고객 장소 이동 질의를 수신하고, 플랫폼 고객에 대한 인프라스트럭쳐 제공자 (100) 로부터 하드웨어 ID 들을 습득하도록 구성될 수도 있다. 예를 들어, 블록 (711) 은 플랫폼 고객 (171) 을 식별하는 인프라스트럭쳐 제공자 API 에 호를 발생시키고, 호에 응답하여 플랫폼 고객 (171) 에 대응하는 하드웨어 ID 들을 수신하도록 구성될 수도 있다. 하드웨어 ID 들을 습득하기 위한 다른 방법들이 또한 사용될 수도 있으며, 방법들은 도 5 를 참조하여 위에서 논의된다. 블록 (711) 에는 블록 (712) 이 뒤따를 수도 있다.
"플랫폼 호환성" 블록 (712) 에서, 플랫폼 제공자 MIP 지원 모듈들 (701) 은 수신된 하드웨어 ID 들에 의해 식별되는 하드웨어와의 플랫폼 호환성을 결정하도록 구성될 수도 있다. 일부 실시형태들에서, 블록 (712) 은, 식별된 플랫폼 고객 (171) 에 대한 하드웨어 ID 들을 포함하는 호를 501 과 같은 인프라 스트럭쳐 제공 API 에 발생시키도록 구성될 수도 있다. 블록 (712) 은 호에 응답하여 호환성 정보를 수신하고, 수신된 호환성 정보를 프로세싱하여 플랫폼 호환성을 결정하도록 구성될 수도 있다. 수신된 호환성 정보가 호환성 승인 또는 거부를 포함하는 경우, 최소의 프로세싱이 블록 (712) 에 요구된다. 수신된 호환성 정보가 하드웨어 속성들을 포함하는 경우, 블록 (712) 은 수신된 하드웨어 속성들을 임의의 플랫폼 요구사항들에 비교하도록 구성될 수도 있다. 일부 실시형태들에서, 블록 (712) 은 인프라스트럭쳐 제공자, 예를 들어, 블록 (504) 으로부터의 호들에 응답하도록 구성될 수도 있으며, 정보는 인프라스트럭쳐 제공자 (100) 에 의한 플랫폼 호환성 결정들을 지원하기 위한 플랫폼 요구사항들을 포함한다. 블록 (712) 에는 블록 (713) 이 뒤따를 수도 있다.
"플랫폼 제공자-개시된 MIP 배치" 블록 (713) 에서, 플랫폼 제공자 MIP 지원 모듈들 (701) 은 플랫폼 고객 선택 또는 인가를 수신하여 장소 이동 동작에서의 플랫폼을 배치하도록 구성될 수도 있다. 선택/인가에 응답하여, 블록 (713) 은 인프라스트럭쳐 제공자 (100) 내의 플랫폼 고객의 동일한 하드웨어 상에 플랫폼을 배치하도록 구성될 수도 있다. 블록 (713) 은 장소 이동 요청, 플랫폼 배치 모듈들, 예를 들어, 플랫폼 B 모듈들 (152), 하드웨어 ID 들, 및/또는 플랫폼 고객 식별자 중 하나 이상을 인프라스트럭쳐 제공자 (100) 에게 전송할 수도 있다. 인프라스트럭쳐 제공자 (100) 또는 플랫폼 제공자 (182) 중 어느 일방이 그 다음에 플랫폼 고객 하드웨어 (106) 에 플랫폼 B (132) 를 배치하는 것을 진행할 수도 있다.
시스템들의 양상들의 하드웨어 및 소프트웨어 구현들 사이에 거의 차이가 존재하지 않는데; 하드웨어 또는 소프트웨어의 이용은 일반적으로 (항상 그렇지는 않으나, 소정의 맥락들에서, 하드웨어와 소프트웨어 사이에서의 선택이 중요해질 수도 있다) 비용 대 효율 트레이드오프들을 나타내는 설계 선택이다. 본원에서 설명된 프로세스들 및/또는 시스템들 및/또는 다른 기술들을 유효하게 하는 다양한 수단들 (예를 들어, 하드웨어, 소프트웨어, 및/또는 펌웨어) 이 존재하며, 선호되는 수단은 프로세스들 및/또는 시스템들 및/또는 다른 기술들이 배치되는 맥락에 따라 변할 것이다. 예를 들어, 속도 및 정확도가 가장 중요하다고 구현자가 결정하는 경우, 구현자는 주로 하드웨어 및/또는 펌웨어 수단을 선택할 수 있고, 유연성이 가장 중요한 경우, 구현자는 주로 소프트웨어 구현을 선택할 수도 있거나: 또는, 대안으로, 구현자는 하드웨어, 소프트웨어, 및/또는 펌?어의 일부 조합을 선택할 수도 있다.
앞서의 상세한 설명은 블록 다이어그램들, 플로차트들, 및/또는 예들의 이용을 통해 디바이스들 및/또는 프로세스들의 다양한 실시형태들을 제시하였다. 그러한 블록 다이어그램들, 플로차트들, 및/또는 예들이 하나 이상의 기능들 및/또는 동작들을 포함하는 한, 그러한 블록 다이어그램들, 플로차트들, 또는 예들 내의 각각의 기능 및/또는 동작은, 광범위한 하드웨어, 소프트웨어, 펌웨어, 또는 가상으로 이들의 실질적인 임의의 조합에 의해, 개별적으로 및/또는 집합적으로 구현될 수 있다는 것이 당업자에 의해 이해될 것이다. 일 실시형태에서, 본원에서 설명된 청구물의 몇몇 부분들은 주문형 반도체 (Application Specific Integrated Circuit; ASIC) 들, 필드 프로그램가능 게이트 어레이 (Field Programmable Gate Array; FPGA) 들, 디지털 신호 프로세서 (digital signal processor; DSP) 들, 또는 다른 집적된 포맷들을 통해 구현될 수도 있다. 그러나, 본원에 개시된 실시형태들 중 일부 양상들은, 전체적으로 또는 부분적으로, 하나 이상의 컴퓨터들 상에서 구동하는 하나 이상의 컴퓨터 프로그램들과 (예를 들어, 하나 이상의 컴퓨터 시스템들 상에서 구동하는 하나 이상의 프로그램들과), 하나 이상의 프로세서들 상에서 구동하는 하나 이상의 프로그램들과 (예를 들어, 하나 이상의 마이크로프로세서들 상에서 구동하는 하나 이상의 프로그램들과), 펌웨어들과, 또는 가상으로 그의 임의의 조합과 동등하게 집적 회로들로 구현될 수도 있고, 회로를 설계하고/하거나 소프트웨어 및/또는 펌웨어에 대한 코드를 작성하는 것은 본 개시물을 고려하여 당업자의 기술 내에서 당연히 있을 것임을 당업자들은 인식할 것이다. 또한, 본원에서 설명된 청구물 매커니즘들이 다양한 형태들의 프로그램 제품으로서 배포될 수 있으며, 본원에서 설명된 청구물의 예시적인 실시형태들은 배포를 실제 이행하기 위해 이용되는 특정 형태의 신호 내포 매체에 관계없이 적용됨을 당업자들은 알 수 있을 것이다. 신호 내포 매체의 예들은, 이로 제한되지는 않으나, 다음의: 플로피 디스크, 하드 디스크 드라이브, 컴팩트 디스크 (Compact Disc; CD), 디지털 다기능 디스크 (Digital Versatile Disk; DVD), 디지털 테이프, 컴퓨터 메모리 등과 같은 기록가능한 유형의 매체; 및 디지털 및/또는 아날로그 통신 매체 (예를 들어, 광 섬유 케이블, 도파관, 유선 통신 링크, 무선 통신 링크 등) 와 같은 송신 유형 매체를 포함한다.
당업자라면, 본원에서 제시된 형태로 디바이스들 및/또는 프로세스들을 설명하고, 그 후 그렇게 설명된 디바이스들 및/또는 프로세스들을 데이터 프로세싱 시스템들에 통합시키도록 엔지니어링 실무를 이용하는 것이 종래 기술에서 일반적임을 알 수 있을 것이다. 즉, 본원에서 설명된 디바이스들 및/또는 프로세스들의 적어도 일부는 적절한 분량의 실험을 통해 데이터 프로세싱 시스템에 통합될 수 있다. 당업자라면, 통상의 데이터 프로세싱 시스템이 시스템 유닛 하우징, 비디오 디스플레이 디바이스, 휘발성 및 비휘발성 메모리와 같은 메모리, 마이크로프로세서들 및 디지털 신호 프로세서들과 같은 프로세서들, 운영 체제들, 드라이버들, 그래픽 유저 인터페이스들, 및 애플리케이션 프로그램들과 같은 계산 엔티티들, 터치 패드 또는 스크린과 같은 하나 이상의 상호작용 디바이스들, 및/또는 피드백 루프들 및 제어 모터들을 포함하는 제어 시스템들 (예를 들어, 포지션 및/또는 속도를 검출하기 위한 피드백; 컴포넌트들 및/또는 분량을 움직이고/움직이거나 조정하기 위한 제어 모터들) 중 하나 이상을 일반적으로 포함함을 알 수 있을 것이다. 통상의 데이터 프로세싱 시스템은, 데이터 컴퓨팅/통신 및/또는 네트워크 컴퓨팅/통신 시스템들에서 일반적으로 발견되는 것들과 같은 임의의 적합한 상업적으로 이용가능한 컴포넌트들을 활용하여 구현될 수도 있다. 본원에서 설명된 청구물은 종종 상이한 다른 컴포넌트들 내에 포함된, 또는 상이한 다른 컴포넌트들과 연결된 상이한 컴포넌트들을 설명한다. 그러한 묘사된 아키텍쳐들은 단순히 예들일 뿐이고, 사실 동일한 기능성을 달성하는 많은 다른 아키텍쳐들이 구현될 수 있다는 것이 이해될 것이다. 개념적인 면에서, 동일한 기능성을 달성하는 컴포넌트들의 임의의 배열은, 희망하는 기능성이 달성되도록 유효하게 "연관" 된다. 따라서, 특정 기능성을 달성하기 위해 본원에서 결합된 임의의 2 개의 컴포넌트들은, 아키텍쳐들 또는 중간 컴포넌트들과 관계없이 희망하는 기능성이 달성되도록 서로 "연관되는" 것으로 볼 수도 있다. 마찬가지로, 그렇게 연관된 임의의 2 개의 컴포넌트들은 희망하는 기능성을 달성하기 위해 서로 "동작가능하게 연결된" 것으로, 또는 "동작가능하게 커플링된" 것으로도 보여질 수 있으며, 그렇게 결합될 수 있는 임의의 2 개의 컴포넌트들은 희망하는 기능성을 달성하도록 서로 "동작가능하게 커플링될 수 있는" 것으로도 보여질 수 있다. 동작가능하게 커플링될 수 있는 것의 구체적인 예들은 물리적으로 결합될 수 있고/있거나 물리적으로 상호작용하는 컴포넌트들, 및/또는 무선으로 상호작용가능한 컴포넌트, 및/또는 무선으로 상호작용하는 컴포넌트들, 및/또는 논리적으로 상호작용하는 컴포넌트, 및/또는 논리적으로 상호작용 가능한 컴포넌트들을 포함하지만, 이들에 제한되는 것은 아니다.
본원에서의 실질적으로 임의의 복수 및/또는 단수 용어들의 이용과 관련하여, 당업자라면, 맥락 및/또는 애플리케이션에 적절하게 복수에서 단수로 및/또는 단수에서 복수로 변경할 수 있을 것이다. 다양한 단/복수 치환들은 명확화를 위해 본원에서 명백히 제시될 수도 있다.
당업자라면, 일반적으로, 본원, 특히 하기의 청구항들 (예를 들어, 첨부된 청구항들의 특징부) 에서 이용된 용어들은 일반적으로, "열린" 용어들로서 의도되며 (예를 들어, 용어 "포함하는" 은 " 포함하지만 제한되지 않는" 으로 해석되어야 하고, 용어 "구비하는" 은 "적어도 구비하는" 으로 해석되어야 하며, 용어 "포함한다" 는 포함하나 제한되지 않는"으로 해석되는 등등) 로서 의도된다는 것이 이해될 것이다. 하기의 청구항에서 특정 번호의 청구항의 인용을 의도하면, 그러한 의도는 그 청구항에서 명시적으로 인용될 것이며, 이러한 인용이 없으면 그러한 의도가 없는 것으로 당업자는 더 이해할 수 있을 것이다. 예를 들어, 이해를 돕기 위한 것으로서, 다음의 첨부된 청구항들은, 청구항의 인용관계들을 도입하기 위해, 도입부에 "적어도 하나" 및 "하나 이상의" 의 이용을 포함할 수도 있다. 그러나, 그러한 구들의 이용은, 부정 관사 "a" 또는 "an" 에 의한 청구항의 인용 관계의 도입이, 발명들에 대해 그렇게 도입된 청구항 인용관계를 포함하는 임의의 특정 청구항을, 그 동일한 청구항이 도입 구들 "하나 이상의" 또는 "적어도 하나" 및 "a" 또는 "an" (예를 들어, "a" 및/또는 "an" 은 통상적으로 "적어도 하나" 또는 "하나 이상" 으로 해석되어야 한다) 과 같은 부정 관사들을 포함하는 경우에도, 단지 하나의 인용항을 포함하는 구체예들로 제한한다는 것을 의미하는 것으로 이해되어선 안되며; 청구항 인용관계들을 도입하기 위해 정관사를 이용하는 경우에도 마찬가지이다. 또한, 특정 번호의 인용항이 명시적으로 인용되어도, 당업자들은 그러한 인용은 통상적으로 적어도 인용된 번호를 의미하는 것으로 해석되어야 한다는 것을 이해할 것이다 (예를 들어, 다른 수정자들이 없는 "두 인용항들" 의 순수한 인용은 통상적으로 적어도 두 개의 인용항들 또는 두개 이상의 인용항들을 의미한다). 또한, "A, B, 및 C 등 중 적어도 하나" 와 통상 유사한 것들이 이용되는 이러한 예들에서, 일반적으로 그러한 구성은 지식을 지닌 당업자는 종래의 것을 이해할 것이다 (예를 들어, "A, B, 및 C 중 적어도 하나를 갖는 시스템" 은 A 만 단독으로, B 만 단독으로, C 만 단독으로, A 와 B 를 함께, A 와 C 를 함께, B 와 C 를 함께, 그리고/또는 A, B 와 C 를 함께 갖는 등의 시스템을 포함하나, 이로 제한되지는 않을 것이다). "A, B, 및 C 등 중 적어도 하나" 와 통상 유사한 것들이 이용되는 이러한 예들에서, 일반적으로 그러한 구성은 지식을 지닌 당업자는 종래의 것을 이해할 것이다 (예를 들어, "A, B, 및 C 중 적어도 하나를 갖는 시스템" 은 A 만 단독으로, B 만 단독으로, C 만 단독으로, A 와 B 를 함께, A 와 C 를 함께, B 와 C 를 함께, 그리고/또는 A, B 와 C 를 함께 갖는 등의 시스템을 포함하나, 이로 제한되지는 않을 것이다). 상세한 설명, 청구항들, 또는 도면들 어디에서든, 2 개 이상의 대안적인 용어들을 나타내는 사실상 임의의 이접 단어 및/또는 구는 용얻르 중 하나, 용어들 중 어느 일방, 또는 용어들 양자 모두를 포함하는 가능성들을 고려한다는 것이 이해되어야 한다는 것이 당업자들에 의해 또한 이해될 것이다. 예를 들어, 구 "A 또는 B" 는 "A" 나 "B", 또는 "A 및 B" 의 가능성들을 포함하는 것으로 이해될 것이다.
소정의 예시적인 기법들이 다양한 방법들 및 시스템들을 이용하여 본원에서 설명되고 도시되었으나, 청구된 청구물로부터 벗어나지 않으면서, 다양한 다른 수정들이 이루어질 수도 있고, 등가물들이 대체될 수도 있다는 것이 당업자들에 의해 이해되어야 한다. 또한, 본원에서 설명된 중심 개념을 벗어나지 않은며서 특정 상황을 청구되는 청구물의 교시들에 적응시키도록 많은 수정들이 이루어질 수도 있다. 따라서, 청구되는 청구물은 개시된 특정 예들에 제한되는 것이 아니며, 그러한 청구되는 청구물은 또한 첨부된 청구항들의 범위 내에 있는 모든 양상들과, 그 등가물들의 양상들도 포함할 수도 있고자 한다.

Claims (42)

  1. 복수의 플랫폼 제공자들에 의한 이용을 위해 물리적 위치에 있는 복수의 서버들을 제공하는 것으로서, 상기 플랫폼 제공자들의 각각은 하나 이상의 플랫폼 고객들과 연관되고, 상기 플랫폼 고객들의 각각은 상기 복수의 서버들 중 하나 이상의 서버에 저장된 고객 데이터와 연관되는, 상기 복수의 서버들을 제공하는 것;
    플랫폼 고객 식별을 포함하는 장소 이동 (migration in place) 리스트 요청을 수신하는 것; 및
    상기 장소 이동 리스트 요청에 응답하여, 식별된 상기 플랫폼 고객에 대응하는 장소 이동 리스트를 제공하는 것으로서, 상기 장소 이동 리스트는 상기 물리적 위치의 외부로 상기 식별된 플랫폼 고객의 데이터를 이동시키지 않으면서 상기 식별된 플랫폼 고객에게 이용가능한 플랫폼 제공자들을 식별하는, 상기 장소 이동 리스트를 제공하는 것을 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 장소 이동 리스트는 상기 물리적 위치에 있는 데이터 센터의 외부로 상기 식별된 플랫폼 고객의 데이터를 이동시키지 않으면서 상기 식별된 플랫폼 고객에게 이용가능한 플랫폼 제공자들을 식별하는, 방법.
  3. 제 1 항에 있어서,
    상기 장소 이동 리스트는 상기 물리적 위치에 있는 데이터 센터 내의 서버 로우 (server row) 의 외부로 상기 식별된 플랫폼 고객의 데이터를 이동시키지 않으면서 상기 식별된 플랫폼 고객에게 이용가능한 플랫폼 제공자들을 식별하는, 방법.
  4. 제 1 항에 있어서,
    상기 장소 이동 리스트는 상기 물리적 위치에 있는 데이터 센터 내의 서버 랙 (server rack) 의 외부로 상기 식별된 플랫폼 고객의 데이터를 이동시키지 않으면서 상기 식별된 플랫폼 고객에게 이용가능한 플랫폼 제공자들을 식별하는, 방법.
  5. 제 1 항에 있어서,
    상기 장소 이동 리스트는 상기 물리적 위치에 있는 데이터 센터 내의 하나 이상의 특정한 서버들의 외부로 상기 식별된 플랫폼 고객의 데이터를 이동시키지 않으면서 상기 식별된 플랫폼 고객에게 이용가능한 플랫폼 제공자들을 식별하는, 방법.
  6. 제 1 항에 있어서,
    장소 이동 요청을 수신하는 것으로서, 상기 장소 이동 요청은 플랫폼 제공자 식별을 포함하는, 상기 장소 이동 요청을 수신하는 것; 및
    상기 장소 이동 요청에 응답하여, 제 1 플랫폼 제공자에 의해 제공되는 플랫폼으로부터 상기 식별된 플랫폼 제공자에 의해 제공되는 플랫폼으로 상기 식별된 플랫폼 고객의 데이터를 이동시키는 것을 가능하게 하도록 상기 물리적 위치에 있는 서버들에 상기 식별된 플랫폼 제공자의 플랫폼 서비스 모듈들을 배치하는 것을 더 포함하는, 방법.
  7. 제 6 항에 있어서,
    상기 플랫폼 고객의 데이터가 상기 식별된 플랫폼 제공자에 의해 제공되는 플랫폼으로 이동됨에 따라 상기 식별된 플랫폼 고객과 연관된 증가하는 개수의 서비스 호들을 상기 식별된 플랫폼 제공자에 의해 제공되는 플랫폼으로 보내는 것을 더 포함하는, 방법.
  8. 제 1 항에 있어서,
    장소 이동 리스트 요청 제어를 포함하는 사용자 인터페이스 (User Interface; UI) 또는 애플리케이션 프로그래밍 인터페이스 (Application Programming Interface; API) 를 제공하는 것으로서, 상기 장소 이동 리스트 요청은 상기 UI 또는 API 를 통해 수신되고 상기 장소 이동 리스트는 상기 UI 또는 API 를 통해 제공되는, 상기 사용자 인터페이스 (UI) 또는 애플리케이션 프로그래밍 인터페이스 (API) 를 제공하는 것을 더 포함하는, 방법.
  9. 제 1 항에 있어서,
    상기 물리적 위치에 있는 하나 이상의 서버들과 복수의 플랫폼 제공자들에 의해 제공되는 플랫폼들의 플랫폼 호환성을 결정하고, 상기 장소 이동 리스트에 상기 물리적 위치에 있는 상기 하나 이상의 서버들과 호환가능할 것으로 결정되는 플랫폼들을 포함시키는 것을 더 포함하는, 방법.
  10. 서버로서,
    프로세서;
    메모리; 및
    상기 메모리에 저장되고 상기 프로세서에 의해 실행가능한 장소 이동 (migration in place) 리스트 요청 서비스 모듈을 포함하고,
    상기 장소 이동 리스트 요청 서비스 모듈은,
    플랫폼 고객 식별을 포함하는 장소 이동 리스트 요청을 수신하는 것으로서, 상기 식별된 플랫폼 고객은 복수의 플랫폼 제공자들에 의한 이용을 위해 물리적 위치에 있는 복수의 서버들 중 하나 이상의 서버에 저장된 플래폼 고객 데이터와 연관되고, 상기 플랫폼 제공자들의 각각은 하나 이상의 플랫폼 고객들과 연관되며, 상기 플랫폼 고객들의 각각은 상기 복수의 서버들 중 하나 이상의 서버에 저장된 플랫폼 고객 데이터와 연관되는, 상기 장소 이동 리스트 요청을 수신하는 것; 및
    상기 장소 이동 리스트 요청에 응답하여, 식별된 상기 플랫폼 고객에 대응하는 장소 이동 리스트를 제공하는 것으로서, 상기 장소 이동 리스트는 상기 물리적 위치의 외부로 상기 식별된 플랫폼 고객의 데이터를 이동시키지 않으면서 상기 식별된 플랫폼 고객에게 이용가능한 플랫폼 제공자들을 식별하는, 상기 장소 이동 리스트를 제공하는 것을 하도록 구성되는, 서버.
  11. 제 10 항에 있어서,
    상기 장소 이동 리스트는 상기 물리적 위치에 있는 데이터 센터의 외부로 상기 식별된 플랫폼 고객의 데이터를 이동시키지 않으면서 상기 식별된 플랫폼 고객에게 이용가능한 플랫폼 제공자들을 식별하는, 서버.
  12. 제 10 항에 있어서,
    상기 장소 이동 리스트는 상기 물리적 위치에 있는 데이터 센터 내의 서버 로우 (server row) 의 외부로 상기 식별된 플랫폼 고객의 데이터를 이동시키지 않으면서 상기 식별된 플랫폼 고객에게 이용가능한 플랫폼 제공자들을 식별하는, 서버.
  13. 제 10 항에 있어서,
    상기 장소 이동 리스트는 상기 물리적 위치에 있는 데이터 센터 내의 서버 랙 (server rack) 의 외부로 상기 식별된 플랫폼 고객의 데이터를 이동시키지 않으면서 상기 식별된 플랫폼 고객에게 이용가능한 플랫폼 제공자들을 식별하는, 서버.
  14. 제 10 항에 있어서,
    상기 장소 이동 리스트는 상기 물리적 위치에 있는 데이터 센터 내의 하나 이상의 특정한 서버들의 외부로 상기 식별된 플랫폼 고객의 데이터를 이동시키지 않으면서 상기 식별된 플랫폼 고객에게 이용가능한 플랫폼 제공자들을 식별하는, 서버.
  15. 제 10 항에 있어서,
    상기 메모리에 저장되고 상기 프로세서에 의해 실행가능한 장소 이동 배치 모듈을 더 포함하고,
    상기 장소 이동 배치 모듈은,
    플랫폼 제공자 식별을 포함하는 장소 이동 요청을 수신하고;
    상기 장소 이동 요청에 응답하여, 제 1 플랫폼 제공자에 의해 제공되는 플랫폼으로부터 상기 식별된 플랫폼 제공자에 의해 제공되는 플랫폼으로 상기 식별된 플랫폼 고객의 데이터를 이동시키는 것을 가능하게 하도록 상기 물리적 위치에 있는 서버들에 상기 식별된 플랫폼 제공자의 플랫폼 서비스 모듈들을 배치하도록 구성되는, 서버.
  16. 제 15 항에 있어서,
    상기 메모리에 저장되고 상기 프로세서에 의해 실행가능한 세션 경계 제어기 (Session Border Controller; SBC) 모듈을 더 포함하고,
    상기 SBC 모듈은 상기 플랫폼 고객의 데이터가 상기 식별된 플랫폼 제공자에 의해 제공되는 플랫폼으로 이동됨에 따라 상기 식별된 플랫폼 고객과 연관된 증가하는 개수의 서비스 호들을 상기 식별된 플랫폼 제공자에 의해 제공되는 플랫폼으로 보내도록 구성되는, 서버.
  17. 제 10 항에 있어서,
    상기 메모리에 저장되고 상기 프로세서에 의해 실행가능한 사용자 인터페이스 (User Interface; UI) 또는 애플리케이션 프로그래밍 인터페이스 (Application Programming Interface; API) 모듈을 더 포함하고,
    상기 UI 또는 API 모듈은,
    장소 이동 리스트 요청 제어를 포함하는 UI 또는 API 를 제공하고;
    상기 장소 이동 리스트 요청 제어를 통해 상기 장소 이동 리스트 요청을 수신하며;
    상기 UI 또는 API 를 통해 상기 장소 이동 리스트를 제공하도록 구성되는, 서버.
  18. 제 10 항에 있어서,
    상기 메모리에 저장되고 상기 프로세서에 의해 실행가능한 플랫폼 호환성 모듈을 더 포함하고,
    상기 플랫폼 호환성 모듈은 상기 물리적 위치에 있는 하나 이상의 서버들과 복수의 플랫폼 제공자들에 의해 제공되는 플랫폼들의 플랫폼 호환성을 결정하고, 상기 장소 이동 리스트에 상기 물리적 위치에 있는 상기 하나 이상의 서버들과 호환가능할 것으로 결정되는 플랫폼들을 포함시키도록 구성되는, 서버.
  19. 프로세서에 의해 실행가능한 컴퓨터 실행가능 명령들을 갖는 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 상기 프로세서에 의해 실행되는 경우, 상기 프로세서로 하여금,
    플랫폼 고객 식별을 포함하는 장소 이동 (migration in place) 리스트 요청을 수신하는 것으로서, 상기 식별된 플랫폼 고객은 복수의 플랫폼 제공자들에 의한 이용을 위해 물리적 위치에 있는 복수의 서버들 중 하나 이상의 서버에 저장된 플래폼 고객 데이터와 연관되고, 상기 플랫폼 제공자들의 각각은 하나 이상의 플랫폼 고객들과 연관되며, 상기 플랫폼 고객들의 각각은 상기 복수의 서버들 중 하나 이상의 서버에 저장된 플랫폼 고객 데이터와 연관되는, 상기 장소 이동 리스트 요청을 수신하는 것; 및
    상기 장소 이동 리스트 요청에 응답하여, 식별된 상기 플랫폼 고객에 대응하는 장소 이동 리스트를 제공하는 것으로서, 상기 장소 이동 리스트는 상기 물리적 위치의 외부로 상기 식별된 플랫폼 고객의 데이터를 이동시키지 않으면서 상기 식별된 플랫폼 고객에게 이용가능한 플랫폼 제공자들을 식별하는, 상기 장소 이동 리스트를 제공하는 것
    을 하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  20. 제 19 항에 있어서,
    상기 장소 이동 리스트는 상기 물리적 위치에 있는 데이터 센터의 외부로 상기 식별된 플랫폼 고객의 데이터를 이동시키지 않으면서 상기 식별된 플랫폼 고객에게 이용가능한 플랫폼 제공자들을 식별하는, 비일시적 컴퓨터 판독가능 저장 매체.
  21. 제 19 항에 있어서,
    상기 장소 이동 리스트는 상기 물리적 위치에 있는 데이터 센터 내의 서버 로우 (server row) 의 외부로 상기 식별된 플랫폼 고객의 데이터를 이동시키지 않으면서 상기 식별된 플랫폼 고객에게 이용가능한 플랫폼 제공자들을 식별하는, 비일시적 컴퓨터 판독가능 저장 매체.
  22. 제 19 항에 있어서,
    상기 장소 이동 리스트는 상기 물리적 위치에 있는 데이터 센터 내의 서버 랙 (server rack) 의 외부로 상기 식별된 플랫폼 고객의 데이터를 이동시키지 않으면서 상기 식별된 플랫폼 고객에게 이용가능한 플랫폼 제공자들을 식별하는, 비일시적 컴퓨터 판독가능 저장 매체.
  23. 제 19 항에 있어서,
    상기 장소 이동 리스트는 상기 물리적 위치에 있는 데이터 센터 내의 하나 이상의 특정한 서버들의 외부로 상기 식별된 플랫폼 고객의 데이터를 이동시키지 않으면서 상기 식별된 플랫폼 고객에게 이용가능한 플랫폼 제공자들을 식별하는, 비일시적 컴퓨터 판독가능 저장 매체.
  24. 제 19 항에 있어서,
    상기 명령들은, 상기 프로세서로 하여금,
    플랫폼 제공자 식별을 포함하는 장소 이동 요청을 수신하게 하고;
    상기 장소 이동 요청에 응답하여, 제 1 플랫폼 제공자에 의해 제공되는 플랫폼으로부터 상기 식별된 플랫폼 제공자에 의해 제공되는 플랫폼으로 상기 식별된 플랫폼 고객의 데이터를 이동시키는 것을 가능하게 하도록 상기 물리적 위치에 있는 서버들에 상기 식별된 플랫폼 제공자의 플랫폼 서비스 모듈들을 배치하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  25. 제 24 항에 있어서,
    상기 명령들은, 상기 프로세서로 하여금, 세션 경계 제어기 (Session Border Controller; SBC) 모듈로, 상기 식별된 플랫폼 고객의 데이터가 상기 식별된 플랫폼 제공자에 의해 제공되는 플랫폼으로 이동됨에 따라 상기 식별된 플랫폼 고객과 연관된 증가하는 개수의 서비스 호들을 상기 식별된 플랫폼 제공자에 의해 제공되는 플랫폼으로 보내게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  26. 제 19 항에 있어서,
    상기 명령들은, 상기 프로세서로 하여금,
    장소 이동 리스트 요청 제어를 포함하는 UI 또는 API 를 제공하게 하고;
    상기 장소 이동 리스트 요청 제어를 통해 상기 장소 이동 리스트 요청을 수신하게 하며;
    상기 UI 또는 API 를 통해 상기 장소 이동 리스트를 제공하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  27. 제 23 항에 있어서,
    상기 명령들은, 상기 프로세서로 하여금, 상기 플랫폼 호환성 모듈은 상기 물리적 위치에 있는 하나 이상의 서버들과 복수의 플랫폼 제공자들에 의해 제공되는 플랫폼들의 플랫폼 호환성을 결정하고, 상기 장소 이동 리스트에 상기 물리적 위치에 있는 상기 하나 이상의 서버들과 호환가능할 것으로 결정되는 플랫폼들을 포함시키게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  28. 복수의 플랫폼 제공자들에 의한 이용을 위해 복수의 서버들을 제공하는 것으로서, 상기 플랫폼 제공자들의 각각은 하나 이상의 플랫폼 고객들과 연관되고, 상기 플랫폼 고객들의 각각은 상기 복수의 서버들 중 하나 이상의 서버에 저장되는 고객 데이터와 연관되는, 상기 복수의 서버들을 제공하는 것;
    하드웨어 식별 요청을 수신하는 것으로서, 상기 하드웨어 식별 요청은 제 1 플랫폼 제공자의 식별된 플랫폼 고객과 연관된 플랫폼 고객 데이터를 포함하는 서버들을 식별하기 위한 요청을 포함하는, 상기 하드웨어 식별 요청을 수신하는 것;
    상기 하드웨어 식별 요청에 응답하여, 상기 식별된 플랫폼 고객과 연관된 플랫폼 고객 데이터를 포함하는 서버들에 대응하는 하나 이상의 하드웨어 식별자들을 제공하는 것;
    장소 이동 요청을 수신하는 것으로서, 상기 장소 이동 요청은 상기 식별된 플랫폼 고객과 연관된 플랫폼 고객 데이터를 포함하는 상기 서버들에 식별된 플랫폼 서비스 제공자의 플랫폼 서비스 모듈들을 배치하기 위한 요청을 포함하는, 상기 장소 이동 요청을 수신하는 것; 및
    상기 장소 이동 요청에 응답하여, 상기 식별된 플랫폼 고객과 연관된 플랫폼 고객 데이터를 포함하는 상기 복수의 서버들 중 상기 하나 이상의 서버에 상기 식별된 서비스 제공자의 플랫폼 서비스 모듈들을 배치하는 것을 포함하는, 방법.
  29. 제 28 항에 있어서,
    상기 식별된 플랫폼 고객의 데이터가 상기 식별된 플랫폼 제공자에 의해 제공되는 플랫폼으로 이동됨에 따라 상기 식별된 플랫폼 고객과 연관된 증가하는 개수의 서비스 호들을 상기 식별된 플랫폼 제공자에 의해 제공되는 플랫폼으로 보내는 것을 더 포함하는, 방법.
  30. 제 28 항에 있어서,
    하드웨어 식별 요청 제어를 포함하는 사용자 인터페이스 (User Interface; UI) 또는 애플리케이션 프로그래밍 인터페이스 (Application Programming Interface; API) 를 제공하는 것으로서, 상기 하드웨어 식별 요청은 상기 UI 또는 API 를 통해 수신되고 상기 하나 이상의 하드웨어 식별자들은 상기 UI 또는 API 를 통해 제공되는, 상기 사용자 인터페이스 (UI) 또는 애플리케이션 프로그래밍 인터페이스 (API) 를 제공하는 것을 더 포함하는, 방법.
  31. 제 28 항에 있어서,
    하나 이상의 하드웨어 식별자들을 포함하는 플랫폼 호환성 요청을 수신하고, 상기 플랫폼 호환성 요청에 응답하여, 상기 플랫폼 호환성 요청에서 식별된 하드웨어와 하나 이상의 플랫폼들의 플랫폼 호환성을 정의하는 플랫폼 호환성 정보를 제공하는 것을 더 포함하는, 방법.
  32. 제 28 항에 있어서,
    상기 하드웨어 식별 요청에 응답하여 제공되는 상기 하나 이상의 하드웨어 식별자들은 제한된-사용 하드웨어 식별자들을 포함하는, 방법.
  33. 서버로서,
    프로세서;
    메모리;
    상기 메모리에 저장되고 상기 프로세서에 의해 실행가능한 하드웨어 식별 요청 서비스 모듈; 및
    상기 메모리에 저장되고 상기 프로세서에 의해 실행가능한 장소 이동 배치 모듈을 포함하고,
    상기 하드웨어 식별 요청 서비스 모듈은,
    하드웨어 식별 요청을 수신하는 것으로서, 상기 하드웨어 식별 요청은 복수의 플랫폼 제공자들 중 제 1 플랫폼 제공자의 식별된 플랫폼 고객과 연관된 플랫폼 고객 데이터를 포함하는 서버들을 식별하기 위한 요청을 포함하고, 상기 플랫폼 제공자들의 각각은 하나 이상의 플랫폼 고객들과 연관되며, 상기 플랫폼 고객들의 각각은 복수의 서버들 중 하나 이상의 서버에 저장되는 고객 데이터와 연관되는, 상기 하드웨어 식별 요청을 수신하는 것; 및
    상기 하드웨어 식별 요청에 응답하여, 상기 식별된 플랫폼 고객과 연관된 플랫폼 고객 데이터를 포함하는 서버들에 대응하는 하나 이상의 하드웨어 식별자들을 제공하는 것을 하도록 구성되며,
    상기 장소 이동 배치 모듈은,
    장소 이동 요청을 수신하는 것으로서, 상기 장소 이동 요청은 상기 식별된 플랫폼 고객과 연관된 플랫폼 고객 데이터를 포함하는 상기 서버들에 식별된 플랫폼 서비스 제공자의 플랫폼 서비스 모듈들을 배치하기 위한 요청을 포함하는, 상기 장소 이동 요청을 수신하는 것; 및
    상기 장소 이동 요청에 응답하여, 상기 식별된 플랫폼 고객과 연관된 플랫폼 고객 데이터를 포함하는 상기 복수의 서버들 중 상기 하나 이상의 서버에 상기 식별된 서비스 제공자의 플랫폼 서비스 모듈들을 배치하는 것을 하도록 구성되는, 서버.
  34. 제 33 항에 있어서,
    상기 메모리에 저장되고 상기 프로세서에 의해 실행가능한 세션 경계 제어기 (Session Border Controller; SBC) 모듈을 더 포함하고,
    상기 SBC 모듈은 상기 식별된 플랫폼 고객의 데이터가 상기 식별된 플랫폼 제공자에 의해 제공되는 플랫폼으로 이동됨에 따라 상기 식별된 플랫폼 고객과 연관된 증가하는 개수의 서비스 호들을 상기 식별된 플랫폼 제공자에 의해 제공되는 플랫폼으로 보내도록 구성되는, 서버.
  35. 제 33 항에 있어서,
    상기 메모리에 저장되고 상기 프로세서에 의해 실행가능한 사용자 인터페이스 (User Interface; UI) 또는 애플리케이션 프로그래밍 인터페이스 (Application Programming Interface; API) 모듈을 더 포함하고,
    상기 UI 또는 API 모듈은,
    하드웨어 식별 요청 제어를 포함하는 UI 또는 API 를 제공하고;
    상기 UI 또는 API 에서 상기 하드웨어 식별 요청 제어를 통해 상기 하드웨어 식별 요청을 수신하며;
    상기 UI 또는 API 를 통해 상기 식별된 플랫폼 고객과 연관된 플랫폼 고객 데이터를 포함하는 상기 서버들에 대응하는 상기 하나 이상의 하드웨어 식별자들을 제공하도록 구성되는, 서버.
  36. 제 33 항에 있어서,
    상기 메모리에 저장되고 상기 프로세서에 의해 실행가능한 플랫폼 호환성 모듈을 더 포함하고,
    상기 플랫폼 호환성 모듈은, 하나 이상의 하드웨어 식별자들을 포함하는 플랫폼 호환성 요청을 수신하고, 상기 플랫폼 호환성 요청에 응답하여, 상기 플랫폼 호환성 요청에서 식별된 하드웨어와 하나 이상의 플랫폼들의 플랫폼 호환성을 정의하는 플랫폼 호환성 정보를 제공하도록 구성되는, 서버.
  37. 제 33 항에 있어서,
    상기 메모리에 저장되고 상기 프로세서에 의해 실행가능한 보안 모듈을 더 포함하고,
    상기 보안 모듈은 하드웨어 식별 요청들에 응답하여 제공되는 하드웨어 식별자들로서 이용하기 위한 제한된-사용 하드웨어 식별자들을 발생시키도록 구성되는, 서버.
  38. 프로세서에 의해 실행가능한 컴퓨터 실행가능 명령들을 갖는 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 상기 프로세서에 의해 실행되는 경우, 상기 프로세서로 하여금,
    하드웨어 식별 요청을 수신하는 것으로서, 상기 하드웨어 식별 요청은 복수의 플랫폼 제공자들 중 제 1 플랫폼 제공자의 식별된 플랫폼 고객과 연관된 플랫폼 고객 데이터를 포함하는 서버들을 식별하기 위한 요청을 포함하고, 상기 플랫폼 제공자들의 각각은 하나 이상의 플랫폼 고객들과 연관되며, 상기 플랫폼 고객들의 각각은 복수의 서버들 중 하나 이상의 서버에 저장되는 고객 데이터와 연관되는, 상기 하드웨어 식별 요청을 수신하는 것;
    상기 하드웨어 식별 요청에 응답하여, 상기 식별된 플랫폼 고객과 연관된 플랫폼 고객 데이터를 포함하는 서버들에 대응하는 하나 이상의 하드웨어 식별자들을 제공하게 하는 것;
    장소 이동 요청을 수신하는 것으로서, 상기 장소 이동 요청은 상기 식별된 플랫폼 고객과 연관된 플랫폼 고객 데이터를 포함하는 상기 서버들에 식별된 플랫폼 서비스 제공자의 플랫폼 서비스 모듈들을 배치하기 위한 요청을 포함하는, 상기 장소 이동 요청을 수신하는 것; 및
    상기 장소 이동 요청에 응답하여, 상기 식별된 플랫폼 고객과 연관된 플랫폼 고객 데이터를 포함하는 상기 복수의 서버들 중 상기 하나 이상의 서버에 상기 식별된 서비스 제공자의 플랫폼 서비스 모듈들을 배치하는 것
    을 하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  39. 제 38 항에 있어서,
    상기 명령들은, 상기 프로세서로 하여금, 세션 경계 제어기 (Session Border Controller; SBC) 모듈로, 상기 식별된 플랫폼 고객의 데이터가 상기 식별된 플랫폼 제공자에 의해 제공되는 플랫폼으로 이동됨에 따라 상기 식별된 플랫폼 고객과 연관된 증가하는 개수의 서비스 호들을 상기 식별된 플랫폼 제공자에 의해 제공되는 플랫폼으로 보내게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  40. 제 38 항에 있어서,
    상기 명령들은, 상기 프로세서로 하여금,
    하드웨어 식별 요청 제어를 포함하는 UI 또는 API 를 제공하게 하고;
    상기 UI 또는 API 에서 상기 하드웨어 식별 요청 제어를 통해 상기 하드웨어 식별 요청을 수신하게 하며;
    상기 UI 또는 API 를 통해 상기 식별된 플랫폼 고객과 연관된 플랫폼 고객 데이터를 포함하는 상기 서버들에 대응하는 상기 하나 이상의 하드웨어 식별자들을 제공하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  41. 제 38 항에 있어서,
    상기 명령들은, 상기 프로세서로 하여금, 하나 이상의 하드웨어 식별자들을 포함하는 플랫폼 호환성 요청을 수신하고, 상기 플랫폼 호환성 요청에 응답하여, 상기 플랫폼 호환성 요청에서 식별된 하드웨어와 하나 이상의 플랫폼들의 플랫폼 호환성을 정의하는 플랫폼 호환성 정보를 제공하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  42. 제 38 항에 있어서,
    상기 명령들은, 상기 프로세서로 하여금, 하드웨어 식별 요청들에 응답하여 제공되는 하드웨어 식별자들로서 이용하기 위한 제한된-사용 하드웨어 식별자들을 발생시키게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020147028141A 2012-04-19 2012-04-19 고객 하드웨어에 대한 플랫폼들의 인프라스트럭쳐 배치에 의한 장소 이동 KR101629596B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/034178 WO2013158098A1 (en) 2012-04-19 2012-04-19 Migration in place

Publications (2)

Publication Number Publication Date
KR20140138871A true KR20140138871A (ko) 2014-12-04
KR101629596B1 KR101629596B1 (ko) 2016-06-13

Family

ID=49381144

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147028141A KR101629596B1 (ko) 2012-04-19 2012-04-19 고객 하드웨어에 대한 플랫폼들의 인프라스트럭쳐 배치에 의한 장소 이동

Country Status (4)

Country Link
US (2) US8880704B2 (ko)
KR (1) KR101629596B1 (ko)
CN (1) CN104246738B (ko)
WO (1) WO2013158098A1 (ko)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7675854B2 (en) 2006-02-21 2010-03-09 A10 Networks, Inc. System and method for an adaptive TCP SYN cookie with time validation
US8312507B2 (en) 2006-10-17 2012-11-13 A10 Networks, Inc. System and method to apply network traffic policy to an application session
US8584199B1 (en) 2006-10-17 2013-11-12 A10 Networks, Inc. System and method to apply a packet routing policy to an application session
US9960967B2 (en) 2009-10-21 2018-05-01 A10 Networks, Inc. Determining an application delivery server based on geo-location information
US9215275B2 (en) 2010-09-30 2015-12-15 A10 Networks, Inc. System and method to balance servers based on server load status
US9609052B2 (en) 2010-12-02 2017-03-28 A10 Networks, Inc. Distributing application traffic to servers based on dynamic service response time
US8897154B2 (en) 2011-10-24 2014-11-25 A10 Networks, Inc. Combining stateless and stateful server load balancing
US9094364B2 (en) 2011-12-23 2015-07-28 A10 Networks, Inc. Methods to manage services over a service gateway
US10044582B2 (en) 2012-01-28 2018-08-07 A10 Networks, Inc. Generating secure name records
US9118618B2 (en) 2012-03-29 2015-08-25 A10 Networks, Inc. Hardware-based packet editor
US8880704B2 (en) 2012-04-19 2014-11-04 Empire Technology Development Llc Migration in place by infrastructure deployment of platforms to customer hardware
JP5970541B2 (ja) * 2012-04-20 2016-08-17 株式会社日立製作所 情報処理システム、管理サーバ群、および、サーバ管理プログラム
US8782221B2 (en) 2012-07-05 2014-07-15 A10 Networks, Inc. Method to allocate buffer for TCP proxy session based on dynamic network conditions
US10002141B2 (en) 2012-09-25 2018-06-19 A10 Networks, Inc. Distributed database in software driven networks
US9843484B2 (en) 2012-09-25 2017-12-12 A10 Networks, Inc. Graceful scaling in software driven networks
US9705800B2 (en) 2012-09-25 2017-07-11 A10 Networks, Inc. Load distribution in data networks
US10021174B2 (en) 2012-09-25 2018-07-10 A10 Networks, Inc. Distributing service sessions
US9338225B2 (en) 2012-12-06 2016-05-10 A10 Networks, Inc. Forwarding policies on a virtual service network
US9531846B2 (en) 2013-01-23 2016-12-27 A10 Networks, Inc. Reducing buffer usage for TCP proxy session based on delayed acknowledgement
US9900252B2 (en) 2013-03-08 2018-02-20 A10 Networks, Inc. Application delivery controller and global server load balancer
US9992107B2 (en) 2013-03-15 2018-06-05 A10 Networks, Inc. Processing data packets using a policy based network path
US10027761B2 (en) 2013-05-03 2018-07-17 A10 Networks, Inc. Facilitating a secure 3 party network session by a network device
US10038693B2 (en) 2013-05-03 2018-07-31 A10 Networks, Inc. Facilitating secure network traffic by an application delivery controller
US9604139B2 (en) 2013-11-11 2017-03-28 Amazon Technologies, Inc. Service for generating graphics object data
US9805479B2 (en) 2013-11-11 2017-10-31 Amazon Technologies, Inc. Session idle optimization for streaming server
US9582904B2 (en) 2013-11-11 2017-02-28 Amazon Technologies, Inc. Image composition based on remote object data
US9634942B2 (en) 2013-11-11 2017-04-25 Amazon Technologies, Inc. Adaptive scene complexity based on service quality
US9596280B2 (en) 2013-11-11 2017-03-14 Amazon Technologies, Inc. Multiple stream content presentation
US9641592B2 (en) * 2013-11-11 2017-05-02 Amazon Technologies, Inc. Location of actor resources
US10230770B2 (en) 2013-12-02 2019-03-12 A10 Networks, Inc. Network proxy layer for policy-based application proxies
US9942152B2 (en) 2014-03-25 2018-04-10 A10 Networks, Inc. Forwarding data packets using a service-based forwarding policy
US9942162B2 (en) 2014-03-31 2018-04-10 A10 Networks, Inc. Active application response delay time
US9906422B2 (en) 2014-05-16 2018-02-27 A10 Networks, Inc. Distributed system to determine a server's health
US10129122B2 (en) 2014-06-03 2018-11-13 A10 Networks, Inc. User defined objects for network devices
US9992229B2 (en) 2014-06-03 2018-06-05 A10 Networks, Inc. Programming a data network device using user defined scripts with licenses
US9986061B2 (en) 2014-06-03 2018-05-29 A10 Networks, Inc. Programming a data network device using user defined scripts
US10268467B2 (en) 2014-11-11 2019-04-23 A10 Networks, Inc. Policy-driven management of application traffic for providing services to cloud-based applications
US10581976B2 (en) 2015-08-12 2020-03-03 A10 Networks, Inc. Transmission control of protocol state exchange for dynamic stateful service insertion
US10243791B2 (en) 2015-08-13 2019-03-26 A10 Networks, Inc. Automated adjustment of subscriber policies
US20170151957A1 (en) * 2015-11-27 2017-06-01 Bragi GmbH Vehicle with interactions with wearable device to provide health or physical monitoring
US9626166B1 (en) * 2016-01-26 2017-04-18 International Business Machines Corporation Common secure cloud appliance image and deployment
US10742498B2 (en) 2016-06-22 2020-08-11 Amazon Technologies, Inc. Application migration system
US10185549B2 (en) 2016-06-28 2019-01-22 Microsoft Technology Licensing, Llc Updating live system with static changes
US10873511B2 (en) * 2016-11-22 2020-12-22 Airwatch Llc Management service migration for managed devices
JP2018173920A (ja) * 2017-03-31 2018-11-08 富士通株式会社 制御プログラム、制御方法および制御装置
US10944630B2 (en) * 2018-11-20 2021-03-09 Cisco Technology, Inc. Seamless automation of network device migration to and from cloud managed systems
US11799971B2 (en) 2022-02-17 2023-10-24 Bank Of America Corporation Systems and methods for session migration between devices

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050044197A1 (en) * 2003-08-18 2005-02-24 Sun Microsystems.Inc. Structured methodology and design patterns for web services
KR20080068421A (ko) * 2007-01-19 2008-07-23 광주과학기술원 이종 플랫폼간의 데이터 마이그레이션 방법 및 데이터마이그레이션 장치
US20100076615A1 (en) * 2008-09-13 2010-03-25 Moixa Energy Holdings Limited Systems, devices and methods for electricity provision, usage monitoring, analysis, and enabling improvements in efficiency
US20120054193A1 (en) * 2010-08-31 2012-03-01 Backa Bruce R System and Method for In-Place Data Migration

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7774772B2 (en) 2001-09-28 2010-08-10 Siebel Systems, Inc. Method and apparatus to perform an application software migration
US7685027B2 (en) * 2003-12-04 2010-03-23 International Business Machines Corporation Method and system for enterprise-wide migration
US7769843B2 (en) * 2006-09-22 2010-08-03 Hy Performix, Inc. Apparatus and method for capacity planning for data center server consolidation and workload reassignment
CN101237327A (zh) * 2007-02-01 2008-08-06 北京帮助在线信息技术有限公司 一种在线帮助平台系统及其实现方法
CN101281461B (zh) * 2007-04-04 2012-07-04 国际商业机器公司 用于迁移应用所依赖的系统环境的方法和装置
US20110166952A1 (en) 2010-01-07 2011-07-07 Oracle International Corporation Facilitating dynamic construction of clouds
US8607200B2 (en) 2010-06-01 2013-12-10 Red Hat, Inc. Executing a web application at different stages in the application life cycle
CN101969475A (zh) * 2010-11-15 2011-02-09 张军 基于云计算的商业数据可控分发与融合应用系统
US8880704B2 (en) 2012-04-19 2014-11-04 Empire Technology Development Llc Migration in place by infrastructure deployment of platforms to customer hardware

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050044197A1 (en) * 2003-08-18 2005-02-24 Sun Microsystems.Inc. Structured methodology and design patterns for web services
KR20080068421A (ko) * 2007-01-19 2008-07-23 광주과학기술원 이종 플랫폼간의 데이터 마이그레이션 방법 및 데이터마이그레이션 장치
US20100076615A1 (en) * 2008-09-13 2010-03-25 Moixa Energy Holdings Limited Systems, devices and methods for electricity provision, usage monitoring, analysis, and enabling improvements in efficiency
US20120054193A1 (en) * 2010-08-31 2012-03-01 Backa Bruce R System and Method for In-Place Data Migration

Also Published As

Publication number Publication date
US20150006628A1 (en) 2015-01-01
CN104246738A (zh) 2014-12-24
KR101629596B1 (ko) 2016-06-13
US9311316B2 (en) 2016-04-12
US8880704B2 (en) 2014-11-04
US20130282791A1 (en) 2013-10-24
WO2013158098A1 (en) 2013-10-24
CN104246738B (zh) 2017-02-01

Similar Documents

Publication Publication Date Title
KR101629596B1 (ko) 고객 하드웨어에 대한 플랫폼들의 인프라스트럭쳐 배치에 의한 장소 이동
JP6621838B2 (ja) 仮想デスクトップ・インフラストラクチャにおける複数のプロトコルの使用
US11334394B2 (en) Function as a service (FAAS) execution distributor
JP6518346B2 (ja) 分散型コンピューティング環境における仮想マシンインスタンス上のコマンドの実行
WO2015067123A1 (en) Management of addresses in virtual machines
US10021111B2 (en) Location based authentication of users to a virtual machine in a computer system
US20190098107A1 (en) Geographic location based user computing asset provisioning in distributed computing systems
US11956281B2 (en) Method and apparatus for edge application server discovery or instantiation by application provider to run media streaming and services on 5G networks
US11438398B2 (en) 3rd generation partnership project (3gpp) framework for live uplink streaming (flus) sink capabilities determination
US11297065B2 (en) Technology for computing resource liaison
US11910412B2 (en) Media sink capabilities description
US20180123999A1 (en) Tracking client location using buckets
US20240106832A1 (en) Remote data planes for virtual private label clouds
CN117280703A (zh) 5g媒体流结构中边缘服务器的网络侧和客户端侧激活方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190515

Year of fee payment: 4