KR102559507B1 - System and method for multi-tenant execution of OS programs called from multi-tenant middleware applications - Google Patents

System and method for multi-tenant execution of OS programs called from multi-tenant middleware applications Download PDF

Info

Publication number
KR102559507B1
KR102559507B1 KR1020177037057A KR20177037057A KR102559507B1 KR 102559507 B1 KR102559507 B1 KR 102559507B1 KR 1020177037057 A KR1020177037057 A KR 1020177037057A KR 20177037057 A KR20177037057 A KR 20177037057A KR 102559507 B1 KR102559507 B1 KR 102559507B1
Authority
KR
South Korea
Prior art keywords
tenant
calling
application
unaware
partitions
Prior art date
Application number
KR1020177037057A
Other languages
Korean (ko)
Other versions
KR20180072593A (en
Inventor
비제이 캬사나할리 난준다스와미
Original Assignee
오라클 인터내셔날 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
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/en
Application granted granted Critical
Publication of KR102559507B1 publication Critical patent/KR102559507B1/en

Links

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]
    • 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)할 수 있다. According to one embodiment, the present invention discloses a system and method for supporting multi-tenant execution of tenant-unaware programs called from multi-tenant middleware applications. An exemplary method may provide a plurality of partitions and a plurality of tenant-aware programs, each of the plurality of tenant-aware programs associated with a partition. The method may associate each of the plurality of partitions and the plurality of tenant-aware programs with one tenant of the plurality of tenants. The method may invoke a tenant-unaware process from a calling partition of a plurality of partitions, and the calling partition is associated with one calling tenant of the plurality of tenants. The method may collect tenancy information for a calling tenant. Also, based on the collected tenancy information, the method may scope execution of a tenant-unrecognized process to a calling tenant by setting a process execution environment and resources.

Description

멀티테넌트 미들웨어 어플리케이션에서 호출된 OS 프로그램의 멀티테넌트 실행을 위한 시스템 및 방법System and method for multi-tenant execution of OS programs called from multi-tenant middleware applications

저작권 고지(Copyright Notice)Copyright Notice

본 특허 문서의 개시내용의 일부는 저작권 보호의 대상되는 자료를 포함하고 있다. 저작권자는 특허 및 상표청의 특허 파일 또는 기록에 나타나 있듯이 본 특허 문서 또는 특허 개시내용을 누구라도 복사(facsimile reproduction)하는 것에 이의는 없지만, 그 이외의 경우 모든 저작권 권리를 보유한다.A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to anyone's facsimile reproduction of this patent document or the patent disclosure as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights.

본 발명의 실시예들은 일반적으로 어플리케이션 서버 및 클라우드 환경에 관한 것으로, 특히 멀티테넌트 미들웨어 플랫폼으로부터 호출된 어플리케이션을 지원하기 위한 시스템 및 방법에 관한 것이다.Embodiments of the present invention relate generally to application servers and cloud environments, and more particularly to systems and methods for supporting applications invoked from multi-tenant middleware platforms.

소프트웨어 어플리케이션 서버는 그 예로서 오라클 WebLogic 서버(WLS) 및 Glassfish를 포함하고 있으며, 일반적으로 기업 소프트웨어 어플리케이션을 실행하기 위한 관리(managed) 환경을 제공한다. 최근 클라우드 환경에서 사용하기 위한 기술들이 개발되고 있어, 사용자 또는 테넌트는 클라우드 환경에서 그들의 어플리케이션을 개발하여 실행할 수 있고 해당 환경에서 제공하는 분산(distributed) 리소스를 활용하는 것이 가능하게 되었다. Software application servers include, for example, Oracle WebLogic Server (WLS) and Glassfish, and generally provide a managed environment for running enterprise software applications. Recently, technologies for use in a cloud environment have been developed, enabling users or tenants to develop and execute their applications in the cloud environment and utilize distributed resources provided by the corresponding environment.

본 발명의 일 실시예에 따르면 본 발명은 멀티테넌트 미들웨어 어플리케이션으로부터 호출된 테넌트-미인식 프로그램의 멀티테넌트 실행을 지원하기 위한 시스템 및 방법을 개시한다. 예시적인 방법은 복수의 파티션 및 복수의 테넌트 인식 프로그램을 제공할 수 있으며, 복수의 테넌트-인식 프로그램 각각은 파티션과 연관된다. 상기 방법은 복수의 파티션과 복수의 테넌트-인식 프로그램 각각을 복수의 테넌트의 하나의 테넌트와 연관시킬 수 있다. 상기 방법은 복수의 파티션 중 호출 파티션으로부터 테넌트-미인식 프로세스를 호출할 수 있으며, 호출 파티션은 복수의 테넌트의 하나의 호출 테넌트와 연관된다. 상기 방법은 호출 테넌트에 대한 테넌시 정보를 수집할 수 있다. 그리고, 수집된 테넌시 정보를 기초로 상기 방법은 프로세스 실행 환경 및 리소스를 설정함으로써 호출 테넌트에 테넌트-미인식 프로세스의 실행을 스코프(scope)할 수 있다. According to one embodiment of the present invention, the present invention discloses a system and method for supporting multi-tenant execution of a tenant-unaware program called from a multi-tenant middleware application. An exemplary method may provide a plurality of partitions and a plurality of tenant-aware programs, each of the plurality of tenant-aware programs associated with a partition. The method may associate each of the plurality of partitions and the plurality of tenant-aware programs with one tenant of the plurality of tenants. The method may invoke a tenant-unaware process from a calling partition of a plurality of partitions, and the calling partition is associated with one calling tenant of the plurality of tenants. The method may collect tenancy information for a calling tenant. Also, based on the collected tenancy information, the method may scope execution of a tenant-unrecognized process to a calling tenant by setting a process execution environment and resources.

본 발명의 실시예에 따르면, 컨테이너화된 어플리케이션을 사용하여, 상기 스코프된 실행은 멀티테넌트 미들웨어 환경의 다른 테넌트로부터 테넌트-미인식 프로세스의 런타임 분리를 지원하여 OS 어플리케이션 프로그램의 멀티테넌트 동작을 야기한다. According to an embodiment of the present invention, using containerized applications, the scoped execution supports run-time separation of tenant-unaware processes from other tenants in a multi-tenant middleware environment, resulting in multi-tenant operation of OS application programs.

도 1은 본 발명의 일 실시예에 따른, 어플리케이션 서버, 클라우드 또는 다른 환경에서 멀티-테넌시를 지원하기 위한 시스템을 도시한다.
도 2는 본 발명의 일 실시예에 따른, 어플리케이션 서버, 클라우드 또는 다른 환경에서 멀티-테넌시를 지원하기 위한 시스템을 더 도시한다.
도 3은 본 발명의 일 실시예에 따른, 어플리케이션 서버, 클라우드 또는 다른 환경에서 멀티-테넌시를 지원하기 위한 시스템을 더 도시한다.
도 4는 본 발명의 일 실시예에 따른, 예시적인 멀티테넌트 환경과 함께 사용하기 위한 도메인 구성을 도시한다.
도 5는 본 발명의 일 실시예에 따른, 예시적인 멀티테넌트 환경을 더 도시한다.
도 6은 본 발명의 일 실시예에 따른, 테넌트-미인식 프로세스의 테넌트 스코프된 실행을 위한 시스템을 도시한다.
도 7은 본 발명의 일 실시예에 따른, 테넌트-미인식 프로세스의 테넌트 스코프된 실행을 위한 시스템을 도시한다.
도 8은 본 발명의 일 실시예에 따른, 테넌트-미인식 프로세스의 테넌트 스코프된 실행을 위한 시스템을 도시한다.
도 9는 본 발명의 일 실시예에 따른, 테넌트-미인식 프로세스의 테넌트 스코프된 실행을 위한 환경 및 리소스를 생성하기 위한 예시적인 방법의 흐름도이다.
도 10은 본 발명의 일 실시예에 따른, 프로세스 빌더를 생성하고 구성하기 위한 예시적인 방법의 흐름도이다.
도 11은 본 발명의 일 실시예에 따른, MT 미들웨어 어플리케이션(예컨대, JEE 어플리케이션)으로부터 테넌트-미인식 OS 어플리케이션의 멀티테넌트 실행을 위한 예시적인 방법의 흐름도이다.
도 12는 멀티테넌트 미들웨어 어플리케이션으로부터 호출된 테넌트-미인식 프로세스의 테넌트 스코프된 실행을 지원하기 위한 예시적인 방법의 흐름도이다.
1 illustrates a system for supporting multi-tenancy in an application server, cloud or other environment, according to one embodiment of the present invention.
2 further illustrates a system for supporting multi-tenancy in an application server, cloud or other environment, according to an embodiment of the present invention.
3 further illustrates a system for supporting multi-tenancy in an application server, cloud or other environment, according to an embodiment of the present invention.
4 illustrates a domain configuration for use with an exemplary multi-tenant environment, in accordance with one embodiment of the present invention.
5 further illustrates an exemplary multi-tenant environment, in accordance with one embodiment of the present invention.
6 illustrates a system for tenant scoped execution of a tenant-unaware process, according to one embodiment of the present invention.
7 illustrates a system for tenant scoped execution of a tenant-unaware process, according to one embodiment of the present invention.
8 illustrates a system for tenant scoped execution of a tenant-unaware process, according to one embodiment of the present invention.
9 is a flow diagram of an exemplary method for creating an environment and resources for tenant-scoped execution of a tenant-unaware process, according to one embodiment of the present invention.
10 is a flow diagram of an exemplary method for creating and configuring a process builder, according to one embodiment of the present invention.
11 is a flow diagram of an exemplary method for multi-tenant execution of a tenant-unaware OS application from an MT middleware application (eg, a JEE application), according to an embodiment of the present invention.
12 is a flow diagram of an exemplary method for supporting tenant scoped execution of tenant-unaware processes invoked from multitenant middleware applications.

일 실시예에 따르면, 본 명세서에는 멀티테넌트 미들웨어 어플리케이션에서 호출된 테넌트-미인식(본 명세서에서 다양하게 "테넌트 미인식"으로도 지칭됨) 프로세스의 테넌트 스코프된(scoped) 실행(본 명세서에서 다양하게 "멀티테넌트 실행"으로도 지칭됨)을 지원하는 시스템 및 방법이 개시된다. 예시적인 방법은 복수의 파티션 및 복수의 테넌트-인식(본 명세서에서 다양하게 "테넌트 인식"이라도 지칭됨) 프로그램을 제공할 수 있으며, 복수의 테넌트-인식 프로그램 각각은 파티션과 관련된다. 이 방법은 복수의 파티션과 복수의 테넌트-인식 프로그램 각각을 복수의 테넌트의 하나의 테넌트와 연관시킬 수 있다. 이 방법은 복수의 파티션 중 호출 파티션으로부터 테넌트-미인식 프로세스를 호출할 수 있으며, 호출 파티션은 복수의 테넌트의 호출 테넌트와 연관된다. 이 방법은 호출 테넌트에 대한 테넌시 정보를 수집할 수 있다. 그리고 수집된 테넌시 정보를 기반으로 방법은 프로세스 실행 환경 및 리소스를 설정하여 호출 테넌트에 테넌트 미인식 프로세스의 실행을 스코프(범위 설정)할 수 있다.According to one embodiment, disclosed herein are systems and methods that support tenant-scoped execution (also variously referred to herein as "multitenant execution") of tenant-unaware (also variously referred to herein as "tenant unaware") processes invoked from multitenant middleware applications. Exemplary methods may provide a plurality of partitions and a plurality of tenant-aware (also variously referred to herein as "tenant aware") programs, each of the plurality of tenant-aware programs associated with a partition. The method may associate each of the plurality of partitions and the plurality of tenant-aware programs with one tenant of the plurality of tenants. The method may call a tenant-unaware process from a calling partition of a plurality of partitions, and the calling partition is associated with a calling tenant of the plurality of tenants. This method can collect tenancy information for the calling tenant. Further, based on the collected tenancy information, the method may set a process execution environment and resources to scope (set a scope) the execution of a tenant-unrecognized process to the calling tenant.

본 명세서에 설명된 시스템 및 방법을 사용하여, 일 실시예에 따르면, 운영 시스템상의 네이티브 프로그램/프로세스로서 실행되는 비 자바(non-Java) 컴포넌트를 포함하는 테넌트 인식 JEE 어플리케이션(예컨대, SaaS 어플리케이션)은 테넌트 스코프 방식(tenant scoped manner)으로 동작할 수 있고, 완전한 어플리케이션(단-대-단) 멀티테넌트를 인식하고 분리(isolate)할 수 있다. 즉, 멀티테넌트 어플리케이션 서버 환경 내에서 제공되는 멀티 테넌시 지원은 네이티브 OS상의 MT 어플리케이션 서버 환경 외부에서 지원될 수 있으며, MT 어플리케이션 서버 환경(예컨대, WebLogic MT)내에서 실행되는 컴포넌트/프로그램에 제한되지 않는다. Using the systems and methods described herein, according to one embodiment, a tenant-aware JEE application (e.g., a SaaS application) comprising non-Java components running as native programs/processes on an operating system can operate in a tenant-scoped manner, and be fully application (end-to-end) multi-tenant aware and isolate. That is, multi-tenancy support provided within the multi-tenant application server environment can be supported outside the MT application server environment on the native OS, and is not limited to components/programs executed within the MT application server environment (eg, WebLogic MT).

어플리케이션application 서버(예컨대, 멀티테넌트( Server (e.g. multi-tenant ( MultiTenant)Multitenant) , , MTMT ) 환경) environment

도 1은 본 발명의 일 실시예에 따른 어플리케이션 서버, 클라우드 또는 다른 환경에서 멀티 테넌시를 지원하기 위한 시스템을 도시한다.1 illustrates a system for supporting multi-tenancy in an application server, cloud, or other environment according to an embodiment of the present invention.

도 1에 도시된 바와 같이, 본 발명의 일 실시예에 따르면, 어플리케이션 서버(예컨대, 멀티테넌트, MT) 환경(100) 또는 소프트웨어 어플리케이션의 배치 및 실행을 인에이블하는 다른 컴퓨팅 환경은, 어플리케이션 서버 도메인을 정의하기 위해 런타임(run-time)시에 이용되는 도메인(102)의 구성을 포함하도록 그리고 해당 도메인(102)의 구성에 따라 동작하도록 구성될 수 있다. 1 , according to one embodiment of the present invention, an application server (e.g., multi-tenant, MT) environment 100 or other computing environment that enables the deployment and execution of software applications may be configured to include and operate according to the configuration of the domain 102 used at run-time to define the application server domain.

본 발명의 일 실시예에 따르면, 어플리케이션 서버는 런타임시에 사용되도록 정의된 하나 이상의 파티션(104)을 포함할 수 있다. 각 파티션은 전역적으로 고유 파티션 식별자(ID) 및 파티션 구성과 연관될 수 있고, 리소스 그룹 템플릿(126) 및/또는 파티션-특정 어플리케이션 또는 리소스(128)에 대한 참조와 함께 하나 이상의 리소스 그룹(124)을 더 포함할 수 있다. 도메인-레벨 리소스 그룹, 어플리케이션 및/또는 리소스(140)는 또한 리소스 그룹 템플릿에 대한 참조와 함께 선택적으로 도메인 레벨로 정의될 수 있다.According to one embodiment of the invention, an application server may include one or more partitions 104 defined for use at runtime. Each partition may be associated with a globally unique partition identifier (ID) and partition configuration, and may further include one or more resource groups 124 with references to resource group templates 126 and/or partition-specific applications or resources 128. Domain-level resource groups, applications and/or resources 140 may also optionally be defined at the domain level with references to resource group templates.

각 리소스 그룹 템플릿(160)은 하나 이상의 어플리케이션 A(162), B(164), 리소스 A(166), B(168) 및/또는 다른 배치 가능한 어플리케이션 또는 리소스(170)를 정의할 수 있고 리소스 그룹에 의해 참조될 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 파티션(104)내의 리소스 그룹(124)은 리소스 그룹 템플릿(160)을 참조(190)할 수 있다.Each resource group template 160 may define one or more applications A 162, B 164, resources A 166, B 168 and/or other deployable applications or resources 170 and may be referenced by a resource group. For example, as shown in FIG. 1 , resource group 124 within partition 104 may reference 190 resource group template 160 .

일반적으로 시스템 관리자는 파티션, 도메인 레벨의 리소스 그룹 및 리소스 그룹 템플릿 및 보안 영역을 정의할 수 있고, 파티션 관리자는 예를 들어 파티션 레벨의 리소스 그룹을 생성하거나, 어플리케이션을 파티션에 배치하거나 또는 파티션에 대한 특정 영역(realms)을 참조함으로써 그들 자체의 파티션의 양태를 정의할 수 있다. In general, system administrators can define partitions, domain-level resource groups and resource group templates, and security realms, and partition managers can define aspects of their own partitions, for example, by creating partition-level resource groups, deploying applications to partitions, or referencing specific realms for partitions.

도 2는 본 발명의 일 실시예에 따른 어플리케이션 서버, 클라우드 또는 다른 환경에서 멀티-테넌시를 지원하기 위한 시스템을 추가로 도시한다.2 further illustrates a system for supporting multi-tenancy in an application server, cloud or other environment according to an embodiment of the present invention.

도 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)을 정의할 수 있다. As shown in FIG. 2 , according to one embodiment, a partition 202 may include, for example, a resource group 205 including a reference 206 of a resource group template 210, virtual target (e.g., virtual host) information 207, and pluggable database (PDB) information 208. A resource group template (e.g., 210) may define multiple applications 2111 and B212 along with resources such as, for example, a Java Message Server (JMS) server 213, a store-and-forward (SAF) agent 215, a mail session component 216, or a Java Database Connectivity (JDBC) resource 217.

도 2에 도시된 리소스 그룹 템플릿은 일 예로서 제공되며, 다른 실시예에 따라 다른 유형의 리소스 그룹 템플릿과 엘리먼트가 제공될 수 있다.The resource group template shown in FIG. 2 is provided as an example, and other types of resource group templates and elements may be provided according to other embodiments.

본 발명의 일 실시예에 따르면, 파티션(예컨대, 202) 내의 리소스 그룹이 특정 리소스 그룹 템플릿(예컨대, 210)을 참조(220)하면, 특정 파티션과 관련된 정보는 참조된 리소스 그룹 템플릿과 결합하여 사용되어 파티션-특정 정보(230), 예를 들어, 파티션-특정 PDB 정보를 나타낼 수 있다. 그런 다음 파티션-특정 정보는 어플리케이션 서버에 의해 사용되어 파티션이 사용할 리소스, 예를 들어 PDB 리소스를 구성할 수 있다. 예를 들어, 파티션(202)과 관련된 파티션-특정 PDB 정보는 어플리케이션 서버에 의해, 해당 파티션에 의한 사용을 위해 적절한 PDB(238)를 갖는 컨테이너 데이터베이스(CDB)(236)를 구성(232)할 수 있다.According to one embodiment of the present invention, if a resource group within a partition (e.g., 202) references (220) a specific resource group template (e.g., 210), information related to the specific partition may be used in conjunction with the referenced resource group template to indicate partition-specific information (230), e.g., partition-specific PDB information. The partition-specific information can then be used by the application server to configure the resources that partition will use, such as PDB resources. For example, partition-specific PDB information associated with a partition 202 can cause an application server to construct 232 a container database (CDB) 236 with an appropriate PDB 238 for use by that partition.

