KR20180072593A - 멀티테넌트 미들웨어 어플리케이션에서 호출된 os 프로그램의 멀티테넌트 실행을 위한 시스템 및 방법 - Google Patents

멀티테넌트 미들웨어 어플리케이션에서 호출된 os 프로그램의 멀티테넌트 실행을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20180072593A
KR20180072593A KR1020177037057A KR20177037057A KR20180072593A KR 20180072593 A KR20180072593 A KR 20180072593A KR 1020177037057 A KR1020177037057 A KR 1020177037057A KR 20177037057 A KR20177037057 A KR 20177037057A KR 20180072593 A KR20180072593 A KR 20180072593A
Authority
KR
South Korea
Prior art keywords
tenant
calling
application
partition
partitions
Prior art date
Application number
KR1020177037057A
Other languages
English (en)
Other versions
KR102559507B1 (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
Priority claimed from US15/059,193 external-priority patent/US9811386B2/en
Priority claimed from US15/059,872 external-priority patent/US9819609B2/en
Application filed by 오라클 인터내셔날 코포레이션 filed Critical 오라클 인터내셔날 코포레이션
Publication of KR20180072593A publication Critical patent/KR20180072593A/ko
Application granted granted Critical
Publication of KR102559507B1 publication Critical patent/KR102559507B1/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/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation
    • H04L47/783Distributed allocation of resources, e.g. bandwidth brokers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • H04L67/42
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

일 실시예에 따르면, 본 발명은 멀티테넌트 미들웨어 어플리케이션으로부터 호출된 테넌트-미인식 프로그램의 멀티테넌트 실행을 지원하기 위한 시스템 및 방법을 개시한다. 예시적인 방법은 복수의 파티션 및 복수의 테넌트 인식 프로그램을 제공할 수 있으며, 복수의 테넌트-인식 프로그램 각각은 파티션과 연관된다. 상기 방법은 복수의 파티션과 복수의 테넌트-인식 프로그램 각각을 복수의 테넌트의 하나의 테넌트와 연관시킬 수 있다. 상기 방법은 복수의 파티션 중 호출 파티션으로부터 테넌트-미인식 프로세스를 호출할 수 있으며, 호출 파티션은 복수의 테넌트의 하나의 호출 테넌트와 연관된다. 상기 방법은 호출 테넌트에 대한 테넌시 정보를 수집할 수 있다. 그리고, 수집된 테넌시 정보를 기초로 상기 방법은 프로세스 실행 환경 및 리소스를 설정함으로써 호출 테넌트에 테넌트-미인식 프로세스의 실행을 스코프(scope)할 수 있다.

Description

멀티테넌트 미들웨어 어플리케이션에서 호출된 OS 프로그램의 멀티테넌트 실행을 위한 시스템 및 방법
저작권 고지(Copyright Notice)
본 특허 문서의 개시내용의 일부는 저작권 보호의 대상되는 자료를 포함하고 있다. 저작권자는 특허 및 상표청의 특허 파일 또는 기록에 나타나 있듯이 본 특허 문서 또는 특허 개시내용을 누구라도 복사(facsimile reproduction)하는 것에 이의는 없지만, 그 이외의 경우 모든 저작권 권리를 보유한다.
본 발명의 실시예들은 일반적으로 어플리케이션 서버 및 클라우드 환경에 관한 것으로, 특히 멀티테넌트 미들웨어 플랫폼으로부터 호출된 어플리케이션을 지원하기 위한 시스템 및 방법에 관한 것이다.
소프트웨어 어플리케이션 서버는 그 예로서 오라클 WebLogic 서버(WLS) 및 Glassfish를 포함하고 있으며, 일반적으로 기업 소프트웨어 어플리케이션을 실행하기 위한 관리(managed) 환경을 제공한다. 최근 클라우드 환경에서 사용하기 위한 기술들이 개발되고 있어, 사용자 또는 테넌트는 클라우드 환경에서 그들의 어플리케이션을 개발하여 실행할 수 있고 해당 환경에서 제공하는 분산(distributed) 리소스를 활용하는 것이 가능하게 되었다.
본 발명의 일 실시예에 따르면 본 발명은 멀티테넌트 미들웨어 어플리케이션으로부터 호출된 테넌트-미인식 프로그램의 멀티테넌트 실행을 지원하기 위한 시스템 및 방법을 개시한다. 예시적인 방법은 복수의 파티션 및 복수의 테넌트 인식 프로그램을 제공할 수 있으며, 복수의 테넌트-인식 프로그램 각각은 파티션과 연관된다. 상기 방법은 복수의 파티션과 복수의 테넌트-인식 프로그램 각각을 복수의 테넌트의 하나의 테넌트와 연관시킬 수 있다. 상기 방법은 복수의 파티션 중 호출 파티션으로부터 테넌트-미인식 프로세스를 호출할 수 있으며, 호출 파티션은 복수의 테넌트의 하나의 호출 테넌트와 연관된다. 상기 방법은 호출 테넌트에 대한 테넌시 정보를 수집할 수 있다. 그리고, 수집된 테넌시 정보를 기초로 상기 방법은 프로세스 실행 환경 및 리소스를 설정함으로써 호출 테넌트에 테넌트-미인식 프로세스의 실행을 스코프(scope)할 수 있다.
본 발명의 실시예에 따르면, 컨테이너화된 어플리케이션을 사용하여, 상기 스코프된 실행은 멀티테넌트 미들웨어 환경의 다른 테넌트로부터 테넌트-미인식 프로세스의 런타임 분리를 지원하여 OS 어플리케이션 프로그램의 멀티테넌트 동작을 야기한다.
도 1은 본 발명의 일 실시예에 따른, 어플리케이션 서버, 클라우드 또는 다른 환경에서 멀티-테넌시를 지원하기 위한 시스템을 도시한다.
도 2는 본 발명의 일 실시예에 따른, 어플리케이션 서버, 클라우드 또는 다른 환경에서 멀티-테넌시를 지원하기 위한 시스템을 더 도시한다.
도 3은 본 발명의 일 실시예에 따른, 어플리케이션 서버, 클라우드 또는 다른 환경에서 멀티-테넌시를 지원하기 위한 시스템을 더 도시한다.
도 4는 본 발명의 일 실시예에 따른, 예시적인 멀티테넌트 환경과 함께 사용하기 위한 도메인 구성을 도시한다.
도 5는 본 발명의 일 실시예에 따른, 예시적인 멀티테넌트 환경을 더 도시한다.
도 6은 본 발명의 일 실시예에 따른, 테넌트-미인식 프로세스의 테넌트 스코프된 실행을 위한 시스템을 도시한다.
도 7은 본 발명의 일 실시예에 따른, 테넌트-미인식 프로세스의 테넌트 스코프된 실행을 위한 시스템을 도시한다.
도 8은 본 발명의 일 실시예에 따른, 테넌트-미인식 프로세스의 테넌트 스코프된 실행을 위한 시스템을 도시한다.
도 9는 본 발명의 일 실시예에 따른, 테넌트-미인식 프로세스의 테넌트 스코프된 실행을 위한 환경 및 리소스를 생성하기 위한 예시적인 방법의 흐름도이다.
도 10은 본 발명의 일 실시예에 따른, 프로세스 빌더를 생성하고 구성하기 위한 예시적인 방법의 흐름도이다.
도 11은 본 발명의 일 실시예에 따른, MT 미들웨어 어플리케이션(예컨대, JEE 어플리케이션)으로부터 테넌트-미인식 OS 어플리케이션의 멀티테넌트 실행을 위한 예시적인 방법의 흐름도이다.
도 12는 멀티테넌트 미들웨어 어플리케이션으로부터 호출된 테넌트-미인식 프로세스의 테넌트 스코프된 실행을 지원하기 위한 예시적인 방법의 흐름도이다.
일 실시예에 따르면, 본 명세서에는 멀티테넌트 미들웨어 어플리케이션에서 호출된 테넌트-미인식(본 명세서에서 다양하게 "테넌트 미인식"으로도 지칭됨) 프로세스의 테넌트 스코프된(scoped) 실행(본 명세서에서 다양하게 "멀티테넌트 실행"으로도 지칭됨)을 지원하는 시스템 및 방법이 개시된다. 예시적인 방법은 복수의 파티션 및 복수의 테넌트-인식(본 명세서에서 다양하게 "테넌트 인식"이라도 지칭됨) 프로그램을 제공할 수 있으며, 복수의 테넌트-인식 프로그램 각각은 파티션과 관련된다. 이 방법은 복수의 파티션과 복수의 테넌트-인식 프로그램 각각을 복수의 테넌트의 하나의 테넌트와 연관시킬 수 있다. 이 방법은 복수의 파티션 중 호출 파티션으로부터 테넌트-미인식 프로세스를 호출할 수 있으며, 호출 파티션은 복수의 테넌트의 호출 테넌트와 연관된다. 이 방법은 호출 테넌트에 대한 테넌시 정보를 수집할 수 있다. 그리고 수집된 테넌시 정보를 기반으로 방법은 프로세스 실행 환경 및 리소스를 설정하여 호출 테넌트에 테넌트 미인식 프로세스의 실행을 스코프(범위 설정)할 수 있다.
본 명세서에 설명된 시스템 및 방법을 사용하여, 일 실시예에 따르면, 운영 시스템상의 네이티브 프로그램/프로세스로서 실행되는 비 자바(non-Java) 컴포넌트를 포함하는 테넌트 인식 JEE 어플리케이션(예컨대, SaaS 어플리케이션)은 테넌트 스코프 방식(tenant scoped manner)으로 동작할 수 있고, 완전한 어플리케이션(단-대-단) 멀티테넌트를 인식하고 분리(isolate)할 수 있다. 즉, 멀티테넌트 어플리케이션 서버 환경 내에서 제공되는 멀티 테넌시 지원은 네이티브 OS상의 MT 어플리케이션 서버 환경 외부에서 지원될 수 있으며, MT 어플리케이션 서버 환경(예컨대, WebLogic MT)내에서 실행되는 컴포넌트/프로그램에 제한되지 않는다.
어플리케이션 서버(예컨대, 멀티테넌트( MultiTenant) , MT ) 환경
도 1은 본 발명의 일 실시예에 따른 어플리케이션 서버, 클라우드 또는 다른 환경에서 멀티 테넌시를 지원하기 위한 시스템을 도시한다.
도 1에 도시된 바와 같이, 본 발명의 일 실시예에 따르면, 어플리케이션 서버(예컨대, 멀티테넌트, MT) 환경(100) 또는 소프트웨어 어플리케이션의 배치 및 실행을 인에이블하는 다른 컴퓨팅 환경은, 어플리케이션 서버 도메인을 정의하기 위해 런타임(run-time)시에 이용되는 도메인(102)의 구성을 포함하도록 그리고 해당 도메인(102)의 구성에 따라 동작하도록 구성될 수 있다.
본 발명의 일 실시예에 따르면, 어플리케이션 서버는 런타임시에 사용되도록 정의된 하나 이상의 파티션(104)을 포함할 수 있다. 각 파티션은 전역적으로 고유 파티션 식별자(ID) 및 파티션 구성과 연관될 수 있고, 리소스 그룹 템플릿(126) 및/또는 파티션-특정 어플리케이션 또는 리소스(128)에 대한 참조와 함께 하나 이상의 리소스 그룹(124)을 더 포함할 수 있다. 도메인-레벨 리소스 그룹, 어플리케이션 및/또는 리소스(140)는 또한 리소스 그룹 템플릿에 대한 참조와 함께 선택적으로 도메인 레벨로 정의될 수 있다.
각 리소스 그룹 템플릿(160)은 하나 이상의 어플리케이션 A(162), B(164), 리소스 A(166), B(168) 및/또는 다른 배치 가능한 어플리케이션 또는 리소스(170)를 정의할 수 있고 리소스 그룹에 의해 참조될 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 파티션(104)내의 리소스 그룹(124)은 리소스 그룹 템플릿(160)을 참조(190)할 수 있다.
일반적으로 시스템 관리자는 파티션, 도메인 레벨의 리소스 그룹 및 리소스 그룹 템플릿 및 보안 영역을 정의할 수 있고, 파티션 관리자는 예를 들어 파티션 레벨의 리소스 그룹을 생성하거나, 어플리케이션을 파티션에 배치하거나 또는 파티션에 대한 특정 영역(realms)을 참조함으로써 그들 자체의 파티션의 양태를 정의할 수 있다.
도 2는 본 발명의 일 실시예에 따른 어플리케이션 서버, 클라우드 또는 다른 환경에서 멀티-테넌시를 지원하기 위한 시스템을 추가로 도시한다.
도 2에 도시된 바와 같이, 일 실시예에 따르면, 파티션(202)은 예를 들어 리소스 그룹 템플릿(210)의 참조(206)를 포함하는 리소스 그룹(205)과 가상 타겟(예컨대, 가상 호스트) 정보(207)와 플러거블 데이터베이스(pluggable database:PDB) 정보(208)를 포함할 수 있다. 리소스 그룹 템플릿(예컨대, 210)은 예를들어, JMS (Java Message Server) 서버(213), SAF(store-and-forward) 에이전트(215), 메일 세션 컴포넌트(216) 또는 JDBC(Java Database Connectivity) 리소스(217)와 같은 리소스과 함께 복수의 어플리케이션(2111 및 B212)을 정의할 수 있다.
도 2에 도시된 리소스 그룹 템플릿은 일 예로서 제공되며, 다른 실시예에 따라 다른 유형의 리소스 그룹 템플릿과 엘리먼트가 제공될 수 있다.
본 발명의 일 실시예에 따르면, 파티션(예컨대, 202) 내의 리소스 그룹이 특정 리소스 그룹 템플릿(예컨대, 210)을 참조(220)하면, 특정 파티션과 관련된 정보는 참조된 리소스 그룹 템플릿과 결합하여 사용되어 파티션-특정 정보(230), 예를 들어, 파티션-특정 PDB 정보를 나타낼 수 있다. 그런 다음 파티션-특정 정보는 어플리케이션 서버에 의해 사용되어 파티션이 사용할 리소스, 예를 들어 PDB 리소스를 구성할 수 있다. 예를 들어, 파티션(202)과 관련된 파티션-특정 PDB 정보는 어플리케이션 서버에 의해, 해당 파티션에 의한 사용을 위해 적절한 PDB(238)를 갖는 컨테이너 데이터베이스(CDB)(236)를 구성(232)할 수 있다.
유사하게, 본 발명의 일 실시예에 따르면, 특정 파티션과 관련된 가상 타겟 정보는 파티션에 의한 사용을 위해 파티션-특정 가상 타겟(240), 예를 들어 URL (Uniform Resource Locator)(예컨대, http://baylandurgentcare.com)을 통해 액세스할 수 있는 baylandurgentcare.com을 정의하는데 사용될 수 있다.
도 3은 일 실시예에 따른 어플리케이션 서버, 클라우드 또는 다른 환경에서 멀티-테넌시를 지원하기 위한 시스템을 추가로 도시한다.
본 발명의 일 실시예에 따르면, config.xml 구성 파일과 같은 시스템 구성은 해당 파티션과 관련된 리소스 그룹 및/또는 다른 파티션 속성에 대한 구성 엘리먼트를 포함하는 파티션을 정의하는데 사용된다. 값들은 속성 이름/값 쌍을 사용하여 파티션별로 지정될 수 있다.
본 발명의 일 실시예에 따르면, 복수의 파티션은 관리 서버/클러스터(242) 내에서 또는 CDB(243)로의 액세스를 제공할 수 있고 웹 계층(web tier)(244)을 통해 액세스 가능한 유사한 환경 내에서 실행될 수 있다. 이것은 예를 들어 하나의 도메인 또는 파티션이 하나 이상의 PDB(CDB의)와 연관되는 것을 가능하게 한다.
본 발명의 일 실시예에 따르면, 복수의 파티션 각각, 이 예에서 파티션 A(250)와 파티션 B(260)은 그 파티션에 관련된 복수의 리소스를 포함하도록 구성될 수 있다. 예를 들어 파티션 A는 PDB A(259)와 관련된 데이터 소스 A(257)와 함께 어플리케이션 A1(252), 어플리케이션 A2(254) 및 JMS A(256)를 포함하는 리소스 그룹(251)을 포함하도록 구성될 수 있으며, 여기서 파티션은 가상 타겟 A(258)를 통해 액세스 가능하다. 마찬가지로, 파티션 B(260)는 PDB B(269)와 관련된 데이터 소스 B(267)와 함께 어플리케이션 B1(262), 어플리케이션 B2(264) 및 JMS B(266)를 포함하는 리소스 그룹(261)을 포함하도록 구성될 수 있으며, 여기서 파티션은 가상 타겟 B(268)를 통해 액세스 가능하다.
상기 실시예들 중 몇몇은 CDB와 PDB의 사용을 도시하고 있지만, 다른 실시예에 따라 다른 유형의 멀티테넌트 또는 비-멀티테넌트 데이터베이스가 지원될 수 있으며, 여기서 특정 구성은 예를 들어 스키마를 사용하거나 또는 다른 데이터베이스의 사용을 통해 각각 파티션에 제공될 수 있다.
리소스 (Resources)
본 발명의 일 실시예에 따르면, 리소스는 환경의 도메인에 배치될 수 있는 시스템 리소스, 어플리케이션 또는 다른 리소스 또는 객체이다. 예를 들어, 일 실시예에 따르면, 리소스는 어플리케이션, JMS, JDBC, JavaMail, WLDF, 데이터 리소스이거나, 또는 서버, 클러스터 또는 다른 어플리케이션 서버 타겟에 배치될 수 있는 다른 시스템 리소스 또는 다른 유형의 객체일 수 있다.
파티션 ( Partitions )
본 발명의 일 실시예에 따르면, 파티션은 파티션 식별자(ID) 및 구성과 관련될 수 있는 도메인의 런타임과 관리 서브분할(subdivision) 또는 슬라이스로서, 어플리케이션을 포함할 수 있고 그리고/또는 리소스 그룹과 리소스 그룹 템플릿을 사용하여 도메인 전체 리소스를 참조할 수 있다.
일반적으로 파티션은 그 자체의 어플리케이션을 포함할 수 있고 리소스 그룹 템플릿을 통해 도메인 전체의 어플리케이션을 참조할 수 있으며 그 자체 구성을 가질 수 있다. 파티션 가능한 엔티티는 리소스, 예를 들어 JMS, JDBC, JavaMail, WLDF 리소스, 또는 다른 구성 요소, 예를 들면 JNDI 네임스페이스(namespace), 네트워크 트래픽, 작업 관리자, 보안 정책 및 영역 등을 포함할 수 있다. 멀티테넌트 환경의 맥락에서 시스템은 테넌트와 관련된 파티션의 관리 및 런타임 측면의 액세스를 테넌트에 제공하도록 구성될 수 있다.
본 발명의 일 실시예에 따르면, 파티션 내의 각 리소스 그룹은 선택적으로 리소스 그룹 템플릿을 참조할 수 있다. 파티션은 다수의 리소스 그룹을 가질 수 있으며 그들 각각은 리소스 그룹 템플릿을 참조할 수 있다. 각 파티션은 파티션의 리소스 그룹이 참조하는 리소스 그룹 템플리트에 지정되어 있지 않는 구성 데이터에 대한 속성을 정의할 수 있다. 이것에 의해 파티션이 리소스 그룹 템플릿으로 정의된 배치 가능한 리소스를 해당 파티션에서 사용되어야 할 특정 값에 바인딩하는 것으로 기능하도록 할 수 있다. 경우에 따라서 파티션은 리소스 그룹 템플릿에 의해 지정되는 구성 정보를 무효(override)로 할 수 있다.
본 발명의 일 실시예에 따르면, 파티션 구성은 예를 들어 config.xml 구성 파일에 의해 정의된 바와같이, 복수의 구성 엘리먼트, 예를 들어 파티션(그 파티션을 정의하는 속성 및 자식 엘리먼트를 포함하는); 리소스-그룹(파티션에 배치된 어플리케이션과 리소스를 포함하는); 리소스-그룹-템플릿(그 템플릿에 의해 정의된 어플리케이션과 리소스를 포함하는); jdbc-시스템-리소스-무효(jdbc-system-resource-override)(데이터베이스-특정 서비스명, 사용자명 및 패스워드를 포함하는); 및 파티션-특성(partition-properties)(리소스 그룹 템플릿에서 매크로 치환을 위해 사용 가능한 특성 키값 포함하는)을 포함할 수 있다.
시동 후, 시스템은 구성 파일이 제공하는 정보를 사용하여 리소스 그룹 템플릿으로부터 각 리소스에 대한 파티션-특정 구성 엘리먼트를 생성할 수 있다.
리소스 그룹( Resouece Groups )
본 발명의 일 실시예에 따르면, 리소스 그룹은 이름이 부여되어 전체적으로 검증된(fully-qualified) 배치 가능한 리소스의 집합(collection)으로서, 도메인 또는 파티션 레벨로 정의될 수 있고 리소스 그룹 템플릿을 참조할 수 있다. 리소스 그룹에서 리소스는 관리자가 해당 리소스를 시작하거나 해당 리소스에 접속하는 데 필요한 모든 정보, 예를 들어, 데이터 소스에 접속하기 위한 인증서(credential) 또는 어플리케이션에 대한 타겟 정보를 제공하고 있다는 점에서 전체적으로 검증된 것으로 고려된다.
시스템 관리자는 도메인 레벨 또는 파티션 레벨에서 리소스 그룹을 선언 (declare)할 수 있다. 도메인 레벨에서 리소스 그룹은 관련 리소스를 그룹화하는 편리한 방법을 제공한다. 시스템은 리소스들이 시스템 기동 중에 시작되거나 시스템 셧다운 동안 정지될 수 있도록 그룹화되지 않은 리소스와 동일하게 도메인-레벨 리소스 그룹에서 선언된 리소스를 관리할 수 있다. 관리자는 또한 그룹 내에 있는 리소스를 개별적으로 정지, 시작 또는 삭제할 수 있으며, 그룹 상에서 동작되어 암묵적으로 그룹 내의 모든 리소스에 작용할 수 있다. 예를 들어, 리소스 그룹을 정지시켜 아직 정지되지 않은 해당 그룹 내의 모든 리소스를 정지시키고, 리소스 그룹을 시작하여 아직 시작되지 않은 그룹 내의 임의의 리소스를 시작시키며, 리소스 그룹을 삭제하여 해당 그룹에 포함된 모든 리소스를 삭제한다.
파티션 레벨에서, 시스템 또는 파티션 관리자는 임의의 보안 제한에 따라 파티션에서 0개 또는 그 이상의 리소스 그룹을 구성할 수 있다. 예를 들어, SaaS 사용 사례에서, 다양한 파티션-레벨 리소스 그룹은 도메인-레벨 리소스 그룹 템플릿을 참조할 수 있다. 반면 PaaS 사용 사례에서는, 리소스 그룹 템플리트를 참조하지 않고 대신 그 파티션내에서만 사용 가능한 어플리케이션 및 관련 리소스를 나타내는 파티션-레벨 리소스 그룹이 생성될 수 있다.
본 발명의 일 실시예에 따르면, 리소스 그룹화는 어플리케이션과 해당 어플리케이션이 도메인내에서 별개의 관리 유닛으로서 사용하는 리소스를 함께 그룹화하기 위해 사용될 수 있다. 예를 들어, 이하에서 설명되는 의료 기록(Medical Records: MedRec) 어플리케이션에서, 리소스 그룹화는 MedRec어플리케이션 및 그의 리소스를 정의한다. 다수의 파티션은 각각 파티션-특정 구성 정보를 이용하여 동일한 MedRec 리소스 그룹을 실행할 수 있고, 이에 따라 각 MedRec 인스턴스의 일부인 어플리케이션이 각각의 파티션에 특정될 수 있다.
리소스 그룹 템플릿( Resource Group Templates )
본 발명의 일 실시예에 따르면, 리소스 그룹 템플릿은 리소스 그룹으로부터 참조될 수 있고 도메인 레벨에서 정의되는 배치 가능한 리소스의 집합이며, 그의 리소스를 활성화 시키는데 필요한 정보들 중 일부는 파티션 레벨 구성의 사양 (specification)을 지원하도록, 템플릿 자체의 일부로 저장되지 않을 수 있다. 도메인은 임의 수의 리소스 그룹 템플릿을 포함할 수 있고, 이러한 리소스 그룹 템플릿 각각은 예를 들어, 하나 이상의 관련 자바 어플리케이션과 그 어플리케이션이 의존하는 리소스를 포함할 수 있다. 이러한 리소스에 대한 정보 중 일부는 모든 파티션에 걸쳐 동일할 수 있고, 반면에 다른 정보는 파티션마다 변경될 수 있다. 모든 구성이 도메인 레벨로 특정될 필요는 없으며, 대신 파티션 레벨 구성은 매크로 또는 특성 이름/값 쌍의 사용을 통해 리소스 그룹 템플릿내에서 특정될 수 있다.
본 발명의 일 실시예에 따르면, 특정 리소스 그룹 템플릿은 하나 이상의 리소스 그룹에 의해 참조될 수 있다. 일반적으로, 임의의 주어진 파티션 내에서, 리소스 그룹 템플릿은 한 번에 하나의 리소스 그룹에 의해서만 참조될 수 있는데, 즉, 동일한 파티션 내의 다수의 리소스 그룹에 의해 동시에 참조될 수 없다. 하지만, 다른 파티션에 있는 다른 리소스 그룹에 의해서는 동시에 참조될 수 있다. 리소스 그룹을 포함하는 객체, 예를 들어 도메인 또는 파티션은 특성 이름/값 할당을 이용하여 리소스 자원 템플릿에서 임의의 토큰값을 설정할 수 있다. 시스템이 참조하는 리소스 그룹을 이용하여 리소스 그룹 템플릿을 활성화시키면, 시스템은 이들의 토큰을 리소스 그룹이 포함되는 객체에서 설정된 값으로 대체할 수 있다. 경우에 따라서 시스템은 또한 정적으로 구성된 리소스 그룹 템플릿 및 파티션을 이용하여 파티션/템플릿의 조합마다 런타임 구성을 생성할 수 있다.
예를 들어 SaaS 사용 사례에서, 시스템은 그들을 사용할 각 파티션에 대한 1회의 활성화를 포함하여, 동일한 어플리케이션 및 리소스를 복수회 활성화할 수 있다. 관리자가 리소스 그룹 템플릿을 정의하는 경우, 그들은 다른 곳에서 제공될 정보를 표현하기 위해 토큰을 이용할 수 있다. 예를 들어, CRM-관련 데이터 리소스에 접속할 때 사용되는 사용자 이름은 리소스 그룹 템플릿에서 /${CRMDataUsername}으로 표시될 수 있다.
테넌트 (tenants)
본 발명의 일 실시예에 따르면, 멀티테넌트(MT) 어플리케이션 서버 환경과 같은 멀티테넌트 환경에서, 테넌트는 하나 이상의 파티션 및/또는 하나 이상의 테넌트 인식 어플리케이션(tenant-aware application)에 의해 표현될 수 있는 엔티티이거나 또는 하나 이상의 파티션 및/또는 하나 이상의 테넌트 인식 어플리케이션에 관련될 수 있는 엔티티이다.
예를 들어, 테넌트는 개별 사용자 조직, 예를 들어, 상이한 외부 회사, 또는 특정 기업체 내의 상이한 부서(예건대, HR 및 재무 부서들)를 나타낼 수 있으며, 이들 각각은 상이한 파티션과 관련될 수 있다. 테넌트의 범용 고유 식별자(테넌트 ID)는 특정 시점에 특정 사용자를 특정 테넌트와 관련시킨다. 시스템은 예를 들어 사용자 신원 저장소(user identity store)를 참조하여 사용자 신원으로부터 특정 사용자가 어느 테넌트에 속하는지 도출할 수 있다. 사용자 신원은 시스템이 사용자가 수행할 권한을 받은 그러한 액션들을 실시(enforce)할 수 있도록 할 수 있는데, 여기에는 사용자가 어느 테넌트에 속할 수 있는지를 포함하나, 이것만으로 한정되지는 않는다.
본 발명의 일 실시예에 따르면, 시스템은 서로 다른 테넌트의 관리 및 런타임을 서로 분리시킬 수 있다. 예를 들어, 테넌트는 자신의 어플리케이션들의 일부 거동(behavior) 및 이들이 액세스하게 되는 리소스들을 구성할 수 있다. 시스템은 특정 테넌트가 또 하나의 다른 테넌트에 속하는 아티팩트(artifact)를 관리하지 못하도록 확실히 보장할 수 있고, 런타임 시에 특정 테넌트를 대신하여 작업을 행하는 어플리케이션이 다른 테넌트와 관련된 리소스를 참조하지 않고 오로지 해당 테넌트와 관련된 리소스들만 참조하도록 할 수 있다.
본 발명의 일 실시예에 따르면 테넌트-비인식 어플리케이션은 어플리케이션이 응답하고 있는 요구를 어떤 사용자가 제시했는지에 관계없이, 어플리케이션이 이용하는 어떤 리소스에도 액세스 가능해지도록 명시적으로 테넌트를 처리하는 로직(logic)을 포함하지 않는 어플리케이션이다. 대조적으로, 테넌트-인식 어플리케이션은 테넌트를 명시적으로 처리하는 로직을 포함한다. 예를 들어, 사용자의 신원에 근거하여 어플리케이션은 사용자가 속하는 테넌트를 도출할 수 있고 그 정보를 사용하여 테넌트-특정 리소스에 액세스할 수 있다.
본 발명의 일 실시예에 따르면 시스템은 테넌트 인식이 되도록 명시적으로 기록된 어플리케이션을 사용자가 배치하는 것을 가능하게 하며 이것에 의해 어플리케이션 개발자는 현재의 테넌트의 테넌트 ID를 취득할 수 있다. 이어서, 테넌트 인식 어플리케이션은 테넌트 ID를 사용하여 어플리케이션의 단일 인스턴스를 사용하고 있는 복수의 테넌트를 처리(handling)할 수 있다.
예를 들어, 단일 진료실 또는 병원을 지원하는 MedRec 어플리케이션은 두 개의 다른 파티션 또는 테넌트, 예를 들어 베이랜드 응급 진료(Bayland Urgent Care) 테넌트와 밸리 헬스(Valley Health) 테넌트를 노출시킬 수 있고, 그 각각은 기반이 되는 어플리케이션 코드를 변경하지 않고 개별 테넌트-특정 리소스(예컨대, 개별 PDB들)에 액세스할 수 있다.
예시적인 도메인 구성 및 멀티테넌트 환경(Exemplary Domain Configuration and Multi-Tenant Environment)
본 발명의 일실시예에 따르면, 어플리케이션은 도메인 레벨로 리소스 그룹 템플릿에 배치되거나, 또는 파티션에 스코프되거나 또는 도메인에 스코프되는 리소스 그룹에 배치될 수 있다. 어플리케이션 구성은 어플리케이션별로 또는 파티션별로 특정된 배치 계획을 이용하여 무효화될 수 있다.
도 4는 일 실시예에 따른 예시적인 멀티테넌트 환경에서 사용되는 도메인 구성을 도시한다.
본 발명의 일 실시예에 따르면, 시스템이 파티션을 시작할 때, 시스템은 제공된 구성에 따라 각각의 데이터베이스 인스턴스에 대해서 각 파티션마다 하나씩 가상 타겟(예컨대, 가상 호스트)과 연결 풀(connection pool)을 생성한다.
전형적으로 각각의 리소스 그룹 템플릿은 하나 이상의 관련 어플리케이션 및 이러한 어플리케이션이 의존하는 리소스를 포함할 수 있다. 각각의 파티션은 자신이 참조하는 리소스 그룹 템플릿에서 특정되지 않은 구성 데이터를 제공할 수 있는데, 이러한 제공은 파티션과 관련된 특정 값에 리소스 그룹 템플릿의 배치 가능한 리소스를 바인딩함으로써 이루어질 수 있으며, 경우에 따라서 리소스 그룹 템플릿에 의해 특정된 몇 개의 구성 정보를 무효로 하는 것을 포함할 수 있다. 이것에 의해 시스템은 각 파티션이 정의한 특성값을 사용하여 각 파티션마다 리소스 그룹 템플릿에 의해 다르게 표현되는 어플리케이션을 활성화시킬 수 있다.
일부 인스턴스에서, 파티션은 리소스 그룹 템플릿을 참조하지 않는 리소스 그룹을 포함하거나 또는 자신의 파티션 스코프된 배치 가능한 리소스를 직접적으로 정의하는 리소스 그룹을 포함할 수 있다. 파티션 내에 정의된 어플리케이션 및 데이터 소스는 대체로 해당 파티션에서만 사용할 수 있다. 리스소들은 <partitionName>/<resource JNDI name> 또는 domain:<resource JNDI name>을 사용하여 여러 파티션에서 액세스될 수 있도록 배치될 수 있다.
예를 들어, MedRec 어플리케이션은 복수의 자바 어플리케이션, 데이터 소스, JMS 서버 및 메일 세션을 포함할 수 있다. 다수의 테넌트에 대해 MedRec 어플리케이션을 실행하기 위해, 시스템 관리자는 단일 MedRec 리소스 그룹 템플릿을 정의할 수 있고, 템플릿에서 이러한 배치 가능한 리소스들을 선언할 수 있다.
도메인-레벨의 배치 가능한 리소스와는 대조적으로, 리소스 그룹 템플릿에서 선언된 배치 가능한 리소스는 템플릿에서 완전히 구성되지 않을 수 있거나, 또는 일부 구성 정보가 없기 때문에 그대로(as-is) 활성화될 수 없다.
예를 들어, MedRec 리소스 그룹 템플릿은 어플리케이션에 의해 사용되는 데이터 소스를 선언할 수 있지만, 데이터베이스에 접속하기 위한 URL을 지정하지 않을 수 있다. 상이한 테넌트에 관련 파티션, 예를 들어 파티션 BUC-A 290(Bayland Urgent Care: BUC) 및 파티션 VH-A 292(Valley Health: VH)은, MedRec 리소스 그룹 템플릿을 참조하는(296, 297) MedRec 리소스 그룹(293, 294)를 각각 포함으로써 하나 이상의 리소스 그룹 템플릿을 참조할 수 있다. 그런 다음 이러한 참조는 각각의 테넌트에 대한 가상 타겟/가상 호스트를 생성(302, 306)하는데 사용될 수 있는데, 이러한 가상 타겟/가상 호스트는 베이랜드 응급 진료 테넌트에 의해 사용되는 BUC-A 파티션과 관련된 가상 호스트 baylandurgentcare.com(304)와 밸리 헬스 테넌트에 의해 사용되는 VH-A 파티션과 관련된 가상 호스트 valleyhealth.com(308)을 포함할 수 있다.
도 5는 본 발명의 일 실시예에 따른 예시적인 멀티-테넌트 환경을 더 도시한다. 도 5에 도시된 바와 같이, 그리고 본 발명의 일 실시예에 따른, 두 개의 파티션이 MedRec 리소스 그룹 템플릿을 참조하는 전술한 예로부터 예시를 계속하면, 서블릿 엔진(servlet engine)(310)은 복수의 테넌트 환경, 본 예에서는 베이랜드 응급 진료 의사 테넌트 환경(320) 및 밸리 헬스 의사 테넌트 환경(330)을 지원하기 위해 이용될 수 있다.
본 발명의 일 실시예에 따르면, 각각의 파티션(321, 331)은 해당하는 테넌트 환경으로 유입하는 트래픽을 받아들이는 상이한 가상 타겟을 정의할 수 있고, 아울러 파티션 및 그의 리소스(324, 334)에 접속하기 위한 상이한 URL(322, 332)을 정의할 수 있는데, 본 예에서는 베이랜드 응급 진료 데이터베이스 또는 밸리 헬스 데이터베이스를 각각 포함할 수 있다. 동일한 어플리케이션 코드가 양쪽 데이터베이스 모두에 대해 실행될 수 있으므로 데이터베이스 인스턴스는 호환 가능한 스키마를 사용할 수 있다. 시스템이 파티션을 개시할 때, 시스템은 각각의 데이터베이스 인스턴스에 대한 가상 타겟과 연결 풀을 생성할 수 있다.
OS 프로그램의 테넌트 스코프된 실행( Tenant Scoped Execution of OS Programs)
본 발명의 일 실시예에 따르면, 본 발명에 기술된 방법 및 시스템은 OS(즉, 테넌트-미인식) 프로그램들, 어플리케이션들 및 프로세스들(이후 "OS 프로그램", "OS 어플리케이션", " OS 프로세스 ","비 테넌트 인식 프로그램 ","비 테넌트 인식 어플리케이션 " 및 "비 테넌트 인식 프로세스"로 다양하게 참조됨)를 지원하는 테넌트 스코프된(scoped) 실행을 지원할 수 있다.
전형적으로, 어플리케이션이 MT 환경 내에서 실행될 때, 어플리케이션은 테넌트로 스코프되는데(scoped), 이것은 테넌트 인식 프로그램에 의해 액세스된 라이브러리 및 리소스가 예를 들어, MT 환경 내의 다른 테넌트와 분리(isolate)된다는 것을 의미한다.
그러나, MT 환경에서 동작하는 테넌트 인식 프로그램이 네이티브 OS상에서 동작하는 테넌트-미인식 어플리케이션(예컨대, C, C ++, Perl 등)을 호출할 때, OS상에서 작동하는 이들 프로그램 사이에 거의 또는 전혀 분리가 없다는 점에서 문제가 발생할 수 있다. 즉, 범용 운영 체제는 테넌시에 대한 개념이 없어 MT 어플리케이션(즉, JEE 어플리케이션)과 연관된 테넌시(즉, MT 어플리케이션의 발신호와 관련된 테넌시 정보)를 알지 못한다. 이것은 공통 환경내에서 OS 프로그램을 실행할 수 있고 공유된 OS 리소스(예컨대, 파일, 프로세스, 데이터베이스)를 사용할 수 있는데, 그러면 별도의 테넌트 어플리케이션이 외부 OS 어플리케이션(예컨대, 테넌트 미인식 어플리케이션)을 호출할 때 런타임 구분(separation)/분리(isolation)뿐만 아니라 테넌트 컨텍스트가 손실될 수 있다.
도 6은 본 발명의 일 실시예에 따른 테넌트-미인식 프로세스의 테넌트 스코프된 실행을 위한 시스템을 도시한다. 도 6에 도시된 바와 같이, 멀티테넌트 어플리케이션 서버 환경(600)(예컨대, WebLogic 멀티테넌트)은 테넌트 1 파티션(601) 및 테넌트 2 파티션(605)과 같은 다수의 테넌트 파티션을 포함할 수 있다. 테넌트 1 파티션과 테넌트 2 파티션 모두는 각각 JEE 어플리케이션(602, 606)과 같은 어플리케이션과 연관될 수 있으며, 이들 어플리케이션은 테넌트의 각각의 데이터베이스(604, 608)의 액세스를 허용하는 데이터 소스(603, 607)와 각각 연관된다.
본 발명의 일 실시예에 따르면, 테넌트 2와 연관된 JEE 어플리케이션과 같은 어플리케이션은, 예를 들어 네이티브 OS(610) 내의 멀티테넌트 어플리케이션 서버 외부에 위치하는 OS 프로그램(호출 프로세스)을 호출할 수 있다. 이러한 상황은 예를 들어, MT 어플리케이션 서버(예컨대, Perl 스크립트, C 프로그램 ..등)에 국한되지 않는 MT 어플리케이션의 컴포넌트가 있을 때 발생할 수 있다. 이러한 어플리케이션(즉, MT 어플리케이션 서버 외부에서 실행되는 외부 OS 컴포넌트에 의존하는 MT 어플리케이션들)은 복합 어플리케이션으로 지칭될 수 있다. 테넌트 2와 관련된 JEE 어플리케이션은 MT 환경에서 실행되며 런타임에 관련된 테넌트 컨텍스트를 갖는다.
본 발명의 일 실시예에 따르면, MT 어플리케이션(예컨대, JEE 어플리케이션)이 OS 프로그램/어플리케이션(즉, 프로세스 620)을 호출할 때, MT 어플리케이션은 다수의 변수(625)(즉, 환경 변수)를 설정하여 JEE 어플리케이션에 사용할 수 있는 테넌트 컨텍스트를 확장/전파할 수 있다. 이러한 변수는 테넌트 ID, 테넌트 이름, 테넌트 파일시스템(TFS) 루트; 입력 및 출력 서브디렉토리가 있는 TFS하의 프로세스 작업 디렉토리; 테넌트 DB 접속 문자열 및 테넌트 LDAP(Lightweight Directory Access Protocol) 디렉토리 URL을 포함할 수 있다.
본 발명의 일 실시예에 따르면, MT 어플리케이션 서버는 MT 어플리케이션 서버 환경(600)에 탑재된 각 테넌트를 위한 가상 테넌트 파일시스템(630)을 관리할 수 있다. 이 가상 테넌트 파일시스템은 테넌트가 탑재될 때 어플리케이션 서버 관리의 일부로서 생성/설정될 수 있다. 가상 테넌트 파일시스템들은 OS(610)의 일부로서, MT 어플리케이션 서버 환경에서 현재 활성 상태인 각 테넌트에 대해 하나의 가상 테넌트 파일시스템을 갖는다.
본 발명의 일 실시예에 따르면, MT 어플리케이션(예컨대, JEE 어플리케이션)이 OS 프로세스(즉, 테넌트 미인식 프로세스)를 호출할 때, MT 어플리케이션은 테넌트의 가상 파일시스템 하의 임시 프로세스 작업 디렉토리를 추가로 생성할 수 있다. 하나 이상의 OS 프로세스가 MT 어플리케이션에 의해 호출되는 경우, MT 어플리케이션은 호출된 각 OS 프로세스를 위한 하나의 임시 작업 디렉토리를 생성할 수 있다. 가상 파일시스템 하의 임시 작업 디렉토리를 생성할 때 MT 어플리케이션은 입력, 출력, 오류 및 데이터베이스 디렉토리를 위한 임시 작업 디렉토리 하의 서브디렉토리들을 추가로 생성할 수 있다(호출된 각 OS 프로세스에 대해). 이러한 서브디렉토리는 호출된 OS 프로세스의 재지정된(redirected) stdin(입력 스트림), stdout(출력 스트림) 및 stderr(오류 스트림)을 받아들일(accept) 수 있다. 각 입력 서브디렉토리는 프로세스 입력 파일로 설정될 수 있다. 각 출력 서브디렉토리는 프로세스 출력 파일을 캡처할 수 있다. 각 오류 서브디렉토리는 프로세스 오류(예컨대, stderr) 메시지를 캡처할 수 있다. 가상 테넌트-특정 파일시스템은 OS 스토리지(640)와 같은 네이티브 스토리지와 연관될 수 있다.
본 발명의 일 실시예에 따르면, 프로세스 빌더(builder)는 클라이언트가 OS 프로그램/어플리케이션에 대한 명령 라인을 특정하여 실행하고, 프로세스 환경에서 설정하기 위한 환경 변수를 구성하고, 프로세스 작업 디렉토리를 구성하고, 프로세스 입력, 출력 및 오류 스트림을 파일시스템의 파일로 재지정할 수 있는 API(예컨대, Java ProcessBuilder API)를 포함할 수 있다. 프로세스 빌더는 프로세스 환경, 프로세스 작업 디렉토리 및 프로세스 입력 스트림/출력 스트림/오류 스트림 재지정과 같은 프로세스(즉, OS 프로세스)가 시작되기 전에 특정 프로세스 특성을 설정하거나 구성하도록 허용할 수 있다.
본 발명의 일 실시예에 따르면, MT 어플리케이션이 OS 프로세스를 호출할 때, 프로세스 빌더(예컨대, 프로세스 빌더 인스턴스)를 생성하고 이용할 수 있다. MT 어플리케이션의 테넌시 컨텍스트는 환경 변수 설정 및 프로세스 작업 디렉토리 생성 및 구성을 포함하여 프로세스 빌더 API 호출의 일부로 전파될 수 있다. 프로세스 작업 디렉토리와 함께 환경 변수를 사용함으로써 프로세스 빌더는 테넌시 컨텍스트내에서 테넌트 미인식 프로세스(예컨대, OS프로세스)의 실행이 국한되는/한정되는(scoped/confined) 리소스(환경 변수, 프로세스 작업 디렉토리, 재지정된 입력/출력 파일, 데이터베이스 접속 설명자(descriptor), LDAP 디렉토리, 월렛)를 할당하도록 구성될 수 있다. 이러한 방식으로, 테넌트 미인식 프로세스(예컨대, OS 프로세스)는 호출하는 테넌트와 테넌트 지정된 가상 파일시스템하에 특정되고, MT 어플리케이션 서버 환경(600)의 다른 테넌트가 생성하거나 소유하는 파일 및 자원과 분리된 작업 디렉토리를 가져온다.
본 발명의 일 실시예에 따르면, 테넌트 미인식 프로세스는 재지정된 프로세스 I/O 스트림에 대해 OS 파일시스템 하의 테넌트-특정 폴더에 할당되며, 테넌트-특정 액세스 인증서를 사용하여 테넌트와 관련된 데이터베이스에 접속하고, 테넌트 LDAP 디렉토리를 사용한다. 테넌트-특정 데이터베이스 접속 문자열/설명자는 프로그램이 테넌트 데이터베이스와 투명하게 작업할 수 있도록 한다. 테넌트-특정 인증서는 테넌트의 가상 파일시스템에 있는 프로세스 작업 디렉토리하의 데이터베이스 서브디렉토리에 설정된 월렛(wallet)에서 구성될 수 있다.
본 발명의 일 실시예에 따르면, 가상 테넌트 파일시스템이 호출 파티션(호출 "테넌트"로 종종 지칭되는 테넌트와 관련된)으로부터의 호출 MT 어플리케이션을 위해 생성된 후, 테넌트 미인식 프로세스와 관련 스트림(예컨대, 입력 스트림, 출력 스트림, 오류 스트림)은 테넌트의 가상 파일시스템에 있는 프로세스 작업 디렉토리하의 각각의 입력, 출력 및 오류 서브디렉토리로 재지정될 수 있다.
이러한 방식으로, OS 프로그램들을 호출하는 별도의 테넌트와 관련된 테넌시 컨텍스트, 환경 및 데이터는 개별적으로 유지되고 서로 분리될 수 있으며, 이에 따라 MT 컨테이너의 내부로부터(예컨대, MT 컨테이너 내에서 파티션 대신 실행하는 JEE 프로그램으로부터)의 호출에 기초하여 실행되는 OS 어플리케이션(테넌트 미인식)의 스코프된 처리를 가능하게 한다.
본 발명의 일 실시예에 따르면, 일단 테넌트 미인식 프로세스가 실행을 완료하면, MT 어플리케이션 서버 환경에서 실행중인 MT 어플리케이션은 프로세스 출력을 검색하고 프로세스 작업 디렉토리를 정리(clean up)할 수 있다.
본 발명의 일 실시예에 따르면, MT 어플리케이션은 프로그램이 성공적으로 실행되었는지 확인하기 위해 프로세스 exitValue 상태 코드(예컨대, 자바 프로세스 객체 exitValue() 방법)를 얻을 수 있다. 출력 및 오류 서브 폴더에서 재지정된 stdout 및 stderr 파일을 검색하여 또한 프로세스 실행이 성공했는지 조사할 수 있다. 테넌트 데이터베이스에서 업데이트된 결과는 테넌트 미인식 프로세스 실행이 완료되면 파티션에서 실행중인 MT 어플리케이션에 의해 데이터베이스로부터 직접 액세스할 수 있다.
본 발명의 일 실시예에 따르면, MT 어플리케이션은 또한 월렛과 같은 출력 파일과 db 파일을 정리하는 프로세스 작업 디렉토리 및 그 서브 폴더를 삭제할 수 있다.
본 발명의 일 실시예에 따르면, OS 프로그램을 호출하는 MT 어플리케이션에서 구성된 환경 변수는 테넌트 ID, 테넌트 이름; 테넌트 파일시스템(TFS) 루트; TFS에서 입력, 출력 및 오류 서브디렉토리를 가지는 프로세스 작업 디렉토리; 테넌트 DB 접속 문자열 및 테넌트 LDAP(Lightweight Directory Access Protocol) 디렉토리 URL을 포함한다.
본 발명의 일 실시예에 따르면, 프로세스 빌더 구성을 사용하여, 테넌트 미인식 OS 프로그램은 테넌트 컨텍스트 내에서 그의 실행이 스코프된/컨파인된 리소스(환경 변수, 프로세스 작업 디렉토리, 재지정된 입/출력 파일, DB 접속 설명자, LDAP 디렉토리 및 월렛)를 할당받을 수 있다.
OS 프로그램의 멀티테넌트 실행-컨테이너화된 어플리케이션 { Multitenant Execution of OS Programs-Containerized Applications}
본 발명의 일 실시예에 따르면, 본 명세서에 설명된 방법 및 시스템은 컨테이너화된 어플리케이션을 사용하여 테넌트 미인식 프로세스(즉, OS 프로세스)의 멀티테넌트 실행을 지원함으로써 런타임시에 테넌트 분리를 제공할 수 있다.
본 발명의 일 실시예에 따르면, 본 개시는 컨테이너화된 어플리케이션을 이용하여 테넌트 미인식 프로세스의 런타임 동안 테넌트 분리를 제공할 수 있다.
본 발명의 일 실시예에 따르면, 컨테이너화된 어플리케이션 또는 프로세스는 컨테이너로서 패키징되고, OS 기반 이미지, 어플리케이션 실행 파일 및 라이브러리와 같이, 어플리케이션 실행에 필요한 정보를 포함하는 어플리케이션이다. 컨테이너화된 어플리케이션은 리눅스 커널(750)과 같은 동일 리눅스 커널을 이용하는 리눅스 배포판(Linux distributions) 사이에서 공유될 수 있는 포터블 어플리케이션일 수 있다. 컨테이너화된 어플리케이션은 개발자가 포터블/컨테이너화된 어플리케이션을 생성하여 이미지를 공유하고 동일한 리눅스 커널을 사용하는 경우, 컨테이너화된 어플리케이션이 공유되는 시스템은 컨테이너화된 어플리케이션 이미지를 이미지 레지스트리 또는 저장소에서 다운로드 할 수 있고 컨테이너를 스핀 오프(spin off)하여 컨테이너화된 어플리케이션을 실행하기 위해 생성될 수 있다. 이 시점에서 어플리케이션은 다른 컨테이너 및 OS와 분리된 목적 호스트에서 사용될 수 있고 필요한 라이브러리(예컨대, 어플리케이션/프로세스의 개발자가 의도한 것과 동일한 버전의 라이브러리)로 계속 사용될 수 있다. 그런 다음 동일한 버전의 라이브러리를 사용하는 다른 컨테이너화된 어플리케이션 인스턴스가 있을 수 있지만 별도로 실행된다. Docker는 이러한 컨테이너 프레임 워크/인프라구조의 일 예이다.
도 7은 일 실시예에 따른, 테넌트-미인식 프로세스의 멀티테넌트 실행을 위한 시스템을 도시한다. 도 7은 소프트웨어 컨테이너를 지원하는 OS에서 실행되는 컨테이너화된 OS 어플리케이션을 사용하고 MT 어플리케이션으로부터 호출되는 OS 프로그램의 멀티테넌트 실행을 도시한다.
도 7에 도시된 바와 같이, MT 어플리케이션 서버 환경(600)(예컨대, WebLogic 멀티테넌트)은 테넌트 1 파티션(601) 및 테넌트 2 파티션(605)과 같은 다수의 테넌트 파티션을 포함할 수 있다. 테넌트 1 파티션 및 테넌트 2 파티션 모두는 각 테넌트의 각각의 데이터베이스(604, 608)의 액세스를 허용하는 데이터 소스(603, 607)와 각각 관련된 JEE 어플리케이션(602, 606)과 같은 어플리케이션과 연관될 수 있다.
본 발명의 일 실시예에 따르면, MT 어플리케이션(예컨대, JEE 어플리케이션)이 테넌트 미인식 어플리케이션(예컨대, 컨테이너화된 어플리케이션)을 호출할 때, MT 어플리케이션은 다수의 변수(즉, 환경 변수)를 설정하여 JEE 어플리케이션에서 사용할 수 있는 테넌트 컨텍스트를 확장/전파할 수 있다. 이들 변수는 테넌트 ID, 테넌트 이름, 테넌트 파일시스템(TFS) 루트; TFS에서 입력, 출력 및 오류 서브디렉토리가 있는 프로세스 작업 디렉토리; 테넌트 DB 접속 문자열 및 테넌트 LDAP 디렉토리 URL을 포함할 수 있다. 본 발명의 일 실시예에 따르면, MT 어플리케이션 서버는 MT 어플리케이션 서버 환경(600)에 탑재된 각 테넌트를 위한 가상 테넌트 파일시스템(735)을 관리할 수 있다. 이 가상 테넌트 파일시스템은 테넌트가 탑재될 때 어플리케이션 서버 관리의 일부로서 생성/설정될 수 있다. 가상 테넌트 파일시스템은 MT 어플리케이션 서버 환경에서 현재 활성 상태인 각 테넌트를 위한 하나의 가상 테넌트 파일시스템을 가지는 OS(610)의 일부이다.
본 발명의 일 실시예에 따르면, MT 어플리케이션(예컨대, JEE 어플리케이션)이 테넌트 미인식 어플리케이션을 호출할 때, MT 어플리케이션은 테넌트의 가상 파일시스템하에 임시 프로세스 작업 디렉토리(여기서는 "프로세스 작업 디렉토리"라고도 칭함)를 추가로 생성할 수 있다. 만약, 하나 이상의 테넌트 미인식 어플리케이션이 MT 어플리케이션에 의해 호출되면, MT 어플리케이션은 호출된 각 테넌트 미인식 어플리케이션마다 하나의 프로세스 작업 디렉토리를 생성할 수 있다. 가상 파일시스템하에서 프로세스 작업 디렉토리를 생성할 때, MT 어플리케이션은 입력, 출력, 오류 및 데이터베이스 디렉토리에 대한 프로세스 작업 디렉토리하의 서브디렉토리들(로출된 테넌트 미인식 어플리케이션마다)을 추가로 생성할 수 있다. 이러한 서브디렉토리는 호출된 OS 프로세스의 재지정된 stdin(입력 스트림), stdout (출력 스트림) 및 stderr(오류 스트림)을 수신할 수 있다. 각 입력 서브디렉토리는 프로세스 입력 파일로 설정될 수 있다. 각 출력 서브디렉토리는 프로세스 출력 파일을 캡처할 수 있다. 각 오류 서브디렉토리는 프로세스 오류(예컨대, stderr) 메시지를 캡처할 수 있다. 가상 테넌트-특정 파일시스템은 OS 스토리지(736)와 같은 네이티브 스토리지와 연관될 수 있다.
본 발명의 일 실시예에 따르면, MT 어플리케이션에 의해 이용될 수 있는 프로세스 빌더는 API(예컨대, Java ProcessBuilder API)를 포함하여, 클라이언트가 테넌트 미인식 어플리케이션을 실행하기 위한 명령 라인을 라인을 지정하고, 프로세스 환경에서 설정하도록 환경 변수를 구성하고, 프로세스 작업 디렉토리를 구성하고, 프로세스 입력, 출력 및 오류 스트림을 파일시스템상의 파일로 재지정하도록 할 수 있다. 프로세스 빌더는 프로세스 환경, 프로세스 작업 디렉토리 및 프로세스 입력 스트림/출력 스트림/오류 스트림 재지정과 같은 프로세스(즉, 테넌트 미인식 어플리케이션)가 시작되기 전에 특정 프로세스 특성을 설정하거나 구성하도록 허용할 수 있다.
본 발명의 일 실시예에 따르면, MT 어플리케이션이 테넌트 미인식 어플리케이션을 호출할 때, 프로세스 빌더(예컨대, 프로세스 빌더 인스턴스)를 생성하고 이용할 수 있다. MT 어플리케이션의 테넌시 컨텍스트는 환경 변수 설정 및 임시 프로세스 작업 디렉토리 생성을 포함하여 프로세스 빌더 API 호출의 일부로서 전파될 수 있다. 임시 프로세스 작업 디렉토리와 함께 환경 변수를 이용함으로써 프로세스 빌더는 테넌트 미인식 어플리케이션이 테넌시 컨텍스트내에서 실행이 스코프/컨파인되는 리소스(환경 변수, 프로세스 작업 디렉토리, 재지정된 입력/출력p에러 스트림, 데이터베이스 접속 설명자, LDAP 디렉토리, 월렛)를 할당하도록 구성될 수 있다. 이러한 방식으로, 테넌트 미인식 어플리케이션은 호출하는 테넌트와 테넌트 지정된 가상 파일시스템 하에서 특정되고, MT 어플리케이션 서버 환경(600)의 다른 테넌트가 생성하거나 소유하는 파일과 분리된 작업 디렉토리를 가져온다.
본 발명의 일 실시예에 따르면, 테넌트 미인식 프로세스는 재지정된 프로세스 I/O 스트림에 대해 OS 파일시스템 하의 테넌트-특정 폴더에 할당되며, 테넌트-특정 액세스 인증서를 사용하여 테넌트와 관련된 데이터베이스에 접속하고, 테넌트-특정 LDAP 디렉토리를 사용한다. 테넌트-특정 데이터베이스 접속 문자열/설명자는 프로그램이 테넌트 데이터베이스와 투명하게 작업할 수 있도록 허용한다. 테넌트-특정 인증서는 테넌트의 가상 파일시스템에 있는 프로세스 작업 디렉토리하의 데이터베이스 서브디렉토리에 설정된 월렛(wallet)에서 구성될 수 있다.
본 발명의 일 실시예에 따르면, 가상 테넌트 파일시스템이 호출 파티션(호출 "테넌트"로 종종 지칭되는 테넌트와 관련된)의 호출 MT 어플리케이션을 위해 생성된 후, 테넌트 미인식 어플리케이션(예컨대, 컨테이너화된 어플리케이션)과 관련된 스트림(예컨대, 입력 스트림, 출력 스트림, 오류 스트림)은 테넌트의 가상 파일시스템에 있는 프로세스 작업 디렉토리 하의 각각의 입력, 출력 및 오류 서브디렉토리로 재지정될 수 있다.
본 발명의 일 실시예에 따르면, 테넌트 미인식 어플리케이션(테넌트 2의 파티션에서 호출하는 JEE어플리케이션과 같은 MT 어플리케이션에서 호출된)은 컨테이너화된 어플리케이션으로서 패키징될 수 있다. 하나의 예시적인 프로세스에서, MT 어플리케이션은 OS 프로그램을 호출할 수 있다. 이러한 경우 프로세스 빌더(예컨대, Java ProcessBuilder)는 컨테이너화된 어플리케이션을 호출할 수 있다. 컨테이너 프레임워크는 경량 컨테이너 가상화 기술을 제공한다. 그러한 컨테이너 프레임워크 중 하나가 Docker이다.
본 발명의 일 실시예에 따르면, Docker와 같은 컨테이너 런타임은 어플리케이션 및 모든 어플리케이션의 의존성을 단일 이미지로 패키징하기 위한 포맷을 정의한다. 이 이미지는 어플리케이션에 노출된 실행 환경이 동일하게 유지된다는 보장하에 실행될 수 있는 모든 Docker 지원 머신(Docker-enabled machine)으로 전송될 수 있다.
Docker와 같은 컨테이너 프레임 워크를 갖는 OS를 사용하는 경우, 시스템은 어플리케이션 바이너리 및 필요한 라이브러리 및 컴포넌트를 포함하는 계층화된 파일시스템과 함께 베이스 OS(예컨대, Ubuntu)를 포함하는 어플리케이션 컨테이너 이미지를 생성할 수 있다. 이 이미지는 컨테이너화된 어플리케이션이 개시(launch)될 때 호스트에 의존하지 않고 어플리케이션을 실행할 수 있도록 자체 포함되고 이동 가능(portable)할 수 있다.
본 발명의 일 실시예에 따르면, MT 어플리케이션(즉, JEE 어플리케이션 (606))은 컨테이너 프로세스(예컨대, Docker 또는 Rocket)를 개시함으로써 테넌트 미인식 어플리케이션을 호출할 수 있다. Docket Client와 같은 컨테이너 클라이언트(720)는 프로세스 빌더(예컨대, 테넌트 2의 파티션(605)에서 실행중인 JEE 어플리케이션(606))를 사용하여 MT 어플리케이션에 의해 호출되어, 요청자(즉, JEE 어플리케이션)의 테넌시 컨텍스트를 갖는 OS(테넌트 미인식) 어플리케이션을 개시한다. 컨테이너 클라이언트는 Docker 데몬과 같은 컨테이너 데몬(725)을 호출할 수 있다. 컨테이너 데몬은 JEE 어플리케이션으로부터 요청된 컨테이너화된 어플리케이션의 어플리케이션 이미지(740)를 다운로드하고 개시할 수 있다. 어플리케이션 이미지(740)는 어플리케이션 바이너리 및 필요한 라이브러리 및 컴포넌트를 포함하는 계층화된 파일시스템과 함께 베이스 OS(예컨대, Ubuntu)를 포함할 수 있다. 어플리케이션 이미지는 자체 포함되고 이동 가능하여 호스트에 종속되지 않고 어플리케이션을 실행할 수 있다. 또한, 컨테이너화된 어플리케이션은 분리된 인스턴스로서 실행될 수 있다. 컨테이너화된 어플리케이션은 동일한 OS에서 실행되지만 분리되어 실행되는데, 이는 둘 이상의 테넌트가 동일한 어플리케이션의 다른 인스턴스를 별도의 컨테이너로 분리하여 실행할 수 있음을 의미한다.
본 발명의 일 실시예에 따르면, 컨테이너가 생성되고(컨테이너 데몬에 의해), 컨테이너화된 어플리케이션(730)을 실행하기 위해 컨테이너에 어플리케이션 이미지가 로딩될 때 어플리케이션은 호스트에 의존하지 않고 실행될 수 있다.
본 발명의 일 실시예에 따르면, 컨테이너화된 어플리케이션(730)은 테넌트의 가상 테넌트 파일시스템(735)(테넌트 컨텍스트, 예를 들어, 차례로 OS 스토리지(736)와 통신할 수 있는 테넌트 2의 파티션을 기반으로 하는)과 통신(I/O)할 수 있다
본 발명의 일 실시예에 따르면, 테넌트, 예를 들어 테넌트 2를 대신하여 동작하는 컨테이너화된 어플리케이션은 필요한 인증서로 테넌트의 데이터베이스 (608)를 액세스할 수 있다.
본 발명의 일 실시예에 따르면, MT 어플리케이션은 프로그램이 성공적으로 실행되었는지를 확인하기 위해 프로세스 exitValue 상태 코드(예컨대, Java 프로세스 객체 exitValue() 방법으로부터)를 얻을 수 있다. MT 어플리케이션은 또한 출력 및 오류 서브 폴더하에서 재지정된 stdout 및 stderr 파일을 검색하여 프로세스 실행이 성공했는지 여부를 조사할 수 있다. 테넌트 데이터베이스에서 업데이트된 결과는 일단 테넌트 미인식의 컨테이너화된 어플리케이션의 실행이 완료되면, 파티션에서 실행중인 MT 어플리케이션에 의해 데이터베이스로부터 직접 액세스할 수 있다.
본 발명의 일 실시예에 따르면, MT 어플리케이션은 또한 월렛과 같은 출력 파일 및 db파일을 정리하는 프로세스 작업 디렉토리 및 그의 서브 폴더를 삭제할 수 있다.
도 8은 본 발명의 일 실시예에 따른, 테넌트-미인식 프로세스의 멀티테넌트 실행을 위한 시스템을 도시한다. 도 8은 컨테이너에서 실행되는 컨테이너화된 OS 어플리케이션을 사용하고 MT 어플리케이션으로부터 호출된 OS 프로그램의 멀티테넌트 실행을 나타낸다.
도 8에 도시된 바와 같이, MT 어플리케이션 서버 환경(600)(예컨대, WebLogic 멀티테넌트)은 테넌트 1 파티션(601) 및 테넌트 2 파티션(605)과 같은 다수의 테넌트 파티션을 포함할 수 있다. 테넌트 1 파티션 및 테넌트 2 파티션 모두는 각 테넌트의 각각의 데이터베이스(604, 608)의 액세스를 허용하는 데이터 소스(603, 607)와 각각 연관된 JEE 어플리케이션(602, 606)과 같은 어플리케이션에 연관될 수 있다.
본 발명의 일 실시예에 따르면, MT 어플리케이션(예컨대, JEE 어플리케이션)이 테넌트 미인식 어플리케이션(예컨대, 컨테이너화된 어플리케이션)을 호출할 때, MT 어플리케이션은 다수의 변수(즉, 환경 변수)를 설정하여 JEE 어플리케이션에서 사용할 수 있는 테넌트 컨텍스트를 확장/전파할 수 있다. 이러한 변수에는 테넌트 ID, 테넌트 이름, 테넌트 파일시스템(TFS) 루트; 입력 및 출력 서브디렉토리를 갖는 TFS하의 프로세스 작업 디렉토리; 테넌트 DB 접속 문자열 및 테넌트 LDAP 디렉토리 URL가 포함될 수 있다.
본 발명의 일 실시예에 따르면, MT 어플리케이션 서버는 MT 어플리케이션 서버 환경(600)에 탑재된 각 테넌트를 위한 가상 테넌트 파일시스템(735)을 관리할 수 있다. 이 가상 테넌트 파일시스템은 테넌트가 탑재될 때 어플리케이션 서버 관리의 일부로서 생성되거나 구성될 수 있다. 가상 테넌트 파일시스템은 MT 어플리케이션 서버 환경에서 현재 활성 상태인 각 테넌트에 대한 하나의 가상 테넌트 파일시스템을 가지는 OS(610)의 일부이다.
본 발명의 일 실시예에 따르면, MT 어플리케이션(예컨대, JEE 어플리케이션)이 테넌트 미인식 어플리케이션을 호출할 때, MT 어플리케이션은 테넌트의 가상 파일시스템하의 임시 프로세스 작업 디렉토리를 추가로 생성할 수 있다. 만약 하나 이상의 테넌트 미인식 프로세스가 MT 어플리케이션에 의해 호출되면, MT 어플리케이션은 호출된 각 테넌트 미인식 어플리케이션을 위한 하나의 프로세스 작업 디렉토리를 생성할 수 있다. 가상 파일시스템하의 프로세스 작업 디렉토리를 생성할 때, MT 어플리케이션은 입력, 출력, 오류 및 데이터베이스 디렉토리에 대한 프로세스 작업 디렉토리하의 서브디렉토리를(호출된 테넌트 미인식 어플리케이션마다) 추가로 생성할 수 있다. 이러한 서브디렉토리는 재지정된 입력 스트림(stdin), 출력 스트림(stdout) 및 오류 스트림(stderr)을 받아들일 수 있다. 각 입력 서브디렉토리는 프로세스 입력 파일로 설정될 수 있다. 각 출력 서브디렉토리는 프로세스 출력 파일을 캡처할 수 있다. 각 오류 서브디렉토리는 프로세스 오류(예컨대, stderr) 메시지를 캡처할 수 있다. 가상 테넌트-특정 파일시스템은 OS 스토리지 (736)와 같은 네이티브 스토리지와 연관될 수 있다.
본 발명의 일 실시예에 따르면, 프로세스 빌더는 클라이언트가 실행할 테넌트 미인식 어플리케이션에 대한 명령 라인을 지정하여, 프로세스 환경에서 설정하기 위한 환경 변수를 구성하고, 프로세스 작업 디렉토리를 구성하고, 프로세스 입력, 출력 및 오류 스트림을 파일시스템로 재지정하도록 하는 API(예컨대, 자바 Java ProcessBuilder API)를 포함할 수 있다. 프로세스 빌더는 프로세스 환경, 프로세스 작업 디렉토리 및 프로세스 입력 스트림/출력 스트림/오류 스트림 재지정과 같은 프로세스(즉, 테넌트 미인식 어플리케이션)가 시작되기 전에 특정 프로세스 특성을 설정하거나 구성하도록 허용할 수 있다.
본 발명의 일 실시예에 따르면, MT 어플리케이션이 테넌트 미인식 어플리케이션을 호출할 때, 프로세스 빌더(예컨대, 프로세스 빌더 인스턴스)를 생성하고 이용할 수 있다. MT 어플리케이션의 테넌시 컨텍스트는 환경 변수 설정을 포함하여 프로세스 빌더 API 호출의 일부로서 전파될 수 있다. MT 어플리케이션은 VTFS(가상 테넌트 파일시스템)하에서 프로세스 작업 디렉토리와 서브디렉토리(입력, 출력, 오류 및 데이터베이스)를 생성할 수 있다. 그런 다음 MT 어플리케이션은 프로세스 빌더 API를 사용하여 환경 변수, 임시 프로세스 작업 디렉토리 경로를 갖는 프로세스 작업 디렉토리 및 재지정된 스트림을 구성할 수 있다. 프로세스 작업 디렉토리와 함께 환경 변수를 이용함으로써 프로세스 빌더는 테넌트 미인식 어플리케이션이 테넌시 컨텍스트내에서 그의 실행이 스코프/컨파인되는 리소스(환경 변수, 프로세스 작업 디렉토리, 재지정된 입력/출력 파일, 데이터베이스 접속 설명자, LDAP 디렉토리, 월렛)을 할당하도록 구성될 수 있다. 이러한 방식으로, 테넌트 미인식 어플리케이션은 호출하는 테넌트와 테넌트 지정된 가상 파일시스템 하에서 특정되고, MT 어플리케이션 서버 환경(600)의 다른 테넌트가 생성하거나 소유하는 파일과 분리된 작업 디렉토리를 가져온다.
본 발명의 일 실시예에 따르면, 테넌트 미인식 어플리케이션은 I/O 동작을 위해 OS 파일시스템 하의 테넌트-특정 폴더를 사용하고, 테넌트-특정 액세스 인증서를 이용하여 테넌트와 연관된 데이터베이스에 접속하여, 테넌트 LDAP를 사용한다. 테넌트-특정의 데이터베이스 접속 문자열/설명자는 프로그램이 테넌트 데이터베이스와 투명하게 작업할 수 있도록 허용한다. 테넌트-특정 인증서는 테넌트의 가상 파일시스템에 있는 프로세스 작업 디렉토리 내의 데이터베이스 서브디렉토리하에 설정된 월렛에 구성될 수 있다.
본 발명의 일 실시예에 따르면, 가상 테넌트 파일시스템이 호출 파티션(호출 "테넌트"로 종종 지칭되는 테넌트와 관련된)의 호출 MT 어플리케이션을 위해 생성된 후, 테넌트 미인식 어플리케이션(예컨대, 컨테이너화된 어플리케이션)과 관련된 스트림(예컨대, 입력 스트림, 출력 스트림, 오류 스트림)은 테넌트의 가상 파일시스템에 있는 프로세스 작업 디렉토리하의 각각의 서브 폴더로 재지정될 수 있다.
본 발명의 일 실시예에 따르면, 테넌트 미인식 어플리케이션(테넌트 2의 파티션으로부터 호출하는 JEE 어플리케이션과 같은 MT 어플리케이션으로부터 호출되는)은 컨테이너화된 어플리케이션으로 패키징될 수 있다. 예시적인 프로세스에서, MT 어플리케이션은 OS 프로그램을 호출할 수 있다. 이 경우, 프로세스 빌더 API는 MT 어플리케이션에 의해 컨테이너 프로세스를 호출하도록 구성된다. 그러한 컨테이너 프레임 워크/인프라 중 하나가 Docker이다.
본 발명의 일 실시예에 따르면, Docker와 같은 컨테이너 프레임 워크/인프라 구조는 어플리케이션 및 모든 그의 의존성을 단일 이미지로 패킹하기 위한 포맷을 정의할 수 있다. 이 이미지는 어플리케이션에 노출된 실행 환경이 동일할 것이라는 보장하에 다운로드 및 실행될 수 있는 곳에서 Docker 허브/저장소로 업로드 될 수 있다.
본 발명의 일 실시예에 따르면, Docker와 같은 컨테이너 프레임 워크를 사용하는 경우, 시스템은 어플리케이션 이미지 라이브러리(810)로부터 이전에 생성된 컨테이너 이미지(815)를 다운로드 할 수 있다. 어플리케이션 이미지(815)는 어플리케이션 바이너리 및 필요한 라이브러리 및 컴포넌트를 포함하는 계층화된 파일시스템과 함께 베이스 OS(예컨대, Ubuntu)를 포함할 수 있다. 이 이미지는 컨테이너가 생성되고 어플리케이션이 시작될 때 호스트에 의존하지 않고 어플리케이션을 실행할 수 있도록 자체 포함되고 이동 가능할 수 있다.
본 발명의 일 실시예에 따르면, 어플리케이션 이미지 라이브러리(815)는 호스트 로컬 파일시스템상에 설정될 수 있고, MT 어플리케이션 서버 내에서 실행되는 어플리케이션으로부터 호출될 수 있는 원하는 프로그램 및 어플리케이션에 대한 다수의 컨테이너화된 이미지(예컨대, tar 파일)를 포함할 수 있다. 이러한 어플리케이션 이미지는 예를 들어, 일반적으로 요구되는 OS 프로그램 및 어플리케이션을 포함할 수 있다.
본 발명의 일 실시예에 따르면, MT 어플리케이션(즉, JEE 어플리케이션 (606))은 컨테이너 프로세스(예컨대, Docker 또는 Rocket)를 개시하여 테넌트 미인식 어플리케이션을 호출할 수 있다. Docket Client와 같은 컨테이너 클라이언트(720)는 프로세스 빌더(예컨대, 테넌트 2의 파티션(605)에서 실행중인 JEE 어플리케이션(606))를 사용하여 MT 어플리케이션에 의해 호출되어, 요청자(즉, JEE 어플리케이션)의 테넌시 컨텍스트를 갖는 OS(테넌트 미인식) 어플리케이션을 개시할 수 있다. 컨테이너 클라이언트는 Docker 데몬과 같은 컨테이너 데몬(725)을 호출할 수 있다. 이어서 컨테이너 데몬은 JEE 어플리케이션으로부터 요청된 컨테이너화된 어플리케이션의 어플리케이션 이미지(740)를 다운로드 및 개시할 수 있다. 어플리케이션 이미지(740)는 어플리케이션 바이너리 및 필요한 라이브러리 및 컴포넌트를 포함하는 계층화된 파일시스템과 함께 기본 OS(예컨대, Ubuntu)를 포함할 수 있다. 어플리케이션 이미지는 자체 포함되어 있고 이동 가능하므로 호스트에 의존하지 않고 어플리케이션을 실행할 수 있다. 게다가, 컨테이너화된 어플리케이션은 분리된 인스턴스로서 실행될 수 있다. 컨테이너화된 어플리케이션은 동일한 OS상에서 실행되지만 분리되어 실행되는데, 이는 둘 이상의 테넌트가 동일한 어플리케이션의 다른 인스턴스를 별도의 컨테이너로 분리하여 실행할 수 있음을 의미한다.
본 발명의 일 실시예에 따르면, 컨테이너 저장소(810)는 다수의 어플리케이션 이미지(815)로 채워질 수 있다. 이들 어플리케이션 이미지는 어플리케이션 이미지 라이브러리로 미리 채워질 수 있거나, 도 8의 컨테이너 프로세스가 어플리케이션 이미지를 생성한 후에 어플리케이션 이미지 라이브러리에 저장될 수도 있다.
본 발명의 일 실시예에 따르면, 컨테이너가 생성(컨테이너 데몬에 의해)될 때, 어플리케이션 이미지는 컨테이너화된 어플리케이션(730)을 실행하기 위해 컨테이너로 로딩되어 어플리케이션은 호스트에 의존하지 않고 실행될 수 있다.
본 발명의 일 실시예에 따르면, 컨테이너화된 어플리케이션(730)은 테넌트의 가상 테넌트 파일시스템(735)(테넌트 컨텍스트, 예를 들어, OS 스토리지(736)와 차례로 통신할 수 있는 테넌트 2의 파티션에 기초하는)과 통신(I/O)할 수 있다.
본 발명의 일 실시예에 따르면, 테넌트, 예를 들어 테넌트(2)를 대신하여 동작하는 컨테이너화된 어플리케이션은 필요한 인증서로 테넌트의 데이터베이스(608)에 액세스할 수 있다.
본 발명의 일 실시예에 따르면, MT 어플리케이션은 프로그램이 성공적으로 실행되었는지를 확인하기 위해 프로세스 exitValue 상태 코드(예컨대, Java 프로세스 객체 exitValue() 방법)를 얻을 수 있다. MT 어플리케이션은 또한 출력 및 오류 서브 폴더하에서 재지정된 stdout 및 stderr 파일을 검색하여 프로세스 실행이 성공했는지 여부를 조사할 수 있다. 테넌트 데이터베이스에서 업데이트된 결과는 일단 테넌트 미인식의 컨테이너화된 어플리케이션의 실행이 완료되면, 파티션에서 실행중인 MT 어플리케이션에 의해 데이터베이스로부터 직접 액세스할 수 있다.
본 발명의 일 실시예에 따르면, MT 어플리케이션은 또한 월렛과 같은 출력 파일 및 db파일을 정리하는 프로세스 작업 디렉토리 및 그의 서브 폴더를 삭제할 수 있다.
도 9는 본 발명의 일 실시예에 따라, 테넌트 미인식 프로세스의 테넌트 스코프된 실행을 위한 환경 및 리소스를 생성하는 예시적인 방법의 흐름도이다. 단계 (910)에서, 프로세스 작업 디렉토리가 테넌트 파일시스템(예컨대, 가상 테넌트 파일시스템) 하에서 생성될 수 있다. 단계(920)에서, 입력, 출력, 에러 및 데이터베이스 폴더에 대해 프로세스 작업 디렉토리 하의 서브디렉토리가 생성될 수 있다. 단계(930)에서, 입력 폴더는 데이터 파일로 설정될 수 있다. 단계(940)에서, 데이터베이스 폴더는 테넌트 데이터베이스 구성 파일 및 인증서(예컨대, 월렛)으로 설정될 수 있다. 단계(950)에서, 환경은 테넌트 컨텍스트에 기초하여 테넌트 미인식 어플리케이션(예컨대, OS 어플리케이션/프로세스)이 실행되도록 종결될 수 있다.
도 10은 본 발명의 일 실시예에 따라, 컨테이너화된 어플리케이션을 개시하기 위한 프로세스 빌더를 생성하고 구성하기 위한 예시적인 방법의 흐름도이다. 단계(1010)에서, 프로세스 빌더 인스턴스(예컨대, 자자 ProcessBuilder API)가 생성될 수 있다. 단계(1020)에서는 프로세스 환경이 구성될 수 있다(예컨대, 테넌트 컨텍스트). 단계(1030)에서, 프로세스 작업 디렉토리가 구성될 수 있다. 단계(1040)에서, 상기 방법은 컨테이너화된 어플리케이션을 개시하기 위해 실행 가능한 명령 라인을 구성할 수 있다. 단계(1050)에서, 입력 스트림, 출력 스트림 및 에러 스트림과 같은 컨테이너화된 어플리케이션으로부터의 스트림은 프로세스 작업 디렉토리의 입력, 출력 및 오류 서브디렉토리로 재지정될 수 있다.
도 11은 본 발명의 일 실시예에 따라, MT 미들웨어 어플리케이션 (예컨대, JEE 어플리케이션)으로부터 테넌트 미인식 OS 어플리케이션의 멀티테넌트 실행을 위한 예시적인 방법의 흐름도이다. 이러한 예시적인 방법의 전제 조건으로서, OS 어플리케이션(즉, MT 어플리케이션 서버 환경으로부터 호출될 OS 어플리케이션)은 컨테이너화된 어플리케이션(예컨대, 컨테이너화된 어플리케이션 이미지)으로서 패키징될 수 있다. 단계(1110)에서, 도 9의 흐름도에 의해 식별되는 바와 같이, 프로세스 환경 및 테넌트 스코프된 실행을 위한 리소스가 생성될 수 있다. 단계(1120)에서, 도 10의 흐름도에 의해 식별되는 바와같이, 프로세스 빌더(예컨대, 자바 ProcessBuilder API 인스턴스)가 생성되어 구성될 수 있다. 단계(1130)에서, 상기 방법은 프로세스 빌더 시작 방법을 사용하여 상기 컨테이너화된 OS 어플리케이션 프로세스를 호출할 수 있다. 이 단계는 구성된 테넌트-특정 실행 환경을 생성하여 컨테이너 프로세스를 시작한다. 컨테이너화된 어플리케이션은 컨테이너 런타임에 의해 시행되는 다른 컨테이너 & OS 프로세스로부터의 런타임 분리를 통해 테넌트-특정 실행 환경 및 리소스로 실행될 수 있다. 단계(1140)에서, 상기 방법은 컨테이너화된 어플리케이션 프로세스 실행이 완료될 때까지 대기할 수 있다. 단계(1150)에서, 테넌트 데이터베이스로부터 프로세스 출력뿐만 아니라 프로세스 작업 디렉토리의 stdout 파일로부터 프로세스 출력을 검색하고, 필요한 후처리를 수행하며, 결과로 테넌트 특정 데이터베이스를 업데이트한다. 단계(1160)에서, 상기 방법은 프로세스 작업 디렉토리 및 그의 컨텐츠를 삭제 및 정리할 수 있다.
도 12는 멀티테넌트 미들웨어 어플리케이션으로부터 호출된 테넌트-미인식 프로세스의 테넌트 스코프된 실행을 지원하기 위한 예시적인 방법의 흐름도이다. 단계(1210)에서, 본 방법은 하나 이상의 컴퓨터를 포함할 수 있는데, 하나 이상의 컴퓨터는 실행되는 어플리케이션 서버 환경, 각각의 파티션이 도메인의 관리 및 런타임 서브분할을 제공하는 복수의 파티션, 및 복수의 테넌트-인식 프로그램을 포함하며, 복수의 테넌트-인식 프로그램 각각은 복수의 파티션들 중 하나의 파티션과 연관된다.
단계(1220)에서, 상기 방법은 테넌트에 의한 사용을 위해 다수의 파티션 각각과 복수의 테넌트-인식 프로그램을 복수의 테넌트 중 하나의 테넌트에 연관시킬 수 있다.
단계(1230)에서, 상기 방법은 복수의 파티션 중 호출 파티션으로부터 테넌트-미인식 프로세스를 호출할 수 있으며, 호출 파티션은 복수의 테넌트의 하나의 호출 테넌트와 연관된다.
단계(1240)에서, 상기 방법은 호출 테넌트에 관한 테넌시 정보를 수집할 수 있다.
단계(1250)에서, 상기 방법은 수집된 테넌시 정보에 기초하여, 호출 테넌트에 대한 테넌트-미인식 프로세스의 실행을 스코핑(국한)할 수 있으며, 실행을 스코핑하는 것은 멀티테넌트 미들웨어 환경의 다른 테넌트로부터 호출 테넌트에게 스코프된 테넌트-미인식 프로세스의 실행을 분리시키는 것을 허용한다.
본 발명은 하나 이상의 프로세서, 메모리 및/또는 본 개시의 교시에 따라 프로그램된 컴퓨터 판독 가능 저장 매체를 포함하는 하나 이상의 기존의 범용 또는 특수 디지털 컴퓨터, 컴퓨팅 장치, 머신 또는 마이크로 프로세서를 사용하여 편리하게 구현될 수 있다. 적절한 소프트웨어 코딩은 소프트웨어 분야의 당업자에게 명백한 바와 같이 본 개시의 교시에 기초하여 숙련된 프로그래머에 의해 용이하게 준비될 수 있다.
일부 실시예에서, 본 발명은 본 발명의 임의의 프로세스를 수행하도록 컴퓨터를 프로그래밍하는데 사용될 수 있는 명령이 저장되어 있는 비-일시적 저장 매체 또는 컴퓨터 판독 가능 매체(미디어)인 컴퓨터 프로그램 제품을 포함한다. 저장 매체는 플로피 디스크, 광학 디스크, DVD, CD-ROM, 마이크로드라이브를 포함하는 임의 타입의 디스크, 및 광자기 디스크,ROM, RAM, EPROM, EEPROM, DRAM,VRAM, 플래시 메모리 디바이스, 자기 혹은 광학 카드들, 나노시스템(분자 메모리 IC 포함), 또는 명령 및/또는 데이터 저장하는데 적합한 임의 타입의 미디어 또는 디바이스를 포함할 수 있지만, 이것만으로 한정되는 것은 아니다.
본 발명의 전술한 설명은 예시 및 설명을 목적으로 제공되었다. 본 발명은 개시된 정확한 형태로 제한하거나 포괄하고자 하는 것은 아니다. 많은 수정 및 변형이 당업자에게 명백할 것이다. 변형 및 변경은 개시된 특징의 임의의 관련 조합을 포함한다. 실시예들은 본 발명의 원리 및 그 실제 응용을 가장 잘 설명하기 위하여 선택 및 기술된 것으로, 그로 인해 당업자가 다양한 실시예에 대해 본 발명을 이해할 수 있도록 하고 아울러 의도된 특정 용도에 적합한 다양한 변형을 통해 본 발명을 이해할 수 있게 하기 위해 선택 및 기술되었다. 본 발명의 범위는 이하의 특허 청구 범위 및 그 균등물에 의해 정의되도록 의도되었다.

Claims (44)

  1. 멀티테넌트 미들웨어 어플리케이션으로부터 호출된 테넌트-미인식 프로세스의 테넌트 스코프된(scoped) 실행을 지원하기 위한 방법으로서,
    실행되는 어플리케이션 서버 환경을 포함하는 하나 이상의 컴퓨터에서, 각각이 도메인의 관리 및 런타임 서브분할을 제공하는 복수의 파티션 및 각각이 복수의 파티션의 하나 파티션과 연관되는 복수의 테넌트-인식 프로그램을 제공하는 단계;
    상기 복수의 파티션 각각과 복수의 테넌트-인식 프로그램 각각을 테넌트에 의한 사용을 위해 복수의 테넌트의 하나의 테넌트에 연관시키는 단계;
    상기 복수의 파티션의 호출 파티션으로부터 테넌트-미인식 프로세스를 호출하는 단계로서, 상기 호출 파티션은 복수의 테넌트의 호출 테넌트와 연관되고;
    상기 호출 테넌트에 관한 테넌시 정보를 수집하는 단계;
    상기 호출 테넌트에 관한 수집된 테넌시 정보에 기초하여, 테넌트-특정 가상 파일시스템을 생성하는 단계; 및
    상기 수집된 테넌시 정보에 기초하여, 프로세스 실행 환경 및 리소스를 설정하여 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 단계;를 포함하며, 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 단계는,
    상기 테넌트-미인식 프로세스의 스트림을 테넌트-특정 가상 파일시스템으로 재지정하는 단계를 포함하되, 상기 테넌트 미인식 프로세스의 스트림은 입력 스트림, 출력 스트림 및 에러 스트림 중 적어도 하나를 포함하고;
    상기 실행을 스코핑하는 단계는 멀티테넌트 미들웨어 환경의 다른 테넌트로부터 상기 호출 테넌트에 스코프된 테넌트-미인식 프로세스의 실행의 분리를 허용하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서, 상기 멀티테넌트 미들웨어 어플리케이션은 상기 복수의 파티션의 호출 파티션과 연관되고, 상기 멀티테넌트 미들웨어 어플리케이션은 테넌트-미인식 프로세스를 호출하는 것과 관련하여 테넌시 정보를 전달하는 것을 특징으로 하는 방법.
  3. 제1항 또는 제2항에 있어서, 상기 테넌트-특정 가상 파일시스템 하에서 프로세스 작업 디렉토리를 생성하는 단계를 더 포함하며, 상기 프로세스 작업 디렉토리는 입력 서브디렉토리, 출력 서브디렉토리, 데이터베이스 서브디렉토리 및 오류 서브디렉토리를 포함하는 것을 특징으로 하는 방법.
  4. 제3항에 있어서,
    적어도 하나의 데이터 파일로 입력 서브디렉토리를 설정하는 단계; 및
    월렛(wallet)으로 데이터베이스 서브디렉토리를 설정하는 단계를 포함하며, 상기 월렛은 호출 테넌트와 연관된 구성 파일 및 인증서를 포함하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    상기 테넌트-미인식 프로세스의 완료 이후, 상기 테넌트-미인식 프로세스가 테넌트-특정 데이터베이스를 액세스하는 단계로서, 상기 액세스는 월렛을 통해 허가되고; 및
    상기 테넌트-미인식 프로세스의 완료 및 상기 테넌트-미인식 프로세스의 테넌트-특정 데이터베이스 액세스 이후에, 상기 테넌트-특정 가상 파일시스템을 정리(clean up)하는 단계;를 더 포함하며, 상기 테넌트-특정 가상 파일시스템을 정리하는 단계는 프로세스 작업 디렉토리를 삭제하는 단계를 포함하는 것을 특징으로 하는 방법.
  6. 제3항 내지 제5항 중 어느 한 항에 있어서, 상기 테넌트-미인식 프로세스의 스트림은 프로세스 작업 디렉토리의 입력 서브디렉토리, 출력 서브디렉토리 및 에러 서브디렉토리로 각각 재지정되는 것을 특징으로 하는 방법.
  7. 임의의 선행 청구항에 있어서, 상기 복수의 파티션의 호출 파티션으로부터 호출된 테넌트-미인식 프로세스는 복합 어플리케이션의 일부이고, 상기 복합 어플리케이션은 복수의 파티션의 호출 파티션의 컨텍스트에서 실행되는 테넌트-인식 어플리케이션을 더 포함하는 것을 특징으로 하는 방법.
  8. 멀티테넌트 미들웨어 어플리케이션으로부터 호출된 테넌트-미인식 프로세스의 테넌트 스코프된(scoped) 실행을 지원하기 위한 시스템으로서,
    하나 이상의 컴퓨터를 포함하고, 상기 하나 이상의 컴퓨터는 실행되는 어플리케이션 서버 환경을 포함함과 함께, 각각이 도메인의 관리 및 런타임 서브분할을 제공하는 복수의 파티션 및 각각이 상기 복수의 파티션의 하나의 파티션과 연관되는 복수의 테넌트-인식 프로그램을 포함하고,
    상기 복수의 파티션 각각과 복수의 테넌트-인식 프로그램 각각은 테넌트에 의한 사용을 위해 복수의 테넌트의 하나의 테넌트에 연관되고; 및
    상기 복수의 파티션의 호출 파티션은 테넌트-미인식 프로세스를 호출하되, 상기 호출 파티션은 상기 복수의 테넌트의 호출 테넌트와 연관되며;
    상기 호출 테넌트에 관한 테넌시 정보가 수집되고;
    상기 호출 테넌트에 관한 상기 수집된 테넌시 정보에 근거하여 테넌트-특정 가상 파일시스템이 생성되며,
    상기 수집된 테넌시 정보에 기초하여, 프로세스 실행 환경 및 리소스를 설정하여 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 것을 포함하며, 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 것은,
    상기 테넌트-미인식 프로세스의 스트림을 테넌트-특정 가상 파일시스템으로 재지정하는 것을 포함하되, 상기 테넌트 미인식 프로세스의 스트림은 입력 스트림, 출력 스트림 및 에러 스트림 중 적어도 하나를 포함하고,
    상기 테넌트-미인식 프로세스의 실행을 스코핑하는 것은 상기 멀티테넌트 미들웨어 환경의 다른 테넌트로부터 상기 호출 테넌트에 스코프된 테넌트-미인식 프로세스의 실행의 분리를 허용하는 것을 특징으로 하는 시스템.
  9. 제8항에 있어서, 상기 멀티테넌트 미들웨어 어플리케이션은 복수의 파티션의 호출 파티션과 연관되고, 상기 멀티테넌트 미들웨어 어플리케이션은 테넌트-미인식 프로세스를 호출하는 것과 관련하여 테넌시 정보를 전달하는 것을 특징으로 하는 시스템.
  10. 제8항 또는 제9항에 있어서, 프로세스 작업 디렉토리가 상기 테넌트-특정 가상 파일시스템 하에서 생성되고, 상기 프로세스 작업 디렉토리는 입력 서브디렉토리, 출력 서브디렉토리, 데이터베이스 서브디렉토리 및 오류 서브디렉토리를 포함하는 것을 특징으로 하는 시스템.
  11. 제10항에 있어서, 상기 입력 서브디렉토리는 적어도 하나의 데이터 파일로 설정되고, 상기 데이터베이스 서브디렉토리는 월렛으로 설정되고, 상기 월렛은 호출 테넌트와 연관된 구성 파일 및 인증서를 포함하는 것을 특징으로 하는 시스템.
  12. 제11항에 있어서, 상기 테넌트-미인식 프로세스 완료 이후 상기 테넌트-미인식 프로세스가 상기 월렛을 이용하여 테넌트-특정 데이터베이스를 액세스하는 것을 포함하며, 그리고
    상기 테넌트-특정 가상 파일시스템은 테넌트-미인식 프로세스 완료 이후에 정리(clean up)되며, 상기 테넌트-특정 가상 파일시스템을 정리하는 것은 프로세스 작업 디렉토리를 삭제하는 것을 포함하는 것을 특징으로 하는 시스템.
  13. 제10항 내지 제12항 중 어느 한 항에 있어서, 상기 테넌트-미인식 프로세스의 스트림은 프로세스 작업 디렉토리의 입력 서브디렉토리, 출력 서브디렉토리 및 에러 서브디렉토리로 각각 재지정되는 것을 특징으로 하는 시스템.
  14. 제8항 내지 제13항 중 어느 한 항에 있어서, 상기 복수의 파티션의 호출 파티션으로부터 호출된 테넌트-미인식 프로세스는 복합 어플리케이션의 일부이고, 상기 복합 어플리케이션은 복수의 파티션의 호출 파티션의 컨텍스트에서 실행되는 테넌트-인식 어플리케이션을 더 포함하는 것을 특징으로 하는 시스템.
  15. 멀티테넌트 미들웨어 어플리케이션으로부터 호출된 테넌트-미인식 프로세스의 테넌트 스코프된(scoped) 실행을 지원하기 위해 저장된 명령들을 포함하는 비- 일시적 컴퓨터 판독 가능 저장 매체로서, 상기 명령들은 하나 이상의 컴퓨터에 의해 판독되고 실행될 때 상기 하나 이상의 컴퓨터로 하여금,
    하나 이상의 컴퓨터상에서 실행하는 어플리케이션 서버 환경을 포함하는 하나 이상의 컴퓨터에서, 각각이 도메인의 관리 및 런타임 서브분할을 제공하는 복수의 파티션과, 각각이 상기 복수의 파티션의 하나 파티션과 연관되는 복수의 테넌트-인식 프로그램을 제공하는 단계;
    상기 복수의 파티션 각각과 복수의 테넌트-인식 프로그램 각각을 테넌트에 의한 사용을 위해 복수의 테넌트의 하나의 테넌트에 연관시키는 단계;
    상기 복수의 파티션의 호출 파티션으로부터 테넌트-미인식 프로세스를 호출하는 단계, 상기 호출 파티션은 복수의 테넌트의 호출 테넌트와 연관되고;
    상기 호출 테넌트에 관한 테넌시 정보를 수집하는 단계;
    상기 호출 테넌트에 관한 수집된 테넌시 정보에 기초하여, 테넌트-특정 가상 파일시스템을 생성하는 단계; 및
    상기 수집된 테넌시 정보에 기초하여, 프로세스 실행 환경 및 리소스를 설정하여 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 단계;를 실행하도록 하고, 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 단계는,
    상기 테넌트-미인식 프로세스의 스트림을 테넌트-특정 가상 파일시스템으로 재지정하는 단계를 포함하되, 상기 테넌트 미인식 프로세스의 스트림은 입력 스트림, 출력 스트림 및 에러 스트림 중 적어도 하나를 포함하고;
    실행을 스코핑하는 단계는 상기 멀티테넌트 미들웨어 환경의 다른 테넌트로부터 상기 호출 테넌트에 스코프된 테넌트-미인식 프로세스의 실행의 분리를 허용하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장매체.
  16. 제15항에 있어서, 상기 멀티테넌트 미들웨어 어플리케이션은 상기 복수의 파티션의 호출 파티션과 연관되고, 상기 멀티테넌트 미들웨어 어플리케이션은 테넌트-미인식 프로세스를 호출하는 것과 관련하여 테넌시 정보를 전달하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장매체.
  17. 제15항 또는 제16항에 있어서, 상기 단계들은,
    상기 테넌트-특정 가상 파일시스템하에서 프로세스 작업 디렉토리를 생성하는 단계를 더 포함하고, 상기 프로세스 작업 디렉토리는 입력 서브디렉토리, 출력 서브디렉토리, 데이터베이스 서브디렉토리 및 오류 서브디렉토리를 포함하는 것 을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장매체.
  18. 제17항에 있어서, 상기 단계들은,
    적어도 하나의 데이터 파일로 입력 서브디렉토리를 설정하는 단계; 및
    월렛으로 데이터베이스 서브디렉토리를 설정하는 단계를 더 포함하고, 상기 월렛은 호출 테넌트와 연관된 구성 파일 및 인증서를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장매체.
  19. 제18항에 있어서, 상기 단계들은,
    상기 테넌트-미인식 프로세스의 완료 이후에, 상기 테넌트-미인식 프로세스에 의해 테넌트-특정 데이터베이스를 액세스하는 단계, 상기 액세스는 월렛을 통해 허가되며; 및
    상기 테넌트-미인식 프로세스의 완료 및 상기 테넌트-미인식 프로세스의 테넌트-특정 데이터베이스 액세스 이후에, 상기 테넌트-특정 가상 파일시스템을 정리(clean up)하는 단계;를 더 포함하며, 상기 테넌트-특정 가상 파일시스템을 정리하는 단계는 프로세스 작업 디렉토리를 삭제하는 단계를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장매체.
  20. 제17항 내지 제19항 중 어느 한 항에 있어서, 상기 테넌트-미인식 프로세스의 스트림은 프로세스 작업 디렉토리의 입력 서브디렉토리, 출력 서브디렉토리 및 에러 서브디렉토리로 각각 재지정되는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장매체.
  21. 제15항 내지 제20항 중 어느 한 항에 있어서, 상기 복수의 파티션의 호출 파티션으로부터 호출된 테넌트-미인식 프로세스는 복합 어플리케이션의 일부이고, 상기 복합 어플리케이션은 복수의 파티션의 호출 파티션의 컨텍스트에서 실행되는 테넌트-인식 어플리케이션을 더 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능매체.
  22. 멀티테넌트 미들웨어 어플리케이션으로부터 호출된 테넌트-미인식 프로세스의 테넌트 스코프된(scoped) 실행을 지원하기 위한 방법으로서,
    실행되는 어플리케이션 서버 환경을 포함하는 하나 이상의 컴퓨터에서, 각각이 도메인의 관리 및 런타임 서브분할을 제공하는 복수의 파티션 및 각각이 복수의 파티션의 하나 파티션과 연관되는 복수의 테넌트-인식 프로그램을 제공하는 단계;
    상기 복수의 파티션 각각과 복수의 테넌트-인식 프로그램 각각을 테넌트에 의한 사용을 위해 복수의 테넌트의 하나의 테넌트에 연관시키는 단계;
    상기 복수의 파티션의 호출 파티션으로부터 테넌트-미인식 프로세스를 호출하는 단계, 상기 호출 파티션은 복수의 테넌트의 호출 테넌트와 연관되고;
    상기 호출 테넌트에 관한 테넌시 정보를 수집하는 단계; 및
    상기 수집된 테넌시 정보에 기초하여, 프로세스 실행 환경 및 리소스를 설정하여 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 단계를 포함하며, 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 단계는,
    상기 테넌트-미인식 프로세스를 컨테이너화된 프로세스로서 론칭(launching)하는 단계를 포함하고, 상기 컨테이너화된 프로세스는 상기 테넌트-미인식 프로세스와 연관된 라이브러리와 실행 파일(executables)을 포함하고;
    상기 컨테이너화된 프로세스는 멀티테넌트 미들웨어 환경의 다른 테넌트로부터 상기 호출 테넌트에 대한 테넌트-미인식 프로세스의 실행을 분리할 수 있는 독립형 프로세스인 것을 특징으로 하는 방법.
  23. 제22항에 있어서,
    상기 호출 테넌트에 관한 수집된 테넌시 정보에 기초하여, 테넌트-특정 가상 파일시스템을 생성하는 단계;를 더 포함하며, 상기 테넌트-특정 가상 파일시스템은 입력 서브디렉토리, 출력 서브디렉토리, 데이터베이스 서브디렉토리 및 오류 서브디렉토리를 포함하는 것을 특징으로 하는 방법.
  24. 제22항 또는 제23항에 있어서,
    상기 테넌트-미인식 프로세스 완료 후 테넌트-미인식 프로세스에 의해 상기 테넌트-특정 데이터베이스를 액세스하는 단계;를 더 포함하며,
    상기 테넌트-미인식 프로세스는 월렛을 이용하여 테넌트-특정 데이터베이스를 액세스하는 것을 특징으로 하는 방법.
  25. 제22항 내지 제24항 중 어느 한 항에 있어서, 상기 테넌트-미인식 프로세스를 컨테이너화된 프로세스로서 론칭하는 단계는
    컨테이너 데몬에 의해 어플리케이션 이미지를 액세스하는 단계, 상기 어플리케이션 이미지는 상기 테넌트-미인식 프로세스와 연관되고;
    상기 테넌트와 연관된 컨테이너를 생성하는 단계; 및
    상기 어플리케이션 이미지를 컨테이너에서 론칭하는 단계;를 포함하는 것을 특징으로 하는 방법.
  26. 제25항에 있어서, 상기 액세스된 어플리케이션 이미지는 어플리케이션 이미지 저장소에 저장되는 것을 특징으로 하는 방법.
  27. 제25항 또는 제26항에 있어서, 상기 어플리케이션 이미지의 스트림은 테넌트-특정 가상 파일시스템으로 재지정되고, 상기 어플리케이션 이미지의 스트림은 입력 스트림, 출력 스트림 및 오류 스트림 중 적어도 하나를 포함하는 것을 특징으로 하는 방법.
  28. 제22항 내지 제27항 중 어느 한 항에 있어서, 상기 복수의 파티션의 상기 호출 파티션으로부터 호출된 테넌트-미인식 프로세스는 복합 어플리케이션의 일부이고, 상기 복합 어플리케이션은 복수의 파티션의 호출 파티션의 컨텍스트에서 실행되는 테넌트-인식 어플리케이션을 더 포함하는 것을 특징으로 하는 방법.
  29. 멀티테넌트 미들웨어 어플리케이션으로부터 호출된 테넌트-미인식 프로세스의 테넌트 스코프된(scoped) 실행을 지원하기 위한 시스템으로서,
    하나 이상의 컴퓨터를 포함하고, 상기 하나 이상의 컴퓨터는 실행되는 어플리케이션 서버 환경을 포함함과 함께, 각각이 도메인의 관리 및 런타임 서브분할을 제공하는 복수의 파티션 및 각각이 복수의 파티션 중의 하나와 연관되는 복수의 테넌트-인식 프로그램을 포함하고,
    상기 복수의 파티션 각각과 복수의 테넌트-인식 프로그램 각각은 테넌트에 의한 사용을 위해 복수의 테넌트의 하나의 테넌트에 연관되고; 및
    상기 복수의 파티션의 호출 파티션은 테넌트-미인식 프로세스를 호출하되, 상기 호출 파티션은 상기 복수의 테넌트의 호출 테넌트와 연관되며;
    상기 호출 테넌트에 관한 테넌시 정보가 수집되고;
    상기 수집된 테넌시 정보에 기초하여, 프로세스 실행 환경 및 리소스를 설정하여 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하며,
    상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 것은,
    상기 테넌트-미인식 프로세스를 컨테이너화된 프로세스로서 론칭(launching)하는 것을 포함하고, 상기 컨테이너화된 프로세스는 상기 테넌트-미인식 프로세스와 연관된 라이브러리와 실행 파일(executables)을 포함하고;
    상기 컨테이너화된 프로세스는 멀티테넌트 미들웨어 환경의 다른 테넌트로부터 상기 호출 테넌트에 대한 테넌트-미인식 프로세스의 실행을 분리할 수 있는 독립형(standalone) 프로세스인 것을 특징으로 하는 시스템.
  30. 제29항에 있어서, 상기 호출 테넌트에 관한 상기 수집된 테넌시 정보에 기초하여, 테넌트-특정 가상 파일시스템이 생성되고, 상기 테넌트-특정 가상 파일시스템은 입력 서브디렉토리, 출력 서브디렉토리, 데이터베이스 서브디렉토리 및 오류 서브디렉토리를 포함하는 것을 특징으로 하는 시스템.
  31. 제29항 또는 제30항에 있어서, 상기 테넌트-미인식 프로세스의 완료 후에, 상기 테넌트-미인식 프로세스는 월렛을 사용하여 테넌트 특정 데이터베이스에 액세스하는 것을 특징으로 하는 시스템.
  32. 제29 항 내지 제31항 중 어느 한 항에 있어서, 상기 테넌트-미인식 프로세스를 컨테이너화된 프로세스로서 론칭하는 것은,
    컨테이너 데몬으로부터 어플리케이션 이미지를 액세스하는 것, 상기 어플리케이션 이미지는 상기 테넌트-미인식 프로세스와 관련되고;
    상기 테넌트와 연관된 컨테이너를 생성하는 것; 및
    상기 어플리케이션 이미지를 컨테이너에서 론칭하는 것을 포함하는 것을 특징으로 하는 시스템.
  33. 제32항에 있어서, 상기 액세스된 어플리케이션 이미지는 어플리케이션 이미지 저장소에 저장되는 것을 특징으로 하는 시스템.
  34. 제32항 또는 제33항에 있어서, 상기 어플리케이션 이미지의 스트림은 상기 테넌트-특정 가상 파일시스템으로 재지정되고, 상기 어플리케이션 이미지의 스트림은 입력 스트림, 출력 스트림 및 오류 스트림 중 적어도 하나를 포함하는 것을 특징으로 하는 시스템.
  35. 제29항 내지 제34항 중 어느 한 항에 있어서, 상기 복수의 파티션의 호출 파티션으로부터 호출된 테넌트-미인식 프로세스는 복합 어플리케이션의 일부이고, 상기 복합 어플리케이션은 복수의 파티션의 호출 파티션의 컨텍스트에서 실행되는 테넌트-인식 어플리케이션을 더 포함하는 것을 특징으로 하는 시스템.
  36. 멀티테넌트 미들웨어 어플리케이션으로부터 호출된 테넌트-미인식 프로세스의 테넌트 스코프된 실행을 지원하기 위해 저장된 명령들을 포함하는 비-일시적 컴퓨터 판독 가능 저장 매체로서, 상기 명령들은 하나 이상의 컴퓨터에 의해 판독되고 실행될 때 상기 하나 이상의 컴퓨터로 하여금:
    실행되는 어플리케이션 서버 환경을 포함하는 하나 이상의 컴퓨터에서, 각각이 도메인의 관리 및 런타임 서브분할을 제공하는 복수의 파티션 및 각각이 복수의 파티션의 하나 파티션과 연관되는 복수의 테넌트-인식 프로그램을 제공하는 단계;
    상기 복수의 파티션 각각과 복수의 테넌트-인식 프로그램 각각을 테넌트에 의한 사용을 위해 복수의 테넌트의 하나의 테넌트에 연관시키는 단계;
    상기 복수의 파티션의 호출 파티션으로부터 테넌트-미인식 프로세스를 호출하는 단계, 상기 호출 파티션은 복수의 테넌트의 호출 테넌트와 연관되고;
    상기 호출 테넌트에 관한 테넌시 정보를 수집하는 단계; 및
    상기 수집된 테넌시 정보에 기초하여, 프로세스 실행 환경 및 리소스를 설정하여 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 단계를 포함하며, 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 단계는,
    상기 테넌트-미인식 프로세스를 컨테이너화된 프로세스로서 론칭(launching)하는 단계를 포함하고, 상기 컨테이너화된 프로세스는 상기 테넌트-미인식 프로세스와 연관된 라이브러리와 실행 파일(executables)을 포함하고;
    상기 컨테이너화된 프로세스는 멀티테넌트 미들웨어 환경의 다른 테넌트로부터 상기 호출 테넌트에 대한 테넌트-미인식 프로세스의 실행을 분리할 수 있는 독립형(standalone) 프로세스인 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
  37. 제36항에 있어서, 상기 단계들은,
    상기 호출 테넌트에 관한 수집된 테넌시 정보에 기초하여, 테넌트-특정 가상 파일시스템을 생성하는 단계;를 더 포함하며, 상기 테넌트-특정 가상 파일시스템은 입력 서브디렉토리, 출력 서브디렉토리, 데이터베이스 서브디렉토리 및 오류 서브디렉토리를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
  38. 제36항 또는 제37항에 있어서, 상기 단계들은,
    상기 테넌트-미인식 프로세스 완료 후 테넌트-미인식 프로세스가 테넌트 특정 데이터베이스에 액세스하는 단계;를 더 포함하며,
    상기 테넌트-미인식 프로세스는 월렛을 이용하여 상기 테넌트-특정 데이터베이스를 액세스하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
  39. 제36항 내지 제38항 중 어느 한 항에 있어서, 상기 테넌트-미인식 프로세스를 컨테이너화된 프로세스로서 론칭하는 단계는
    컨테이너 데몬에 의해 어플리케이션 이미지를 액세스하는 단계, 상기 어플리케이션 이미지는 상기 테넌트-미인식 프로세스와 연관되고;
    상기 테넌트와 연관된 컨테이너를 생성하는 단계; 및
    상기 어플리케이션 이미지를 컨테이너에서 론칭하는 단계;를 포함하며,
    상기 액세스된 어플리케이션 이미지는 어플리케이션 이미지 저장소에 저장되는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
  40. 제39항에 있어서, 상기 어플리케이션 이미지의 스트림은 테넌트-특정 가상 파일시스템으로 재지정되고, 상기 어플리케이션 이미지의 스트림은 입력 스트림, 출력 스트림 및 오류 스트림 중 적어도 하나를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
  41. 제36항 내지 제40항 중 어느 한 항에 있어서, 상기 복수의 파티션의 호출 파티션으로부터 호출된 테넌트-미인식 프로세스는 복합 어플리케이션의 일부이고, 상기 복합 어플리케이션은 상기 복수의 파티션의 호출 파티션의 컨텍스트에서 실행되는 테넌트-인식 어플리케이션을 더 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
  42. 하나 이상의 컴퓨터 시스템에 의해 실행될 때, 상기 하나 이상의 컴퓨터 시스템으로 하여금 제1항 내지 제7항 및 제22항 내지 제28항 중 어느 한 항의 방법을 수행하게 하는 프로그램 명령을 포함하는 컴퓨터 프로그램.
  43. 제42항의 저장된 컴퓨터 프로그램을 가지는 비-일시적 컴퓨터 저장 매체.
  44. 제1항 내지 제7항 중 어느 한 항의 방법 및 제22항 내지 제28항 중 어느 한 항의 방법을 수행하도록 구성된 시스템.
KR1020177037057A 2015-10-23 2016-09-09 멀티테넌트 미들웨어 어플리케이션에서 호출된 os 프로그램의 멀티테넌트 실행을 위한 시스템 및 방법 KR102559507B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201562245611P 2015-10-23 2015-10-23
US62/245,611 2015-10-23
US15/059,193 2016-03-02
US15/059,193 US9811386B2 (en) 2015-10-23 2016-03-02 System and method for multitenant execution of OS programs invoked from a multitenant middleware application
US15/059,872 2016-03-03
US15/059,872 US9819609B2 (en) 2015-10-23 2016-03-03 System and method for multitenant execution of OS programs invoked from a multitenant middleware application
PCT/US2016/051099 WO2017069864A1 (en) 2015-10-23 2016-09-09 System and method for multitenant execution of os programs invoked from a multitenant middleware application

Publications (2)

Publication Number Publication Date
KR20180072593A true KR20180072593A (ko) 2018-06-29
KR102559507B1 KR102559507B1 (ko) 2023-07-25

Family

ID=60765562

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177037057A KR102559507B1 (ko) 2015-10-23 2016-09-09 멀티테넌트 미들웨어 어플리케이션에서 호출된 os 프로그램의 멀티테넌트 실행을 위한 시스템 및 방법

Country Status (4)

Country Link
EP (1) EP3365779A1 (ko)
JP (1) JP6866307B2 (ko)
KR (1) KR102559507B1 (ko)
CN (1) CN107533485B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113448593A (zh) * 2020-07-31 2021-09-28 心医国际数字医疗系统(大连)有限公司 诊疗系统平台应用的自动部署方法、装置及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012063301A1 (ja) * 2010-11-08 2012-05-18 株式会社日立製作所 計算機システム、マルチテナント制御方法及びマルチテナント制御プログラム
WO2014007813A1 (en) * 2012-07-03 2014-01-09 Hewlett-Packard Development Company, L.P. Managing a multitenant cloud service
US20140075565A1 (en) * 2012-09-07 2014-03-13 Oracle International Corporation Multi-tenancy identity management system
JP2014096675A (ja) * 2012-11-08 2014-05-22 Hitachi Ltd 通信装置、及び、設定方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106452737A (zh) * 2010-08-11 2017-02-22 安全第公司 用于安全多租户数据存储的系统和方法
US9460169B2 (en) * 2011-01-12 2016-10-04 International Business Machines Corporation Multi-tenant audit awareness in support of cloud environments
CN102333115A (zh) * 2011-09-01 2012-01-25 杭州湾云计算技术有限公司 一种将已有Web应用转化为SaaS多租户应用的方法和装置
US9003477B2 (en) * 2012-06-27 2015-04-07 Microsoft Technology Licensing, Llc Model for managing hosted resources using logical scopes
US9509553B2 (en) * 2012-08-13 2016-11-29 Intigua, Inc. System and methods for management virtualization
CN104050201B (zh) * 2013-03-15 2018-04-13 伊姆西公司 用于多租户分布式环境中的数据管理的方法和设备
US10216758B2 (en) * 2013-10-24 2019-02-26 Vmware, Inc. Multi-tenant production and test deployments of Hadoop
US10642800B2 (en) * 2013-10-25 2020-05-05 Vmware, Inc. Multi-tenant distributed computing and database
WO2015112614A1 (en) * 2014-01-21 2015-07-30 Oracle International Corporation System and method for supporting multi-tenancy in an application server, cloud, or other environment
CN104104513A (zh) * 2014-07-22 2014-10-15 浪潮电子信息产业股份有限公司 一种云端多租户数据存储安全隔离方法
CN104598249B (zh) * 2015-02-05 2017-09-01 浙江天正信息科技有限公司 多租户感知的软件个性化定制与部署方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012063301A1 (ja) * 2010-11-08 2012-05-18 株式会社日立製作所 計算機システム、マルチテナント制御方法及びマルチテナント制御プログラム
WO2014007813A1 (en) * 2012-07-03 2014-01-09 Hewlett-Packard Development Company, L.P. Managing a multitenant cloud service
US20140075565A1 (en) * 2012-09-07 2014-03-13 Oracle International Corporation Multi-tenancy identity management system
JP2014096675A (ja) * 2012-11-08 2014-05-22 Hitachi Ltd 通信装置、及び、設定方法

Also Published As

Publication number Publication date
KR102559507B1 (ko) 2023-07-25
CN107533485B (zh) 2021-01-12
JP2018536206A (ja) 2018-12-06
JP6866307B2 (ja) 2021-04-28
CN107533485A (zh) 2018-01-02
EP3365779A1 (en) 2018-08-29

Similar Documents

Publication Publication Date Title
US9811386B2 (en) System and method for multitenant execution of OS programs invoked from a multitenant middleware application
US9819609B2 (en) System and method for multitenant execution of OS programs invoked from a multitenant middleware application
US10356161B2 (en) System and method for classloading in a multitenant application server environment
JP6611798B2 (ja) マルチテナントアプリケーションサーバ環境においてグローバルランタイムを使用するためのシステムおよび方法
KR102464337B1 (ko) 멀티테넌트 어플리케이션 서버 환경에서 파티션 식별자들의 결정을 위한 시스템 및 방법
KR102449753B1 (ko) 멀티 테넌트 어플리케이션 서버 환경에서 네임스페이스들을 지원하기 위한 시스템 및 방법
JP6599448B2 (ja) マルチテナントアプリケーションサーバ環境においてエンドツーエンドライフサイクルを提供するためのシステムおよび方法
US10084843B2 (en) System and method for web container partitions in a multitenant application server environment
JP6461167B2 (ja) アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムおよび方法
US9792099B2 (en) System and method for supporting deployment in a multitenant application server environment
US9973384B2 (en) System and method for enterprise java bean support in a multitenant application server environment
KR102663126B1 (ko) 멀티테넌트 어플리케이션 서버 환경에서 복수의 파티션 편집 세션들을 지원하는 시스템 및 방법
JP2020074148A (ja) マルチテナントアプリケーションサーバ環境においてパーティションをサポートするためのシステムおよび方法
US20160328268A1 (en) System and method for use of a multi-tenant application server with a multitasking virtual machine
JP6574794B2 (ja) マルチテナントアプリケーションサーバ環境におけるポータブルパーティションのためのシステムおよび方法
US9747091B1 (en) Isolated software installation
KR102559507B1 (ko) 멀티테넌트 미들웨어 어플리케이션에서 호출된 os 프로그램의 멀티테넌트 실행을 위한 시스템 및 방법
Montalbano Definition of a Microservices-based Management and Monitoring System for Oracle Cloud

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant