KR102313432B1 - 다중―단일―테넌트 SaaS 서비스들의 관리 - Google Patents

다중―단일―테넌트 SaaS 서비스들의 관리 Download PDF

Info

Publication number
KR102313432B1
KR102313432B1 KR1020197035093A KR20197035093A KR102313432B1 KR 102313432 B1 KR102313432 B1 KR 102313432B1 KR 1020197035093 A KR1020197035093 A KR 1020197035093A KR 20197035093 A KR20197035093 A KR 20197035093A KR 102313432 B1 KR102313432 B1 KR 102313432B1
Authority
KR
South Korea
Prior art keywords
tenant
control plane
instance
instances
application
Prior art date
Application number
KR1020197035093A
Other languages
English (en)
Other versions
KR20200000442A (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 구글 엘엘씨
Priority to KR1020217032564A priority Critical patent/KR102453818B1/ko
Publication of KR20200000442A publication Critical patent/KR20200000442A/ko
Application granted granted Critical
Publication of KR102313432B1 publication Critical patent/KR102313432B1/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • 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/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • 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
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

시스템(10)은, 데이터 프로세싱 하드웨어(372) 상에서 실행되는 제어 평면 관리자(340)에서, 단일-테넌트 SaaS(software-as-a-service) 애플리케이션에 대한 인스턴스 관리 구성 데이터(360)를 수신하는 것; 제어 평면 관리자에서, 단일-테넌트 SaaS 애플리케이션의 이미지(350)를 수신하는 것; 및 제어 평면 관리자에 의해, 인스턴스 관리 구성 데이터에 기초하여 제어 평면(330)을 생성하는 것을 포함한다. 제어 평면은 수신된 이미지에 기초하여 단일-테넌트 SaaS 애플리케이션의 다중 인스턴스들(310)을 생성하고, 그리고 수신된 인스턴스 관리 구성 데이터에 기초하여 단일-테넌트 SaaS 애플리케이션의 인스턴스들을 관리하도록 구성된다. 시스템은 데이터 프로세싱 하드웨어 상에서 제어 평면을 실행하는 것을 또한 포함한다.

Description

다중―단일―테넌트 SaaS 서비스들의 관리
[0001] 본 개시내용은 다중-단일-테넌트 SaaS(Software-as-a-Service) 서비스들의 관리에 관한 것이다.
[0002] 서비스로서 전달될 소프트웨어(SaaS)의 구축은 일반적으로 다수의 사용자들("다중-테넌시(multi-tenancy)")의 핸들링을 수반한다. 다중-테넌시를 관리함에 있어서의 하나의 인자는 다수의 고객들("테넌트들(tenants)") 각각을 효율적이고 안정적으로 격리를 생성할 수 있는 능력이다. 테넌트들 간의 격리는 두 가지 핵심 목표들: 보안 및 성능을 제공한다. 테넌트들이 공유 리소스들에 액세스할 수 있는 경우에, 하나의 테넌트가 다른 테넌트들의 데이터에 액세스할 수 없는 것을 보장하도록 이 액세스를 신중하게 제어해야 한다. 또한, 테넌트들이 핵심 리소스들을 공유할 때, 하나의 테넌트로부터의 리소스 수요의 급증(surge)은 다른 테넌트들을 위축시켜 그들이 저하된 성능을 겪게 할 수 있다. 이것을 "시끄러운 이웃들(noisy neighbors)" 문제라고 한다. 극단적으로, 하나의 테넌트가 전체 SaaS 동작을 손상시켜, 다른 모든 테넌트들의 서비스를 중단시킬 수 있다. 따라서, 테넌트들 중 단 하나의 테넌트가 다른 테넌트들에 미치는 영향을 최소화하기 위해 가능한 한 테넌트들을 서로 격리하는 것이 바람직할 수 있다. 그러나, 개별 테넌트들 간의 격리 정도가 더 클수록, 각각의 테넌트가 개별적으로 프로비저닝(provision)되고 동작되어야 하므로, 아키텍처를 관리하는 것이 더 부담이 된다.
[0003] 본 개시내용의 일 양태는 데이터 프로세싱 하드웨어 및 메모리 하드웨어를 포함하는 시스템을 제공한다. 메모리 하드웨어는 데이터 프로세싱 하드웨어와 통신하고, 데이터 프로세싱 하드웨어 상에서 실행될 때 데이터 프로세싱 하드웨어로 하여금 복수의 동작들을 수행하게 하는 명령어들을 저장한다. 일부 예들에서, 동작들 중 하나는 단일-테넌트 SaaS(software-as-a-service) 애플리케이션에 대한 인스턴스 관리 구성 데이터를 수신하는 것을 포함할 수 있다. 다른 동작은 단일-테넌트 SaaS 애플리케이션의 복수의 실행 가능 이미지들을 수신하는 것을 포함할 수 있다. 이미지들은 가상 머신 이미지들, 컨테이너 이미지들, 또는 가상 머신 이미지들과 컨테이너 이미지들의 조합을 포함할 수 있다. 또 다른 동작은 제어 평면 관리자에 의해 인스턴스 관리 구성 데이터에 기초하여 제어 평면을 생성하는 것을 포함할 수 있다. 제어 평면은 수신된 이미지들에 기초하여 단일-테넌트 SaaS 애플리케이션의 다중 인스턴스들을 생성하고, 그리고 수신된 인스턴스 관리 구성 데이터에 기초하여 단일-테넌트 SaaS 애플리케이션의 인스턴스들을 관리하도록 구성된다. 다른 동작은 데이터 프로세싱 하드웨어 상에서 제어 평면을 실행하는 것을 포함할 수 있다.
[0004] 본 개시내용의 구현들은 이하의 선택적 특징들 중 하나 이상을 포함할 수 있다. 일부 구현들에서, 제어 평면은 단일-테넌트 SaaS 애플리케이션의 인스턴스들의 라이프사이클 관리를 위해 구성된다. 라이프사이클 관리는 단일-테넌트 SaaS 애플리케이션의 인스턴스들에 대한 생성, 판독, 업데이트, 삭제, 백업, 복원, 재시작, 및 셧다운 동작들을 포함할 수 있다. 인스턴스 관리 구성 데이터는 단일-테넌트 SaaS 애플리케이션의 인스턴스들의 라이프사이클 관리 동작들을 정의한다. 일부 예들에서, 인스턴스 관리 구성 데이터는 단일-테넌트 SaaS 애플리케이션의 인스턴스들의 라이프사이클 관리를 정의하기 위한 복수의 선택 가능한 파라미터들을 포함한다.
[0005] 일부 구현들에서, 제어 평면은 가상 머신, 가상 머신 클러스터 또는 전용 호스트 디바이스 상에 단일-테넌트 SaaS 애플리케이션의 각각의 인스턴스를 생성하도록 구성된다. 제어 평면은 단일-테넌트 SaaS 애플리케이션의 각각의 인스턴스에 대한 동작 또는 사용 메트릭들을 평가하도록, 또한 평가된 동작 또는 사용 메트릭들을 데이터 프로세싱 하드웨어와 통신하는 메모리 하드웨어에 저장하도록 구성될 수 있다. 사용 메트릭들은 레이턴시(latency), 에러들, 바이트 인/아웃(bytes in/out), 및 인스턴스에 대한 호출들, 예를 들어, 또는 애플리케이션의 특수 기능과 관련된 그외 메트릭들을 포함할 수 있다.
[0006] 일부 구현들에서, 인스턴스 관리 구성 데이터는 단일-테넌트 SaaS 애플리케이션의 인스턴스들을 생성하기 위한 복수의 선택 가능한 파라미터들을 포함한다. 파라미터들은 배치 유형, 서비스 권한들, 가용성, 보안 격리 레벨들, 호스트 위치들, 및 모니터링 및 지원 파라미터들 중 하나 이상을 포함할 수 있다. 일부 예들에서, 인스턴스 관리 구성 데이터는 하나 이상의 미리 정의된 파라미터들을 포함하는 하나 이상의 인스턴스 템플릿(template)들을 포함한다.
본 개시내용의 다른 양태는 데이터 프로세싱 하드웨어 상에서 실행하는 제어 평면 관리자에서 단일-테넌트 SaaS(software-as-a-service) 애플리케이션에 대한 인스턴스 관리 구성 데이터를 수신하는 단계를 포함하는 방법을 제공한다. 제어 평면 관리자는 단일-테넌트 SaaS 애플리케이션의 이미지를 수신하고 인스턴스 관리 구성 데이터에 기초하여 제어 평면을 생성할 수 있다. 제어 평면은 수신된 이미지에 기초하여 단일-테넌트 SaaS 애플리케이션의 다중 인스턴스들을 인스턴스화(instantiate)하도록, 또한 수신된 인스턴스 관리 구성 데이터에 기초하여 단일-테넌트 SaaS 애플리케이션의 인스턴스들을 관리하도록 구성된다. 제어 평면은 인스턴스 관리 구성 데이터에 따라 데이터 프로세싱 하드웨어 상에서 실행된다.
[0007] 본 양태는 이하의 선택적 특징들 중 하나 이상을 포함할 수 있다. 일부 예들에서, 제어 평면은 단일-테넌트 SaaS 애플리케이션의 인스턴스들의 라이프사이클 관리를 위해 구성된다. 인스턴스들의 라이프사이클 관리는 단일-테넌트 SaaS 애플리케이션에 대한 생성, 판독, 업데이트, 백업, 복원, 재시작, 셧다운, 및 삭제 동작들을 포함할 수 있다. 단일-테넌트 SaaS 애플리케이션의 인스턴스들의 라이프사이클 관리는 인스턴스 관리 구성 데이터에 의해 정의될 수 있다.
[0008] 일부 예들에서, 제어 평면은 단일-테넌트 SaaS 애플리케이션의 각각의 인스턴스를 가상 머신 또는 전용 호스트 디바이스 상에 생성 및 배치하도록 구성된다. 제어 평면은 단일-테넌트 SaaS 애플리케이션의 각각의 인스턴스에 대한 동작 또는 사용 메트릭들을 평가하고, 평가된 동작 또는 사용 메트릭들을 데이터 프로세싱 하드웨어와 통신하는 메모리 하드웨어에 저장하도록 구성될 수 있다. 사용 메트릭들은 예를 들어 레이턴시, 에러들, 바이트 인/아웃, 및 인스턴스에 대한 호출들을 포함할 수 있다.
[0009] 일부 예들에서, 인스턴스 관리 구성 데이터는 단일-테넌트 SaaS 애플리케이션의 인스턴스들을 생성 및 관리하기 위한 복수의 선택 가능한 파라미터들을 포함한다. 파라미터들은 배치 유형, 서비스 권한들, 가용성, 보안 격리, 호스트 위치, 및 모니터링 및 지원 중 하나 이상을 포함할 수 있다. 또한, 인스턴스 관리 구성 데이터는 하나 이상의 미리 정의된 파라미터들을 포함하는 하나 이상의 인스턴스 템플릿들을 포함할 수 있다.
[0010] 본 개시내용의 하나 이상의 구현들의 세부 사항들은 첨부 도면들 및 이하의 설명에서 설명된다. 다른 양태들, 특징들 및 장점들은 상세한 설명 및 도면들 및 청구항들로부터 자명해질 것이다.
[0011] 도 1a 내지 도 1d는 다중-단일-테넌트 SaaS(software-as-a-service) 서비스들을 관리하기 위한 시스템의 예의 개략도들이다.
[0012] 도 2는 다중-단일-테넌트 SaaS 서비스들을 관리하기 위한 예시적인 방법에 대한 흐름도이다.
[0013] 도 3은 본 명세서에 개시된 시스템들 및 방법들을 구현하는데 사용될 수 있는 예시적인 컴퓨팅 디바이스의 개략도이다.
[0014] 여러 도면들에 있어서의 유사한 참조 부호들은 유사한 요소들을 나타낸다.
[0015] 일반적으로, 클라우드 소프트웨어 환경들은 단일 소프트웨어 애플리케이션의 다중 인스턴스들을 호스팅하도록 구성된다. 예를 들어, 전통적으로 로컬로, 이를테면, 데스크톱 컴퓨터 상에서 호스팅될 수 있는 소프트웨어 애플리케이션의 개별 인스턴스들은 이제 원격 서버 또는 서버들의 집합체 상에서 호스팅되고, SaaS(software-as-a-service) 애플리케이션으로 지칭되는 대로 종량제(pay-as-you-go basis)로 사용자에게 제공될 수 있다.
[0016] 일부 SaaS 애플리케이션들에 있어서, 원하는 보안 레벨들을 제공하기 위해 애플리케이션의 인스턴스들은 격리된다. 예를 들어, SaaS 애플리케이션을 사용하는 제1 고객은 데이터 프라이버시를 보장하기 위해 SaaS 애플리케이션을 사용하는 경쟁 관계의 제2 고객으로부터 격리될 필요가 있을 수 있다. 다수의 고객들 또는 테넌트들이 SaaS 애플리케이션의 단일의 인스턴스들 중에서 분리되는 다중-단일-테넌트(MST : Multi-single-tenant) SaaS 애플리케이션을 사용하여 높은 레벨의 격리를 달성할 수 있다. MST SaaS 애플리케이션들은 그들의 용도에 적합하지만, 다수의 분리된 인스턴스들을 생성하고 SaaS 애플리케이션의 라이프사이클 전반에 걸쳐 관리(예를 들어, 업데이트, 복구, 삭제)해야 하므로, 개발 및 배치에서 난제들을 제공한다. 인스턴스 생성 및 관리의 효율성을 향상시키기 위해, 클라우드 환경들은 SaaS 애플리케이션의 모든 인스턴스들을 생성 및 관리하기 위한 단일 허브를 제공하는 제어 평면을 활용할 수 있다. 예를 들어, SaaS 애플리케이션에 대한 업데이트는 각각의 인스턴스에 수동으로 통합되어야 하는 것과 대조적으로, 제어 평면에 의해 모든 인스턴스들에 동시에 푸시될 수 있다.
[0017] 더 많은 소프트웨어 애플리케이션들이 SaaS 애플리케이션들로 전환함에 따라, MST SaaS 애플리케이션들에 대한 제어 평면이 생성될 수 있는 속도를 증가시키는 것이 점점 중요해지고 있다. 따라서, 본 개시내용은 특히 MST SaaS 애플리케이션들에 대한 제어 평면의 생성을 자동화하여, 서비스 생산자들(즉, 소프트웨어 개발자들)이 MST SaaS 애플리케이션들을 신속하게 구현할 수 있게 하는 시스템 및 방법을 제공한다.
[0018] 도 1a는 다중-단일-테넌트 시스템(10)의 예를 제공한다. 시스템(10)은 복수의 느슨하게 접속된 서버들(110)을 포함하는 분산 시스템(100)을 포함하고, 이들 서버들 각각은 전형적으로 컴퓨팅 리소스(112)(예를 들어, 하나 이상의 컴퓨터 프로세서) 및/또는 저장 리소스들(114)(예를 들어, 물리적 메모리, 플래시 메모리, 및/또는 디스크들)을 포함한다. 시스템(10)은 분산 시스템(100) 상에서 동작하도록 구성된 하나 이상의 가상 머신들(210)을 포함하는 가상 머신(VM) 계층(200)을 포함할 수 있다. 일부 예들에서, 단일 가상 머신(210, 210a)은 복수의 서버들(110, 110a, 110b)에 걸쳐 할당될 수 있으며, 여기서 복수의 가상 프로세서들(212, 212a, 212b)은 단일 가상 머신(210, 210a)의 다수의 태스크들을 실행하도록 협력한다. 대안으로, 가상 머신들(210, 210b) 중 하나는 서버들(110, 110c) 중 단 하나의 서버 상에 호스팅될 수 있다.
[0019] 서비스 계층(300)은 SaaS(software-as-a-service)로서 제공될 애플리케이션 이미지(350)의 복수의 인스턴스들(310)을 포함할 수 있다. 애플리케이션 이미지는 하나 이상의 가상 머신 이미지들, 하나 이상의 컨테이너 이미지들, 또는 가상 머신 이미지들과 컨테이너 이미지들의 조합을 포함할 수 있다. 각각의 애플리케이션 인스턴스(310)는 가상 머신들(210, 210a, 210b) 중 대응하는 하나 상에 호스팅될 수 있다. 예를 들어, 고 가용성 및/또는 다중-영역 가용성을 요구하는 애플리케이션 인스턴스들(310, 310a)은 복수의 물리적 서버들(110, 110a, 110b) 사이에 할당된 가상 머신들(210, 210a) 상에 호스팅될 수 있다. 일부 예들에서, 애플리케이션 인스턴스들(310, 310b)은 각각의 가상 머신(210, 210b)이 서버들(110, 110c) 중 하나의 전용 서버 상에서 동작하도록 전용 가상 머신들(210, 210b) 상에서 호스팅될 수 있다. 추가로 또는 대안으로, 하나 이상의 애플리케이션 인스턴스들(310, 310c)은 가상 머신(210)을 사용하지 않고 전용 서버(110, 110n) 상에서 직접 구현되고 호스팅될 수 있다.
[0020] 계속해서 도 1a 및 도 1b를 참조하면, 시스템(10)은 각각 데이터 프로세싱 하드웨어(372) 및 메모리 하드웨어(374)를 갖는 서버(370) 상에서 동작하도록 구성된 제어 평면(330) 및 제어 평면 관리자(340)를 포함한다. 서버(370)가 분산 시스템(100)의 서버들(110)과 독립적인 단일 서버(370)로 도시되어 있지만, 일부 예들에서, 제어 평면 관리자(340) 및 제어 평면(330)은 분산 시스템(100)의 하나 이상의 서버들(110) 상에서 호스팅될 수 있다. 추가로 또는 대안으로, 제어 평면 관리자(340) 및 제어 평면(330)은 서로 별개의 서버들(110) 상에서 동작할 수 있다. 시스템(10)은, 제어 평면(330)과 통신하고 서비스 계층(300)의 사용 및 동작에 관한 메타데이터, 보다 구체적으로 서비스 계층(300)의 애플리케이션 인스턴스들(310)을 저장하도록 구성된 사용 데이터베이스(380)를 더 포함할 수 있다.
[0021] 도 1c를 참조하면, 제어 평면 관리자(340)는 일반적으로 애플리케이션 이미지(350)를 수신하도록, 또한 서비스 생산자(20)(즉, 다중-단일-테넌트 애플리케이션을 제공하는 당사자)에 의해 제공되는 인스턴스 관리 구성 데이터(360)에 기초하여 애플리케이션 이미지(350)에 대한 애플리케이션 제어 평면(330)을 생성하도록 구성된다. 보다 구체적으로, 제어 평면 관리자(340)는, 제어 평면(330)이 서비스 소비자(30)에 의해 실행되어 애플리케이션 인스턴스들(310)을 생성할 수 있도록, 제어 평면(330)의 생성 및 동작을 정의하는 실행 가능한 스크립트 또는 로직(logic)을 생성할 수 있다. 아래에서 더 상세히 설명되는 바와 같이, 새로운 애플리케이션 인스턴스들(310)이 생성될 때 애플리케이션 소비자(30)에 의해 애플리케이션 인스턴스(310)의 다양한 속성들이 선택될 수 있도록, 제어 평면(330)을 정의하는 스크립트를 파라미터화할 수 있다.
[0022] 도 1d에 도시된 바와 같이, 제어 평면(330)의 실행 가능한 스크립트를 생성함과 아울러, 제어 평면 관리자(340)는 서비스 소비자들(30)에 의해 제어 평면(330)의 파라미터화된 스크립트에 대한 액세스를 제공하도록 구성된 표준화된 소비자 애플리케이션 프로그래밍 인터페이스(API: Application Programming Interface)(390)를 또한 퍼블리싱(publish)할 수 있다. 예를 들어, 인스턴스 관리 구성 데이터(360)에 기초하여, 소비자 API(390)는 제어 평면(330)의 스크립트에 포함시키기 위한 대안적 소비자 선택 가능 파라미터들(362) 및/또는 인스턴스 템플릿들(364)을 제시할 수 있다.
[0023] 도 1c를 계속 참조하면, 인스턴스 관리 구성 데이터(360)는 제어 평면(330)의 생성 및 실행을 위한 복수의 파라미터들(362) 및/또는 규칙들을 포함할 수 있다. 파라미터들(362)의 일부는 제어 평면(330)의 실행 가능한 스크립트의 생성에 대응하는 고정된 파라미터들(362)일 수 있고, 파라미터들(362)의 다른 부분은 새로운 애플리케이션 인스턴스(310)가 생성될 때 서비스 소비자(30)에 의해 선택될 애플리케이션 인스턴스들(310)의 원하는 속성들과 관련된 소비자 선택 가능 파라미터들(362, 362a-362g)을 포함할 수 있다.
[0024] 일부 예들에서, 소비자 선택 가능 파라미터들(362) 중 하나는 배치 유형(362, 362a)을 포함할 수 있다. 배치 유형(362, 362a1-362a5)에는 단일 VM 배치(362a1), 고 가용성(HA) 배치(362a2), 클러스터 배치(362a3), 직접 배치(362a4) 및 맞춤 배치(362a5)가 포함된다. 위에서 논의된 바와 같이, 단일 VM 배치(362a1)는 단일 애플리케이션 인스턴스(310b)를 단일 가상 머신(210, 210b)과 연관시킨다. 대조적으로, HA 배치는 2 개 이상의 가상 머신들(210, 210a)에 걸쳐 애플리케이션 인스턴스(310, 310a)를 할당할 수 있으며, 여기서 가상 머신들(210, 210a) 중 하나는 주된 요소(primary)로서 작동하는 반면에, 다른 가상 머신(들)은 대기 상태에 있다. HA 배치(362a2)는 단일 구역, 다중 구역 및 다중 영역 구성들과 같은 상이한 구성들로 제공될 수 있다. 클러스터 배치(362a3)는 애플리케이션 인스턴스들(310)이 단일 VM 배치(362a1) 및 HA 배치(362a2)의 조합 상에서 생성될 수 있게 한다. 또한, 위에서 논의된 바와 같이, 애플리케이션 인스턴스들(310)은 또한 직접 배치(362a4) 구성으로 생성될 수 있으며, 이에 의해 애플리케이션 인스턴스(310, 310c)는 서버(110, 110n)의 하드웨어 상에 직접 호스팅된다.
[0025] 배치 유형(들)(362, 362a)을 식별하는 것 외에, 파라미터들(362)은 서비스 권한들(362, 362b)의 지정을 포함할 수 있다. 예를 들어, 서비스 생산자(20)는 아래에서 더 상세히 논의되는 바와 같이 애플리케이션 인스턴스들(310)의 생성, 판독, 업데이트, 삭제, 백업, 및 복원과 관련하여 서비스 소비자(30)의 권한들을 정의할 수 있다. 대안으로 또는 추가로, 서비스 소비자(30)는 제어 평면(330)에 의해 허용되는 범위까지 서비스 생산자(20)의 권한들을 정의할 수 있다.
[0026] 서비스 생산자(20)는 또한 제어 평면(330) 및/또는 애플리케이션 인스턴스들(310, 310c)의 가용성(362, 362c)을 정의할 수 있다. 가용성(362, 362c)의 정의는 애플리케이션 인스턴스들(310)의 생성 및 사용이 허용되는 서비스 소비자들(30) 또는 그룹들의 화이트리스트(362c1) 및/또는 애플리케이션 인스턴스들(310)의 생성 및 사용이 금지되는 서비스 소비자들(30) 또는 그룹들의 블랙리스트(362c2)를 포함할 수 있다. 가용성(362, 362c)은 서비스 소비자들(30)의 미리 정의된 클래스들 또는 범위들에 기초할 수 있다. 예를 들어, 특정 지리적 영역들에 있는 서비스 소비자들(30)은 화이트리스트 또는 블랙리스트에 포함될 수 있다.
[0027] 서비스 생산자(20)는 또한 상이한 서비스 소비자들(30)에 의해 요청될 수 있는 다양한 레벨들의 보안 격리(362, 362d)를 정의할 수 있다. 예를 들어, 매우 민감한 데이터를 갖는 은행들 및 다른 기관들은 덜 민감한 데이터를 취급하는 서비스 소비자들(30)보다 더 높은 레벨들의 보안 격리(362, 362d)를 요구할 수 있다. 일부 예들에서, 보안 격리 레벨들(362, 362d)은 HIPAA(의료 보험의 양도 및 책임에 관한 법률: Health Insurance Portability and Accountability Act), MPAA(미국 영화 협회: Motion Picture Association of America) 및/또는 FISMA(연방 정보 보안 관리법: Federal Information Security Management Act)와 같은 인증들을 달성하기에 충분한 보안 격리 레벨들(362, 362d)을 갖는 옵션을 포함할 수 있다.
[0028] 인스턴스 관리 구성 데이터(360)는 허용된 호스트 위치들(362, 362e)에 관한 파라미터를 더 포함할 수 있다. 예를 들어, 서비스 생산자(20)는 애플리케이션 인스턴스들(310)이 호스팅될 수 있는 특정 호스팅 플랫폼들(예를 들어, 구글 클라우드 플랫폼, 아마존 웹 서비스들, 마이크로소프트 애저, 로컬 서버 등)을 지정할 수 있다. 따라서, 제어 평면(330)의 배치 스크립트들은 인스턴스 관리 구성 데이터(360)에 기초하여 하나 이상의 호스트 위치들(362e) 상에서의 애플리케이션 인스턴스들(310)의 자동 프로비저닝, 생성, 및 동작을 위해 구성될 수 있다. 나중에 논의되는 바와 같이, 제어 평면(330)의 이러한 다양한 배치 스크립트들은, 서비스 소비자(30)가 호스트 플랫폼들 중 어떤 호스트 플랫폼들을 사용하고자 하는지에 의존하여, 애플리케이션 인스턴스(310)의 생성 동안에 서비스 소비자(30)에 의해 실행될 수 있다.
[0029] 일부 예들에서, 인스턴스 관리 구성 데이터(360)는 모니터링 및 지원 파라미터들(362, 362f)을 포함한다. 이러한 파라미터들(362, 362f)은 제어 평면(330)에 서비스 계층(300) 및 애플리케이션 인스턴스들(310)의 다양한 메트릭들을 평가할 것을 지시한다.
[0030] 도 1d를 참조하면, 제어 평면(330)의 생성시에, 하나 이상의 파라미터들(362, 362a-362f)은 제어 평면(330)에 의해 액세스될 수 있는 하나 이상의 인스턴스 템플릿들(364, 364a-364n)에 통합될 수 있다. 인스턴스 템플릿들(364, 364a-364n)은 애플리케이션 인스턴스들(310)의 생성 및 사용시에 서비스 소비자들(30)에 의해 일반적으로 사용되는 파라미터들(362, 362a-362f)의 조합을 포함할 수 있다. 예를 들어, 제1 인스턴스 템플릿(364, 364a)은 고 가용성 배치 유형(362a2), 낮은 보안 격리(362d)를 갖는 애플리케이션 인스턴스(310)를 자동으로 생성하도록 구성될 수 있고 복수의 호스트 위치들(362e) 상에서의 생성 및 동작을위해 구성될 수 있지만, 제2 인스턴스 템플릿(364, 364b)은 단일 VM 배치(362a1)를위한 그리고 높은 보안 격리(362d)를 갖는 애플리케이션 인스턴스(310)를 자동으로 생성하도록 구성될 수 있다. 서비스 소비자들(30)에 의한 다양한 파라미터들의 계획된 사용에 따라서, 파라미터들(362)의 임의의 조합을 갖는 부가적인 또는 대안적인 인스턴스 템플릿들(364, 364c-364n)을 구성할 수 있다.
[0031] 부가적으로 또는 대안적으로, 서비스 생산자(20)는 서비스 소비자(30)에 의한 맞춤(362, 362g)에 이용 가능한 파라미터들을 정의할 수 있다. 예를 들어, 파라미터들(362, 362g)은 인스턴스 템플릿에 포함되지 않은 와이프아웃(wipeout), 백업/복원, 업데이트/롤아웃, 장애들 등을 핸들링하기 위한 프로세스들에 대한 정의들을 더 포함할 수 있다.
[0032] 서비스 생산자(20)가 단일-테넌트 소프트웨어 애플리케이션을 다중-단일-테넌트(MST) SaaS로서 구현하고자 하는 경우에, 서비스 생산자(20)는 제어 평면 관리자(340)에 제공된 인스턴스 관리 구성 데이터(360)에 포함될 파라미터들(362)을 입력하거나 선택할 것이다. 이어서, 제어 평면 관리자(340)는 인스턴스 관리 구성 데이터(360)에 기초하여 제어 평면(330)을 생성하도록 실행된다.
[0033] 제어 평면(330)은 제어 평면 관리자(340)에 의해 일단 생성되면, 일반적으로 애플리케이션 인스턴스들(310)의 라이프사이클을 관리 및 모니터링하도록 구성된다. 도 3에 도시된 바와 같이, 제어 평면(330)은 인스턴스 관리자(332), 테넌트 관리자(334), 및 인스턴스 모니터(336)를 포함할 수 있다. 인스턴스 관리자(332), 테넌트 관리자(334)(또는 서비스 관리자), 및 인스턴스 모니터(336)는 개별 모듈로서 도시되어 있지만, 일체로 구성될 수 있으며, 여기서 각각의 모듈(332, 334, 336)과 연관된 태스크들은 단일 프로그램에 의해 실행된다. 제어 평면(330)은 애플리케이션 이미지(350)와, 하나 이상의 인스턴스 템플릿들(364)을 포함하는 인스턴스 관리 구성 데이터(360)를 더 포함할 수 있다.
[0034] 도 1d에 상세히 도시된 바와 같이, 인스턴스 관리자(332)는 애플리케이션 인스턴스들(310, 310a-310n) 각각의 라이프사이클 관리를 자동화하도록, 또한 복수의 라이프사이클 관리 커맨드들(333a-333g)을 서비스 계층(300)에 통신하도록 구성된다. 라이프사이클 관리 커맨드들(333a-333g)은 개별 애플리케이션 인스턴스들(310, 310a-n)의 생성(333a), 판독(333b), 업데이트(333c), 삭제(333d), 백업 및 복원(333e), 재시작(333f), 및 셧다운(333g)을 위한 동작들에 대응할 수 있다. 인스턴스 관리자(332)가 필요에 따라 애플리케이션 인스턴스(310)에 대한 리소스들을 할당함으로써 가상 머신(210) 또는 서버(110)를 프로비저닝하도록 또한 프로비저닝된 호스트(110, 210) 상에 애플리케이션 인스턴스(310)를 인스턴스화하도록 구성되는 바와 같이, 애플리케이션 인스턴스(310)의 생성(333a)은 프로비저닝 및 인스턴스화를 모두 포함할 수 있다. 애플리케이션 인스턴스(310)의 업데이트(333c)는 애플리케이션 인스턴스(310)를 새로운 버전으로 진보시키는 것을 포함할 수 있고, 또한 현재 버전이 바람직하지 않은 상황에서는 애플리케이션 인스턴스(310)를 이전 버전으로 롤백하는 것을 포함할 수 있다. 추가로 또는 대안으로, 제어 평면(330)은 서버들(110), 가상 머신들(210), 및 서비스 소비자들(30) 사이의 네트워크 접속을 구성한다. 이것은 로드 밸런서들(load balancer), 방화벽들, 자동 스케일러들(autoscaler), 저장 시스템들, 및 안전하고 지속적인 네트워크 접속을 제공하는 것과 연관된 다른 서비스들을 구성하는 것을 포함할 수 있다.
[0035] 도시된 바와 같이, 라이프사이클 관리 커맨드들(333a-333g)이 어느 한쪽 당사자(20, 30)에 의해 일방적으로 실행될 수 있도록, 각각의 서비스 생산자(20) 및 서비스 소비자(30)가 인스턴스 관리자(332)에 액세스한다. 그러나, 위에서 소개된 바와 같이, 서비스 생산자(20)는 인스턴스 관리 구성 데이터(360)에서의 서비스 소비자(30)의 권한들을 정의할 수 있다. 예를 들어, 서비스 생산자(20)는 서비스 소비자(30)에 의한 하나 이상의 라이프사이클 관리 커맨드들(333a-333g)에 대한 액세스를 제한할 수 있다. 부가로 또는 대안으로, 서비스 생산자(20)는, 서비스 소비자(30)에 의한 하나 이상의 라이프사이클 관리 커맨드들(333a-333g)의 실행을 승인할 것을 서비스 생산자(20)가 요구하는 것과 같은 하나 이상의 라이프사이클 관리 커맨드들(333a-333g)에 규칙을 할당할 수 있다.
[0036] 서비스 생산자(20)는 서비스 생산자(20)에 의한 하나 이상의 라이프사이클 관리 커맨드들(333a-333g)에 대한 액세스 또는 실행을 제한할 권한들을 서비스 소비자(30)에게 제공할 수 있다. 서비스 생산자(20)는 서비스 소비자(30)가 라이프사이클 관리 커맨드들(333a-333g) 중 어느 하나의 실행을 "옵트인(opt-in)"하는 것을 허용할 수 있으며, 여기서 서비스 소비자(30)는 실행을 승인 또는 수락해야 한다. 예를 들어, 서비스 소비자(30)는 업데이트 커맨드(333c)의 실행을 승인할 것이 요청될 수 있고, 이로 인해 서비스 소비자(30)가 어느 버전의 애플리케이션 인스턴스(310)가 실행되고 있는지를 제어할 수 있게 할 수 있다.
[0037] 도 1d를 계속 참조하면, 제어 평면(330)은 일반적으로 서비스 계층(300)의 글로벌 관리 및 모니터링을 제공하도록 구성된 테넌트 관리자(334)를 더 포함할 수 있다. 테넌트 관리자(334)는 서비스 계층(300)에서 애플리케이션 인스턴스(310)를 갖는 모든 서비스 소비자들(30)을 보여주는 테넌트 리스트(335a)를 컴파일하도록 구성될 수 있다. 테넌트 세부 사항들(335b)은 각각의 서비스 소비자(30)에 대한 식별 및 인구 통계 정보, 각각의 서비스 소비자(30)와 연관된 애플리케이션 인스턴스(310)에 할당된 파라미터들(362), 및 각각의 서비스 소비자(30)와 연관된 현재 버전의 애플리케이션 인스턴스(310)의 리스트를 포함할 수 있다.
[0038] 테넌트 관리자(334)는 모든 서비스 소비자들(30)에 걸쳐 글로벌 메트릭들(335c)을 모니터링하도록 추가로 구성될 수 있다. 예를 들어, 테넌트 관리자(334)는 건강 관련 메트릭들뿐만 아니라 애플리케이션 인스턴스들(310, 310a-310n)에 의한 분산 시스템(100)의 집합적인 사용을 모니터링할 수 있다.
[0039] 테넌트 관리자(334)는 인스턴스 관리자(332)와 유사하지만 전체적으로 서비스 계층(300)과 관련된 기능을 제공하도록 구성된 글로벌 관리자(335d)를 포함할 수 있다. 예를 들어, 글로벌 관리자(335d)는 모든 애플리케이션 인스턴스들(310, 310a-310n)에 걸쳐 롤링 글로벌 업데이트들(364d)을 제공하도록 구성될 수 있다. 글로벌 관리자(335d)는 서비스 계층(300)으로부터 모든 서비스 소비자들(30)을 제거하고 마찬가지로 모든 애플리케이션 인스턴스들(310)을 제거함으로써 서비스 계층(300)을 와이프아웃하도록 또한 구성될 수 있다. 서비스 소비자들(30) 및 애플리케이션 인스턴스들(310)이 서비스 계층(300)으로부터 제거되면, 글로벌 관리자(335d)는 제거된 애플리케이션 인스턴스들(310)의 다운 스트림 종속성을 관리하고, 업스트림 서비스들의 모든 대응하는 인스턴스들을 프로비저닝 해제할 수 있다.
[0040] 제어 평면(330)은 각각의 애플리케이션 인스턴스(310)의 동작 또는 사용 메트릭들(336a-336d)을 평가하도록 또한 사용 메트릭들(336a-336d)을 사용 데이터베이스(380)에 저장하도록 구성된 인스턴스 모니터(366)를 더 포함할 수 있다. 사용 데이터베이스(380)는 도 1a에 도시된 바와 같이 서버(370)의 메모리 하드웨어(374)에서 호스팅될 수 있다. 인스턴스 모니터(336)는 예를 들어 인스턴스 레이턴시(338, 338a), 에러들(338, 338b), 바이트 인/아웃(338, 338c) 및 인스턴스에 대한 호출들(338, 338d)을 포함하는 사용 메트릭들(338, 338a-338d)을 평가할 수 있다. 일부 예들에서, 각각의 애플리케이션 인스턴스(310)의 라이프 사이클에 관한 추가 메트릭들은 원하는 대로 인스턴스 모니터(336)에 의해 평가된다.
[0041] 이어서, 평가된 메트릭들(335c, 338)은 각각의 서비스 소비자(30)와 연관된 메타 데이터로서 사용 데이터베이스(380)에 저장된다. 이어서, 사용 메트릭들(335c, 338)은 사용 데이터베이스(380)로부터 원하는 분석 소프트웨어(미도시)로 전달될 수 있다. 부가로 또는 대안으로, 제어 평면(330)은 사용 메트릭들(335c, 338)에 대한 분석을 실행하고, 애플리케이션 인스턴스(310) 및/또는 서비스 소비자(30)에 의해 분류된 주요 메트릭들을 나타내는 대시 보드를 서비스 생산자(20) 및/또는 서비스 소비자(30)에게 제공한다. 예를 들어, 제어 평면(330)은 각각의 애플리케이션 인스턴스(310), 애플리케이션 인스턴스(310)의 그룹들 또는 구역들, 또는 서비스 계층(300) 전체에 대한 서비스 생산자(20) 건강을 보여줄 수 있고, 서비스 생성자가 인스턴스 레벨 및 서비스 레벨 둘 다에서의 잠재적인 문제들을 해결할 수 있게 한다.
[0042] 도 2는 본 개시내용에 따라 다중-단일-테넌트 SaaS 애플리케이션을 자동으로 구현하는 방법(400)의 예를 도시한다. 블록(402)에서, 방법(400)은 단일-테넌트 SaaS 애플리케이션에 대한 인스턴스 관리 구성 데이터(360)를 수신하는 단계를 포함한다. 위에서 제공된 바와 같이, 인스턴스 관리 구성 데이터(360)는 제어 평면(330) 및 애플리케이션 인스턴스들(310)의 생성 및 실행과 관련된 파라미터들(362)을 포함한다. 블록(404)에서, 방법(400)은 단일-테넌트 SaaS 애플리케이션의 이미지(350)를 수신하는 단계를 포함한다. 블록(406)에서, 제어 평면 관리자(340)는 수신된 인스턴스 관리 구성 데이터(360)에 기초하여 제어 평면(330)을 생성한다. 제어 평면(330)은 수신된 애플리케이션 이미지(350)에 기초하여 SaaS 애플리케이션의 다수의 애플리케이션 인스턴스들(310)을 인스턴스화하도록 구성된다. 일단 생성되면, 블록(408)에 도시된 바와 같이, 제어 평면(330)이 실행될 수 있고, 블록(410)에 도시된 바와 같이, 애플리케이션 이미지(350) 및 인스턴스 관리 구성 데이터(360)에 기초하여 하나 이상의 단일-테넌트 SaaS 애플리케이션 인스턴스들(310)이 생성될 수 있다. 블록(412)에서, 제어 평면(330)은 인스턴스 관리 구성 데이터(360)에 기초하여 그 생성된 애플리케이션 인스턴스들(310)의 라이프사이클의 관리를 계속한다. 라이프사이클 관리는 단일-테넌트 SaaS 애플리케이션의 인스턴스들(310)의 생성, 판독, 업데이트, 삭제, 백업, 복원, 재시작, 및 셧다운 동작들을 포함할 수 있다.
[0043] 일부 구현들에 따르면, 다중-단일-테넌트(MST) SaaS(software-as-a-service) 서비스들을 프로비저닝하기 위한 방법, 시스템, 및 컴퓨터 판독 가능 매체가 제공될 수 있다. 본 방법은 하나 이상의 컴퓨팅 디바이스들의 하나 이상의 프로세서들에 의해 구현될 수 있으며, SaaS(software-as-a-service) 애플리케이션의 단일-테넌트 이미지를 수신하는 단계 및 단일-테넌트 SaaS(software-as-a-service) 애플리케이션에 대한 인스턴스 관리 구성 데이터를 수신하는 단계를 포함한다. 본 방법은 SaaS(software-as-a-service) 애플리케이션에 대한 제어 평면을 생성할 수 있고, 여기서 제어 평면은 SaaS(software-as-a-service) 애플리케이션의 단일-테넌트 이미지에 기초하여 SaaS(software-as-a-service) 애플리케이션의 복수의 단일-테넌트 인스턴스들을 생성하도록 또한 수신된 인스턴스 관리 구성 데이터에 기초하여 SaaS(software-as-a-service) 애플리케이션의 복수의 단일-테넌트 인스턴스들을 관리하도록 구성된다. SaaS(software-as-a-service) 애플리케이션의 단일-테넌트 이미지 및 인스턴스 관리 구성 데이터는 SaaS(software-as-a-service) 애플리케이션에 대한 제어 평면을 생성하도록 구성된 제어 평면 관리자에 의해 수신될 수 있다. 사용시, 제어 평면은 SaaS(software-as-a-service) 애플리케이션의 단일-테넌트 이미지에 기초하여 SaaS(software-as-a-service) 애플리케이션의 복수의 단일-테넌트 인스턴스들을 생성할 수 있고, 인스턴스 관리 구성 데이터에 기초하여 SaaS(software-as-a-service) 애플리케이션의 복수의 단일-테넌트 인스턴스들을 관리할 수 있다. 일부 구현들에서, 제어 평면은 SaaS(software-as-a-service) 애플리케이션의 각각의 인스턴스에 대한 공통 인터페이스 계층을 제공하도록 구성될 수 있다. 일부 구현들에서, SaaS(software-as-a-service) 애플리케이션의 각각의 인스턴스는 개별 가상 머신 인스턴스화에서 다른 인스턴스들로부터 격리될 수 있다. 제어 평면은 SaaS(software-as-a-service) 애플리케이션의 하나 이상의 인스턴스들 또는 각각의 인스턴스로부터 사용 및/또는 동작 메트릭들을 획득하도록 구성될 수 있다. 제어 평면은 SaaS(software-as-a-service) 애플리케이션의 각각의 인스턴스에 대한 개별 인스턴스 관리 프로파일에 기초하여 SaaS(software-as-a-service) 애플리케이션의 하나 이상의 인스턴스들 또는 각각의 인스턴스를 업데이트하도록 구성될 수 있다. 일부 구현들에서, SaaS(software-as-a-service) 애플리케이션의 하나 이상의 인스턴스들 또는 각각의 인스턴스는 개별의 고유한 인스턴스 식별자와 연관될 수 있고, 제어 평면은 개별의 고유한 인스턴스 식별자에 기초하여 SaaS(software-as-a-service) 애플리케이션의 하나 이상의 인스턴스들 또는 각각의 인스턴스와 상호 작용하도록 구성될 수 있다. 예를 들어, SaaS(software-as-a-service) 애플리케이션의 하나 이상의 인스턴스들 또는 각각의 인스턴스에 대한 사용 및/또는 동작 메트릭들은 개별의 고유한 인스턴스 식별자에 기초하여 공통 데이터베이스에 저장될 수 있다. SaaS(software-as-a-service) 애플리케이션은 다른 애플리케이션 리소스들 중에서 애플리케이션 소프트웨어, 데이터베이스 리소스, 데이터베이스 관리 리소스, 고객 관계 관리 리소스 중 하나 이상을 포함할 수 있다.
[0044] 다중-단일-테넌트 SaaS 시스템의 일부 구현들에서, 각각의 테넌트는 개별 인스턴스와 효과적으로 격리될 수 있어 성능 및 보안이 향상될 수 있다. 복잡한 다중 테넌트 아키텍처가 필요하지 않지만 단일 제어 평면을 통해 시스템을 제어하고 모니터링할 수 있다. 일부 예들에서, 인스턴스들의 가상화 및/또는 컨테이너화는 효율적인 리소스 관리 및 사용을 위해 준비된 스케일 업 및 스케일 다운을 허용할 수 있다. 제어 평면은 서로 다른 테넌트들 또는 사용자 간에 백업들 및/또는 업데이트들의 서로 다른 스케줄링 및 SaaS 프로비저닝의 서로 다른 레벨들의 맞춤을 제공할 수 있다. 각각의 테넌트 또는 사용자에 대해 별도의 인스턴스들을 제공하고 관리하면, 단일 인스턴스에 프로비저닝된 다수의 테넌트들과 비교하여 관리 및/또는 데이터 분석이 보다 간단하게 수행될 수 있다. 시스템의 구현들은 SaaS 서비스의 다수의 단일-테넌트 인스턴스들의 인스턴스화 및 동작에 대한 공통 제어 및 관리를 제공할 수 있으며, 이는 개별 인스턴스들의 제어된 격리, 서로 다른 인스턴스들 간의 향상된 데이터 보안, 각각의 인스턴스의 성능의 향상된 신뢰성, 테넌트들 및/또는 사용자들 간의 데이터 액세스 및/또는 제어의 향상된 보안, 및 다양한 단일-테넌트 인스턴스들에 대한 리소스 할당의 향상된 효율성의 기술적 이점들을 제공할 수 있다.
[0045] 도 3은 본 명세서에 기술된 시스템들 및 방법들을 구현하는데 사용될 수 있는 예시적인 컴퓨팅 디바이스(500)의 개략도이다. 컴퓨팅 디바이스(500)는 랩탑들, 데스크탑들, 워크스테이션들, 개인용 휴대 정보 단말기들, 서버들, 블레이드 서버들, 메인프레임들, 및 그외 적절한 컴퓨터들과 같은 다양한 형태들의 디지털 컴퓨터들을 나타내도록 의도된다. 여기에 도시된 구성 요소들, 그들의 접속들 및 관계들, 및 그들의 기능들은 단지 예시적인 것이며, 본 명세서에 기술되고 및/또는 청구된 본 발명의 구현예들을 제한하려는 것은 아니다.
[0046] 컴퓨팅 디바이스(500)는 프로세서(510), 메모리(520), 저장 디바이스(530), 메모리(520) 및 고속 확장 포트들(550)에 접속되는 고속 인터페이스/제어기(540), 및 저속 버스(570) 및 저장 디바이스(530)에 접속되는 저속 인터페이스/제어기(560)를 포함한다. 구성 요소들(510, 520, 530, 540, 550, 560) 각각은 다양한 버스들을 사용하여 상호 접속되며, 공통 마더 보드 상에 또는 다른 방식으로 적절히 장착될 수 있다. 프로세서(510)는 고속 인터페이스(540)에 접속된 디스플레이(580)와 같은 외부 입력/출력 디바이스 상에 그래픽 사용자 인터페이스(GUI)에 대한 그래픽 정보를 디스플레이하기 위해 메모리(520) 내에 또는 저장 디바이스(530)에 저장된 명령어들을 포함하는, 컴퓨팅 디바이스(500) 내에서의 실행을 위한 명령어들을 프로세싱할 수 있다. 다른 구현들에서, 다수의 프로세서들 및/또는 다수의 버스들이 다수의 메모리들 및 다수 유형들의 메모리와 함께 적절하게 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스들(500)이 접속될 수 있으며, 각각의 디바이스는 (예를 들어, 서버 뱅크, 블레이드 서버들의 그룹, 또는 다중 프로세서 시스템으로서) 필요한 동작들의 일부를 제공한다.
[0047] 메모리(520)는 컴퓨팅 디바이스(500) 내에 비-일시적으로 정보를 저장한다. 메모리(520)는 컴퓨터 판독 가능 매체, 휘발성 메모리 유닛(들) 또는 비-휘발성 메모리 유닛(들)일 수 있다. 비-일시적 메모리(520)는 컴퓨팅 디바이스(500)에 의해 사용하기 위해 일시적 또는 영구적으로 프로그램들(예를 들어, 명령어들의 시퀀스) 또는 데이터(예를 들어, 프로그램 상태 정보)를 저장하는데 사용되는 물리적 디바이스들일 수 있다. 비-휘발성 메모리는 예로서 플래시 메모리 및 판독 전용 메모리(ROM)/프로그램 가능 판독 전용 메모리(PROM)/소거 가능 프로그램 가능 판독 전용 메모리(EPROM)/전자 소거 가능 프로그램 가능 판독 전용 메모리(EEPROM)(예를 들어, 일반적으로 부팅 프로그램과 같은 펌웨어에 사용)를 포함한다(그러나, 이에 제한되지 않는다). 휘발성 메모리는 예로서 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 위상 변화 메모리(PCM), 및 디스크들 또는 테이프들을 포함한다(그러나, 이에 제한되지는 않는다).
[0048] 저장 디바이스(530)는 컴퓨팅 디바이스(500)에 대용량 저장부를 제공할 수 있다. 일부 구현들에서, 저장 디바이스(530)는 컴퓨터 판독 가능 매체이다. 다양한 상이한 구현들에서, 저장 디바이스(530)는 플로피 디스크 디바이스, 하드 디스크 디바이스, 광 디스크 디바이스, 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 솔리드 스테이트 메모리 디바이스, 또는 저장 영역 네트워크 또는 그외 구성들 내에서의 디바이스들을 포함하는 디바이스 어레이일 수 있다. 추가적인 구현들에서, 컴퓨터 프로그램 제품은 정보 캐리어 내에 유형적으로 구현된다. 컴퓨터 프로그램 제품은, 실행될 때 상술한 바와 같은 하나 이상의 방법들을 수행하는 명령어들을 포함한다. 정보 캐리어는 메모리(520), 저장 디바이스(530), 또는 프로세서 상의 메모리(510)와 같은 컴퓨터 판독 가능 매체 또는 기계 판독 가능 매체이다.
[0049] 고속 제어기(540)는 컴퓨팅 디바이스(500)에 대한 대역폭 집약적 동작들을 관리하는 반면, 저속 제어기(560)는 보다 낮은 대역폭 집약적 동작들을 관리한다. 이러한 임무들의 할당은 예시일 뿐이다. 일부 구현들에서, 고속 제어기(540)는 메모리(520), 디스플레이(580)(예를 들어, 그래픽 프로세서 또는 가속기를 통해) 및 다양한 확장 카드들(도시되지 않음)을 수용할 수 있는 고속 확장 포트들(550)에 결합된다. 일부 구현들에서, 저속 제어기(560)는 저장 디바이스(530) 및 저속 확장 포트들(590)에 결합된다. 다양한 통신 포트들(예를 들어, USB, 블루투스, 이더넷, 무선 이더넷)를 포함할 수 있는 저속 확장 포트(590)는 키보드, 포인팅 디바이스, 스캐너와 같은 하나 이상의 입력/출력 디바이스들, 또는 예를 들어 네트워크 어댑터를 통해 스위치 또는 라우터와 같은 네트워킹 디바이스에 결합될 수 있다.
[0050] 컴퓨팅 디바이스(500)는 도면에 도시된 바와 같이 다수의 상이한 형태들로 구현될 수 있다. 예를 들어, 표준 서버(500a)로서 또는 이러한 서버들(500a)의 그룹 내에서 다수회, 랩탑 컴퓨터(500b)로서, 또는 랙 서버 시스템(500c)의 일부로서 구현될 수 있다.
[0051] 본 명세서에 기술된 시스템들 및 기술들의 다양한 구현들은 디지털 전자 및/또는 광학 회로, 집적 회로, 특별히 설계된 ASIC들(애플리케이션 특정 집적 회로들), 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 이들의 조합들로 실현될 수 있다. 이러한 다양한 구현들은, 특수하거나 범용일 수 있고 저장 시스템, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령어들을 수신하고 저장 시스템, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스로 데이터 및 명령어들을 송신하도록 결합된, 적어도 하나의 프로그램 가능 프로세서를 포함하는 프로그램 가능 시스템 상에서 실행 가능 및/또는 해석 가능한 하나 이상의 컴퓨터 프로그램들에서의 구현을 포함할 수 있다.
[0052] 이들 컴퓨터 프로그램들(프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 또는 코드로도 알려져 있음)은 프로그램 가능 프로세서를 위한 기계 명령어들을 포함하고, 높은 레벨의 절차적 및/또는 객체 지향의 프로그래밍 언어로 및/또는 어셈블리/기계 언어로 구현될 수 있다. 본 명세서에서 사용되는 용어들 "기계 판독 가능 매체" 및 "컴퓨터 판독 가능 매체"는 임의의 컴퓨터 프로그램 제품, 비-일시적 컴퓨터 판독 가능 매체, 기계 판독 가능 신호로서 기계 명령어들을 수신하는 기계 판독 가능 매체를 포함하여 기계 명령어들 및/또는 데이터를 프로그램 가능 프로세서에 제공하는데 사용되는 장치 및/또는 디바이스(예를 들어, 자기 디스크들, 광 디스크들, 메모리, 프로그램 가능 논리 디바이스들(PLD들))를 지칭한다. 용어 "기계 판독 가능 신호"는 기계 명령어들 및/또는 데이터를 프로그램 가능 프로세서에 제공하는데 사용되는 임의의 신호를 지칭한다.
[0053] 본 명세서에 기술된 프로세스들 및 논리 흐름들은 입력 데이터 상에서 동작하고 출력을 생성함으로써 기능들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그램 가능 프로세서들에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들은 특수 목적 논리 회로, 예를 들어 FPGA(필드 프로그램 가능 게이트 어레이) 또는 ASIC(애플리케이션 특정 집적 회로)에 의해 또한 수행될 수 있다. 컴퓨터 프로그램의 실행에 적합한 프로세서들은 예로서 범용 마이크로 프로세서들 및 특수 목적 마이크로 프로세서들 둘 모두, 및 임의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 요소들은 명령어들을 수행하기 위한 프로세서와 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들, 예를 들어 자기, 자기 광 디스크들 또는 광 디스크들을 또한 포함하거나, 이들 대용량 저장 디바이스들로부터 데이터를 수신하거나 이들 대용량 디바이스로 데이터를 송신하거나 수신과 송신 둘 다를 행하도록 동작적으로 결합될 것이다. 그러나, 컴퓨터는 이러한 디바이스들을 가질 필요가 없다. 컴퓨터 프로그램 명령어들 및 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체는, 반도체 메모리 디바이스들, 예를 들어 EPROM, EEPROM 및 플래시 메모리 디바이스들; 자기 디스크, 예를 들어 내부 하드 디스크들 또는 이동식 디스크들; 광 자기 디스크들; 및 CD ROM 및 DVD-ROM 디스크들을 예를 들어 포함하는 모든 형태의 비-휘발성 메모리, 매체, 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보완되거나 통합될 수 있다.
[0054] 사용자와의 상호 작용을 제공하기 위해, 본 개시내용의 하나 이상의 양태들은, 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스, 예를 들어 CRT(음극선 관), LCD(액정 디스플레이) 모니터, 또는 터치 스크린을 갖고 선택적으로 사용자가 컴퓨터에 입력을 제공할 수 있게 하는 키보드 및 포인팅 디바이스, 예를 들어, 마우스 또는 트랙볼을 갖는 컴퓨터 상에서 구현될 수 있다. 다른 종류들의 디바이스들이 사용자와 상호 작용을 제공하는데 또한 사용될 수 있으며; 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감각 피드백, 예를 들어 시각적 피드백, 청각 피드백 또는 촉각 피드백일 수 있고; 사용자로부터의 입력은 음향, 음성, 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 추가로, 컴퓨터는 사용자에 의해 사용되는 디바이스로 문서들을 송신하고 디바이스로부터 문서들을 수신함으로써; 예를 들어, 웹 브라우저로부터 수신된 요청들에 응답하여 웹 페이지를 사용자의 클라이언트 디바이스의 웹 브라우저에 송신함으로써 사용자와 상호 작용할 수 있다.
[0055] 다수의 구현들이 설명되었다. 그럼에도 불구하고, 본 개시내용의 사상 및 범위를 벗어나지 않고 다양한 변형들이 이루어질 수 있다는 것을 이해할 것이다. 따라서, 다른 구현들은 후속의 청구항들의 범위 내에 있다.

Claims (28)

  1. 데이터 프로세싱 하드웨어; 및
    상기 데이터 프로세싱 하드웨어와 통신하는 메모리 하드웨어를 포함하고,
    상기 메모리 하드웨어는, 상기 데이터 프로세싱 하드웨어 상에서 실행될 때, 상기 데이터 프로세싱 하드웨어로 하여금 동작들을 수행하게 하는 명령어들을 저장하고,
    상기 동작들은:
    상기 데이터 프로세싱 하드웨어 상에서 실행되는 제어 평면 관리자에서, 복수의 단일-테넌트(single-tenant) SaaS(Software-as-a-Service) 애플리케이션들 각각에 대한 인스턴스 관리 구성 데이터를 수신하는 동작 ― 각각의 단일-테넌트 SaaS 애플리케이션에 대한 상기 인스턴스 관리 구성 데이터는 (i) N개의 테넌트들에 대한 대응하는 단일-테넌트 SaaS 애플리케이션의 N개의 인스턴스들을 실행하기 위한 복수의 파라미터들 및 (ii) 대응하는 제어 평면의 생성 및 실행을 위한 규칙들을 포함하고, 상기 복수의 파라미터들은 상기 대응하는 단일-테넌트 SaaS 애플리케이션의 상기 N개의 테넌트들의 각각의 테넌트에 의해 선택 가능한 하나 또는 그 초과의 소비자 파라미터들 및 배치 유형(deployment type)을 포함하고, 상기 배치 유형은 직접 배치 유형, 단일 가상 머신 배치 유형, 또는 고 가용성 배치 유형을 포함함 ―;
    상기 제어 평면 관리자에서, 상기 복수의 단일-테넌트 SaaS 애플리케이션들 각각의 이미지를 수신하는 동작;
    상기 제어 평면 관리자에 의해, 대응하는 상기 수신된 인스턴스 관리 구성 데이터에 기초하여 각각의 단일-테넌트 SaaS 애플리케이션에 대한 대응하는 제어 평면을 생성하는 동작 ― 각각의 제어 평면은 대응하는 상기 수신된 이미지에 기초하여 대응하는 상기 단일-테넌트 SaaS 애플리케이션의 상기 N개의 인스턴스들을 생성하고, 그리고 대응하는 상기 수신된 인스턴스 관리 구성 데이터에 기초하여 대응하는 상기 단일-테넌트 SaaS 애플리케이션의 상기 N개의 인스턴스들을 관리하도록 구성되고, 상기 N개의 인스턴스들의 각각의 인스턴스는 대응하는 상기 단일-테넌트 SaaS 애플리케이션의 상기 N개의 테넌트들의 개별적인 테넌트에 대해 실행됨 ― ;
    상기 데이터 프로세싱 하드웨어 상에서 각각의 제어 평면을 실행하는 동작; 및
    상기 복수의 단일-테넌트 SaaS 애플리케이션들 중 하나의 애플리케이션의 상기 N개의 테넌트들 중 대응하는 테넌트가 발행한 라이프사이클 관리 커맨드에 응답하여 상기 대응하는 테넌트에 대해 실행하는 개별적인 인스턴스의 라이프사이클을 관리하기 위해, 상기 제어 평면 관리자에 의해, 상기 대응하는 테넌트가 상기 대응하는 제어 평면에 액세스하여 상기 개별적인 인스턴스의 라이프사이클을 관리하도록 허용하는 동작
    을 포함하는,
    시스템.
  2. 제1 항에 있어서,
    각각의 제어 평면은 상기 대응하는 단일-테넌트 SaaS 애플리케이션의 상기 N개의 인스턴스들의 각각의 인스턴스의 라이프사이클 관리를 위해 구성되고, 상기 라이프사이클 관리는 상기 대응하는 단일-테넌트 SaaS 애플리케이션의 상기 N개의 인스턴스들 중 주어진 인스턴스를 생성, 판독, 업데이트, 및 삭제하기 위한 동작들을 포함하는,
    시스템.
  3. 제2 항에 있어서,
    상기 라이프사이클 관리는 상기 대응하는 단일-테넌트 SaaS 애플리케이션의 상기 N개의 인스턴스들의 각각의 인스턴스를 백업 및 복원, 재시작, 및 셧다운(shut down)하기 위한 동작들을 더 포함하는,
    시스템.
  4. 제3 항에 있어서,
    상기 인스턴스 관리 구성 데이터는 상기 대응하는 단일-테넌트 SaaS 애플리케이션의 상기 N개의 인스턴스들의 각각의 인스턴스의 상기 라이프사이클 관리의 동작들을 정의하는,
    시스템.
  5. 제1 항 내지 제4 항 중 어느 한 항에 있어서,
    각각의 제어 평면은 가상 머신 또는 전용 호스트 디바이스 상에 상기 대응하는 단일-테넌트 SaaS 애플리케이션의 상기 N개의 인스턴스들의 각각의 인스턴스를 생성 및 배치하도록 구성되는,
    시스템.
  6. 제1 항 내지 제4 항 중 어느 한 항에 있어서,
    각각의 제어 평면은:
    상기 대응하는 단일-테넌트 SaaS 애플리케이션의 상기 N개의 인스턴스들의 각각의 인스턴스의 동작 또는 사용 메트릭들을 평가하고; 그리고
    상기 평가된 동작 또는 사용 메트릭들을, 상기 데이터 프로세싱 하드웨어와 통신하는 상기 메모리 하드웨어에 저장하도록 구성되는,
    시스템.
  7. 삭제
  8. 삭제
  9. 제1 항에 있어서,
    상기 파라미터들은 서비스 권한들, 가용성, 보안 격리(security isolation), 호스트 위치, 및 모니터링 및 지원 중 하나 이상을 포함하는,
    시스템.
  10. 제1 항에 있어서,
    각각의 단일-테넌트 SaaS 애플리케이션에 대한 상기 인스턴스 관리 구성 데이터는 하나 이상의 미리 정의된 파라미터들을 포함하는 하나 이상의 인스턴스 템플릿들을 포함하는,
    시스템.
  11. 데이터 프로세싱 하드웨어 상에서 실행되는 제어 평면 관리자에서, 복수의 단일-테넌트 SaaS(Software-as-a-Service) 애플리케이션들 각각에 대한 인스턴스 관리 구성 데이터를 수신하는 단계 ― 각각의 단일-테넌트 SaaS 애플리케이션에 대한 상기 인스턴스 관리 구성 데이터는 (i) N개의 테넌트들에 대한 대응하는 단일-테넌트 SaaS 애플리케이션의 N개의 인스턴스들을 실행하기 위한 복수의 파라미터들 및 (ii) 대응하는 제어 평면의 생성 및 실행을 위한 규칙들을 포함하고, 상기 복수의 파라미터들은 상기 대응하는 단일-테넌트 SaaS 애플리케이션의 상기 N개의 테넌트들의 각각의 테넌트에 의해 선택 가능한 하나 또는 그 초과의 소비자 파라미터들 및 배치 유형을 포함하고, 상기 배치 유형은 직접 배치 유형, 단일 가상 머신 배치 유형, 또는 고 가용성 배치 유형을 포함함 ―;
    상기 제어 평면 관리자에서, 상기 복수의 단일-테넌트 SaaS 애플리케이션들각각의 이미지를 수신하는 단계;
    상기 제어 평면 관리자에 의해, 대응하는 상기 수신된 인스턴스 관리 구성 데이터에 기초하여 각각의 단일-테넌트 SaaS 애플리케이션에 대한 대응하는 제어 평면을 생성하는 단계 ― 각각의 제어 평면은 대응하는 상기 수신된 이미지에 기초하여 대응하는 상기 단일-테넌트 SaaS 애플리케이션의 상기 N개의 인스턴스들을 생성하고, 그리고 대응하는 상기 수신된 인스턴스 관리 구성 데이터에 기초하여 대응하는 상기 단일-테넌트 SaaS 애플리케이션의 상기 N개의 인스턴스들을 관리하도록 구성되고, 상기 N개의 인스턴스들의 각각의 인스턴스는 대응하는 상기 단일-테넌트 SaaS 애플리케이션의 상기 N개의 테넌트들의 개별적인 테넌트에 대해 실행됨 ― ;
    상기 데이터 프로세싱 하드웨어 상에서 각각의 제어 평면을 실행하는 단계; 및
    상기 복수의 단일-테넌트 SaaS 애플리케이션들 중 하나의 애플리케이션의 상기 N개의 테넌트들 중 대응하는 테넌트가 발행한 라이프사이클 관리 커맨드에 응답하여 상기 대응하는 테넌트에 대해 실행하는 개별적인 인스턴스의 라이프사이클을 관리하기 위해, 상기 제어 평면 관리자에 의해, 상기 대응하는 테넌트가 상기 대응하는 제어 평면에 액세스하여 상기 개별적인 인스턴스의 라이프사이클을 관리하도록 허용하는 단계
    를 포함하는,
    방법.
  12. 제11 항에 있어서,
    각각의 제어 평면은 상기 대응하는 단일-테넌트 SaaS 애플리케이션의 상기 N개의 인스턴스들의 각각의 인스턴스의 라이프사이클 관리를 위해 구성되고, 상기 라이프사이클 관리는 상기 대응하는 단일-테넌트 SaaS 애플리케이션의 상기 N개의 인스턴스들 중 주어진 인스턴스를 생성, 판독, 업데이트, 및 삭제하기 위한 동작들을 포함하는,
    방법.
  13. 제12 항에 있어서,
    상기 라이프사이클 관리는 상기 대응하는 단일-테넌트 SaaS 애플리케이션의 상기 N개의 인스턴스들의 각각의 인스턴스를 백업 및 복원, 재시작, 및 셧다운하기 위한 동작들을 더 포함하는,
    방법.
  14. 제13 항에 있어서,
    상기 인스턴스 관리 구성 데이터는 상기 대응하는 단일-테넌트 SaaS 애플리케이션의 상기 N개의 인스턴스들의 각각의 인스턴스의 상기 라이프사이클 관리의 동작들을 정의하는,
    방법.
  15. 제11 항 내지 제14 항 중 어느 한 항에 있어서,
    각각의 제어 평면은 가상 머신 또는 전용 호스트 디바이스 상에 상기 대응하는 단일-테넌트 SaaS 애플리케이션의 상기 N개의 인스턴스들의 각각의 인스턴스를 생성 및 배치하도록 구성되는,
    방법.
  16. 제11 항 내지 제14 항 중 어느 한 항에 있어서,
    각각의 제어 평면은:
    상기 대응하는 단일-테넌트 SaaS 애플리케이션의 상기 N개의 인스턴스들의 각각의 인스턴스의 동작 또는 사용 메트릭들을 평가하고; 그리고
    상기 평가된 동작 또는 사용 메트릭들을, 상기 데이터 프로세싱 하드웨어와 통신하는 메모리 하드웨어에 저장하도록 구성되는,
    방법.
  17. 삭제
  18. 삭제
  19. 제11 항에 있어서,
    상기 파라미터들은 서비스 권한들, 가용성, 보안 격리, 호스트 위치, 및 모니터링 및 지원 중 하나 이상을 포함하는,
    방법.
  20. 제11 항 내지 제14 항 중 어느 한 항에 있어서,
    각각의 단일-테넌트 SaaS 애플리케이션에 대한 상기 인스턴스 관리 구성 데이터는 하나 이상의 미리 정의된 파라미터들을 포함하는 하나 이상의 인스턴스 템플릿들을 포함하는,
    방법.
  21. 제1 항에 있어서,
    상기 제어 평면 관리자는, 백업 및 복원 라이프사이클 관리 커맨드를 포함하는 상기 대응하는 테넌트에 의해 발행되는 상기 라이프사이클 관리 커맨드에 응답하여, 상기 대응하는 테넌트에 대해 실행되는 상기 대응하는 단일-테넌트 SaaS 애플리케이션의 상기 개별적인 인스턴스를 백업 및 복원하도록 구성되는,
    시스템.
  22. 제1 항에 있어서,
    상기 제어 평면 관리자는, 업데이트 라이프사이클 관리 커맨드를 포함하는 상기 대응하는 테넌트에 의해 발행되는 상기 라이프사이클 관리 커맨드에 응답하여, 상기 대응하는 테넌트에 대해 실행되는 상기 대응하는 단일-테넌트 SaaS 애플리케이션의 상기 개별적인 인스턴스를 업데이트하도록 구성되는,
    시스템.
  23. 제1 항에 있어서,
    상기 제어 평면 관리자는 각각의 제어 평면에 대한 소비자 애플리케이션 인터페이스를 퍼블리싱하도록 구성되고, 상기 각각의 제어 평면을 통해 상기 N개의 테넌트들의 각각의 테넌트가 상기 대응하는 제어 평면에 액세스하는,
    시스템.
  24. 제11 항에 있어서,
    백업 및 복원 라이프사이클 관리 커맨드를 포함하는 상기 대응하는 테넌트에 의해 발행되는 상기 라이프사이클 관리 커맨드에 응답하여, 상기 대응하는 테넌트에 대해 실행되는 상기 대응하는 단일-테넌트 SaaS 애플리케이션의 상기 개별적인 인스턴스를 상기 제어 평면 관리자에 의해 백업 및 복원하는 단계를 더 포함하는,
    방법.
  25. 제11 항에 있어서,
    업데이트 라이프사이클 관리 커맨드를 포함하는 상기 대응하는 테넌트에 의해 발행되는 상기 라이프사이클 관리 커맨드에 응답하여, 상기 대응하는 테넌트에 대해 실행되는 상기 대응하는 단일-테넌트 SaaS 애플리케이션의 상기 개별적인 인스턴스를 상기 제어 평면 관리자에 의해 업데이트하는 단계를 더 포함하는,
    방법.
  26. 제11 항에 있어서,
    각각의 제어 평면에 대한 소비자 애플리케이션 인터페이스를, 상기 제어 평면 관리자에 의해, 퍼블리싱하는 단계를 더 포함하고, 상기 각각의 제어 평면을 통해 상기 N개의 테넌트들의 각각의 테넌트가 상기 대응하는 제어 평면에 액세스하는,
    방법.
  27. 제1 항에 있어서,
    상기 각각의 단일-테넌트 SaaS 애플리케이션에 대한 대응하는 제어 평면을 생성하는 동작은 상기 대응하는 제어 평면의 생성 및 동작을 정의하는 실행 가능한 스크립트를 생성하는 동작을 포함하는,
    시스템.
  28. 제11 항에 있어서,
    상기 각각의 단일-테넌트 SaaS 애플리케이션에 대한 대응하는 제어 평면을 생성하는 단계는 상기 대응하는 제어 평면의 생성 및 동작을 정의하는 실행 가능한 스크립트를 생성하는 단계를 포함하는,
    방법.
KR1020197035093A 2017-10-27 2018-07-09 다중―단일―테넌트 SaaS 서비스들의 관리 KR102313432B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020217032564A KR102453818B1 (ko) 2017-10-27 2018-07-09 다중―단일―테넌트 SaaS 서비스들의 관리

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/795,850 2017-10-27
US15/795,850 US10860336B2 (en) 2017-10-27 2017-10-27 Managing multi-single-tenant SaaS services
PCT/US2018/041336 WO2019083579A1 (en) 2017-10-27 2018-07-09 SAAS SERVICE MANAGEMENT OF MULTIPLE UNIQUE CLIENTS

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020217032564A Division KR102453818B1 (ko) 2017-10-27 2018-07-09 다중―단일―테넌트 SaaS 서비스들의 관리

Publications (2)

Publication Number Publication Date
KR20200000442A KR20200000442A (ko) 2020-01-02
KR102313432B1 true KR102313432B1 (ko) 2021-10-14

Family

ID=63165456

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020197035093A KR102313432B1 (ko) 2017-10-27 2018-07-09 다중―단일―테넌트 SaaS 서비스들의 관리
KR1020217032564A KR102453818B1 (ko) 2017-10-27 2018-07-09 다중―단일―테넌트 SaaS 서비스들의 관리
KR1020227034783A KR102651083B1 (ko) 2017-10-27 2018-07-09 다중―단일―테넌트 SaaS 서비스들의 관리

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020217032564A KR102453818B1 (ko) 2017-10-27 2018-07-09 다중―단일―테넌트 SaaS 서비스들의 관리
KR1020227034783A KR102651083B1 (ko) 2017-10-27 2018-07-09 다중―단일―테넌트 SaaS 서비스들의 관리

Country Status (5)

Country Link
US (3) US10860336B2 (ko)
EP (2) EP3616058B1 (ko)
KR (3) KR102313432B1 (ko)
CN (2) CN110709819B (ko)
WO (1) WO2019083579A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018165492A1 (en) * 2017-03-09 2018-09-13 Devicebook Inc. Intelligent platform
US11323315B1 (en) * 2017-11-29 2022-05-03 Amazon Technologies, Inc. Automated host management service
US11895201B2 (en) * 2020-03-27 2024-02-06 Intel Corporation Programmable integrated circuit configured as a remote trust anchor to support multitenancy
CN112068807B (zh) * 2020-07-17 2023-11-03 石化盈科信息技术有限责任公司 流程工业应用软件生态系统、开发方法及存储介质
CN114301909B (zh) * 2021-12-02 2023-09-22 阿里巴巴(中国)有限公司 边缘分布式管控系统、方法、设备及存储介质
US20230289246A1 (en) * 2022-03-11 2023-09-14 Adp, Inc. Zero Code Metadata-Driven Dynamic API
CN114885024B (zh) * 2022-04-28 2023-09-12 远景智能国际私人投资有限公司 应用实例的路由方法、装置、设备及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080243629A1 (en) * 2007-03-26 2008-10-02 International Business Machines Apparatus, system, and method for logically packaging and delivering a service offering
US20130124807A1 (en) * 2011-11-14 2013-05-16 Eric H. Nielsen Enhanced Software Application Platform
US20140032764A1 (en) * 2012-07-30 2014-01-30 International Business Machines Corporation On-boarding services to a cloud environment
US20140136712A1 (en) * 2012-04-12 2014-05-15 Lg Cns Co., Ltd. Cloud resources as a service multi-tenant data model
US20150012669A1 (en) * 2012-04-26 2015-01-08 Burton Akira Hipp Platform runtime abstraction
US20170215101A1 (en) * 2016-01-26 2017-07-27 Sprint Communications Company L.P. Wireless data system that associates internet protocol ports with quality-of-service for user applications

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7933983B2 (en) 2002-12-17 2011-04-26 Hewlett-Packard Development Company, L.P. Method and system for performing load balancing across control planes in a data center
CA2463006A1 (en) * 2004-01-27 2005-07-27 Wrapped Apps Corporation On demand provisioning of web applications
JP4902282B2 (ja) * 2006-07-12 2012-03-21 株式会社日立製作所 業務システム構成変更方法、管理コンピュータ、および、業務システム構成変更方法のプログラム
CN106897096B (zh) * 2009-05-29 2020-12-25 甲骨文美国公司 Java商店
US8793348B2 (en) * 2009-09-18 2014-07-29 Group Business Software Ag Process for installing software application and platform operating system
EP2299360A1 (en) * 2009-09-18 2011-03-23 Group Business Software AG process for installing a software application and platform operating system
US8335765B2 (en) * 2009-10-26 2012-12-18 Amazon Technologies, Inc. Provisioning and managing replicated data instances
US8484568B2 (en) * 2010-08-25 2013-07-09 Verizon Patent And Licensing Inc. Data usage monitoring per application
US10225164B2 (en) 2012-09-07 2019-03-05 Oracle International Corporation System and method for providing a cloud computing environment
US10706025B2 (en) * 2013-02-28 2020-07-07 Amazon Technologies, Inc. Database system providing single-tenant and multi-tenant environments
US9021462B2 (en) * 2013-03-13 2015-04-28 Johnson Controls Technology Company Systems and methods for provisioning equipment
US20140351399A1 (en) 2013-05-24 2014-11-27 Connectloud, Inc. Method and Apparatus for Determining Cloud Infrastructure Service Level Assurance Based on Device Taxonomy
KR20130126569A (ko) * 2013-10-24 2013-11-20 삼성에스디에스 주식회사 커넥터 어플리케이션의 자동화 배포를 위한 멀티 테넌트 SaaS 플랫폼 및 그를 위한 방법, 그리고, 가상머신을 이용하는 테넌트와 서비스 공급업체
US9760923B1 (en) * 2014-06-18 2017-09-12 Amdocs Software Systems Limited System, method, and computer program for service design and creation
US9436813B2 (en) * 2014-02-03 2016-09-06 Ca, Inc. Multi-tenancy support for a product that does not support multi-tenancy
US9934060B2 (en) 2014-10-13 2018-04-03 Vmware, Inc. Hybrid service fleet management for cloud providers
US9525672B2 (en) * 2014-12-19 2016-12-20 Amazon Technologies, Inc. Multi-faceted compute instance identity
US9672123B2 (en) * 2014-12-31 2017-06-06 Oracle International Corporation Deploying services on application server cloud with high availability
US9575740B2 (en) * 2015-01-21 2017-02-21 Samsung Electronics Co., Ltd. Apparatus and method for running multiple instances of a same application in mobile devices
US9521194B1 (en) 2015-03-16 2016-12-13 Amazon Technologies, Inc. Nondeterministic value source
US9858105B1 (en) * 2015-11-24 2018-01-02 Amazon Technologies, Inc. Service for managing custom virtual machine images
CN106897124B (zh) * 2015-12-18 2020-03-10 华为技术有限公司 一种多租户请求处理方法、装置及设备
US11973758B2 (en) * 2016-09-14 2024-04-30 Microsoft Technology Licensing, Llc Self-serve appliances for cloud services platform
US10587700B2 (en) * 2016-09-16 2020-03-10 Oracle International Corporation Cloud operation reservation system
US10270711B2 (en) * 2017-03-16 2019-04-23 Red Hat, Inc. Efficient cloud service capacity scaling
US10467241B2 (en) * 2017-03-24 2019-11-05 Ca, Inc. Dynamically provisioning instances of a single-tenant application for multi-tenant use
EP3616093A1 (en) * 2017-04-27 2020-03-04 Citrix Systems Inc. Methods for enhancing a legacy single tenant application system to a multi-tenant application system with minimal changes

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080243629A1 (en) * 2007-03-26 2008-10-02 International Business Machines Apparatus, system, and method for logically packaging and delivering a service offering
US20130124807A1 (en) * 2011-11-14 2013-05-16 Eric H. Nielsen Enhanced Software Application Platform
US20140136712A1 (en) * 2012-04-12 2014-05-15 Lg Cns Co., Ltd. Cloud resources as a service multi-tenant data model
US20150012669A1 (en) * 2012-04-26 2015-01-08 Burton Akira Hipp Platform runtime abstraction
US20140032764A1 (en) * 2012-07-30 2014-01-30 International Business Machines Corporation On-boarding services to a cloud environment
US20170215101A1 (en) * 2016-01-26 2017-07-27 Sprint Communications Company L.P. Wireless data system that associates internet protocol ports with quality-of-service for user applications

Also Published As

Publication number Publication date
EP3616058A1 (en) 2020-03-04
WO2019083579A1 (en) 2019-05-02
US20220121456A1 (en) 2022-04-21
EP4357919A3 (en) 2024-05-29
KR20200000442A (ko) 2020-01-02
US11922182B2 (en) 2024-03-05
CN117251199A (zh) 2023-12-19
KR102453818B1 (ko) 2022-10-11
KR102651083B1 (ko) 2024-03-22
US20190129729A1 (en) 2019-05-02
KR20220139466A (ko) 2022-10-14
CN110709819A (zh) 2020-01-17
KR20210124543A (ko) 2021-10-14
CN110709819B (zh) 2023-09-19
US20210073006A1 (en) 2021-03-11
US11221860B2 (en) 2022-01-11
EP3616058B1 (en) 2024-03-20
EP4357919A2 (en) 2024-04-24
US10860336B2 (en) 2020-12-08

Similar Documents

Publication Publication Date Title
KR102313432B1 (ko) 다중―단일―테넌트 SaaS 서비스들의 관리
US8301746B2 (en) Method and system for abstracting non-functional requirements based deployment of virtual machines
US20180101371A1 (en) Deployment manager
US9317319B2 (en) Monitoring and dynamically reconfiguring virtual machine patterns
US10216538B2 (en) Automated exploitation of virtual machine resource modifications
US9361120B2 (en) Pluggable cloud enablement boot device and method that determines hardware resources via firmware
US11556369B2 (en) Virtual machine deployment method and OMM virtual machine
US10999135B2 (en) Fast provisioning in cloud computing environments
US9389874B2 (en) Apparatus and methods for automatically reflecting changes to a computing solution in an image for the computing solution
US20150106611A1 (en) Pluggable cloud enablement boot device and method
US9798571B1 (en) System and method for optimizing provisioning time by dynamically customizing a shared virtual machine
US11558387B2 (en) Validation of approver identifiers in a cloud computing environment
US11082496B1 (en) Adaptive network provisioning
US20170155715A1 (en) Cloud storage of applications for mobile devices
KR20240025213A (ko) 다중과 단일 테넌트 SaaS 서비스 관리
Copeland et al. Getting started with Azure virtual machines

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
A107 Divisional application of patent
GRNT Written decision to grant