유사하게, 본 발명의 일 실시예에 따르면, 특정 파티션과 관련된 가상 타겟 정보는 파티션에 의한 사용을 위해 파티션-특정 가상 타겟(240), 예를 들어 URL (Uniform Resource Locator)(예컨대, http://baylandurgentcare.com)을 통해 액세스할 수 있는 baylandurgentcare.com을 정의하는데 사용될 수 있다. Similarly, according to one embodiment of the present invention, virtual target information associated with a particular partition may be used to define a partition-specific virtual target 240 for use by the partition, e.g., baylandurgentcare.com accessible via a Uniform Resource Locator (URL) (e.g., http://baylandurgentcare.com).

도 3은 일 실시예에 따른 어플리케이션 서버, 클라우드 또는 다른 환경에서 멀티-테넌시를 지원하기 위한 시스템을 추가로 도시한다.3 further illustrates a system for supporting multi-tenancy in an application server, cloud or other environment according to one embodiment.

본 발명의 일 실시예에 따르면, config.xml 구성 파일과 같은 시스템 구성은 해당 파티션과 관련된 리소스 그룹 및/또는 다른 파티션 속성에 대한 구성 엘리먼트를 포함하는 파티션을 정의하는데 사용된다. 값들은 속성 이름/값 쌍을 사용하여 파티션별로 지정될 수 있다.According to one embodiment of the present invention, a system configuration such as a config.xml configuration file is used to define a partition including configuration elements for resource groups and/or other partition attributes associated with that partition. Values can be specified per partition using attribute name/value pairs.

본 발명의 일 실시예에 따르면, 복수의 파티션은 관리 서버/클러스터(242) 내에서 또는 CDB(243)로의 액세스를 제공할 수 있고 웹 계층(web tier)(244)을 통해 액세스 가능한 유사한 환경 내에서 실행될 수 있다. 이것은 예를 들어 하나의 도메인 또는 파티션이 하나 이상의 PDB(CDB의)와 연관되는 것을 가능하게 한다. According to one embodiment of the invention, the plurality of partitions may run within the management server/cluster 242 or within a similar environment that may provide access to the CDB 243 and is accessible via a web tier 244. This enables, for example, one domain or partition to be associated with more than one PDB (CDB's).

본 발명의 일 실시예에 따르면, 복수의 파티션 각각, 이 예에서 파티션 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)를 통해 액세스 가능하다. According to one embodiment of the present invention, each of a plurality of partitions, in this example partition A 250 and partition B 260, may be configured to include a plurality of resources related to that partition. For example, partition A may be configured to include a resource group 251 containing application A1 252, application A2 254, and JMS A 256, with data source A 257 associated with PDB A 259, where the partition is accessible via virtual target A 258. Similarly, partition B 260 can be configured to include a resource group 261 that includes application B1 262, application B2 264, and JMS B 266, along with data source B 267 associated with PDB B 269, where the partition is accessible via virtual target B 268.

상기 실시예들 중 몇몇은 CDB와 PDB의 사용을 도시하고 있지만, 다른 실시예에 따라 다른 유형의 멀티테넌트 또는 비-멀티테넌트 데이터베이스가 지원될 수 있으며, 여기서 특정 구성은 예를 들어 스키마를 사용하거나 또는 다른 데이터베이스의 사용을 통해 각각 파티션에 제공될 수 있다.While some of the above embodiments illustrate the use of CDBs and PDBs, other types of multitenant or non-multitenant databases may be supported according to other embodiments, where specific configurations may be provided to each partition, for example through the use of schemas or other databases.

리소스resource (Resources)(Resources)

본 발명의 일 실시예에 따르면, 리소스는 환경의 도메인에 배치될 수 있는 시스템 리소스, 어플리케이션 또는 다른 리소스 또는 객체이다. 예를 들어, 일 실시예에 따르면, 리소스는 어플리케이션, JMS, JDBC, JavaMail, WLDF, 데이터 리소스이거나, 또는 서버, 클러스터 또는 다른 어플리케이션 서버 타겟에 배치될 수 있는 다른 시스템 리소스 또는 다른 유형의 객체일 수 있다.According to one embodiment of the invention, a resource is a system resource, application or other resource or object that can be deployed in a domain of the environment. For example, according to one embodiment, a resource may be an application, JMS, JDBC, JavaMail, WLDF, data resource, or other system resource or other type of object that may be deployed on a server, cluster, or other application server target.

파티션partition (( PartitionsPartitions ))

본 발명의 일 실시예에 따르면, 파티션은 파티션 식별자(ID) 및 구성과 관련될 수 있는 도메인의 런타임과 관리 서브분할(subdivision) 또는 슬라이스로서, 어플리케이션을 포함할 수 있고 그리고/또는 리소스 그룹과 리소스 그룹 템플릿을 사용하여 도메인 전체 리소스를 참조할 수 있다. According to one embodiment of the invention, a partition is a runtime and administrative subdivision or slice of a domain that can be associated with a partition identifier (ID) and configuration, can contain applications, and/or can reference domain-wide resources using resource groups and resource group templates.

일반적으로 파티션은 그 자체의 어플리케이션을 포함할 수 있고 리소스 그룹 템플릿을 통해 도메인 전체의 어플리케이션을 참조할 수 있으며 그 자체 구성을 가질 수 있다. 파티션 가능한 엔티티는 리소스, 예를 들어 JMS, JDBC, JavaMail, WLDF 리소스, 또는 다른 구성 요소, 예를 들면 JNDI 네임스페이스(namespace), 네트워크 트래픽, 작업 관리자, 보안 정책 및 영역 등을 포함할 수 있다. 멀티테넌트 환경의 맥락에서 시스템은 테넌트와 관련된 파티션의 관리 및 런타임 측면의 액세스를 테넌트에 제공하도록 구성될 수 있다. In general, a partition can contain its own applications, reference domain-wide applications through resource group templates, and have its own configuration. Partitionable entities may include resources such as JMS, JDBC, JavaMail, WLDF resources, or other components such as JNDI namespaces, network traffic, task managers, security policies and realms, and the like. In the context of a multi-tenant environment, the system can be configured to provide tenants with access to the management and runtime aspects of the partitions associated with the tenants.

본 발명의 일 실시예에 따르면, 파티션 내의 각 리소스 그룹은 선택적으로 리소스 그룹 템플릿을 참조할 수 있다. 파티션은 다수의 리소스 그룹을 가질 수 있으며 그들 각각은 리소스 그룹 템플릿을 참조할 수 있다. 각 파티션은 파티션의 리소스 그룹이 참조하는 리소스 그룹 템플리트에 지정되어 있지 않는 구성 데이터에 대한 속성을 정의할 수 있다. 이것에 의해 파티션이 리소스 그룹 템플릿으로 정의된 배치 가능한 리소스를 해당 파티션에서 사용되어야 할 특정 값에 바인딩하는 것으로 기능하도록 할 수 있다. 경우에 따라서 파티션은 리소스 그룹 템플릿에 의해 지정되는 구성 정보를 무효(override)로 할 수 있다.According to an embodiment of the present invention, each resource group in a partition may optionally refer to a resource group template. A partition can have multiple resource groups, each of which can reference a resource group template. Each partition can define attributes for configuration data that are not specified in the resource group template referenced by the partition's resource group. This allows partitions to function as binding deployable resources defined by resource group templates to specific values that should be used in that partition. In some cases, a partition can override configuration information specified by a resource group template.

본 발명의 일 실시예에 따르면, 파티션 구성은 예를 들어 config.xml 구성 파일에 의해 정의된 바와같이, 복수의 구성 엘리먼트, 예를 들어 파티션(그 파티션을 정의하는 속성 및 자식 엘리먼트를 포함하는); 리소스-그룹(파티션에 배치된 어플리케이션과 리소스를 포함하는); 리소스-그룹-템플릿(그 템플릿에 의해 정의된 어플리케이션과 리소스를 포함하는); jdbc-시스템-리소스-무효(jdbc-system-resource-override)(데이터베이스-특정 서비스명, 사용자명 및 패스워드를 포함하는); 및 파티션-특성(partition-properties)(리소스 그룹 템플릿에서 매크로 치환을 위해 사용 가능한 특성 키값 포함하는)을 포함할 수 있다. According to one embodiment of the present invention, a partition configuration comprises a plurality of configuration elements, eg partitions (including attributes and child elements defining the partitions), as defined eg by the config.xml configuration file; resource-groups (containing applications and resources deployed on partitions); a resource-group-template (which contains the applications and resources defined by the template); jdbc-system-resource-override (contains database-specific service name, username and password); and partition-properties (including property key values usable for macro substitution in resource group templates).

시동 후, 시스템은 구성 파일이 제공하는 정보를 사용하여 리소스 그룹 템플릿으로부터 각 리소스에 대한 파티션-특정 구성 엘리먼트를 생성할 수 있다. After startup, the system can use the information provided by the configuration file to create partition-specific configuration elements for each resource from the resource group template.

리소스resource 그룹( group( ResoueceResouece GroupsGroups ))

본 발명의 일 실시예에 따르면, 리소스 그룹은 이름이 부여되어 전체적으로 검증된(fully-qualified) 배치 가능한 리소스의 집합(collection)으로서, 도메인 또는 파티션 레벨로 정의될 수 있고 리소스 그룹 템플릿을 참조할 수 있다. 리소스 그룹에서 리소스는 관리자가 해당 리소스를 시작하거나 해당 리소스에 접속하는 데 필요한 모든 정보, 예를 들어, 데이터 소스에 접속하기 위한 인증서(credential) 또는 어플리케이션에 대한 타겟 정보를 제공하고 있다는 점에서 전체적으로 검증된 것으로 고려된다.According to one embodiment of the present invention, a resource group is a collection of fully-qualified deployable resources given a name, which can be defined at the domain or partition level and can refer to a resource group template. A resource in a resource group is considered fully verified in that the administrator has provided all information required to start or access the resource, such as credentials for accessing a data source or target information for an application.

시스템 관리자는 도메인 레벨 또는 파티션 레벨에서 리소스 그룹을 선언 (declare)할 수 있다. 도메인 레벨에서 리소스 그룹은 관련 리소스를 그룹화하는 편리한 방법을 제공한다. 시스템은 리소스들이 시스템 기동 중에 시작되거나 시스템 셧다운 동안 정지될 수 있도록 그룹화되지 않은 리소스와 동일하게 도메인-레벨 리소스 그룹에서 선언된 리소스를 관리할 수 있다. 관리자는 또한 그룹 내에 있는 리소스를 개별적으로 정지, 시작 또는 삭제할 수 있으며, 그룹 상에서 동작되어 암묵적으로 그룹 내의 모든 리소스에 작용할 수 있다. 예를 들어, 리소스 그룹을 정지시켜 아직 정지되지 않은 해당 그룹 내의 모든 리소스를 정지시키고, 리소스 그룹을 시작하여 아직 시작되지 않은 그룹 내의 임의의 리소스를 시작시키며, 리소스 그룹을 삭제하여 해당 그룹에 포함된 모든 리소스를 삭제한다. System administrators can declare resource groups at the domain level or partition level. At the domain level, resource groups provide a convenient way to group related resources. The system can manage resources declared in domain-level resource groups the same as ungrouped resources so that the resources can be started during system startup or stopped during system shutdown. Administrators can also individually stop, start, or delete resources within a group, and act on the group to implicitly affect all resources within the group. For example, stop a resource group to stop all resources in the group that have not yet been stopped, start a resource group to start any resource in the group that has not yet been started, and delete a resource group to delete all resources in the group.

파티션 레벨에서, 시스템 또는 파티션 관리자는 임의의 보안 제한에 따라 파티션에서 0개 또는 그 이상의 리소스 그룹을 구성할 수 있다. 예를 들어, SaaS 사용 사례에서, 다양한 파티션-레벨 리소스 그룹은 도메인-레벨 리소스 그룹 템플릿을 참조할 수 있다. 반면 PaaS 사용 사례에서는, 리소스 그룹 템플리트를 참조하지 않고 대신 그 파티션내에서만 사용 가능한 어플리케이션 및 관련 리소스를 나타내는 파티션-레벨 리소스 그룹이 생성될 수 있다. At the partition level, the system or partition manager can configure zero or more resource groups in the partition, subject to arbitrary security restrictions. For example, in SaaS use cases, various partition-level resource groups can reference domain-level resource group templates. In contrast, in a PaaS use case, a partition-level resource group can be created that does not reference a resource group template, but instead represents applications and related resources available only within that partition.

본 발명의 일 실시예에 따르면, 리소스 그룹화는 어플리케이션과 해당 어플리케이션이 도메인내에서 별개의 관리 유닛으로서 사용하는 리소스를 함께 그룹화하기 위해 사용될 수 있다. 예를 들어, 이하에서 설명되는 의료 기록(Medical Records: MedRec) 어플리케이션에서, 리소스 그룹화는 MedRec어플리케이션 및 그의 리소스를 정의한다. 다수의 파티션은 각각 파티션-특정 구성 정보를 이용하여 동일한 MedRec 리소스 그룹을 실행할 수 있고, 이에 따라 각 MedRec 인스턴스의 일부인 어플리케이션이 각각의 파티션에 특정될 수 있다. According to one embodiment of the present invention, resource grouping may be used to group together applications and resources used by the applications as separate management units within a domain. For example, in the Medical Records (MedRec) application described below, a resource grouping defines the MedRec application and its resources. Multiple partitions can each run the same MedRec resource group using partition-specific configuration information, so applications that are part of each MedRec instance can be specific to each partition.

리소스resource 그룹 템플릿( group template ( ResourceResource GroupGroup TemplatesTemplates ))

본 발명의 일 실시예에 따르면, 리소스 그룹 템플릿은 리소스 그룹으로부터 참조될 수 있고 도메인 레벨에서 정의되는 배치 가능한 리소스의 집합이며, 그의 리소스를 활성화 시키는데 필요한 정보들 중 일부는 파티션 레벨 구성의 사양 (specification)을 지원하도록, 템플릿 자체의 일부로 저장되지 않을 수 있다. 도메인은 임의 수의 리소스 그룹 템플릿을 포함할 수 있고, 이러한 리소스 그룹 템플릿 각각은 예를 들어, 하나 이상의 관련 자바 어플리케이션과 그 어플리케이션이 의존하는 리소스를 포함할 수 있다. 이러한 리소스에 대한 정보 중 일부는 모든 파티션에 걸쳐 동일할 수 있고, 반면에 다른 정보는 파티션마다 변경될 수 있다. 모든 구성이 도메인 레벨로 특정될 필요는 없으며, 대신 파티션 레벨 구성은 매크로 또는 특성 이름/값 쌍의 사용을 통해 리소스 그룹 템플릿내에서 특정될 수 있다. According to one embodiment of the present invention, a resource group template is a set of deployable resources that can be referenced from a resource group and defined at the domain level, and some of the information required to activate its resources may not be stored as part of the template itself, to support the specification of partition level configuration. A domain can contain any number of resource group templates, and each of these resource group templates can contain, for example, one or more related Java applications and the resources on which the applications depend. Some of the information about these resources may be the same across all partitions, while other information may change from partition to partition. Not all configurations need to be specified at the domain level, instead partition level configurations can be specified within resource group templates through the use of macros or property name/value pairs.

본 발명의 일 실시예에 따르면, 특정 리소스 그룹 템플릿은 하나 이상의 리소스 그룹에 의해 참조될 수 있다. 일반적으로, 임의의 주어진 파티션 내에서, 리소스 그룹 템플릿은 한 번에 하나의 리소스 그룹에 의해서만 참조될 수 있는데, 즉, 동일한 파티션 내의 다수의 리소스 그룹에 의해 동시에 참조될 수 없다. 하지만, 다른 파티션에 있는 다른 리소스 그룹에 의해서는 동시에 참조될 수 있다. 리소스 그룹을 포함하는 객체, 예를 들어 도메인 또는 파티션은 특성 이름/값 할당을 이용하여 리소스 자원 템플릿에서 임의의 토큰값을 설정할 수 있다. 시스템이 참조하는 리소스 그룹을 이용하여 리소스 그룹 템플릿을 활성화시키면, 시스템은 이들의 토큰을 리소스 그룹이 포함되는 객체에서 설정된 값으로 대체할 수 있다. 경우에 따라서 시스템은 또한 정적으로 구성된 리소스 그룹 템플릿 및 파티션을 이용하여 파티션/템플릿의 조합마다 런타임 구성을 생성할 수 있다. According to one embodiment of the invention, a particular resource group template may be referenced by one or more resource groups. In general, within any given partition, a resource group template can only be referenced by one resource group at a time, i.e., it cannot be simultaneously referenced by multiple resource groups within the same partition. However, it can be simultaneously referenced by other resource groups in different partitions. An object containing a resource group, eg a domain or partition, may set an arbitrary token value in a resource resource template using a property name/value assignment. When the system activates a resource group template using the resource group it references, the system can replace its token with the value set in the object containing the resource group. In some cases, the system can also use statically configured resource group templates and partitions to create runtime configurations for each partition/template combination.

예를 들어 SaaS 사용 사례에서, 시스템은 그들을 사용할 각 파티션에 대한 1회의 활성화를 포함하여, 동일한 어플리케이션 및 리소스를 복수회 활성화할 수 있다. 관리자가 리소스 그룹 템플릿을 정의하는 경우, 그들은 다른 곳에서 제공될 정보를 표현하기 위해 토큰을 이용할 수 있다. 예를 들어, CRM-관련 데이터 리소스에 접속할 때 사용되는 사용자 이름은 리소스 그룹 템플릿에서 /${CRMDataUsername}으로 표시될 수 있다. For example, in a SaaS use case, the system can activate the same applications and resources multiple times, including one activation for each partition that will use them. When administrators define resource group templates, they can use tokens to represent information to be provided elsewhere. For example, the username used when accessing CRM-related data resources could be represented as /${CRMDataUsername} in the resource group template.

테넌트tenant (tenants)(tenants)

본 발명의 일 실시예에 따르면, 멀티테넌트(MT) 어플리케이션 서버 환경과 같은 멀티테넌트 환경에서, 테넌트는 하나 이상의 파티션 및/또는 하나 이상의 테넌트 인식 어플리케이션(tenant-aware application)에 의해 표현될 수 있는 엔티티이거나 또는 하나 이상의 파티션 및/또는 하나 이상의 테넌트 인식 어플리케이션에 관련될 수 있는 엔티티이다. According to one embodiment of the invention, in a multi-tenant environment, such as a multi-tenant (MT) application server environment, a tenant is an entity that can be represented by one or more partitions and/or one or more tenant-aware applications, or an entity that can be associated with one or more partitions and/or one or more tenant-aware applications.

예를 들어, 테넌트는 개별 사용자 조직, 예를 들어, 상이한 외부 회사, 또는 특정 기업체 내의 상이한 부서(예건대, HR 및 재무 부서들)를 나타낼 수 있으며, 이들 각각은 상이한 파티션과 관련될 수 있다. 테넌트의 범용 고유 식별자(테넌트 ID)는 특정 시점에 특정 사용자를 특정 테넌트와 관련시킨다. 시스템은 예를 들어 사용자 신원 저장소(user identity store)를 참조하여 사용자 신원으로부터 특정 사용자가 어느 테넌트에 속하는지 도출할 수 있다. 사용자 신원은 시스템이 사용자가 수행할 권한을 받은 그러한 액션들을 실시(enforce)할 수 있도록 할 수 있는데, 여기에는 사용자가 어느 테넌트에 속할 수 있는지를 포함하나, 이것만으로 한정되지는 않는다.For example, a tenant may represent an individual user organization, eg, a different external company, or different departments within a particular enterprise (eg, HR and finance departments), each of which may be associated with a different partition. A tenant's universally unique identifier (tenant ID) associates a particular user with a particular tenant at a particular point in time. The system can derive which tenant a particular user belongs to from the user identity, for example by consulting a user identity store. User identity may enable the system to enforce those actions that the user is authorized to perform, including but not limited to which tenants the user may belong to.

본 발명의 일 실시예에 따르면, 시스템은 서로 다른 테넌트의 관리 및 런타임을 서로 분리시킬 수 있다. 예를 들어, 테넌트는 자신의 어플리케이션들의 일부 거동(behavior) 및 이들이 액세스하게 되는 리소스들을 구성할 수 있다. 시스템은 특정 테넌트가 또 하나의 다른 테넌트에 속하는 아티팩트(artifact)를 관리하지 못하도록 확실히 보장할 수 있고, 런타임 시에 특정 테넌트를 대신하여 작업을 행하는 어플리케이션이 다른 테넌트와 관련된 리소스를 참조하지 않고 오로지 해당 테넌트와 관련된 리소스들만 참조하도록 할 수 있다.According to an embodiment of the present invention, the system can separate management and runtime of different tenants from each other. For example, a tenant can configure some behavior of their applications and the resources they have access to. The system can ensure that a specific tenant does not manage artifacts belonging to another tenant, and at runtime, an application performing work on behalf of a specific tenant can only refer to resources related to that tenant without referring to resources related to other tenants.

본 발명의 일 실시예에 따르면 테넌트-비인식 어플리케이션은 어플리케이션이 응답하고 있는 요구를 어떤 사용자가 제시했는지에 관계없이, 어플리케이션이 이용하는 어떤 리소스에도 액세스 가능해지도록 명시적으로 테넌트를 처리하는 로직(logic)을 포함하지 않는 어플리케이션이다. 대조적으로, 테넌트-인식 어플리케이션은 테넌트를 명시적으로 처리하는 로직을 포함한다. 예를 들어, 사용자의 신원에 근거하여 어플리케이션은 사용자가 속하는 테넌트를 도출할 수 있고 그 정보를 사용하여 테넌트-특정 리소스에 액세스할 수 있다.According to one embodiment of the present invention, a tenant-unaware application is an application that does not include logic to explicitly handle tenants so that it can access any resource used by the application, regardless of which user presents the request to which the application is responding. In contrast, tenant-aware applications contain logic that explicitly deals with tenants. For example, based on a user's identity, an application can derive which tenant the user belongs to and use that information to access tenant-specific resources.

본 발명의 일 실시예에 따르면 시스템은 테넌트 인식이 되도록 명시적으로 기록된 어플리케이션을 사용자가 배치하는 것을 가능하게 하며 이것에 의해 어플리케이션 개발자는 현재의 테넌트의 테넌트 ID를 취득할 수 있다. 이어서, 테넌트 인식 어플리케이션은 테넌트 ID를 사용하여 어플리케이션의 단일 인스턴스를 사용하고 있는 복수의 테넌트를 처리(handling)할 수 있다. According to one embodiment of the present invention, the system enables users to deploy applications explicitly written to be tenant aware, whereby application developers can obtain the tenant ID of the current tenant. A tenant-aware application can then use the tenant ID to handle multiple tenants using a single instance of the application.

예를 들어, 단일 진료실 또는 병원을 지원하는 MedRec 어플리케이션은 두 개의 다른 파티션 또는 테넌트, 예를 들어 베이랜드 응급 진료(Bayland Urgent Care) 테넌트와 밸리 헬스(Valley Health) 테넌트를 노출시킬 수 있고, 그 각각은 기반이 되는 어플리케이션 코드를 변경하지 않고 개별 테넌트-특정 리소스(예컨대, 개별 PDB들)에 액세스할 수 있다. For example, a MedRec application supporting a single clinic or hospital may expose two different partitions or tenants, e.g., a Bayland Urgent Care tenant and a Valley Health tenant, each of which can access individual tenant-specific resources (e.g., individual PDBs) without changing the underlying application code.

예시적인 도메인 구성 및 멀티테넌트 환경(Exemplary Domain Configuration and Multi-Tenant Environment)Exemplary Domain Configuration and Multi-Tenant Environment

본 발명의 일실시예에 따르면, 어플리케이션은 도메인 레벨로 리소스 그룹 템플릿에 배치되거나, 또는 파티션에 스코프되거나 또는 도메인에 스코프되는 리소스 그룹에 배치될 수 있다. 어플리케이션 구성은 어플리케이션별로 또는 파티션별로 특정된 배치 계획을 이용하여 무효화될 수 있다. According to one embodiment of the present invention, an application can be deployed in a resource group template at the domain level, or in a resource group that is scoped to a partition or scoped to a domain. Application configuration can be overridden using a placement plan specified on a per-application or per-partition basis.

도 4는 일 실시예에 따른 예시적인 멀티테넌트 환경에서 사용되는 도메인 구성을 도시한다.4 illustrates a domain configuration used in an exemplary multi-tenant environment according to one embodiment.

본 발명의 일 실시예에 따르면, 시스템이 파티션을 시작할 때, 시스템은 제공된 구성에 따라 각각의 데이터베이스 인스턴스에 대해서 각 파티션마다 하나씩 가상 타겟(예컨대, 가상 호스트)과 연결 풀(connection pool)을 생성한다.According to one embodiment of the present invention, when the system starts a partition, the system creates a virtual target (e.g., virtual host) and connection pool, one for each partition, for each database instance according to the provided configuration.

전형적으로 각각의 리소스 그룹 템플릿은 하나 이상의 관련 어플리케이션 및 이러한 어플리케이션이 의존하는 리소스를 포함할 수 있다. 각각의 파티션은 자신이 참조하는 리소스 그룹 템플릿에서 특정되지 않은 구성 데이터를 제공할 수 있는데, 이러한 제공은 파티션과 관련된 특정 값에 리소스 그룹 템플릿의 배치 가능한 리소스를 바인딩함으로써 이루어질 수 있으며, 경우에 따라서 리소스 그룹 템플릿에 의해 특정된 몇 개의 구성 정보를 무효로 하는 것을 포함할 수 있다. 이것에 의해 시스템은 각 파티션이 정의한 특성값을 사용하여 각 파티션마다 리소스 그룹 템플릿에 의해 다르게 표현되는 어플리케이션을 활성화시킬 수 있다.Each resource group template may typically contain one or more related applications and the resources on which those applications depend. Each partition can provide configuration data not specified in the resource group template it references, which can be done by binding deployable resources in the resource group template to specific values associated with the partition, and in some cases may include overriding some configuration information specified by the resource group template. In this way, the system can activate applications differently expressed by the resource group template for each partition using the characteristic values defined by each partition.

일부 인스턴스에서, 파티션은 리소스 그룹 템플릿을 참조하지 않는 리소스 그룹을 포함하거나 또는 자신의 파티션 스코프된 배치 가능한 리소스를 직접적으로 정의하는 리소스 그룹을 포함할 수 있다. 파티션 내에 정의된 어플리케이션 및 데이터 소스는 대체로 해당 파티션에서만 사용할 수 있다. 리스소들은 <partitionName>/<resource JNDI name> 또는 domain:<resource JNDI name>을 사용하여 여러 파티션에서 액세스될 수 있도록 배치될 수 있다.In some instances, a partition may contain resource groups that do not reference resource group templates, or that directly define their own partition-scoped deployable resources. Applications and data sources defined within a partition are usually available only to that partition. Resources can be deployed so that they can be accessed from multiple partitions using <partitionName>/<resource JNDI name> or domain:<resource JNDI name>.

예를 들어, MedRec 어플리케이션은 복수의 자바 어플리케이션, 데이터 소스, JMS 서버 및 메일 세션을 포함할 수 있다. 다수의 테넌트에 대해 MedRec 어플리케이션을 실행하기 위해, 시스템 관리자는 단일 MedRec 리소스 그룹 템플릿을 정의할 수 있고, 템플릿에서 이러한 배치 가능한 리소스들을 선언할 수 있다.For example, a MedRec application may include multiple Java applications, data sources, JMS servers and mail sessions. To run a MedRec application for multiple tenants, a system administrator can define a single MedRec Resource Group template and declare these deployable resources in the template.

도메인-레벨의 배치 가능한 리소스와는 대조적으로, 리소스 그룹 템플릿에서 선언된 배치 가능한 리소스는 템플릿에서 완전히 구성되지 않을 수 있거나, 또는 일부 구성 정보가 없기 때문에 그대로(as-is) 활성화될 수 없다. In contrast to domain-level deployable resources, deployable resources declared in a resource group template may not be fully configured in the template, or cannot be activated as-is because some configuration information is missing.

예를 들어, 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)을 포함할 수 있다.For example, a MedRec resource group template may declare a data source used by an application, but may not specify a URL to connect to a database. Partitions related to different tenants, e.g., partition BUC-A 290 (Bayland Urgent Care: BUC) and partition VH-A 292 (Valley Health: VH), may reference one or more resource group templates by including MedRec Resource Groups 293 and 294, respectively, which reference (296, 297) MedRec Resource Group templates. These references can then be used to create 302, 306 virtual targets/virtual hosts for each tenant, which may include the virtual host baylandurgentcare.com 304 associated with the BUC-A partition used by Bayland emergency care tenants and the virtual host valleyhealth.com 308 associated with the VH-A partition used by Valley Health tenants.

도 5는 본 발명의 일 실시예에 따른 예시적인 멀티-테넌트 환경을 더 도시한다. 도 5에 도시된 바와 같이, 그리고 본 발명의 일 실시예에 따른, 두 개의 파티션이 MedRec 리소스 그룹 템플릿을 참조하는 전술한 예로부터 예시를 계속하면, 서블릿 엔진(servlet engine)(310)은 복수의 테넌트 환경, 본 예에서는 베이랜드 응급 진료 의사 테넌트 환경(320) 및 밸리 헬스 의사 테넌트 환경(330)을 지원하기 위해 이용될 수 있다. 5 further depicts an exemplary multi-tenant environment in accordance with one embodiment of the present invention. Continuing the example from the foregoing example where two partitions refer to the MedRec resource group template, as shown in FIG. 5 and in accordance with one embodiment of the present invention, servlet engine 310 may be used to support multiple tenant environments, in this example a Bayland emergency physician tenant environment 320 and a Valley Health physician tenant environment 330.

본 발명의 일 실시예에 따르면, 각각의 파티션(321, 331)은 해당하는 테넌트 환경으로 유입하는 트래픽을 받아들이는 상이한 가상 타겟을 정의할 수 있고, 아울러 파티션 및 그의 리소스(324, 334)에 접속하기 위한 상이한 URL(322, 332)을 정의할 수 있는데, 본 예에서는 베이랜드 응급 진료 데이터베이스 또는 밸리 헬스 데이터베이스를 각각 포함할 수 있다. 동일한 어플리케이션 코드가 양쪽 데이터베이스 모두에 대해 실행될 수 있으므로 데이터베이스 인스턴스는 호환 가능한 스키마를 사용할 수 있다. 시스템이 파티션을 개시할 때, 시스템은 각각의 데이터베이스 인스턴스에 대한 가상 타겟과 연결 풀을 생성할 수 있다.According to one embodiment of the present invention, each partition 321, 331 may define a different virtual target that accepts traffic flowing into the corresponding tenant environment, and may also define different URLs 322, 332 for accessing the partition and its resources 324, 334, which in this example may include the Bayland Emergency Medical Database or the Valley Health Database, respectively. Because the same application code can be run against both databases, database instances can use compatible schemas. When the system initiates partitions, it can create virtual targets and connection pools for each database instance.

OSOS 프로그램의 of the program 테넌트tenant 스코프된scoped 실행( execution( TenantTenant ScopedScoped ExecutionExecution ofof OSOS Programs) Programs)

본 발명의 일 실시예에 따르면, 본 발명에 기술된 방법 및 시스템은 OS(즉, 테넌트-미인식) 프로그램들, 어플리케이션들 및 프로세스들(이후 "OS 프로그램", "OS 어플리케이션", " OS 프로세스 ","비 테넌트 인식 프로그램 ","비 테넌트 인식 어플리케이션 " 및 "비 테넌트 인식 프로세스"로 다양하게 참조됨)를 지원하는 테넌트 스코프된(scoped) 실행을 지원할 수 있다. According to one embodiment of the present invention, the methods and systems described herein may support tenant scoped execution that supports OS (i.e., tenant-unaware) programs, applications, and processes (hereinafter variously referred to as “OS programs,” “OS applications,” “OS processes,” “non-tenant aware programs,” “non-tenant aware applications,” and “non-tenant aware processes”).

전형적으로, 어플리케이션이 MT 환경 내에서 실행될 때, 어플리케이션은 테넌트로 스코프되는데(scoped), 이것은 테넌트 인식 프로그램에 의해 액세스된 라이브러리 및 리소스가 예를 들어, MT 환경 내의 다른 테넌트와 분리(isolate)된다는 것을 의미한다.Typically, when an application runs within an MT environment, the application is scoped to the tenant, which means that libraries and resources accessed by tenant aware programs are isolated from other tenants within the MT environment, for example.

그러나, MT 환경에서 동작하는 테넌트 인식 프로그램이 네이티브 OS상에서 동작하는 테넌트-미인식 어플리케이션(예컨대, C, C ++, Perl 등)을 호출할 때, OS상에서 작동하는 이들 프로그램 사이에 거의 또는 전혀 분리가 없다는 점에서 문제가 발생할 수 있다. 즉, 범용 운영 체제는 테넌시에 대한 개념이 없어 MT 어플리케이션(즉, JEE 어플리케이션)과 연관된 테넌시(즉, MT 어플리케이션의 발신호와 관련된 테넌시 정보)를 알지 못한다. 이것은 공통 환경내에서 OS 프로그램을 실행할 수 있고 공유된 OS 리소스(예컨대, 파일, 프로세스, 데이터베이스)를 사용할 수 있는데, 그러면 별도의 테넌트 어플리케이션이 외부 OS 어플리케이션(예컨대, 테넌트 미인식 어플리케이션)을 호출할 때 런타임 구분(separation)/분리(isolation)뿐만 아니라 테넌트 컨텍스트가 손실될 수 있다. However, when a tenant-aware program running in the MT environment calls a tenant-unaware application (e.g., C, C++, Perl, etc.) running on a native OS, problems may arise in that there is little or no separation between these programs running on the OS. That is, the general-purpose operating system does not have a concept of tenancy, and therefore does not know tenancy associated with the MT application (ie, JEE application) (ie, tenancy information related to an outgoing call of the MT application). It can run OS programs within a common environment and use shared OS resources (e.g. files, processes, databases), which can then lose tenant context as well as runtime separation/isolation when separate tenant applications call external OS applications (e.g. tenant unaware applications).

도 6은 본 발명의 일 실시예에 따른 테넌트-미인식 프로세스의 테넌트 스코프된 실행을 위한 시스템을 도시한다. 도 6에 도시된 바와 같이, 멀티테넌트 어플리케이션 서버 환경(600)(예컨대, WebLogic 멀티테넌트)은 테넌트 1 파티션(601) 및 테넌트 2 파티션(605)과 같은 다수의 테넌트 파티션을 포함할 수 있다. 테넌트 1 파티션과 테넌트 2 파티션 모두는 각각 JEE 어플리케이션(602, 606)과 같은 어플리케이션과 연관될 수 있으며, 이들 어플리케이션은 테넌트의 각각의 데이터베이스(604, 608)의 액세스를 허용하는 데이터 소스(603, 607)와 각각 연관된다. 6 illustrates a system for tenant scoped execution of a tenant-unaware process according to one embodiment of the present invention. As shown in FIG. 6 , a multi-tenant application server environment 600 (eg, WebLogic multi-tenant) may include multiple tenant partitions, such as a tenant 1 partition 601 and a tenant 2 partition 605 . Both the Tenant 1 partition and the Tenant 2 partition may be associated with applications, such as JEE applications 602 and 606, respectively, which are associated with data sources 603 and 607 that allow access to the tenant's respective databases 604 and 608, respectively.

본 발명의 일 실시예에 따르면, 테넌트 2와 연관된 JEE 어플리케이션과 같은 어플리케이션은, 예를 들어 네이티브 OS(610) 내의 멀티테넌트 어플리케이션 서버 외부에 위치하는 OS 프로그램(호출 프로세스)을 호출할 수 있다. 이러한 상황은 예를 들어, MT 어플리케이션 서버(예컨대, Perl 스크립트, C 프로그램 ..등)에 국한되지 않는 MT 어플리케이션의 컴포넌트가 있을 때 발생할 수 있다. 이러한 어플리케이션(즉, MT 어플리케이션 서버 외부에서 실행되는 외부 OS 컴포넌트에 의존하는 MT 어플리케이션들)은 복합 어플리케이션으로 지칭될 수 있다. 테넌트 2와 관련된 JEE 어플리케이션은 MT 환경에서 실행되며 런타임에 관련된 테넌트 컨텍스트를 갖는다.According to one embodiment of the present invention, an application such as a JEE application associated with tenant 2 may call an OS program (calling process) located outside the multi-tenant application server within the native OS 610, for example. This situation may arise, for example, when there are components of MT applications that are not limited to MT application servers (eg Perl scripts, C programs, etc.). Such applications (i.e., MT applications that depend on external OS components running outside of the MT application server) may be referred to as composite applications. A JEE application associated with Tenant 2 runs in the MT environment and has a Tenant context associated with it at runtime.

본 발명의 일 실시예에 따르면, MT 어플리케이션(예컨대, JEE 어플리케이션)이 OS 프로그램/어플리케이션(즉, 프로세스 620)을 호출할 때, MT 어플리케이션은 다수의 변수(625)(즉, 환경 변수)를 설정하여 JEE 어플리케이션에 사용할 수 있는 테넌트 컨텍스트를 확장/전파할 수 있다. 이러한 변수는 테넌트 ID, 테넌트 이름, 테넌트 파일시스템(TFS) 루트; 입력 및 출력 서브디렉토리가 있는 TFS하의 프로세스 작업 디렉토리; 테넌트 DB 접속 문자열 및 테넌트 LDAP(Lightweight Directory Access Protocol) 디렉토리 URL을 포함할 수 있다. According to one embodiment of the present invention, when an MT application (e.g., JEE application) calls an OS program/application (i.e., process 620), the MT application may set a number of variables 625 (i.e., environment variables) to extend/propagate tenant contexts available to the JEE application. These variables include tenant ID, tenant name, tenant filesystem (TFS) root; process working directory under TFS with input and output subdirectories; It may include the tenant DB connection string and the tenant Lightweight Directory Access Protocol (LDAP) directory URL.

본 발명의 일 실시예에 따르면, MT 어플리케이션 서버는 MT 어플리케이션 서버 환경(600)에 탑재된 각 테넌트를 위한 가상 테넌트 파일시스템(630)을 관리할 수 있다. 이 가상 테넌트 파일시스템은 테넌트가 탑재될 때 어플리케이션 서버 관리의 일부로서 생성/설정될 수 있다. 가상 테넌트 파일시스템들은 OS(610)의 일부로서, MT 어플리케이션 서버 환경에서 현재 활성 상태인 각 테넌트에 대해 하나의 가상 테넌트 파일시스템을 갖는다. According to an embodiment of the present invention, the MT application server can manage the virtual tenant file system 630 for each tenant installed in the MT application server environment 600. This virtual tenant file system can be created/configured as part of application server management when a tenant is mounted. Virtual tenant file systems are part of the OS 610, and have one virtual tenant file system for each tenant currently active in the MT application server environment.

본 발명의 일 실시예에 따르면, MT 어플리케이션(예컨대, JEE 어플리케이션)이 OS 프로세스(즉, 테넌트 미인식 프로세스)를 호출할 때, MT 어플리케이션은 테넌트의 가상 파일시스템 하의 임시 프로세스 작업 디렉토리를 추가로 생성할 수 있다. 하나 이상의 OS 프로세스가 MT 어플리케이션에 의해 호출되는 경우, MT 어플리케이션은 호출된 각 OS 프로세스를 위한 하나의 임시 작업 디렉토리를 생성할 수 있다. 가상 파일시스템 하의 임시 작업 디렉토리를 생성할 때 MT 어플리케이션은 입력, 출력, 오류 및 데이터베이스 디렉토리를 위한 임시 작업 디렉토리 하의 서브디렉토리들을 추가로 생성할 수 있다(호출된 각 OS 프로세스에 대해). 이러한 서브디렉토리는 호출된 OS 프로세스의 재지정된(redirected) stdin(입력 스트림), stdout(출력 스트림) 및 stderr(오류 스트림)을 받아들일(accept) 수 있다. 각 입력 서브디렉토리는 프로세스 입력 파일로 설정될 수 있다. 각 출력 서브디렉토리는 프로세스 출력 파일을 캡처할 수 있다. 각 오류 서브디렉토리는 프로세스 오류(예컨대, stderr) 메시지를 캡처할 수 있다. 가상 테넌트-특정 파일시스템은 OS 스토리지(640)와 같은 네이티브 스토리지와 연관될 수 있다.According to an embodiment of the present invention, when an MT application (eg, JEE application) calls an OS process (ie, a process not recognized by the tenant), the MT application may additionally create a temporary process working directory under the tenant's virtual file system. When more than one OS process is called by an MT application, the MT application can create one temporary working directory for each called OS process. When creating the temporary working directory under the virtual filesystem, the MT application may additionally create subdirectories under the temporary working directory for the input, output, error and database directories (for each OS process invoked). These subdirectories can accept redirected stdin (input stream), stdout (output stream) and stderr (error stream) of the called OS process. Each input subdirectory can be set to a process input file. Each output subdirectory can capture process output files. Each error subdirectory can capture process error (eg stderr) messages. A virtual tenant-specific filesystem may be associated with native storage such as OS storage 640 .

본 발명의 일 실시예에 따르면, 프로세스 빌더(builder)는 클라이언트가 OS 프로그램/어플리케이션에 대한 명령 라인을 특정하여 실행하고, 프로세스 환경에서 설정하기 위한 환경 변수를 구성하고, 프로세스 작업 디렉토리를 구성하고, 프로세스 입력, 출력 및 오류 스트림을 파일시스템의 파일로 재지정할 수 있는 API(예컨대, Java ProcessBuilder API)를 포함할 수 있다. 프로세스 빌더는 프로세스 환경, 프로세스 작업 디렉토리 및 프로세스 입력 스트림/출력 스트림/오류 스트림 재지정과 같은 프로세스(즉, OS 프로세스)가 시작되기 전에 특정 프로세스 특성을 설정하거나 구성하도록 허용할 수 있다. According to one embodiment of the present invention, a process builder may include an API (e.g., a Java ProcessBuilder API) that allows a client to specify and execute a command line for an OS program/application, configure environment variables to set in the process environment, configure process working directories, and redirect process input, output, and error streams to files on the filesystem. A process builder may allow certain process properties to be set or configured before a process (i.e. OS process) starts, such as process environment, process working directory, and redirection of process input streams/output streams/error streams.

본 발명의 일 실시예에 따르면, MT 어플리케이션이 OS 프로세스를 호출할 때, 프로세스 빌더(예컨대, 프로세스 빌더 인스턴스)를 생성하고 이용할 수 있다. MT 어플리케이션의 테넌시 컨텍스트는 환경 변수 설정 및 프로세스 작업 디렉토리 생성 및 구성을 포함하여 프로세스 빌더 API 호출의 일부로 전파될 수 있다. 프로세스 작업 디렉토리와 함께 환경 변수를 사용함으로써 프로세스 빌더는 테넌시 컨텍스트내에서 테넌트 미인식 프로세스(예컨대, OS프로세스)의 실행이 국한되는/한정되는(scoped/confined) 리소스(환경 변수, 프로세스 작업 디렉토리, 재지정된 입력/출력 파일, 데이터베이스 접속 설명자(descriptor), LDAP 디렉토리, 월렛)를 할당하도록 구성될 수 있다. 이러한 방식으로, 테넌트 미인식 프로세스(예컨대, OS 프로세스)는 호출하는 테넌트와 테넌트 지정된 가상 파일시스템하에 특정되고, MT 어플리케이션 서버 환경(600)의 다른 테넌트가 생성하거나 소유하는 파일 및 자원과 분리된 작업 디렉토리를 가져온다.According to an embodiment of the present invention, when an MT application calls an OS process, a process builder (eg, a process builder instance) may be created and used. The MT application's tenancy context can be propagated as part of the Process Builder API call, including setting environment variables and creating and configuring process working directories. By using environment variables along with process working directories, process builders can be configured to assign resources (environment variables, process working directories, redirected input/output files, database connection descriptors, LDAP directories, wallets) to which the execution of tenant-unaware processes (e.g., OS processes) are scoped/confined within the tenancy context. In this way, a tenant-unaware process (e.g., an OS process) is specified under the calling tenant and tenant-specified virtual filesystem, and gets a working directory separate from files and resources created or owned by other tenants of the MT application server environment 600.

본 발명의 일 실시예에 따르면, 테넌트 미인식 프로세스는 재지정된 프로세스 I/O 스트림에 대해 OS 파일시스템 하의 테넌트-특정 폴더에 할당되며, 테넌트-특정 액세스 인증서를 사용하여 테넌트와 관련된 데이터베이스에 접속하고, 테넌트 LDAP 디렉토리를 사용한다. 테넌트-특정 데이터베이스 접속 문자열/설명자는 프로그램이 테넌트 데이터베이스와 투명하게 작업할 수 있도록 한다. 테넌트-특정 인증서는 테넌트의 가상 파일시스템에 있는 프로세스 작업 디렉토리하의 데이터베이스 서브디렉토리에 설정된 월렛(wallet)에서 구성될 수 있다. According to one embodiment of the present invention, a tenant-unaware process is assigned a tenant-specific folder under the OS filesystem for redirected process I/O streams, uses tenant-specific access credentials to access a database associated with the tenant, and uses the tenant LDAP directory. Tenant-specific database connection strings/descriptors allow programs to work transparently with the tenant database. Tenant-specific certificates can be configured in a wallet set in the database subdirectory under the process working directory in the tenant's virtual filesystem.

본 발명의 일 실시예에 따르면, 가상 테넌트 파일시스템이 호출 파티션(호출 "테넌트"로 종종 지칭되는 테넌트와 관련된)으로부터의 호출 MT 어플리케이션을 위해 생성된 후, 테넌트 미인식 프로세스와 관련 스트림(예컨대, 입력 스트림, 출력 스트림, 오류 스트림)은 테넌트의 가상 파일시스템에 있는 프로세스 작업 디렉토리하의 각각의 입력, 출력 및 오류 서브디렉토리로 재지정될 수 있다. According to one embodiment of the present invention, after a virtual tenant filesystem is created for a calling MT application from a calling partition (associated with a tenant, often referred to as a calling "tenant"), tenant unaware processes and associated streams (e.g., input streams, output streams, error streams) may be redirected to respective input, output, and error subdirectories under the process working directory in the tenant's virtual filesystem.

이러한 방식으로, OS 프로그램들을 호출하는 별도의 테넌트와 관련된 테넌시 컨텍스트, 환경 및 데이터는 개별적으로 유지되고 서로 분리될 수 있으며, 이에 따라 MT 컨테이너의 내부로부터(예컨대, MT 컨테이너 내에서 파티션 대신 실행하는 JEE 프로그램으로부터)의 호출에 기초하여 실행되는 OS 어플리케이션(테넌트 미인식)의 스코프된 처리를 가능하게 한다. In this way, the tenancy context, environment, and data associated with the separate tenant invoking the OS programs can be maintained separately and separated from each other, thereby enabling scoped processing of OS applications (tenant unaware) that run based on calls from inside the MT container (e.g., from a JEE program running on behalf of a partition within the MT container).

본 발명의 일 실시예에 따르면, 일단 테넌트 미인식 프로세스가 실행을 완료하면, MT 어플리케이션 서버 환경에서 실행중인 MT 어플리케이션은 프로세스 출력을 검색하고 프로세스 작업 디렉토리를 정리(clean up)할 수 있다.According to one embodiment of the present invention, once a tenant unaware process has completed execution, the MT application running in the MT application server environment can retrieve the process output and clean up the process working directory.

본 발명의 일 실시예에 따르면, MT 어플리케이션은 프로그램이 성공적으로 실행되었는지 확인하기 위해 프로세스 exitValue 상태 코드(예컨대, 자바 프로세스 객체 exitValue() 방법)를 얻을 수 있다. 출력 및 오류 서브 폴더에서 재지정된 stdout 및 stderr 파일을 검색하여 또한 프로세스 실행이 성공했는지 조사할 수 있다. 테넌트 데이터베이스에서 업데이트된 결과는 테넌트 미인식 프로세스 실행이 완료되면 파티션에서 실행중인 MT 어플리케이션에 의해 데이터베이스로부터 직접 액세스할 수 있다.According to one embodiment of the present invention, the MT application can obtain a process exitValue status code (eg, Java process object exitValue() method) to confirm whether the program has been successfully executed. You can also inspect whether the process execution was successful by looking for the redirected stdout and stderr files in the Outputs and Errors subfolder. Results updated in the tenant database can be accessed directly from the database by the MT application running in the partition once the tenant unaware process execution is complete.

본 발명의 일 실시예에 따르면, MT 어플리케이션은 또한 월렛과 같은 출력 파일과 db 파일을 정리하는 프로세스 작업 디렉토리 및 그 서브 폴더를 삭제할 수 있다.According to one embodiment of the present invention, the MT application may also delete the process working directory and its subfolders to organize output files such as wallets and db files.

본 발명의 일 실시예에 따르면, OS 프로그램을 호출하는 MT 어플리케이션에서 구성된 환경 변수는 테넌트 ID, 테넌트 이름; 테넌트 파일시스템(TFS) 루트; TFS에서 입력, 출력 및 오류 서브디렉토리를 가지는 프로세스 작업 디렉토리; 테넌트 DB 접속 문자열 및 테넌트 LDAP(Lightweight Directory Access Protocol) 디렉토리 URL을 포함한다. According to one embodiment of the present invention, the environment variables configured in the MT application calling the OS program include a tenant ID, a tenant name; Tenant File System (TFS) root; Process working directory with input, output, and error subdirectories in TFS; Contains the tenant DB connection string and the tenant Lightweight Directory Access Protocol (LDAP) directory URL.

본 발명의 일 실시예에 따르면, 프로세스 빌더 구성을 사용하여, 테넌트 미인식 OS 프로그램은 테넌트 컨텍스트 내에서 그의 실행이 스코프된/컨파인된 리소스(환경 변수, 프로세스 작업 디렉토리, 재지정된 입/출력 파일, DB 접속 설명자, LDAP 디렉토리 및 월렛)를 할당받을 수 있다. According to one embodiment of the present invention, using process builder constructs, a tenant unaware OS program can be assigned resources (environment variables, process working directories, redirected input/output files, DB connection descriptors, LDAP directories and wallets) whose execution within the tenant context is scoped/confined.

OSOS 프로그램의 멀티테넌트 실행-컨테이너화된 Multi-tenant execution of programs - containerized 어플리케이션application {{ MultitenantMultitenant Execution of OS Programs-Containerized Applications} Execution of OS Programs-Containerized Applications}

본 발명의 일 실시예에 따르면, 본 명세서에 설명된 방법 및 시스템은 컨테이너화된 어플리케이션을 사용하여 테넌트 미인식 프로세스(즉, OS 프로세스)의 멀티테넌트 실행을 지원함으로써 런타임시에 테넌트 분리를 제공할 수 있다.According to one embodiment of the present invention, the methods and systems described herein can provide tenant separation at runtime by supporting multitenant execution of tenant unaware processes (ie, OS processes) using containerized applications.

본 발명의 일 실시예에 따르면, 본 개시는 컨테이너화된 어플리케이션을 이용하여 테넌트 미인식 프로세스의 런타임 동안 테넌트 분리를 제공할 수 있다.According to one embodiment of the invention, the present disclosure may provide tenant separation during runtime of a tenant unaware process using a containerized application.

본 발명의 일 실시예에 따르면, 컨테이너화된 어플리케이션 또는 프로세스는 컨테이너로서 패키징되고, OS 기반 이미지, 어플리케이션 실행 파일 및 라이브러리와 같이, 어플리케이션 실행에 필요한 정보를 포함하는 어플리케이션이다. 컨테이너화된 어플리케이션은 리눅스 커널(750)과 같은 동일 리눅스 커널을 이용하는 리눅스 배포판(Linux distributions) 사이에서 공유될 수 있는 포터블 어플리케이션일 수 있다. 컨테이너화된 어플리케이션은 개발자가 포터블/컨테이너화된 어플리케이션을 생성하여 이미지를 공유하고 동일한 리눅스 커널을 사용하는 경우, 컨테이너화된 어플리케이션이 공유되는 시스템은 컨테이너화된 어플리케이션 이미지를 이미지 레지스트리 또는 저장소에서 다운로드 할 수 있고 컨테이너를 스핀 오프(spin off)하여 컨테이너화된 어플리케이션을 실행하기 위해 생성될 수 있다. 이 시점에서 어플리케이션은 다른 컨테이너 및 OS와 분리된 목적 호스트에서 사용될 수 있고 필요한 라이브러리(예컨대, 어플리케이션/프로세스의 개발자가 의도한 것과 동일한 버전의 라이브러리)로 계속 사용될 수 있다. 그런 다음 동일한 버전의 라이브러리를 사용하는 다른 컨테이너화된 어플리케이션 인스턴스가 있을 수 있지만 별도로 실행된다. Docker는 이러한 컨테이너 프레임 워크/인프라구조의 일 예이다.According to an embodiment of the present invention, a containerized application or process is an application that is packaged as a container and includes information necessary for application execution, such as an OS-based image, an application execution file, and a library. A containerized application may be a portable application that can be shared between Linux distributions using the same Linux kernel, such as the Linux kernel 750. For containerized applications, when a developer creates a portable/containerized application, shares an image, and uses the same Linux kernel, the system in which the containerized application is shared can download the containerized application image from an image registry or repository, spin off the container, and create a containerized application to run the containerized application. At this point, the application can be used on the destination host, separate from other containers and OSes, and can continue to be used with the necessary libraries (e.g., the same version of the library as intended by the developer of the application/process). Then there may be other containerized application instances using the same version of the library, but running separately. Docker is an example of such a container framework/infrastructure.

도 7은 일 실시예에 따른, 테넌트-미인식 프로세스의 멀티테넌트 실행을 위한 시스템을 도시한다. 도 7은 소프트웨어 컨테이너를 지원하는 OS에서 실행되는 컨테이너화된 OS 어플리케이션을 사용하고 MT 어플리케이션으로부터 호출되는 OS 프로그램의 멀티테넌트 실행을 도시한다.7 illustrates a system for multi-tenant execution of a tenant-unaware process, according to one embodiment. 7 illustrates multi-tenant execution of OS programs called from MT applications and using containerized OS applications running on an OS that supports software containers.

도 7에 도시된 바와 같이, MT 어플리케이션 서버 환경(600)(예컨대, WebLogic 멀티테넌트)은 테넌트 1 파티션(601) 및 테넌트 2 파티션(605)과 같은 다수의 테넌트 파티션을 포함할 수 있다. 테넌트 1 파티션 및 테넌트 2 파티션 모두는 각 테넌트의 각각의 데이터베이스(604, 608)의 액세스를 허용하는 데이터 소스(603, 607)와 각각 관련된 JEE 어플리케이션(602, 606)과 같은 어플리케이션과 연관될 수 있다.As shown in FIG. 7 , an MT application server environment 600 (eg, WebLogic multi-tenant) may include multiple tenant partitions, such as a Tenant 1 Partition 601 and a Tenant 2 Partition 605 . Both the Tenant 1 partition and the Tenant 2 partition may be associated with applications such as JEE applications 602 and 606 associated with data sources 603 and 607, respectively, allowing access to respective databases 604 and 608 for each tenant.

본 발명의 일 실시예에 따르면, MT 어플리케이션(예컨대, JEE 어플리케이션)이 테넌트 미인식 어플리케이션(예컨대, 컨테이너화된 어플리케이션)을 호출할 때, MT 어플리케이션은 다수의 변수(즉, 환경 변수)를 설정하여 JEE 어플리케이션에서 사용할 수 있는 테넌트 컨텍스트를 확장/전파할 수 있다. 이들 변수는 테넌트 ID, 테넌트 이름, 테넌트 파일시스템(TFS) 루트; TFS에서 입력, 출력 및 오류 서브디렉토리가 있는 프로세스 작업 디렉토리; 테넌트 DB 접속 문자열 및 테넌트 LDAP 디렉토리 URL을 포함할 수 있다. 본 발명의 일 실시예에 따르면, MT 어플리케이션 서버는 MT 어플리케이션 서버 환경(600)에 탑재된 각 테넌트를 위한 가상 테넌트 파일시스템(735)을 관리할 수 있다. 이 가상 테넌트 파일시스템은 테넌트가 탑재될 때 어플리케이션 서버 관리의 일부로서 생성/설정될 수 있다. 가상 테넌트 파일시스템은 MT 어플리케이션 서버 환경에서 현재 활성 상태인 각 테넌트를 위한 하나의 가상 테넌트 파일시스템을 가지는 OS(610)의 일부이다.According to an embodiment of the present invention, when an MT application (e.g., JEE application) calls a tenant-unaware application (e.g., a containerized application), the MT application sets a number of variables (i.e., environment variables) to expand/propagate the tenant context usable by the JEE application. These variables include tenant ID, tenant name, tenant filesystem (TFS) root; Process working directory with input, output, and error subdirectories in TFS; Can include tenant DB connection string and tenant LDAP directory URL. According to an embodiment of the present invention, the MT application server may manage a virtual tenant file system 735 for each tenant installed in the MT application server environment 600. This virtual tenant file system can be created/configured as part of application server management when a tenant is mounted. The virtual tenant file system is a part of the OS 610 having one virtual tenant file system for each tenant currently active in the MT application server environment.

본 발명의 일 실시예에 따르면, MT 어플리케이션(예컨대, JEE 어플리케이션)이 테넌트 미인식 어플리케이션을 호출할 때, MT 어플리케이션은 테넌트의 가상 파일시스템하에 임시 프로세스 작업 디렉토리(여기서는 "프로세스 작업 디렉토리"라고도 칭함)를 추가로 생성할 수 있다. 만약, 하나 이상의 테넌트 미인식 어플리케이션이 MT 어플리케이션에 의해 호출되면, MT 어플리케이션은 호출된 각 테넌트 미인식 어플리케이션마다 하나의 프로세스 작업 디렉토리를 생성할 수 있다. 가상 파일시스템하에서 프로세스 작업 디렉토리를 생성할 때, MT 어플리케이션은 입력, 출력, 오류 및 데이터베이스 디렉토리에 대한 프로세스 작업 디렉토리하의 서브디렉토리들(로출된 테넌트 미인식 어플리케이션마다)을 추가로 생성할 수 있다. 이러한 서브디렉토리는 호출된 OS 프로세스의 재지정된 stdin(입력 스트림), stdout (출력 스트림) 및 stderr(오류 스트림)을 수신할 수 있다. 각 입력 서브디렉토리는 프로세스 입력 파일로 설정될 수 있다. 각 출력 서브디렉토리는 프로세스 출력 파일을 캡처할 수 있다. 각 오류 서브디렉토리는 프로세스 오류(예컨대, stderr) 메시지를 캡처할 수 있다. 가상 테넌트-특정 파일시스템은 OS 스토리지(736)와 같은 네이티브 스토리지와 연관될 수 있다.According to one embodiment of the present invention, when an MT application (e.g., a JEE application) calls a tenant-unaware application, the MT application may additionally create a temporary process working directory (also referred to herein as a "process working directory") under the tenant's virtual filesystem. If one or more tenant unrecognized applications are called by the MT application, the MT application may create one process working directory for each called tenant unrecognized application. When creating a process working directory under a virtual filesystem, MT applications may additionally create subdirectories (per exported tenant unaware application) under the process working directory for the input, output, error and database directories. These subdirectories can receive the redirected stdin (input stream), stdout (output stream) and stderr (error stream) of the called OS process. Each input subdirectory can be set to a process input file. Each output subdirectory can capture process output files. Each error subdirectory can capture process error (eg stderr) messages. A virtual tenant-specific filesystem may be associated with native storage such as OS storage 736 .

본 발명의 일 실시예에 따르면, MT 어플리케이션에 의해 이용될 수 있는 프로세스 빌더는 API(예컨대, Java ProcessBuilder API)를 포함하여, 클라이언트가 테넌트 미인식 어플리케이션을 실행하기 위한 명령 라인을 라인을 지정하고, 프로세스 환경에서 설정하도록 환경 변수를 구성하고, 프로세스 작업 디렉토리를 구성하고, 프로세스 입력, 출력 및 오류 스트림을 파일시스템상의 파일로 재지정하도록 할 수 있다. 프로세스 빌더는 프로세스 환경, 프로세스 작업 디렉토리 및 프로세스 입력 스트림/출력 스트림/오류 스트림 재지정과 같은 프로세스(즉, 테넌트 미인식 어플리케이션)가 시작되기 전에 특정 프로세스 특성을 설정하거나 구성하도록 허용할 수 있다. According to one embodiment of the invention, process builders that may be used by MT applications include APIs (e.g., Java ProcessBuilder APIs) that allow clients to specify command lines to run tenant unaware applications, configure environment variables to set in the process environment, configure process working directories, and redirect process input, output, and error streams to files on the filesystem. Process Builder may allow certain process properties to be set or configured before a process (i.e., tenant-unaware application) is started, such as process environment, process working directory, and redirection of process input streams/output streams/error streams.

본 발명의 일 실시예에 따르면, MT 어플리케이션이 테넌트 미인식 어플리케이션을 호출할 때, 프로세스 빌더(예컨대, 프로세스 빌더 인스턴스)를 생성하고 이용할 수 있다. MT 어플리케이션의 테넌시 컨텍스트는 환경 변수 설정 및 임시 프로세스 작업 디렉토리 생성을 포함하여 프로세스 빌더 API 호출의 일부로서 전파될 수 있다. 임시 프로세스 작업 디렉토리와 함께 환경 변수를 이용함으로써 프로세스 빌더는 테넌트 미인식 어플리케이션이 테넌시 컨텍스트내에서 실행이 스코프/컨파인되는 리소스(환경 변수, 프로세스 작업 디렉토리, 재지정된 입력/출력p에러 스트림, 데이터베이스 접속 설명자, LDAP 디렉토리, 월렛)를 할당하도록 구성될 수 있다. 이러한 방식으로, 테넌트 미인식 어플리케이션은 호출하는 테넌트와 테넌트 지정된 가상 파일시스템 하에서 특정되고, MT 어플리케이션 서버 환경(600)의 다른 테넌트가 생성하거나 소유하는 파일과 분리된 작업 디렉토리를 가져온다.According to an embodiment of the present invention, when an MT application calls a tenant unaware application, a process builder (eg, a process builder instance) may be created and used. The MT application's tenancy context can be propagated as part of the Process Builder API call, including setting environment variables and creating temporary process working directories. By using environment variables along with temporary process working directories, process builders can be configured to assign resources (environment variables, process working directories, redirected input/output error streams, database connection descriptors, LDAP directories, wallets) to which tenant-unaware applications are scoped/confined for execution within the tenancy context. In this way, tenant-unaware applications are specific to the calling tenant and under the tenant-specified virtual filesystem, and get working directories separate from files created or owned by other tenants in the MT application server environment 600.

본 발명의 일 실시예에 따르면, 테넌트 미인식 프로세스는 재지정된 프로세스 I/O 스트림에 대해 OS 파일시스템 하의 테넌트-특정 폴더에 할당되며, 테넌트-특정 액세스 인증서를 사용하여 테넌트와 관련된 데이터베이스에 접속하고, 테넌트-특정 LDAP 디렉토리를 사용한다. 테넌트-특정 데이터베이스 접속 문자열/설명자는 프로그램이 테넌트 데이터베이스와 투명하게 작업할 수 있도록 허용한다. 테넌트-특정 인증서는 테넌트의 가상 파일시스템에 있는 프로세스 작업 디렉토리하의 데이터베이스 서브디렉토리에 설정된 월렛(wallet)에서 구성될 수 있다. According to one embodiment of the present invention, a tenant-unaware process is assigned a tenant-specific folder under the OS filesystem for redirected process I/O streams, uses tenant-specific access credentials to access a database associated with the tenant, and uses a tenant-specific LDAP directory. Tenant-specific database connection strings/descriptors allow programs to work transparently with the tenant database. Tenant-specific certificates can be configured in a wallet set in the database subdirectory under the process working directory in the tenant's virtual filesystem.

본 발명의 일 실시예에 따르면, 가상 테넌트 파일시스템이 호출 파티션(호출 "테넌트"로 종종 지칭되는 테넌트와 관련된)의 호출 MT 어플리케이션을 위해 생성된 후, 테넌트 미인식 어플리케이션(예컨대, 컨테이너화된 어플리케이션)과 관련된 스트림(예컨대, 입력 스트림, 출력 스트림, 오류 스트림)은 테넌트의 가상 파일시스템에 있는 프로세스 작업 디렉토리 하의 각각의 입력, 출력 및 오류 서브디렉토리로 재지정될 수 있다. According to one embodiment of the invention, after a virtual tenant filesystem is created for a calling MT application in a calling partition (associated with a tenant, often referred to as a calling “tenant”), streams (e.g., input streams, output streams, error streams) associated with tenant unaware applications (e.g., containerized applications) may be redirected to their respective input, output, and error subdirectories under the process working directory in the tenant's virtual filesystem.

본 발명의 일 실시예에 따르면, 테넌트 미인식 어플리케이션(테넌트 2의 파티션에서 호출하는 JEE어플리케이션과 같은 MT 어플리케이션에서 호출된)은 컨테이너화된 어플리케이션으로서 패키징될 수 있다. 하나의 예시적인 프로세스에서, MT 어플리케이션은 OS 프로그램을 호출할 수 있다. 이러한 경우 프로세스 빌더(예컨대, Java ProcessBuilder)는 컨테이너화된 어플리케이션을 호출할 수 있다. 컨테이너 프레임워크는 경량 컨테이너 가상화 기술을 제공한다. 그러한 컨테이너 프레임워크 중 하나가 Docker이다. According to an embodiment of the present invention, a tenant unaware application (called from an MT application such as a JEE application calling from tenant 2's partition) can be packaged as a containerized application. In one exemplary process, an MT application may call an OS program. In this case, a process builder (e.g., Java ProcessBuilder) can invoke the containerized application. Container Framework provides a lightweight container virtualization technology. One such container framework is Docker.

본 발명의 일 실시예에 따르면, Docker와 같은 컨테이너 런타임은 어플리케이션 및 모든 어플리케이션의 의존성을 단일 이미지로 패키징하기 위한 포맷을 정의한다. 이 이미지는 어플리케이션에 노출된 실행 환경이 동일하게 유지된다는 보장하에 실행될 수 있는 모든 Docker 지원 머신(Docker-enabled machine)으로 전송될 수 있다.According to one embodiment of the present invention, a container runtime such as Docker defines a format for packaging an application and all of its dependencies into a single image. This image can be delivered to any Docker-enabled machine where it can run with the guarantee that the execution environment exposed to the application remains the same.

Docker와 같은 컨테이너 프레임 워크를 갖는 OS를 사용하는 경우, 시스템은 어플리케이션 바이너리 및 필요한 라이브러리 및 컴포넌트를 포함하는 계층화된 파일시스템과 함께 베이스 OS(예컨대, Ubuntu)를 포함하는 어플리케이션 컨테이너 이미지를 생성할 수 있다. 이 이미지는 컨테이너화된 어플리케이션이 개시(launch)될 때 호스트에 의존하지 않고 어플리케이션을 실행할 수 있도록 자체 포함되고 이동 가능(portable)할 수 있다.When using an OS with a container framework such as Docker, the system can create an application container image that includes a base OS (eg Ubuntu) along with a layered file system including application binaries and necessary libraries and components. This image can be self-contained and portable so that when the containerized application is launched, it does not depend on the host to run the application.

본 발명의 일 실시예에 따르면, MT 어플리케이션(즉, JEE 어플리케이션 (606))은 컨테이너 프로세스(예컨대, Docker 또는 Rocket)를 개시함으로써 테넌트 미인식 어플리케이션을 호출할 수 있다. Docket Client와 같은 컨테이너 클라이언트(720)는 프로세스 빌더(예컨대, 테넌트 2의 파티션(605)에서 실행중인 JEE 어플리케이션(606))를 사용하여 MT 어플리케이션에 의해 호출되어, 요청자(즉, JEE 어플리케이션)의 테넌시 컨텍스트를 갖는 OS(테넌트 미인식) 어플리케이션을 개시한다. 컨테이너 클라이언트는 Docker 데몬과 같은 컨테이너 데몬(725)을 호출할 수 있다. 컨테이너 데몬은 JEE 어플리케이션으로부터 요청된 컨테이너화된 어플리케이션의 어플리케이션 이미지(740)를 다운로드하고 개시할 수 있다. 어플리케이션 이미지(740)는 어플리케이션 바이너리 및 필요한 라이브러리 및 컴포넌트를 포함하는 계층화된 파일시스템과 함께 베이스 OS(예컨대, Ubuntu)를 포함할 수 있다. 어플리케이션 이미지는 자체 포함되고 이동 가능하여 호스트에 종속되지 않고 어플리케이션을 실행할 수 있다. 또한, 컨테이너화된 어플리케이션은 분리된 인스턴스로서 실행될 수 있다. 컨테이너화된 어플리케이션은 동일한 OS에서 실행되지만 분리되어 실행되는데, 이는 둘 이상의 테넌트가 동일한 어플리케이션의 다른 인스턴스를 별도의 컨테이너로 분리하여 실행할 수 있음을 의미한다. According to one embodiment of the present invention, an MT application (ie, JEE application 606) can invoke a tenant unaware application by initiating a container process (eg, Docker or Rocket). A container client 720, such as the Docket Client, is invoked by the MT application using a process builder (e.g., the JEE application 606 running on tenant 2's partition 605) to launch an OS (tenant unaware) application with the tenancy context of the requester (i.e., the JEE application). A container client may call a container daemon 725, such as a Docker daemon. The container daemon may download and launch the application image 740 of the containerized application requested from the JEE application. The application image 740 may include a base OS (eg Ubuntu) along with a layered file system including application binaries and necessary libraries and components. Application images are self-contained and portable, allowing applications to run without host dependencies. Also, containerized applications can run as separate instances. Containerized applications run on the same OS but in isolation, meaning that two or more tenants can run different instances of the same application in separate containers.

본 발명의 일 실시예에 따르면, 컨테이너가 생성되고(컨테이너 데몬에 의해), 컨테이너화된 어플리케이션(730)을 실행하기 위해 컨테이너에 어플리케이션 이미지가 로딩될 때 어플리케이션은 호스트에 의존하지 않고 실행될 수 있다.According to an embodiment of the present invention, when a container is created (by a container daemon) and an application image is loaded into the container to execute the containerized application 730, the application can be executed without depending on the host.

본 발명의 일 실시예에 따르면, 컨테이너화된 어플리케이션(730)은 테넌트의 가상 테넌트 파일시스템(735)(테넌트 컨텍스트, 예를 들어, 차례로 OS 스토리지(736)와 통신할 수 있는 테넌트 2의 파티션을 기반으로 하는)과 통신(I/O)할 수 있다 According to one embodiment of the invention, containerized applications 730 may communicate (I/O) with a tenant's virtual tenant filesystem 735 (which is based on a tenant context, e.g., a partition of tenant 2, which in turn may communicate with OS storage 736).

본 발명의 일 실시예에 따르면, 테넌트, 예를 들어 테넌트 2를 대신하여 동작하는 컨테이너화된 어플리케이션은 필요한 인증서로 테넌트의 데이터베이스 (608)를 액세스할 수 있다.According to one embodiment of the present invention, a containerized application running on behalf of a tenant, eg Tenant 2, can access the tenant's database 608 with the necessary credentials.

본 발명의 일 실시예에 따르면, MT 어플리케이션은 프로그램이 성공적으로 실행되었는지를 확인하기 위해 프로세스 exitValue 상태 코드(예컨대, Java 프로세스 객체 exitValue() 방법으로부터)를 얻을 수 있다. MT 어플리케이션은 또한 출력 및 오류 서브 폴더하에서 재지정된 stdout 및 stderr 파일을 검색하여 프로세스 실행이 성공했는지 여부를 조사할 수 있다. 테넌트 데이터베이스에서 업데이트된 결과는 일단 테넌트 미인식의 컨테이너화된 어플리케이션의 실행이 완료되면, 파티션에서 실행중인 MT 어플리케이션에 의해 데이터베이스로부터 직접 액세스할 수 있다.According to one embodiment of the present invention, the MT application can obtain the process exitValue status code (eg, from the Java process object exitValue() method) to confirm whether the program was executed successfully. MT applications can also inspect whether the process execution was successful by looking for the redirected stdout and stderr files under the outputs and errors subfolders. Results updated in the tenant database can be accessed directly from the database by the MT application running in the partition once execution of the tenant-unaware containerized application is complete.

본 발명의 일 실시예에 따르면, MT 어플리케이션은 또한 월렛과 같은 출력 파일 및 db파일을 정리하는 프로세스 작업 디렉토리 및 그의 서브 폴더를 삭제할 수 있다.According to one embodiment of the present invention, the MT application may also delete the process working directory and its subfolders to organize output files such as wallets and db files.

도 8은 본 발명의 일 실시예에 따른, 테넌트-미인식 프로세스의 멀티테넌트 실행을 위한 시스템을 도시한다. 도 8은 컨테이너에서 실행되는 컨테이너화된 OS 어플리케이션을 사용하고 MT 어플리케이션으로부터 호출된 OS 프로그램의 멀티테넌트 실행을 나타낸다.8 illustrates a system for multi-tenant execution of a tenant-unaware process, according to one embodiment of the present invention. 8 shows multi-tenant execution of an OS program called from an MT application and using a containerized OS application running in a container.

도 8에 도시된 바와 같이, MT 어플리케이션 서버 환경(600)(예컨대, WebLogic 멀티테넌트)은 테넌트 1 파티션(601) 및 테넌트 2 파티션(605)과 같은 다수의 테넌트 파티션을 포함할 수 있다. 테넌트 1 파티션 및 테넌트 2 파티션 모두는 각 테넌트의 각각의 데이터베이스(604, 608)의 액세스를 허용하는 데이터 소스(603, 607)와 각각 연관된 JEE 어플리케이션(602, 606)과 같은 어플리케이션에 연관될 수 있다.As shown in FIG. 8 , an MT application server environment 600 (eg, WebLogic multi-tenant) may include multiple tenant partitions, such as a Tenant 1 Partition 601 and a Tenant 2 Partition 605 . Both the Tenant 1 partition and the Tenant 2 partition may be associated with an application, such as a JEE application 602, 606, respectively associated with a data source 603, 607 allowing access of each database 604, 608 for each tenant.

본 발명의 일 실시예에 따르면, MT 어플리케이션(예컨대, JEE 어플리케이션)이 테넌트 미인식 어플리케이션(예컨대, 컨테이너화된 어플리케이션)을 호출할 때, MT 어플리케이션은 다수의 변수(즉, 환경 변수)를 설정하여 JEE 어플리케이션에서 사용할 수 있는 테넌트 컨텍스트를 확장/전파할 수 있다. 이러한 변수에는 테넌트 ID, 테넌트 이름, 테넌트 파일시스템(TFS) 루트; 입력 및 출력 서브디렉토리를 갖는 TFS하의 프로세스 작업 디렉토리; 테넌트 DB 접속 문자열 및 테넌트 LDAP 디렉토리 URL가 포함될 수 있다.According to an embodiment of the present invention, when an MT application (e.g., JEE application) calls a tenant-unaware application (e.g., a containerized application), the MT application sets a number of variables (i.e., environment variables) to expand/propagate the tenant context usable by the JEE application. These variables include tenant ID, tenant name, tenant filesystem (TFS) root; process working directory under TFS with input and output subdirectories; Tenant DB connection string and tenant LDAP directory URL may be included.

본 발명의 일 실시예에 따르면, MT 어플리케이션 서버는 MT 어플리케이션 서버 환경(600)에 탑재된 각 테넌트를 위한 가상 테넌트 파일시스템(735)을 관리할 수 있다. 이 가상 테넌트 파일시스템은 테넌트가 탑재될 때 어플리케이션 서버 관리의 일부로서 생성되거나 구성될 수 있다. 가상 테넌트 파일시스템은 MT 어플리케이션 서버 환경에서 현재 활성 상태인 각 테넌트에 대한 하나의 가상 테넌트 파일시스템을 가지는 OS(610)의 일부이다.According to an embodiment of the present invention, the MT application server may manage a virtual tenant file system 735 for each tenant installed in the MT application server environment 600. This virtual tenant filesystem can be created or configured as part of application server management when tenants are mounted. The virtual tenant file system is a part of the OS 610 having one virtual tenant file system for each tenant currently active in the MT application server environment.

본 발명의 일 실시예에 따르면, MT 어플리케이션(예컨대, JEE 어플리케이션)이 테넌트 미인식 어플리케이션을 호출할 때, MT 어플리케이션은 테넌트의 가상 파일시스템하의 임시 프로세스 작업 디렉토리를 추가로 생성할 수 있다. 만약 하나 이상의 테넌트 미인식 프로세스가 MT 어플리케이션에 의해 호출되면, MT 어플리케이션은 호출된 각 테넌트 미인식 어플리케이션을 위한 하나의 프로세스 작업 디렉토리를 생성할 수 있다. 가상 파일시스템하의 프로세스 작업 디렉토리를 생성할 때, MT 어플리케이션은 입력, 출력, 오류 및 데이터베이스 디렉토리에 대한 프로세스 작업 디렉토리하의 서브디렉토리를(호출된 테넌트 미인식 어플리케이션마다) 추가로 생성할 수 있다. 이러한 서브디렉토리는 재지정된 입력 스트림(stdin), 출력 스트림(stdout) 및 오류 스트림(stderr)을 받아들일 수 있다. 각 입력 서브디렉토리는 프로세스 입력 파일로 설정될 수 있다. 각 출력 서브디렉토리는 프로세스 출력 파일을 캡처할 수 있다. 각 오류 서브디렉토리는 프로세스 오류(예컨대, stderr) 메시지를 캡처할 수 있다. 가상 테넌트-특정 파일시스템은 OS 스토리지 (736)와 같은 네이티브 스토리지와 연관될 수 있다.According to an embodiment of the present invention, when an MT application (eg, a JEE application) calls a tenant-unrecognized application, the MT application may additionally create a temporary process working directory under the tenant's virtual file system. If one or more tenant unaware processes are called by the MT application, the MT application may create one process working directory for each called tenant unaware process. When creating process working directories under the virtual filesystem, MT applications may additionally create subdirectories (for each called tenant unaware application) under the process working directories for the input, output, error and database directories. These subdirectories can accept redirected input streams (stdin), output streams (stdout), and error streams (stderr). Each input subdirectory can be set to a process input file. Each output subdirectory can capture process output files. Each error subdirectory can capture process error (eg stderr) messages. A virtual tenant-specific filesystem may be associated with native storage such as OS storage 736.

본 발명의 일 실시예에 따르면, 프로세스 빌더는 클라이언트가 실행할 테넌트 미인식 어플리케이션에 대한 명령 라인을 지정하여, 프로세스 환경에서 설정하기 위한 환경 변수를 구성하고, 프로세스 작업 디렉토리를 구성하고, 프로세스 입력, 출력 및 오류 스트림을 파일시스템로 재지정하도록 하는 API(예컨대, 자바 Java ProcessBuilder API)를 포함할 수 있다. 프로세스 빌더는 프로세스 환경, 프로세스 작업 디렉토리 및 프로세스 입력 스트림/출력 스트림/오류 스트림 재지정과 같은 프로세스(즉, 테넌트 미인식 어플리케이션)가 시작되기 전에 특정 프로세스 특성을 설정하거나 구성하도록 허용할 수 있다. According to one embodiment of the invention, Process Builder may include an API (e.g., the Java ProcessBuilder API) that allows a client to specify a command line for a tenant-unaware application to execute, configure environment variables to set in the process environment, configure process working directories, and redirect process input, output, and error streams to the filesystem. Process Builder may allow certain process properties to be set or configured before a process (i.e., tenant-unaware application) is started, such as process environment, process working directory, and redirection of process input streams/output streams/error streams.

본 발명의 일 실시예에 따르면, MT 어플리케이션이 테넌트 미인식 어플리케이션을 호출할 때, 프로세스 빌더(예컨대, 프로세스 빌더 인스턴스)를 생성하고 이용할 수 있다. MT 어플리케이션의 테넌시 컨텍스트는 환경 변수 설정을 포함하여 프로세스 빌더 API 호출의 일부로서 전파될 수 있다. MT 어플리케이션은 VTFS(가상 테넌트 파일시스템)하에서 프로세스 작업 디렉토리와 서브디렉토리(입력, 출력, 오류 및 데이터베이스)를 생성할 수 있다. 그런 다음 MT 어플리케이션은 프로세스 빌더 API를 사용하여 환경 변수, 임시 프로세스 작업 디렉토리 경로를 갖는 프로세스 작업 디렉토리 및 재지정된 스트림을 구성할 수 있다. 프로세스 작업 디렉토리와 함께 환경 변수를 이용함으로써 프로세스 빌더는 테넌트 미인식 어플리케이션이 테넌시 컨텍스트내에서 그의 실행이 스코프/컨파인되는 리소스(환경 변수, 프로세스 작업 디렉토리, 재지정된 입력/출력 파일, 데이터베이스 접속 설명자, LDAP 디렉토리, 월렛)을 할당하도록 구성될 수 있다. 이러한 방식으로, 테넌트 미인식 어플리케이션은 호출하는 테넌트와 테넌트 지정된 가상 파일시스템 하에서 특정되고, MT 어플리케이션 서버 환경(600)의 다른 테넌트가 생성하거나 소유하는 파일과 분리된 작업 디렉토리를 가져온다.According to an embodiment of the present invention, when an MT application calls a tenant unaware application, a process builder (eg, a process builder instance) may be created and used. The MT application's tenancy context can be propagated as part of the Process Builder API call, including setting environment variables. MT applications can create process working directories and subdirectories (input, output, error and database) under VTFS (Virtual Tenant File System). The MT application can then use the process builder API to construct environment variables, the process working directory with the temporary process working directory path, and the redirected stream. By using environment variables along with process working directories, process builders can be configured to allocate resources (environment variables, process working directories, redirected input/output files, database connection descriptors, LDAP directories, wallets) whose execution is scoped/confined to a tenant-unaware application within the tenancy context. In this way, tenant-unaware applications are specific to the calling tenant and under the tenant-specified virtual filesystem, and get working directories separate from files created or owned by other tenants in the MT application server environment 600.

본 발명의 일 실시예에 따르면, 테넌트 미인식 어플리케이션은 I/O 동작을 위해 OS 파일시스템 하의 테넌트-특정 폴더를 사용하고, 테넌트-특정 액세스 인증서를 이용하여 테넌트와 연관된 데이터베이스에 접속하여, 테넌트 LDAP를 사용한다. 테넌트-특정의 데이터베이스 접속 문자열/설명자는 프로그램이 테넌트 데이터베이스와 투명하게 작업할 수 있도록 허용한다. 테넌트-특정 인증서는 테넌트의 가상 파일시스템에 있는 프로세스 작업 디렉토리 내의 데이터베이스 서브디렉토리하에 설정된 월렛에 구성될 수 있다. According to one embodiment of the present invention, a tenant unaware application uses a tenant-specific folder under the OS filesystem for I/O operations, uses a tenant-specific access credential to access a database associated with the tenant, and uses tenant LDAP. Tenant-specific database connection strings/descriptors allow programs to work transparently with the tenant database. Tenant-specific certificates can be configured in a wallet set up under a database subdirectory within the process working directory in the tenant's virtual filesystem.

본 발명의 일 실시예에 따르면, 가상 테넌트 파일시스템이 호출 파티션(호출 "테넌트"로 종종 지칭되는 테넌트와 관련된)의 호출 MT 어플리케이션을 위해 생성된 후, 테넌트 미인식 어플리케이션(예컨대, 컨테이너화된 어플리케이션)과 관련된 스트림(예컨대, 입력 스트림, 출력 스트림, 오류 스트림)은 테넌트의 가상 파일시스템에 있는 프로세스 작업 디렉토리하의 각각의 서브 폴더로 재지정될 수 있다.According to one embodiment of the invention, after a virtual tenant filesystem is created for a calling MT application in a calling partition (associated with a tenant, often referred to as a calling “tenant”), streams (e.g., input streams, output streams, error streams) associated with tenant-unaware applications (e.g., containerized applications) may be redirected to their respective subfolders under a process working directory in the tenant's virtual filesystem.

본 발명의 일 실시예에 따르면, 테넌트 미인식 어플리케이션(테넌트 2의 파티션으로부터 호출하는 JEE 어플리케이션과 같은 MT 어플리케이션으로부터 호출되는)은 컨테이너화된 어플리케이션으로 패키징될 수 있다. 예시적인 프로세스에서, MT 어플리케이션은 OS 프로그램을 호출할 수 있다. 이 경우, 프로세스 빌더 API는 MT 어플리케이션에 의해 컨테이너 프로세스를 호출하도록 구성된다. 그러한 컨테이너 프레임 워크/인프라 중 하나가 Docker이다.According to one embodiment of the present invention, a tenant unaware application (called from an MT application such as a JEE application calling from tenant 2's partition) can be packaged as a containerized application. In an exemplary process, an MT application may call an OS program. In this case, the process builder API is configured to invoke the container process by the MT application. One such container framework/infrastructure is Docker.

본 발명의 일 실시예에 따르면, Docker와 같은 컨테이너 프레임 워크/인프라 구조는 어플리케이션 및 모든 그의 의존성을 단일 이미지로 패킹하기 위한 포맷을 정의할 수 있다. 이 이미지는 어플리케이션에 노출된 실행 환경이 동일할 것이라는 보장하에 다운로드 및 실행될 수 있는 곳에서 Docker 허브/저장소로 업로드 될 수 있다.According to one embodiment of the invention, a container framework/infrastructure such as Docker may define a format for packing an application and all its dependencies into a single image. This image can be uploaded to a Docker hub/repository from where it can be downloaded and run with the guarantee that the execution environment exposed to the application will be the same.

본 발명의 일 실시예에 따르면, Docker와 같은 컨테이너 프레임 워크를 사용하는 경우, 시스템은 어플리케이션 이미지 라이브러리(810)로부터 이전에 생성된 컨테이너 이미지(815)를 다운로드 할 수 있다. 어플리케이션 이미지(815)는 어플리케이션 바이너리 및 필요한 라이브러리 및 컴포넌트를 포함하는 계층화된 파일시스템과 함께 베이스 OS(예컨대, Ubuntu)를 포함할 수 있다. 이 이미지는 컨테이너가 생성되고 어플리케이션이 시작될 때 호스트에 의존하지 않고 어플리케이션을 실행할 수 있도록 자체 포함되고 이동 가능할 수 있다. According to an embodiment of the present invention, when using a container framework such as Docker, the system may download a previously created container image 815 from an application image library 810 . The application image 815 may include a base OS (eg Ubuntu) along with a layered file system including application binaries and necessary libraries and components. This image can be self-contained and portable, allowing the application to run without depending on the host when the container is created and the application is started.

본 발명의 일 실시예에 따르면, 어플리케이션 이미지 라이브러리(815)는 호스트 로컬 파일시스템상에 설정될 수 있고, MT 어플리케이션 서버 내에서 실행되는 어플리케이션으로부터 호출될 수 있는 원하는 프로그램 및 어플리케이션에 대한 다수의 컨테이너화된 이미지(예컨대, tar 파일)를 포함할 수 있다. 이러한 어플리케이션 이미지는 예를 들어, 일반적으로 요구되는 OS 프로그램 및 어플리케이션을 포함할 수 있다.According to one embodiment of the present invention, the application image library 815 can be set up on the host local filesystem and can contain a number of containerized images (e.g., tar files) for desired programs and applications that can be called from applications running within the MT application server. Such application images may include, for example, generally required OS programs and applications.

본 발명의 일 실시예에 따르면, MT 어플리케이션(즉, JEE 어플리케이션 (606))은 컨테이너 프로세스(예컨대, Docker 또는 Rocket)를 개시하여 테넌트 미인식 어플리케이션을 호출할 수 있다. Docket Client와 같은 컨테이너 클라이언트(720)는 프로세스 빌더(예컨대, 테넌트 2의 파티션(605)에서 실행중인 JEE 어플리케이션(606))를 사용하여 MT 어플리케이션에 의해 호출되어, 요청자(즉, JEE 어플리케이션)의 테넌시 컨텍스트를 갖는 OS(테넌트 미인식) 어플리케이션을 개시할 수 있다. 컨테이너 클라이언트는 Docker 데몬과 같은 컨테이너 데몬(725)을 호출할 수 있다. 이어서 컨테이너 데몬은 JEE 어플리케이션으로부터 요청된 컨테이너화된 어플리케이션의 어플리케이션 이미지(740)를 다운로드 및 개시할 수 있다. 어플리케이션 이미지(740)는 어플리케이션 바이너리 및 필요한 라이브러리 및 컴포넌트를 포함하는 계층화된 파일시스템과 함께 기본 OS(예컨대, Ubuntu)를 포함할 수 있다. 어플리케이션 이미지는 자체 포함되어 있고 이동 가능하므로 호스트에 의존하지 않고 어플리케이션을 실행할 수 있다. 게다가, 컨테이너화된 어플리케이션은 분리된 인스턴스로서 실행될 수 있다. 컨테이너화된 어플리케이션은 동일한 OS상에서 실행되지만 분리되어 실행되는데, 이는 둘 이상의 테넌트가 동일한 어플리케이션의 다른 인스턴스를 별도의 컨테이너로 분리하여 실행할 수 있음을 의미한다. According to one embodiment of the present invention, an MT application (ie, JEE application 606) can initiate a container process (eg, Docker or Rocket) to call a tenant unaware application. A container client 720, such as a Docket Client, can be invoked by an MT application using a process builder (e.g., JEE application 606 running in tenant 2's partition 605) to launch an OS (tenant unaware) application with the tenancy context of the requester (i.e., the JEE application). A container client may call a container daemon 725, such as a Docker daemon. Then, the container daemon may download and launch the application image 740 of the containerized application requested from the JEE application. The application image 740 may include a base OS (eg Ubuntu) along with a layered file system including application binaries and necessary libraries and components. The application image is self-contained and portable, allowing the application to run without depending on the host. Additionally, containerized applications can run as separate instances. Containerized applications run on the same OS but in isolation, meaning that two or more tenants can run different instances of the same application in separate containers.

본 발명의 일 실시예에 따르면, 컨테이너 저장소(810)는 다수의 어플리케이션 이미지(815)로 채워질 수 있다. 이들 어플리케이션 이미지는 어플리케이션 이미지 라이브러리로 미리 채워질 수 있거나, 도 8의 컨테이너 프로세스가 어플리케이션 이미지를 생성한 후에 어플리케이션 이미지 라이브러리에 저장될 수도 있다. According to one embodiment of the present invention, the container storage 810 may be filled with a plurality of application images 815 . These application images may be pre-populated with the application image library, or may be stored in the application image library after the container process of FIG. 8 creates the application image.

본 발명의 일 실시예에 따르면, 컨테이너가 생성(컨테이너 데몬에 의해)될 때, 어플리케이션 이미지는 컨테이너화된 어플리케이션(730)을 실행하기 위해 컨테이너로 로딩되어 어플리케이션은 호스트에 의존하지 않고 실행될 수 있다.According to an embodiment of the present invention, when a container is created (by a container daemon), an application image is loaded into the container to execute the containerized application 730, so that the application can be executed without depending on the host.

본 발명의 일 실시예에 따르면, 컨테이너화된 어플리케이션(730)은 테넌트의 가상 테넌트 파일시스템(735)(테넌트 컨텍스트, 예를 들어, OS 스토리지(736)와 차례로 통신할 수 있는 테넌트 2의 파티션에 기초하는)과 통신(I/O)할 수 있다.According to one embodiment of the invention, containerized applications 730 may communicate (I/O) with a tenant's virtual tenant filesystem 735 (which is based on a tenant context, e.g., a partition of tenant 2 that may in turn communicate with OS storage 736).

본 발명의 일 실시예에 따르면, 테넌트, 예를 들어 테넌트(2)를 대신하여 동작하는 컨테이너화된 어플리케이션은 필요한 인증서로 테넌트의 데이터베이스(608)에 액세스할 수 있다.According to one embodiment of the present invention, a containerized application running on behalf of a tenant, eg tenant 2, can access the tenant's database 608 with the necessary credentials.

본 발명의 일 실시예에 따르면, MT 어플리케이션은 프로그램이 성공적으로 실행되었는지를 확인하기 위해 프로세스 exitValue 상태 코드(예컨대, Java 프로세스 객체 exitValue() 방법)를 얻을 수 있다. MT 어플리케이션은 또한 출력 및 오류 서브 폴더하에서 재지정된 stdout 및 stderr 파일을 검색하여 프로세스 실행이 성공했는지 여부를 조사할 수 있다. 테넌트 데이터베이스에서 업데이트된 결과는 일단 테넌트 미인식의 컨테이너화된 어플리케이션의 실행이 완료되면, 파티션에서 실행중인 MT 어플리케이션에 의해 데이터베이스로부터 직접 액세스할 수 있다.According to one embodiment of the present invention, the MT application can obtain a process exitValue status code (eg, Java process object exitValue() method) to confirm whether the program has been successfully executed. MT applications can also inspect whether the process execution was successful by looking for the redirected stdout and stderr files under the outputs and errors subfolders. Results updated in the tenant database can be accessed directly from the database by the MT application running in the partition once execution of the tenant-unaware containerized application is complete.

본 발명의 일 실시예에 따르면, MT 어플리케이션은 또한 월렛과 같은 출력 파일 및 db파일을 정리하는 프로세스 작업 디렉토리 및 그의 서브 폴더를 삭제할 수 있다.According to one embodiment of the present invention, the MT application may also delete the process working directory and its subfolders to organize output files such as wallets and db files.

도 9는 본 발명의 일 실시예에 따라, 테넌트 미인식 프로세스의 테넌트 스코프된 실행을 위한 환경 및 리소스를 생성하는 예시적인 방법의 흐름도이다. 단계 (910)에서, 프로세스 작업 디렉토리가 테넌트 파일시스템(예컨대, 가상 테넌트 파일시스템) 하에서 생성될 수 있다. 단계(920)에서, 입력, 출력, 에러 및 데이터베이스 폴더에 대해 프로세스 작업 디렉토리 하의 서브디렉토리가 생성될 수 있다. 단계(930)에서, 입력 폴더는 데이터 파일로 설정될 수 있다. 단계(940)에서, 데이터베이스 폴더는 테넌트 데이터베이스 구성 파일 및 인증서(예컨대, 월렛)으로 설정될 수 있다. 단계(950)에서, 환경은 테넌트 컨텍스트에 기초하여 테넌트 미인식 어플리케이션(예컨대, OS 어플리케이션/프로세스)이 실행되도록 종결될 수 있다.9 is a flow diagram of an exemplary method for creating an environment and resources for tenant scoped execution of a tenant unaware process, in accordance with one embodiment of the present invention. At step 910, a process working directory may be created under a tenant filesystem (eg, a virtual tenant filesystem). At step 920, subdirectories under the process working directory may be created for the input, output, error, and database folders. At step 930, the input folder may be set to data files. At step 940, a database folder may be set up with tenant database configuration files and certificates (eg, wallets). At step 950, the environment may be terminated such that a tenant unaware application (eg, OS application/process) is executed based on the tenant context.

도 10은 본 발명의 일 실시예에 따라, 컨테이너화된 어플리케이션을 개시하기 위한 프로세스 빌더를 생성하고 구성하기 위한 예시적인 방법의 흐름도이다. 단계(1010)에서, 프로세스 빌더 인스턴스(예컨대, 자자 ProcessBuilder API)가 생성될 수 있다. 단계(1020)에서는 프로세스 환경이 구성될 수 있다(예컨대, 테넌트 컨텍스트). 단계(1030)에서, 프로세스 작업 디렉토리가 구성될 수 있다. 단계(1040)에서, 상기 방법은 컨테이너화된 어플리케이션을 개시하기 위해 실행 가능한 명령 라인을 구성할 수 있다. 단계(1050)에서, 입력 스트림, 출력 스트림 및 에러 스트림과 같은 컨테이너화된 어플리케이션으로부터의 스트림은 프로세스 작업 디렉토리의 입력, 출력 및 오류 서브디렉토리로 재지정될 수 있다.10 is a flow diagram of an exemplary method for creating and configuring a process builder for launching a containerized application, according to one embodiment of the present invention. At step 1010, a Process Builder instance (eg, a native ProcessBuilder API) may be created. At step 1020, a process environment may be configured (eg, a tenant context). At step 1030, a process working directory may be configured. At step 1040, the method may construct an executable command line to launch the containerized application. At step 1050, streams from the containerized application, such as input streams, output streams, and error streams, may be redirected to the input, output, and errors subdirectories of the process working directory.

도 11은 본 발명의 일 실시예에 따라, MT 미들웨어 어플리케이션 (예컨대, JEE 어플리케이션)으로부터 테넌트 미인식 OS 어플리케이션의 멀티테넌트 실행을 위한 예시적인 방법의 흐름도이다. 이러한 예시적인 방법의 전제 조건으로서, OS 어플리케이션(즉, MT 어플리케이션 서버 환경으로부터 호출될 OS 어플리케이션)은 컨테이너화된 어플리케이션(예컨대, 컨테이너화된 어플리케이션 이미지)으로서 패키징될 수 있다. 단계(1110)에서, 도 9의 흐름도에 의해 식별되는 바와 같이, 프로세스 환경 및 테넌트 스코프된 실행을 위한 리소스가 생성될 수 있다. 단계(1120)에서, 도 10의 흐름도에 의해 식별되는 바와같이, 프로세스 빌더(예컨대, 자바 ProcessBuilder API 인스턴스)가 생성되어 구성될 수 있다. 단계(1130)에서, 상기 방법은 프로세스 빌더 시작 방법을 사용하여 상기 컨테이너화된 OS 어플리케이션 프로세스를 호출할 수 있다. 이 단계는 구성된 테넌트-특정 실행 환경을 생성하여 컨테이너 프로세스를 시작한다. 컨테이너화된 어플리케이션은 컨테이너 런타임에 의해 시행되는 다른 컨테이너 & OS 프로세스로부터의 런타임 분리를 통해 테넌트-특정 실행 환경 및 리소스로 실행될 수 있다. 단계(1140)에서, 상기 방법은 컨테이너화된 어플리케이션 프로세스 실행이 완료될 때까지 대기할 수 있다. 단계(1150)에서, 테넌트 데이터베이스로부터 프로세스 출력뿐만 아니라 프로세스 작업 디렉토리의 stdout 파일로부터 프로세스 출력을 검색하고, 필요한 후처리를 수행하며, 결과로 테넌트 특정 데이터베이스를 업데이트한다. 단계(1160)에서, 상기 방법은 프로세스 작업 디렉토리 및 그의 컨텐츠를 삭제 및 정리할 수 있다.11 is a flow diagram of an exemplary method for multi-tenant execution of a tenant unaware OS application from an MT middleware application (eg, a JEE application), according to an embodiment of the present invention. As a prerequisite of this exemplary method, an OS application (ie, an OS application to be called from an MT application server environment) may be packaged as a containerized application (eg, a containerized application image). At step 1110, as identified by the flow diagram of FIG. 9, a process environment and resources for tenant scoped execution may be created. At step 1120, as identified by the flow diagram of FIG. 10, a process builder (eg, a Java ProcessBuilder API instance) may be created and configured. At step 1130, the method may invoke the containerized OS application process using a process builder start method. This step starts the container process by creating a configured tenant-specific execution environment. Containerized applications can run with tenant-specific execution environments and resources through runtime isolation from other containers & OS processes enforced by the container runtime. At step 1140, the method may wait until containerized application process execution is complete. In step 1150, it retrieves the process output from the tenant database as well as the stdout file in the process working directory, performs any necessary post-processing, and updates the tenant specific database with the results. At step 1160, the method may delete and clean up the process working directory and its contents.

도 12는 멀티테넌트 미들웨어 어플리케이션으로부터 호출된 테넌트-미인식 프로세스의 테넌트 스코프된 실행을 지원하기 위한 예시적인 방법의 흐름도이다. 단계(1210)에서, 본 방법은 하나 이상의 컴퓨터를 포함할 수 있는데, 하나 이상의 컴퓨터는 실행되는 어플리케이션 서버 환경, 각각의 파티션이 도메인의 관리 및 런타임 서브분할을 제공하는 복수의 파티션, 및 복수의 테넌트-인식 프로그램을 포함하며, 복수의 테넌트-인식 프로그램 각각은 복수의 파티션들 중 하나의 파티션과 연관된다. 12 is a flow diagram of an exemplary method for supporting tenant scoped execution of tenant-unaware processes invoked from multitenant middleware applications. At step 1210, the method may include one or more computers comprising an application server environment running, a plurality of partitions each partition providing administrative and runtime subdivisions of a domain, and a plurality of tenant-aware programs, each of the plurality of tenant-aware programs associated with one of the plurality of partitions.

단계(1220)에서, 상기 방법은 테넌트에 의한 사용을 위해 다수의 파티션 각각과 복수의 테넌트-인식 프로그램을 복수의 테넌트 중 하나의 테넌트에 연관시킬 수 있다.At step 1220, the method may associate each of the plurality of partitions and the plurality of tenant-aware programs with one tenant of the plurality of tenants for use by the tenant.

단계(1230)에서, 상기 방법은 복수의 파티션 중 호출 파티션으로부터 테넌트-미인식 프로세스를 호출할 수 있으며, 호출 파티션은 복수의 테넌트의 하나의 호출 테넌트와 연관된다.At step 1230, the method may invoke a tenant-unaware process from a calling partition of the plurality of partitions, the calling partition being associated with one calling tenant of the plurality of tenants.

단계(1240)에서, 상기 방법은 호출 테넌트에 관한 테넌시 정보를 수집할 수 있다.At step 1240, the method may collect tenancy information about the calling tenant.

단계(1250)에서, 상기 방법은 수집된 테넌시 정보에 기초하여, 호출 테넌트에 대한 테넌트-미인식 프로세스의 실행을 스코핑(국한)할 수 있으며, 실행을 스코핑하는 것은 멀티테넌트 미들웨어 환경의 다른 테넌트로부터 호출 테넌트에게 스코프된 테넌트-미인식 프로세스의 실행을 분리시키는 것을 허용한다.At step 1250, the method may scope (confine) the execution of the tenant-unaware process to the calling tenant based on the collected tenancy information, and scoping the execution allows for isolating the execution of the tenant-unaware process scoped to the calling tenant from other tenants in the multi-tenant middleware environment.

본 발명은 하나 이상의 프로세서, 메모리 및/또는 본 개시의 교시에 따라 프로그램된 컴퓨터 판독 가능 저장 매체를 포함하는 하나 이상의 기존의 범용 또는 특수 디지털 컴퓨터, 컴퓨팅 장치, 머신 또는 마이크로 프로세서를 사용하여 편리하게 구현될 수 있다. 적절한 소프트웨어 코딩은 소프트웨어 분야의 당업자에게 명백한 바와 같이 본 개시의 교시에 기초하여 숙련된 프로그래머에 의해 용이하게 준비될 수 있다.The invention may conveniently be implemented using one or more conventional general purpose or special purpose digital computers, computing devices, machines or microprocessors that include one or more processors, memory and/or computer readable storage media programmed in accordance with the teachings of this disclosure. Appropriate software coding can be readily prepared by a skilled programmer based on the teachings of this disclosure, as will be apparent to those skilled in the software arts.

일부 실시예에서, 본 발명은 본 발명의 임의의 프로세스를 수행하도록 컴퓨터를 프로그래밍하는데 사용될 수 있는 명령이 저장되어 있는 비-일시적 저장 매체 또는 컴퓨터 판독 가능 매체(미디어)인 컴퓨터 프로그램 제품을 포함한다. 저장 매체는 플로피 디스크, 광학 디스크, DVD, CD-ROM, 마이크로드라이브를 포함하는 임의 타입의 디스크, 및 광자기 디스크,ROM, RAM, EPROM, EEPROM, DRAM,VRAM, 플래시 메모리 디바이스, 자기 혹은 광학 카드들, 나노시스템(분자 메모리 IC 포함), 또는 명령 및/또는 데이터 저장하는데 적합한 임의 타입의 미디어 또는 디바이스를 포함할 수 있지만, 이것만으로 한정되는 것은 아니다.In some embodiments, the present invention includes a computer program product that is a non-transitory storage medium or computer readable medium (media) having stored thereon instructions that can be used to program a computer to perform any of the processes of the present invention. Storage media may include, but are not limited to, floppy disks, optical disks, DVDs, CD-ROMs, disks of any type, including microdrives, and magneto-optical disks, ROM, RAM, EPROM, EEPROM, DRAM, VRAM, flash memory devices, magnetic or optical cards, nanosystems (including molecular memory ICs), or any type of media or device suitable for storing instructions and/or data.

본 발명의 전술한 설명은 예시 및 설명을 목적으로 제공되었다. 본 발명은 개시된 정확한 형태로 제한하거나 포괄하고자 하는 것은 아니다. 많은 수정 및 변형이 당업자에게 명백할 것이다. 변형 및 변경은 개시된 특징의 임의의 관련 조합을 포함한다. 실시예들은 본 발명의 원리 및 그 실제 응용을 가장 잘 설명하기 위하여 선택 및 기술된 것으로, 그로 인해 당업자가 다양한 실시예에 대해 본 발명을 이해할 수 있도록 하고 아울러 의도된 특정 용도에 적합한 다양한 변형을 통해 본 발명을 이해할 수 있게 하기 위해 선택 및 기술되었다. 본 발명의 범위는 이하의 특허 청구 범위 및 그 균등물에 의해 정의되도록 의도되었다.The foregoing description of the present invention has been presented for purposes of illustration and description. The invention is not intended to be exhaustive or limited to the precise forms disclosed. Many modifications and variations will be apparent to those skilled in the art. Modifications and variations include any relevant combination of the disclosed features. The embodiments were selected and described in order to best explain the principles and practical applications of the present invention, thereby enabling those skilled in the art to understand the present invention in its various embodiments and also to understand the present invention through various modifications suitable for the particular intended use. The scope of the invention is intended to be defined by the following claims and equivalents thereof.

Claims (44)

멀티테넌트 미들웨어 어플리케이션으로부터 호출된 테넌트-미인식(tenant-unaware) 프로세스의 테넌트 스코프된(scoped) 실행을 지원하기 위한 방법으로서,
실행되는 어플리케이션 서버 환경을 포함하는 하나 이상의 컴퓨터에서, 복수의 파티션 및 복수의 테넌트-인식 프로그램을 제공하는 단계와,
상기 파티션 각각은 도메인의 관리 및 런타임 세분화(subdivision)를 제공하고, 그리고
상기 복수의 테넌트-인식 프로그램 각각은 복수의 파티션의 파티션과 연관되며;
상기 복수의 파티션 각각과 복수의 테넌트-인식 프로그램 각각을 테넌트에 의한 사용을 위해 복수의 테넌트의 하나의 테넌트에 연관시키는 단계와;
상기 복수의 파티션의 호출 파티션으로부터 테넌트-미인식 프로세스를 호출하는 단계와, 상기 호출 파티션은 복수의 테넌트의 호출 테넌트와 연관되고;
상기 호출 테넌트에 관한 테넌시 정보를 수집하는 단계와;
상기 호출 테넌트에 관한 수집된 테넌시 정보에 기초하여, 테넌트-특정 가상 파일시스템을 생성하는 단계와; 그리고
상기 수집된 테넌시 정보에 기초하여, 프로세스 실행 환경 및 리소스를 설정함으로써 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 단계를 포함하며, 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 단계는,
상기 테넌트-미인식 프로세스의 스트림을 테넌트-특정 가상 파일시스템으로 재지정(redirect)하는 단계를 포함하고, 상기 테넌트-미인식 프로세스의 스트림은 입력 스트림, 출력 스트림 및 오류 스트림 중 적어도 하나를 포함하고;
상기 실행을 스코핑하는 것은 멀티테넌트 미들웨어 환경의 다른 테넌트로부터 상기 호출 테넌트에 스코프된 테넌트-미인식 프로세스의 실행의 분리를 허용하는 것을 특징으로 하는 방법.
A method for supporting tenant scoped execution of a tenant-unaware process invoked from a multitenant middleware application, the method comprising:
providing a plurality of partitions and a plurality of tenant-aware programs on one or more computers comprising an application server environment on which they are executed;
each of the partitions provides a management and runtime subdivision of the domain; and
each of said plurality of tenant-aware programs is associated with a partition of a plurality of partitions;
associating each of the plurality of partitions and each of the plurality of tenant-aware programs with a tenant of the plurality of tenants for use by the tenant;
invoking a tenant-unaware process from a calling partition of the plurality of partitions, the calling partition being associated with a calling tenant of the plurality of tenants;
collecting tenancy information about the calling tenant;
based on the collected tenancy information about the calling tenant, creating a tenant-specific virtual filesystem; and
scoping the execution of the tenant-unrecognized process to a calling tenant by setting a process execution environment and resources based on the collected tenancy information, wherein scoping the execution of the tenant-unrecognized process to the calling tenant,
redirecting the stream of the tenant-unaware process to a tenant-specific virtual filesystem, the stream of the tenant-unaware process comprising at least one of an input stream, an output stream, and an error stream;
Wherein scoping the execution allows separation of execution of the tenant-unaware process scoped to the calling tenant from other tenants in a multi-tenant middleware environment.
제1항에 있어서,
상기 멀티테넌트 미들웨어 어플리케이션은 상기 복수의 파티션의 호출 파티션과 연관되고, 상기 멀티테넌트 미들웨어 어플리케이션은 테넌트-미인식 프로세스를 호출하는 것과 관련하여 테넌시 정보를 전달하는 것을 특징으로 하는 방법.
According to claim 1,
wherein the multi-tenant middleware application is associated with a calling partition of the plurality of partitions, and the multi-tenant middleware application conveys tenancy information in connection with invoking a tenant-unaware process.
제1항에 있어서,
상기 생성된 테넌트-특정 가상 파일시스템 하에서 프로세스 작업 디렉토리를 생성하는 단계를 더 포함하며, 상기 프로세스 작업 디렉토리는 입력 서브디렉토리, 출력 서브디렉토리, 데이터베이스 서브디렉토리 및 오류 서브디렉토리를 포함하는 것을 특징으로 하는 방법.
According to claim 1,
Further comprising creating a process working directory under the created tenant-specific virtual file system, wherein the process working directory includes an input subdirectory, an output subdirectory, a database subdirectory and an error subdirectory.
제3항에 있어서,
적어도 하나의 데이터 파일로 입력 서브디렉토리를 설정하는 단계와; 그리고
월렛(wallet)을 사용하여 데이터베이스 서브디렉토리를 설정하는 단계를 더 포함하며, 상기 월렛은 호출 테넌트와 연관된 구성 파일 및 인증서(credentials)를 포함하는 것을 특징으로 하는 방법.
According to claim 3,
setting an input subdirectory with at least one data file; and
The method of claim 1 further comprising establishing a database subdirectory using a wallet, wherein the wallet contains configuration files and credentials associated with a calling tenant.
제1항에 있어서,
상기 테넌트-미인식 프로세스의 완료 후, 상기 테넌트-미인식 프로세스에 의해, 테넌트-특정 데이터베이스에 액세스하는 단계와, 상기 액세스는 월렛을 통해 허가(grant)되고; 그리고
상기 테넌트-미인식 프로세스의 완료 및 상기 테넌트-미인식 프로세스에 의한 테넌트-특정 데이터베이스에 액세스한 후, 상기 테넌트-특정 가상 파일시스템을 정리(clean up)하는 단계를 더 포함하며, 상기 테넌트-특정 가상 파일시스템을 정리하는 단계는 프로세스 작업 디렉토리를 삭제하는 단계를 포함하는 것을 특징으로 하는 방법.
According to claim 1,
after completion of the tenant-unaware process, accessing, by the tenant-unaware process, a tenant-specific database, the access being granted through a wallet; and
After completion of the tenant-unaware process and access to the tenant-specific database by the tenant-unaware process, cleaning up the tenant-specific virtual file system, wherein cleaning up the tenant-specific virtual file system comprises deleting a process working directory.
제3항에 있어서,
상기 테넌트-미인식 프로세스의 스트림은,
프로세스 작업 디렉토리의 입력 서브디렉토리, 출력 서브디렉토리 및 오류 서브디렉토리로 각각 재지정되는 것을 특징으로 하는 방법.
According to claim 3,
The stream of the tenant-unaware process,
and redirecting to an input subdirectory, an output subdirectory, and an error subdirectory of the process working directory, respectively.
제1항에 있어서,
상기 복수의 파티션 중 호출 파티션으로부터 호출된 테넌트-미인식 프로세스는 복합 어플리케이션의 일부이고, 상기 복합 어플리케이션은 복수의 파티션의 호출 파티션의 컨텍스트에서 실행되는 테넌트-인식 어플리케이션을 더 포함하는 것을 특징으로 하는 방법.
According to claim 1,
A tenant-unaware process called from a calling partition of the plurality of partitions is part of a composite application, the composite application further comprising a tenant-aware application running in the context of a calling partition of the plurality of partitions.
멀티테넌트 미들웨어 어플리케이션으로부터 호출된 테넌트-미인식 프로세스의 테넌트 스코프된(scoped) 실행을 지원하기 위한 시스템으로서,
복수의 파티션 및 복수의 테넌트-인식 프로그램과 함께 실행되는 어플리케이션 서버 환경을 포함하는 하나 이상의 컴퓨터를 포함하고,
상기 파티션 각각은 도메인의 관리 및 런타임 세분화를 제공하고, 그리고
상기 복수의 테넌트-인식 프로그램 각각은 복수의 파티션 중 하나와 연관되며,
상기 복수의 파티션 각각과 복수의 테넌트-인식 프로그램 각각은 테넌트에 의한 사용을 위해 복수의 테넌트의 테넌트에 연관되고; 그리고
상기 복수의 파티션의 호출 파티션은 테넌트-미인식 프로세스를 호출하되, 상기 호출 파티션은 상기 복수의 테넌트의 호출 테넌트와 연관되며;
상기 호출 테넌트에 관한 테넌시 정보가 수집되고;
상기 호출 테넌트에 관한 상기 수집된 테넌시 정보에 근거하여 테넌트-특정 가상 파일시스템이 생성되며,
상기 수집된 테넌시 정보에 기초하여, 프로세스 실행 환경 및 리소스를 설정함으로써 상기 테넌트 미인식 프로세스의 실행이 호출 테넌트로 스코핑되고, 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 것은,
상기 테넌트-미인식 프로세스의 스트림을 테넌트-특정 가상 파일시스템으로 재지정하는 것을 포함하되, 상기 테넌트-미인식 프로세스의 스트림은 입력 스트림, 출력 스트림 및 오류 스트림 중 적어도 하나를 포함하고; 그리고
상기 테넌트-미인식 프로세스의 실행을 스코핑하는 것은 멀티테넌트 미들웨어 환경의 다른 테넌트로부터 상기 호출 테넌트에 스코프된 테넌트-미인식 프로세스의 실행의 분리(isolation)를 허용하는 것을 특징으로 하는 시스템.
A system for supporting tenant scoped execution of tenant-unaware processes invoked from multitenant middleware applications, comprising:
one or more computers comprising an application server environment running with a plurality of partitions and a plurality of tenant-aware programs;
each of the partitions provides administrative and runtime granularity of the domain; and
each of the plurality of tenant-aware programs is associated with one of a plurality of partitions;
each of the plurality of partitions and each of the plurality of tenant-aware programs is associated with a tenant of the plurality of tenants for use by the tenant; and
a calling partition of the plurality of partitions invokes a tenant-unaware process, the calling partition being associated with a calling tenant of the plurality of tenants;
tenancy information about the calling tenant is collected;
A tenant-specific virtual file system is created based on the collected tenancy information about the calling tenant;
Based on the collected tenancy information, setting the process execution environment and resources so that the execution of the tenant-unrecognized process is scoped to the calling tenant, and scoping the execution of the tenant-unrecognized process to the calling tenant,
redirecting the stream of the tenant-unrecognized process to a tenant-specific virtual filesystem, wherein the stream of the tenant-unrecognized process includes at least one of an input stream, an output stream, and an error stream; and
scoping the execution of the tenant-unaware process allows isolation of the execution of the tenant-unaware process scoped to the calling tenant from other tenants in a multi-tenant middleware environment.
제8항에 있어서,
상기 멀티테넌트 미들웨어 어플리케이션은 복수의 파티션의 호출 파티션과 연관되고, 그리고
상기 멀티테넌트 미들웨어 어플리케이션은 테넌트-미인식 프로세스를 호출하는 것과 관련하여 테넌시 정보를 전달하는 것을 특징으로 하는 시스템.
According to claim 8,
the multi-tenant middleware application is associated with a calling partition of a plurality of partitions; and
Wherein the multi-tenant middleware application conveys tenancy information in connection with invoking a tenant-unaware process.
제8항에 있어서,
상기 생성된 테넌트-특정 가상 파일시스템 하에서 프로세스 작업 디렉토리가 생성되고, 상기 프로세스 작업 디렉토리는 입력 서브디렉토리, 출력 서브디렉토리, 데이터베이스 서브디렉토리 및 오류 서브디렉토리를 포함하는 것을 특징으로 하는 시스템.
According to claim 8,
A process working directory is created under the created tenant-specific virtual file system, and the process working directory includes an input subdirectory, an output subdirectory, a database subdirectory, and an error subdirectory.
제10항에 있어서,
상기 입력 서브디렉토리는 적어도 하나의 데이터 파일을 사용하여 설정되고, 그리고
상기 데이터베이스 서브디렉토리는 월렛을 사용하여 설정되며, 상기 월렛은 호출 테넌트와 연관된 구성 파일 및 인증서를 포함하는 것을 특징으로 하는 시스템.
According to claim 10,
the input subdirectory is established using at least one data file, and
wherein the database subdirectory is established using a wallet, wherein the wallet contains configuration files and certificates associated with a calling tenant.
제11항에 있어서,
상기 테넌트-미인식 프로세스 완료 이후 상기 테넌트-미인식 프로세스는 월렛을 사용하여 테넌트 특정 데이터 베이스에 액세스하고; 그리고
상기 테넌트-특정 가상 파일시스템은 테넌트-미인식 프로세스의 완료 이후에 정리(clean up)되며, 상기 테넌트-특정 가상 파일시스템을 정리하는 것은 프로세스 작업 디렉토리를 삭제하는 것을 포함하는 것을 특징으로 하는 시스템.
According to claim 11,
After completion of the tenant-unaware process, the tenant-unaware process accesses a tenant specific database using a wallet; and
wherein the tenant-specific virtual filesystem is cleaned up after completion of a tenant-unaware process, wherein cleaning up the tenant-specific virtual filesystem comprises deleting a process working directory.
제10항에 있어서,
상기 테넌트-미인식 프로세스의 스트림은,
프로세스 작업 디렉토리의 입력 서브디렉토리, 출력 서브디렉토리 및 오류 서브디렉토리로 각각 재지정되는 것을 특징으로 하는 시스템.
According to claim 10,
The stream of the tenant-unaware process,
Redirected to the input subdirectory, the output subdirectory and the error subdirectory of the process working directory, respectively.
제8항에 있어서,
상기 복수의 파티션 중 호출 파티션으로부터 호출된 테넌트-미인식 프로세스는 복합 어플리케이션의 일부이고, 상기 복합 어플리케이션은 복수의 파티션의 호출 파티션의 컨텍스트에서 실행되는 테넌트-인식 어플리케이션을 더 포함하는 것을 특징으로 하는 시스템.
According to claim 8,
A tenant-unaware process called from a calling partition of the plurality of partitions is part of a composite application, the composite application further comprising a tenant-aware application running in the context of a calling partition of the plurality of partitions.
멀티테넌트 미들웨어 어플리케이션으로부터 호출된 테넌트-미인식 프로세스의 테넌트 스코프된(scoped) 실행을 지원하고, 하나 이상의 컴퓨터에 의해 판독되고 실행될 때 하나 이상의 컴퓨터로 하여금 단계들을 수행하게 하는 저장된 명령들을 포함하는 비-일시적 컴퓨터 판독 가능 저장 매체로서, 상기 단계들은:
실행되는 어플리케이션 서버 환경을 포함하는 하나 이상의 컴퓨터에서, 복수의 파티션 및 복수의 테넌트-인식 프로그램을 제공하는 단계와,
상기 파티션 각각은 도메인의 관리 및 런타임 세분화를 제공하고, 그리고
상기 복수의 테넌트-인식 프로그램 각각은 복수의 파티션의 파티션과 연관되며;
상기 복수의 파티션 각각과 복수의 테넌트-인식 프로그램 각각을 테넌트에 의한 사용을 위해 복수의 테넌트의 하나의 테넌트에 연관시키는 단계와;
상기 복수의 파티션의 호출 파티션으로부터 테넌트-미인식 프로세스를 호출하는 단계와, 상기 호출 파티션은 복수의 테넌트의 호출 테넌트와 연관되고;
상기 호출 테넌트에 관한 테넌시 정보를 수집하는 단계와;
상기 호출 테넌트에 관한 수집된 테넌시 정보에 기초하여, 테넌트-특정 가상 파일시스템을 생성하는 단계와; 그리고
상기 수집된 테넌시 정보에 기초하여, 프로세스 실행 환경 및 리소스를 설정함으로써 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 단계를 포함하고, 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 단계는,
상기 테넌트-미인식 프로세스의 스트림을 테넌트-특정 가상 파일시스템으로 재지정하는 단계를 포함하며, 상기 테넌트 미인식 프로세스의 스트림은 입력 스트림, 출력 스트림 및 오류 스트림 중 적어도 하나를 포함하고;
상기 실행을 스코핑하는 것은 멀티테넌트 미들웨어 환경의 다른 테넌트로부터 상기 호출 테넌트에 스코프된 테넌트-미인식 프로세스의 실행의 분리를 허용하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장매체.
A non-transitory computer-readable storage medium supporting tenant-scoped execution of a tenant-unaware process invoked from a multi-tenant middleware application, containing stored instructions that when read and executed by one or more computers cause one or more computers to perform steps, the steps comprising:
providing a plurality of partitions and a plurality of tenant-aware programs on one or more computers comprising an application server environment on which they are executed;
each of the partitions provides administrative and runtime granularity of the domain; and
each of said plurality of tenant-aware programs is associated with a partition of a plurality of partitions;
associating each of the plurality of partitions and each of the plurality of tenant-aware programs with a tenant of the plurality of tenants for use by the tenant;
invoking a tenant-unaware process from a calling partition of the plurality of partitions, the calling partition being associated with a calling tenant of the plurality of tenants;
collecting tenancy information about the calling tenant;
based on the collected tenancy information about the calling tenant, creating a tenant-specific virtual filesystem; and
scoping the execution of the tenant-unrecognized process to a calling tenant by setting a process execution environment and resources based on the collected tenancy information, and scoping the execution of the tenant-unrecognized process to the calling tenant,
redirecting a stream of the tenant-unrecognized process to a tenant-specific virtual file system, wherein the stream of the tenant-unrecognized process includes at least one of an input stream, an output stream, and an error stream;
Wherein scoping the execution allows separation of execution of the tenant-unaware process scoped to the calling tenant from other tenants in a multi-tenant middleware environment.
제15항에 있어서,
상기 멀티테넌트 미들웨어 어플리케이션은 상기 복수의 파티션의 호출 파티션과 연관되고, 상기 멀티테넌트 미들웨어 어플리케이션은 테넌트-미인식 프로세스를 호출하는 것과 관련하여 테넌시 정보를 전달하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장매체.
According to claim 15,
The multi-tenant middleware application is associated with a calling partition of the plurality of partitions, and the multi-tenant middleware application carries tenancy information in connection with invoking a tenant-unaware process.
제15항에 있어서,
상기 단계들은,
상기 생성된 테넌트-특정 가상 파일시스템하에서 프로세스 작업 디렉토리를 생성하는 단계를 더 포함하고, 상기 프로세스 작업 디렉토리는 입력 서브디렉토리, 출력 서브디렉토리, 데이터베이스 서브디렉토리 및 오류 서브디렉토리를 포함하는 것 을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장매체.
According to claim 15,
These steps are
Further comprising creating a process working directory under the created tenant-specific virtual file system, wherein the process working directory includes an input subdirectory, an output subdirectory, a database subdirectory, and an error subdirectory.
제17항에 있어서,
상기 단계들은,
적어도 하나의 데이터 파일로 입력 서브디렉토리를 설정하는 단계와; 그리고
월렛을 사용하여 데이터베이스 서브디렉토리를 설정하는 단계를 더 포함하고, 상기 월렛은 호출 테넌트와 연관된 구성 파일 및 인증서를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장매체.
According to claim 17,
These steps are
setting an input subdirectory with at least one data file; and
and setting up a database subdirectory using a wallet, wherein the wallet contains configuration files and certificates associated with a calling tenant.
제15항에 있어서,
상기 단계들은,
상기 테넌트-미인식 프로세스의 완료 이후에, 상기 테넌트-미인식 프로세스에 의해, 테넌트-특정 데이터베이스에 액세스하는 단계와, 상기 액세스는 월렛을 통해 허가되며; 그리고
상기 테넌트-미인식 프로세스의 완료 및 상기 테넌트-미인식 프로세스의 테넌트-특정 데이터베이스 액세스 이후에, 상기 테넌트-특정 가상 파일시스템을 정리(clean up)하는 단계를 더 포함하며, 상기 테넌트-특정 가상 파일시스템을 정리하는 단계는 프로세스 작업 디렉토리를 삭제하는 단계를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장매체.
According to claim 15,
These steps are
after completion of the tenant-unaware process, accessing, by the tenant-unaware process, a tenant-specific database, the access being granted through a wallet; and
2. The non-transitory computer-readable storage medium of claim 1 , further comprising cleaning up the tenant-specific virtual file system after completion of the tenant-unaware process and access of the tenant-specific database by the tenant-unaware process, wherein cleaning up the tenant-specific virtual file system comprises deleting a process working directory.
제17항에 있어서,
상기 테넌트-미인식 프로세스의 스트림은 프로세스 작업 디렉토리의 입력 서브디렉토리, 출력 서브디렉토리 및 오류 서브디렉토리로 각각 재지정되는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장매체.
According to claim 17,
The stream of the tenant-unrecognized process is redirected to an input subdirectory, an output subdirectory, and an error subdirectory of the process working directory, respectively.
제15항에 있어서,
상기 복수의 파티션의 호출 파티션으로부터 호출된 테넌트-미인식 프로세스는 복합 어플리케이션의 일부이고, 상기 복합 어플리케이션은 복수의 파티션의 호출 파티션의 컨텍스트에서 실행되는 테넌트-인식 어플리케이션을 더 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장매체.
According to claim 15,
The tenant-unaware process called from the calling partition of the plurality of partitions is part of a composite application, and the composite application further comprises a tenant-aware application running in the context of the calling partition of the plurality of partitions.
멀티테넌트 미들웨어 어플리케이션으로부터 호출된 테넌트-미인식 프로세스의 테넌트 스코프된(scoped) 실행을 지원하기 위한 방법으로서,
실행되는 어플리케이션 서버 환경을 포함하는 하나 이상의 컴퓨터에서, 복수의 파티션 및 복수의 테넌트-인식 프로그램을 제공하는 단계와,
상기 파티션 각각은 도메인의 관리 및 런타임 세분화를 제공하고, 그리고
상기 복수의 테넌트-인식 프로그램 각각은 복수의 파티션의 파티션과 연관되며;
상기 복수의 파티션 각각과 복수의 테넌트-인식 프로그램 각각을 테넌트에 의한 사용을 위해 복수의 테넌트의 하나의 테넌트에 연관시키는 단계와;
상기 복수의 파티션의 호출 파티션으로부터 테넌트-미인식 프로세스를 호출하는 단계와, 상기 호출 파티션은 복수의 테넌트의 호출 테넌트와 연관되고;
상기 호출 테넌트에 관한 테넌시 정보를 수집하는 단계와; 그리고
상기 수집된 테넌시 정보에 기초하여, 프로세스 실행 환경 및 리소스를 설정함으로써 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 단계를 포함하며, 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 단계는,
상기 테넌트-미인식 프로세스를 컨테이너화된 프로세스로서 론칭(launching)하는 단계를 포함하고, 상기 컨테이너화된 프로세스는 테넌트-미인식 프로세스와 연관된 라이브러리 및 실행 파일(executables)을 포함하고;
상기 컨테이너화된 프로세스는 멀티테넌트 미들웨어 환경의 다른 테넌트로부터 상기 호출 테넌트에 대한 테넌트-미인식 프로세스의 실행을 분리할 수 있는 독립형 프로세스인 것을 특징으로 하는 방법.
A method for supporting tenant scoped execution of tenant-unaware processes invoked from multitenant middleware applications, comprising:
providing a plurality of partitions and a plurality of tenant-aware programs on one or more computers comprising an application server environment on which they are executed;
each of the partitions provides administrative and runtime granularity of the domain; and
each of said plurality of tenant-aware programs is associated with a partition of a plurality of partitions;
associating each of the plurality of partitions and each of the plurality of tenant-aware programs with a tenant of the plurality of tenants for use by the tenant;
invoking a tenant-unaware process from a calling partition of the plurality of partitions, the calling partition being associated with a calling tenant of the plurality of tenants;
collecting tenancy information about the calling tenant; and
scoping the execution of the tenant-unrecognized process to a calling tenant by setting a process execution environment and resources based on the collected tenancy information, wherein scoping the execution of the tenant-unrecognized process to the calling tenant,
launching the tenant-unaware process as a containerized process, the containerized process including libraries and executables associated with the tenant-unaware process;
The method of claim 1 , wherein the containerized process is a standalone process capable of separating execution of a tenant-unaware process for the calling tenant from other tenants in a multi-tenant middleware environment.
제22항에 있어서,
상기 스코핑 단계 이전에 상기 호출 테넌트에 관한 수집된 테넌시 정보에 기초하여, 테넌트-특정 가상 파일시스템을 생성하는 단계;를 더 포함하며, 상기 테넌트-특정 가상 파일시스템은 입력 서브디렉토리, 출력 서브디렉토리, 데이터베이스 서브디렉토리 및 오류 서브디렉토리를 포함하는 것을 특징으로 하는 방법.
The method of claim 22,
and generating a tenant-specific virtual filesystem based on the collected tenancy information about the calling tenant prior to the scoping step, wherein the tenant-specific virtual filesystem includes an input subdirectory, an output subdirectory, a database subdirectory, and an error subdirectory.
제22항에 있어서,
상기 테넌트-미인식 프로세스 완료 후 테넌트-미인식 프로세스에 의해 테넌트-특정 데이터베이스를 액세스하는 단계;를 더 포함하며,
상기 테넌트-미인식 프로세스는 월렛을 이용하여 테넌트-특정 데이터베이스를 액세스하는 것을 특징으로 하는 방법.
The method of claim 22,
Further comprising: accessing a tenant-specific database by a tenant-unrecognized process after completion of the tenant-unrecognized process;
Wherein the tenant-unaware process accesses a tenant-specific database using a wallet.
제22항에 있어서,
상기 테넌트-미인식 프로세스를 컨테이너화된 프로세스로서 론칭하는 단계는
컨테이너 데몬에 의해 어플리케이션 이미지를 액세스하는 단계와, 상기 어플리케이션 이미지는 상기 테넌트-미인식 프로세스와 연관되고;
상기 테넌트와 연관된 컨테이너를 생성하는 단계와; 그리고
상기 어플리케이션 이미지를 컨테이너에서 론칭하는 단계;를 포함하는 것을 특징으로 하는 방법.
The method of claim 22,
Launching the tenant-unaware process as a containerized process comprises:
accessing an application image by a container daemon, the application image being associated with the tenant-unaware process;
creating a container associated with the tenant; and
and launching the application image in a container.
제25항에 있어서,
상기 액세스된 어플리케이션 이미지는 어플리케이션 이미지 저장소에 저장되는 것을 특징으로 하는 방법.
According to claim 25,
Wherein the accessed application image is stored in an application image storage.
제25항에 있어서,
상기 어플리케이션 이미지의 스트림은 테넌트-특정 가상 파일시스템으로 재지정되고, 상기 어플리케이션 이미지의 스트림은 입력 스트림, 출력 스트림 및 오류 스트림 중 적어도 하나를 포함하는 것을 특징으로 하는 방법.
According to claim 25,
The method of claim 1 , wherein the stream of the application image is redirected to a tenant-specific virtual file system, and the stream of the application image includes at least one of an input stream, an output stream, and an error stream.
제22항에 있어서,
상기 복수의 파티션의 상기 호출 파티션으로부터 호출된 테넌트-미인식 프로세스는 복합 어플리케이션의 일부이고, 상기 복합 어플리케이션은 복수의 파티션의 호출 파티션의 컨텍스트에서 실행되는 테넌트-인식 어플리케이션을 더 포함하는 것을 특징으로 하는 방법.
The method of claim 22,
The tenant-unaware process called from the calling partition of the plurality of partitions is part of a composite application, the composite application further comprising a tenant-aware application running in the context of a calling partition of the plurality of partitions.
멀티테넌트 미들웨어 어플리케이션으로부터 호출된 테넌트-미인식 프로세스의 테넌트 스코프된(scoped) 실행을 지원하기 위한 시스템으로서,
복수의 파티션 및 복수의 테넌트-인식 프로그램과 함께 실행되는 어플리케이션 서버 환경을 포함하는 하나 이상의 컴퓨터를 포함하고,
상기 파티션 각각은 도메인의 관리 및 런타임 세분화를 제공하고, 그리고
상기 복수의 테넌트-인식 프로그램 각각은 복수의 파티션 중 하나와 연관되며;
상기 복수의 파티션 각각과 복수의 테넌트-인식 프로그램 각각은 테넌트에 의한 사용을 위해 복수의 테넌트의 테넌트에 연관되고; 그리고
상기 복수의 파티션의 호출 파티션은 테넌트-미인식 프로세스를 호출하고, 상기 호출 파티션은 상기 복수의 테넌트의 호출 테넌트와 연관되며;
상기 호출 테넌트에 관한 테넌시 정보가 수집되고;
상기 수집된 테넌시 정보에 기초하여, 프로세스 실행 환경 및 리소스를 설정함으로써 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하며, 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 것은,
상기 테넌트-미인식 프로세스를 컨테이너화된 프로세스로서 론칭하는 것을 포함하되, 상기 컨테이너화된 프로세스는 테넌트-미인식 프로세스와 연관된 라이브러리 및 실행 파일을 포함하고;
상기 컨테이너화된 프로세스는 멀티테넌트 미들웨어 환경의 다른 테넌트로부터 상기 호출 테넌트에 대한 테넌트-미인식 프로세스의 실행을 분리할 수 있는 독립형 프로세스인 것을 특징으로 하는 시스템.
A system for supporting tenant scoped execution of tenant-unaware processes invoked from multitenant middleware applications, comprising:
one or more computers comprising an application server environment running with a plurality of partitions and a plurality of tenant-aware programs;
each of the partitions provides administrative and runtime granularity of the domain; and
each of said plurality of tenant-aware programs is associated with one of a plurality of partitions;
each of the plurality of partitions and each of the plurality of tenant-aware programs is associated with a tenant of the plurality of tenants for use by the tenant; and
a calling partition of the plurality of partitions invokes a tenant-unaware process, and the calling partition is associated with a calling tenant of the plurality of tenants;
tenancy information about the calling tenant is collected;
Scoping the execution of the tenant-unrecognized process to the calling tenant by setting the process execution environment and resources based on the collected tenancy information, and scoping the execution of the tenant-unrecognized process to the calling tenant,
launching the tenant-unaware process as a containerized process, the containerized process including libraries and executables associated with the tenant-unaware process;
The system of claim 1 , wherein the containerized process is a standalone process capable of separating execution of a tenant-unaware process for the calling tenant from other tenants in a multi-tenant middleware environment.
제29항에 있어서,
상기 호출 테넌트에 관한 상기 수집된 테넌시 정보에 기초하여, 테넌트-특정 가상 파일시스템이 생성되고, 상기 테넌트-특정 가상 파일시스템은 입력 서브디렉토리, 출력 서브디렉토리, 데이터베이스 서브디렉토리 및 오류 서브디렉토리를 포함하는 것을 특징으로 하는 시스템.
According to claim 29,
Based on the collected tenancy information about the calling tenant, a tenant-specific virtual filesystem is created, the tenant-specific virtual filesystem comprising an input subdirectory, an output subdirectory, a database subdirectory and an error subdirectory.
제29항에 있어서,
상기 테넌트-미인식 프로세스의 완료 후에, 상기 테넌트-미인식 프로세스는 월렛을 사용하여 테넌트 특정 데이터베이스에 액세스하는 것을 특징으로 하는 시스템.
According to claim 29,
After completion of the tenant-unaware process, the tenant-unaware process accesses a tenant specific database using a wallet.
제29항에 있어서,
상기 테넌트-미인식 프로세스를 컨테이너화된 프로세스로서 론칭하는 것은,
컨테이너 데몬으로부터 어플리케이션 이미지를 액세스하는 것과, 상기 어플리케이션 이미지는 상기 테넌트-미인식 프로세스와 관련되고;
상기 테넌트와 연관된 컨테이너를 생성하는 것과; 그리고
상기 어플리케이션 이미지를 컨테이너에서 론칭하는 것을 포함하는 것을 특징으로 하는 시스템.
According to claim 29,
Launching the tenant-unaware process as a containerized process:
accessing an application image from a container daemon, the application image being associated with the tenant-unaware process;
creating a container associated with the tenant; and
and launching the application image in a container.
제32항에 있어서,
상기 액세스된 어플리케이션 이미지는 어플리케이션 이미지 저장소에 저장되는 것을 특징으로 하는 시스템.
33. The method of claim 32,
The system characterized in that the accessed application image is stored in an application image storage.
제32항에 있어서,
상기 어플리케이션 이미지의 스트림은 테넌트-특정 가상 파일시스템으로 재지정되고, 상기 어플리케이션 이미지의 스트림은 입력 스트림, 출력 스트림 및 오류 스트림 중 적어도 하나를 포함하는 것을 특징으로 하는 시스템.
33. The method of claim 32,
The system of claim 1 , wherein the stream of the application image is redirected to a tenant-specific virtual file system, and the stream of the application image includes at least one of an input stream, an output stream, and an error stream.
제29항에 있어서,
상기 복수의 파티션의 호출 파티션으로부터 호출된 테넌트-미인식 프로세스는 복합 어플리케이션의 일부이고, 상기 복합 어플리케이션은 복수의 파티션의 호출 파티션의 컨텍스트에서 실행되는 테넌트-인식 어플리케이션을 더 포함하는 것을 특징으로 하는 시스템.
According to claim 29,
wherein the tenant-unaware process called from the calling partition of the plurality of partitions is part of a composite application, the composite application further comprising a tenant-aware application running in the context of a calling partition of the plurality of partitions.
멀티테넌트 미들웨어 어플리케이션으로부터 호출된 테넌트-미인식 프로세스의 테넌트 스코프된(scoped) 실행을 지원하고, 하나 이상의 컴퓨터에 의해 판독되고 실행될 때 하나 이상의 컴퓨터로 하여금 단계들을 수행하게 하는 저장된 명령들을 포함하는 비-일시적 컴퓨터 판독 가능 저장 매체로서, 상기 단계들은:
실행되는 어플리케이션 서버 환경을 포함하는 하나 이상의 컴퓨터에서, 복수의 파티션 및 복수의 테넌트-인식 프로그램을 제공하는 단계와,
상기 파티션 각각은 도메인의 관리 및 런타임 세분화를 제공하고, 그리고
상기 복수의 테넌트-인식 프로그램 각각은 복수의 파티션의 파티션과 연관되며;
상기 복수의 파티션 각각과 복수의 테넌트-인식 프로그램 각각을 테넌트에 의한 사용을 위해 복수의 테넌트의 하나의 테넌트에 연관시키는 단계와;
상기 복수의 파티션의 호출 파티션으로부터 테넌트-미인식 프로세스를 호출하는 단계와, 상기 호출 파티션은 복수의 테넌트의 호출 테넌트와 연관되고;
상기 호출 테넌트에 관한 테넌시 정보를 수집하는 단계와; 그리고
상기 수집된 테넌시 정보에 기초하여, 프로세스 실행 환경 및 리소스를 설정함으로써 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 단계를 포함하며, 상기 테넌트-미인식 프로세스의 실행을 호출 테넌트에 스코핑하는 단계는,
상기 테넌트-미인식 프로세스를 컨테이너화된 프로세스로서 론칭하는 단계를 포함하고, 상기 컨테이너화된 프로세스는 테넌트-미인식 프로세스와 연관된 라이브러리 및 실행 파일을 포함하고;
상기 컨테이너화된 프로세스는 멀티테넌트 미들웨어 환경의 다른 테넌트로부터 상기 호출 테넌트에 대한 테넌트-미인식 프로세스의 실행을 분리할 수 있는 독립형 프로세스인 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
A non-transitory computer-readable storage medium supporting tenant-scoped execution of a tenant-unaware process invoked from a multi-tenant middleware application, containing stored instructions that when read and executed by one or more computers cause one or more computers to perform steps, the steps comprising:
providing a plurality of partitions and a plurality of tenant-aware programs on one or more computers comprising an application server environment on which they are executed;
each of the partitions provides administrative and runtime granularity of the domain; and
each of said plurality of tenant-aware programs is associated with a partition of a plurality of partitions;
associating each of the plurality of partitions and each of the plurality of tenant-aware programs with a tenant of the plurality of tenants for use by the tenant;
invoking a tenant-unaware process from a calling partition of the plurality of partitions, the calling partition being associated with a calling tenant of the plurality of tenants;
collecting tenancy information about the calling tenant; and
scoping the execution of the tenant-unrecognized process to a calling tenant by setting a process execution environment and resources based on the collected tenancy information, wherein scoping the execution of the tenant-unrecognized process to the calling tenant,
launching the tenant-unaware process as a containerized process, the containerized process including libraries and executables associated with the tenant-unaware process;
The containerized process is a non-transitory computer-readable storage medium, characterized in that it is a stand-alone process capable of separating execution of a tenant-unaware process for the calling tenant from other tenants in a multi-tenant middleware environment.
제36항에 있어서,
상기 단계들은,
상기 호출 테넌트에 관한 수집된 테넌시 정보에 기초하여, 테넌트-특정 가상 파일시스템을 생성하는 단계;를 더 포함하며, 상기 테넌트-특정 가상 파일시스템은 입력 서브디렉토리, 출력 서브디렉토리, 데이터베이스 서브디렉토리 및 오류 서브디렉토리를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
37. The method of claim 36,
These steps are
generating a tenant-specific virtual file system based on the collected tenancy information about the calling tenant, wherein the tenant-specific virtual file system includes an input subdirectory, an output subdirectory, a database subdirectory, and an error subdirectory.
제36항에 있어서,
상기 단계들은,
상기 테넌트-미인식 프로세스 완료 후, 테넌트-미인식 프로세스에 의해, 테넌트 특정 데이터베이스에 액세스하는 단계;를 더 포함하며,
상기 테넌트-미인식 프로세스는 월렛을 사용하여 테넌트-특정 데이터베이스에 액세스하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
37. The method of claim 36,
These steps are
Further comprising: accessing a tenant specific database by a tenant-unrecognized process after completion of the tenant-unrecognized process;
wherein the tenant-unaware process accesses a tenant-specific database using a wallet.
제36항에 있어서,
상기 테넌트-미인식 프로세스를 컨테이너화된 프로세스로서 론칭하는 단계는,
컨테이너 데몬에 의해 어플리케이션 이미지를 액세스하는 단계와, 상기 어플리케이션 이미지는 상기 테넌트-미인식 프로세스와 연관되고;
상기 테넌트와 연관된 컨테이너를 생성하는 단계와; 그리고
상기 어플리케이션 이미지를 컨테이너에서 론칭하는 단계;를 포함하며,
상기 액세스된 어플리케이션 이미지는 어플리케이션 이미지 저장소에 저장되는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
37. The method of claim 36,
Launching the tenant-unaware process as a containerized process comprises:
accessing an application image by a container daemon, the application image being associated with the tenant-unaware process;
creating a container associated with the tenant; and
Including; launching the application image in a container,
The accessed application image is stored in an application image storage.
제39항에 있어서,
상기 어플리케이션 이미지의 스트림은 테넌트-특정 가상 파일시스템으로 재지정되고, 상기 어플리케이션 이미지의 스트림은 입력 스트림, 출력 스트림 및 오류 스트림 중 적어도 하나를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
The method of claim 39,
The stream of the application image is redirected to a tenant-specific virtual file system, and the stream of the application image includes at least one of an input stream, an output stream, and an error stream.
제36항에 있어서,
상기 복수의 파티션의 호출 파티션으로부터 호출된 테넌트-미인식 프로세스는 복합 어플리케이션의 일부이고, 상기 복합 어플리케이션은 상기 복수의 파티션의 호출 파티션의 컨텍스트에서 실행되는 테넌트-인식 어플리케이션을 더 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
37. The method of claim 36,
The tenant-unaware process called from the calling partition of the plurality of partitions is part of a composite application, the composite application further comprising a tenant-aware application running in the context of the calling partition of the plurality of partitions.
하나 이상의 컴퓨터 시스템에 의해 실행될 때, 하나 이상의 컴퓨터 시스템으로 하여금 제1항 내지 제7항 및 제22항 내지 제28항 중 어느 한 항의 방법을 수행하게 하는 비-일시적 컴퓨터 판독 가능 저장 매체에 저장된 프로그램 명령을 포함하는 컴퓨터 프로그램.A computer program comprising program instructions stored on a non-transitory computer readable storage medium that, when executed by one or more computer systems, cause the one or more computer systems to perform the method of any one of claims 1-7 and 22-28. 제42항의 저장된 컴퓨터 프로그램을 갖는 비-일시적 컴퓨터 판독 가능 저장 매체.A non-transitory computer readable storage medium having the computer program of claim 42 stored thereon. 제1항 내지 제7항 중 어느 한 항의 방법 및 제22항 내지 제28항 중 어느 한 항의 방법을 수행하도록 구성된 시스템.A system configured to perform the method of any one of claims 1 to 7 and the method of any one of claims 22 to 28.
KR1020177037057A 2015-10-23 2016-09-09 System and method for multi-tenant execution of OS programs called from multi-tenant middleware applications KR102559507B1 (en)

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 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,193 2016-03-02
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
US15/059,872 2016-03-03
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 KR20180072593A (en) 2018-06-29
KR102559507B1 true KR102559507B1 (en) 2023-07-25

Family

ID=60765562

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177037057A KR102559507B1 (en) 2015-10-23 2016-09-09 System and method for multi-tenant execution of OS programs called from multi-tenant middleware applications

Country Status (4)

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

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113448593A (en) * 2020-07-31 2021-09-28 心医国际数字医疗系统(大连)有限公司 Automatic deployment method and device for diagnosis and treatment system platform application and electronic equipment

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012063301A1 (en) 2010-11-08 2012-05-18 株式会社日立製作所 Computer system, multitenant control method, and multitenant control program
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 (en) 2012-11-08 2014-05-22 Hitachi Ltd Communication apparatus and setting method

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2011289318B2 (en) * 2010-08-11 2016-02-25 Security First Corp. Systems and methods for secure multi-tenant data storage
US9460169B2 (en) * 2011-01-12 2016-10-04 International Business Machines Corporation Multi-tenant audit awareness in support of cloud environments
CN102333115A (en) * 2011-09-01 2012-01-25 杭州湾云计算技术有限公司 Method and device for transforming existing Web application into SaaS multi-tenant application
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 (en) * 2013-03-15 2018-04-13 伊姆西公司 Method and apparatus for the data management in multi-tenant distributed environment
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
US9961011B2 (en) * 2014-01-21 2018-05-01 Oracle International Corporation System and method for supporting multi-tenancy in an application server, cloud, or other environment
CN104104513A (en) * 2014-07-22 2014-10-15 浪潮电子信息产业股份有限公司 Safety isolation method for cloud side multi-tenant data storage
CN104598249B (en) * 2015-02-05 2017-09-01 浙江天正信息科技有限公司 Software personalisation customization and dispositions method that multi-tenant is perceived

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012063301A1 (en) 2010-11-08 2012-05-18 株式会社日立製作所 Computer system, multitenant control method, and multitenant control program
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 (en) 2012-11-08 2014-05-22 Hitachi Ltd Communication apparatus and setting method

Also Published As

Publication number Publication date
CN107533485A (en) 2018-01-02
EP3365779A1 (en) 2018-08-29
JP6866307B2 (en) 2021-04-28
KR20180072593A (en) 2018-06-29
CN107533485B (en) 2021-01-12
JP2018536206A (en) 2018-12-06

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
JP6876836B2 (en) Systems and methods to support partitions in a multi-tenant application server environment
JP6611798B2 (en) System and method for using global runtime in a multi-tenant application server environment
JP6703527B2 (en) System and method for determination of partition identifier in a multi-tenant application server environment
JP6599448B2 (en) System and method for providing an end-to-end lifecycle in a multi-tenant application server environment
US10356161B2 (en) System and method for classloading in a multitenant application server environment
JP6461167B2 (en) System and method for supporting multi-tenancy in an application server, cloud or other environment
CN106575242B (en) System and method for namespace support in a multi-tenant application server environment
US10084843B2 (en) System and method for web container partitions in a multitenant application server environment
US9973384B2 (en) System and method for enterprise java bean support in a multitenant application server environment
US10467061B2 (en) System and method for resource overriding in a multitenant application server environment
US10635491B2 (en) System and method for use of a multi-tenant application server with a multitasking virtual machine
US10225164B2 (en) System and method for providing a cloud computing environment
US10051043B2 (en) System and method for JMX support in a multitenant application server environment
JP6574794B2 (en) System and method for portable partitions in a multi-tenant application server environment
US11075799B2 (en) System and method for provisioning in a multi-tenant application server environment
KR102559507B1 (en) System and method for multi-tenant execution of OS programs called from multi-tenant middleware applications

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