KR20230098647A - 분산 파드 기반 시스템 내에서의 서비스 오케스트레이션 - Google Patents
분산 파드 기반 시스템 내에서의 서비스 오케스트레이션 Download PDFInfo
- Publication number
- KR20230098647A KR20230098647A KR1020237018734A KR20237018734A KR20230098647A KR 20230098647 A KR20230098647 A KR 20230098647A KR 1020237018734 A KR1020237018734 A KR 1020237018734A KR 20237018734 A KR20237018734 A KR 20237018734A KR 20230098647 A KR20230098647 A KR 20230098647A
- Authority
- KR
- South Korea
- Prior art keywords
- subservice
- service
- image
- kernel
- type
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 127
- 230000004044 response Effects 0.000 claims abstract description 22
- 230000008569 process Effects 0.000 claims description 76
- 230000036541 health Effects 0.000 claims description 26
- 238000010801 machine learning Methods 0.000 claims description 20
- 238000003339 best practice Methods 0.000 claims description 18
- 238000009826 distribution Methods 0.000 claims description 15
- 230000006870 function Effects 0.000 claims description 15
- 238000003860 storage Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 9
- 230000000977 initiatory effect Effects 0.000 claims description 7
- 230000010354 integration Effects 0.000 claims description 7
- 238000012545 processing Methods 0.000 description 26
- 238000003326 Quality management system Methods 0.000 description 25
- 239000003795 chemical substances by application Substances 0.000 description 19
- 238000010586 diagram Methods 0.000 description 14
- 238000007726 management method Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 9
- 238000002955 isolation Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 8
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 238000007405 data analysis Methods 0.000 description 6
- 238000013468 resource allocation Methods 0.000 description 6
- 238000012795 verification Methods 0.000 description 6
- 238000013475 authorization Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 238000012384 transportation and delivery Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 238000013515 script Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000010923 batch production Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012517 data analytics Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 238000012358 sourcing Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
본 개시는 분산 파드 기반 시스템 내 서비스 오케스트레이션을 위한 기법과 관련된다. 특히, 양태가 분산 컴퓨팅 환경 상에 상주하는 커널에서, 분산 컴퓨팅 환경에서의 서브서비스 또는 서비스에 대한 배포를 개시하기 위한 요청을 수신하는 것과 관련된다. 서브서비스 또는 서비스는 하나의 유형을 가지며, 상기 서브서비스 또는 서비스가 상기 분산 컴퓨팅 환경 상에 배포되기 위해, 상기 서브서비스 또는 서비스의 유형은 상기 분산 컴퓨팅 환경이 지원하도록 구성된 것이어야 한다. 요청을 수신하는 것 및 상기 서브서비스 또는 서비스가 상기 분산 컴퓨팅 환경이 지원하도록 구성된 것임에 응답하여, 특정된 자원이 프로비저닝되며, 상기 서브서비스 또는 서비스는 프로비저닝된 특정된 자원을 포함하는 파드 및 상기 서브서비스 또는 서비스의 유형에 대한 수정된 이미지의 레플리카를 이용해 배포된다.
Description
우선권 주장
본 출원은 모든 목적으로 그 전체가 참조로서 포함되는 2020년11월 10일에 출원된 미국 가출원 번호 63/111,996의 이익 및 우선권을 주장한다.
기술분야
본 발명은 디지털 및 개인화된 헬스케어에 관한 것으로, 특히 분산형 파드 기반 시스템 내의 서비스 오케스트레이션을 위한 기법에 관한 것이다.
클러스터 관리자(분산 컴퓨팅 시스템용 커널이라고도 함)는 다수의 서로 다른 프레임워크(가령, 스트림 처리, 배치 처리, 데이터 통합, 저장 프레임워크 등) 간의 자원 공유를 제공한다. 일부 예에서, 클러스터 관리자는 (i) 프레임워크에서 작업을 실행하고 사용 가능한 자원에 대해 알리기 위한 에이전트, (ii) 서비스를 제공하거나 특정 사용 사례를 해결하기 위한 프레임워크, 및 (iii) 에이전트와 프레임워크를 중재하는 마스터를 포함한다. 프레임워크는 자원 수락 또는 거부 여부를 결정하는 스케줄러 및 작업에 수락된 자원을 할당하고 작업 실행을 제어하는 실행자(executor)를 포함한다. 클러스터 관리자에 의해 제공되는 자원 공유가 일반적으로 자원 할당 및 자원 격리를 포함한다. 자원 할당은 에이전트가 사용 가능한 자원을 보고하는 것, 마스터가 각 프레임워크를 제안할 자원의 수를 결정하는 것, 및 프레임워크가 수락할 자원과 자원에서 실행할 계산을 결정하는 것을 포함한다. 자원 격리는 에이전트, 마스터, 및 프레임워크가 임의의 작업에 할당된 자원이 다른 작업에 의해 소비되지 않을 것을 보장하는 것을 포함한다.
헬스케어에서, 데이터 기반 기술 솔루션이 비용을 줄이면서 더욱 개인화된 헬스케어를 위해 개발되고 있다. 헬스케어 환경이 개인화된 의료 서비스 및 솔루션의 주문형 배포 시스템으로 이동함에 따라, 헬스케어 제공자는 소프트웨어 배포 및 서비스 관리 프로세스를 자동화하고 간소화하여 개발자가 솔루션을 더 빠르게 혁신하는 데 도움이 되는 것을 찾고 있다. 헬스케어 제공자 및 서비스를 지원하기 위해, 개발자는 헬스케어 정보 기술 인프라구조 표준으로서 분산 컴퓨팅 환경(가령, 클라우드 컴퓨팅)을 고려했으며, 이는 서비스 모델(가령, AaaS(analytics-as-a-service)) 내에서 소프트웨어 배포 및 서비스 관리 프로세스를 지원하는 데 필요한 복잡한 인프라구조를 개발하는 저비용 방법이다. 분산 컴퓨팅 환경, 가령, 클라우드 컴퓨팅은 헬스케어 제공자에게 많은 이점을 제공하지만 레거시 스토리지 또는 정보 공유 솔루션과 다르게 작동하므로 고유한 프라이버시 및 보안 문제가 발생한다. 가령, 사용자가 인터넷 연결을 통해 데이터를 액세스하기 때문에, 정부 규정(가령, HIPAA(Health Insurance Portability and Accountability Act), GxP("모범 사례" 품질 지침 및 규정), 및 GDPR(General Data Protection Regulation) 준수는 소프트웨어 배포 및 서비스 관리 프로세스를 지원하기 위해 클라우드 솔루션을 찾고 있는 헬스케어 제공자의 고유한 과제가 된다. 따라서 보호되는 헬스케어 정보의 기밀성, 가용성 및 무결성을 보장하기 위해 빌드된 호환 소프트웨어 배포 플랫폼의 발전이 필요하다.
다양한 실시예에서 컴퓨터로 구현되는 방법이 제공되며, 상기 방법은, 제1 분산 컴퓨팅 환경 상에 상주하는 제1 커널에서, 상기 제1 분산 컴퓨팅 환경 상에서의 제1 서브서비스 또는 서비스에 대한 배포 프로세스를 개시하라는 제1 요청을 수신하는 단계 - 상기 제1 서브서비스 또는 서비스는 하나의 유형을 가지며, 상기 제1 서브서비스 또는 서비스가 상기 제1 분산 컴퓨팅 환경 상에서 배포되기 위해, 상기 제1 서브서비스 또는 서비스의 유형은 상기 제1 분산 컴퓨팅 환경이 지원하도록 구성된 것이어야 함 - , 상기 요청을 수신한 것 및 상기 제1 서브서비스 또는 서비스의 유형은 상기 제1 분산 컴퓨팅 환경이 지원하도록 구성된 것임에 응답하여, 상기 제1 커널에 의해, 상기 제1 분산 컴퓨팅 환경의 플레이스먼트 링 내 특정된 자원을 프로비저닝하는 단계 - 상기 프로비저닝하는 단계는 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 이미지를 획득하는 단계 - 상기 이미지는 소프트웨어 패키지를 실행하기 위해 사용되는 자원의 사양을 포함하는 상기 소프트웨어 패키지의 템플릿이며 상기 템플릿은 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 상기 특정된 자원을 이용하도록 커스텀화됨 - , 상기 플레이스먼트 링 내에서 상기 특정된 자원의 위치를 찾는 단계, 상기 이미지를 이용해, 상기 특정된 자원을 캡슐화하는 하나 이상의 컨테이너를 빌드하는 단계 - 상기 하나 이상의 컨테이너는 상기 제1 서브서비스 또는 서비스를 제공하기 위해 하나 이상의 프로그램을 실행하기 위한 제1 파드(pod)에 래핑됨 - , 및 쓰기 가능 레이어를 이용해, 상기 하나 이상의 프로그램을 실행하기 위해 필요한 소스 코드를 포함하도록 상기 이미지를 수정하는 단계를 포함함 - , 및 상기 제1 커널에 의해, 상기 제1 파드 및 수정된 이미지의 하나 이상의 레플리카를 이용해 상기 제1 서브서비스 또는 서비스를 배포하는 단계를 포함한다.
일부 실시예에서, 상기 자원의 위치를 찾는 것은 상기 이미지를 파싱하여 상기 특정된 자원을 식별하는 것, 상기 플레이스먼트 링으로부터 이용 가능 자원을 요청하는 것, 상기 플레이스먼트 링으로부터의 상기 이용 가능 자원을 파싱하는 것, 상기 이용 가능 자원의 파싱에 기초하여 상기 이미지로부터의 상기 특정된 자원 모두가 상기 플레이스먼트 링 내에서 이용 가능한지 여부를 결정하는 것, 및 상기 이미지로부터의 상기 특정된 자원 모두가 상기 플레이스먼트 링 내에서 이용 가능 한 것은 아님에 응답하여, 상기 이미지에 기초하여 상기 이용 가능 자원을 오토스케일링하여 상기 플레이스먼트 링에 상기 이미지로부터 식별된 상기 특정된 자원을 만족시키기 위해 추가 자원을 제공하는 것을 포함한다.
일부 실시예에서, 상기 이미지를 획득하는 것은 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 복수의 이미지로부터 상기 이미지를 식별하는 것을 더 포함하며, 상기 이미지는 상기 이미지의 취약점을 감소시키도록 보안 모범 사례에 따라 구성되며, 상기 보안 모범 사례는 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 선택된다.
일부 실시예에서, 이미지는 배포 작업흐름 및 성능을 최적화하도록 이미지 사양에 따라 더 구성되며, 상기 이미지 사양은 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 선택된다.
일부 실시예에서, 상기 제1 서브서비스 또는 서비스의 유형은 머신 러닝된 모델 소프트웨어, 의료 장치로서의 소프트웨어, 물리적 의료 장치와 함께 동작하는 소프트웨어, 또는 데이터 입수 및 처리 소프트웨어이다.
일부 실시예에서, 상기 방법은 상기 커널에 의해, 상기 제1 서브서비스 또는 서비스를 실행하는 것을 더 포함하며, 상기 실행하는 것은 상기 커널의 마스터에 의해, 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 상기 제1 서브서비스 또는 서비스를 실행하기 위한 프레임워크를 결정하는 것, 상기 커널의 마스터에 의해, 상기 플레이스먼트 링 내 이용 가능 자원을 상기 제1 서브서비스 또는 서비스를 제공하기 위해 하나 이상의 프로그램을 실행하기 위한 상기 프레임워크에 제안하는 것, 상기 커널의 마스터에 의해, 상기 제안에 응답하여, 상기 하나 이상의 프로그램에 의해 정의된 작업에 대한 정보를 수신하는 것, 및 상기 커널의 마스터에 의해, 상기 작업을 실행하기 위해 프레임워크의 실행자에게 상기 특정된 자원을 할당하는 상기 커널의 에이전트에게 상기 작업을 전송하는 것을 더 포함한다.
일부 실시예에서, 상기 커널에 의해, 상기 제1 서브서비스 또는 서비스를 퍼블리싱하는 것, 및 상기 커널에 의해, 상기 제1 서브서비스 또는 서비스의 보안을 개시하는 것을 더 포함한다.
일부 실시예에서, 상기 방법은 상기 커널에 의해, 상기 제1 서브서비스 또는 서비스의 기능을 평가하고 제1 서브서비스 또는 서비스가 예상대로 기능하고 있는지 여부를 결정하기 위해 건강 체크를 수행하는 것, 상기 제1 서브서비스 또는 서비스가 상기 건강 체크를 통과하지 못할 때, 지속적 통합 지속적 배포(CICD: continuous integration continuous deployment) 시스템에게 상기 제1 서브서비스 또는 서비스가 예상대로 기능하지 못함에 대해 통지하는 것 - 상기 제1 요청은 상기 CICD 시스템으로부터 수신됨 - , 및 상기 제1 서브서비스 또는 서비스가 예상대로 기능할 때, (i) 상기 커널에 의해, 제1 서브서비스 또는 서비스를 퍼블리싱하고, (ii) 상기 커널에 의해 상기 제1 서브서비스 또는 서비스의 보안을 개시하며, (iii) 상기 제1 서브서비스 또는 서비스가 예상대로 기능함에 대해 상기 CICD 시스템에게 통지하는 것을 더 포함한다.
일부 실시예에서, 상기 방법은 제2 분산 컴퓨팅 환경 상에 상주하는 제2 커널에서, 상기 제2 분산 컴퓨팅 환경 상에서의 제2 서브서비스 또는 서비스에 대한 배포 프로세스를 개시하라는 제2 요청을 수신하는 것 - 상기 제2 서브서비스는 하나의 유형을 가지며, 상기 제2 서브서비스 또는 서비스가 상기 제2 분산 컴퓨팅 환경 상에 배포되기 위해, 상기 제2 서브서비스 또는 서비스의 유형은 상기 제2 분산 컴퓨팅 환경이 지원하도록 구성된 것이어야 함 - , 상기 제2 커널에 의해, 상기 요청을 수신한 것에 응답하여, 상기 제2 분산 컴퓨팅 환경의 플레이스먼트 링 내 특정된 자원을 프로비저닝하는 것 - 상기 프로비저닝하는 것은 상기 제2 서브서비스 또는 서비스의 유형에 기초하여 이미지를 획득하는 것 - 상기 이미지는 소프트웨어 패키지를 실행하는 데 사용되는 자원의 사양을 포함하는 상기 소프트웨어 패키지의 템플릿이고 상기 템플릿은 제2 서브서비스 또는 서비스의 유형에 기초하여 상기 특정된 자원을 이용하도록 커스텀화됨 - , 상기 플레이스먼트 링 내에서 상기 특정된 자원의 위치를 찾는 것, 상기 이미지를 이용해, 상기 특정된 자원을 캡슐화하는 하나 이상의 컨테이너를 빌드하는 것 - 상기 하나 이상의 컨테이너는 제2 서브서비스 또는 서비스를 제공하기 위해 하나 이상의 프로그램을 실행하기 위한 제2 파드에 래핑됨 - , 및 쓰기 가능 레이어를 이용해, 하나 이상의 프로그램을 실행하기 위해 필요한 소스 코드를 포함하도록 상기 이미지를 수정하는 것을 포함함 - , 및 상기 제2 커널에 의해, 상기 제2 파드 및 수정된 이미지의 하나 이상의 레플리카를 이용해 상기 제2 서브서비스 또는 서비스를 배포하는 것을 더 포함한다.
본 개시의 일부 실시예는 하나 이상의 데이터 프로세서를 포함하는 시스템을 포함한다. 일부 실시예에서, 시스템은 하나 이상의 데이터 프로세서 상에서 실행될 때 하나 이상의 데이터 프로세서로 하여금 여기서 개시된 하나 이상의 방법 중 일부 또는 전부 및/또는 하나 이상의 프로세스 중 일부 또는 전부를 수행하게 하는 명령을 포함하는 비일시적 컴퓨터 판독형 저장 매체를 포함한다. 본 개시내용의 일부 실시예는 하나 이상의 데이터 프로세서 상에서 실행될 때 하나 이상의 데이터 프로세서로 하여금 여기서 개시된 하나 이상의 방법 중 일부 또는 전부 및/또는 여기서 개시된 하나 이상의 프로세스의 일부 또는 전부를 수행하게 하는 명령을 포함하는 비일시적 기계 판독형 저장 매체 내에 유형적으로 구현되는 컴퓨터-프로그램 프로덕트를 포함한다.
채용된 용어 및 표현은 한정이 아닌 설명 측면에서 사용되며, 이러한 용어 및 표현의 사용에 도시되고 기재된 특징부 또는 이의 일부분의 임의의 균등물을 배제하는 어떠한 의도도 없고, 청구된 발명의 범위 내에서 다양한 수정이 가능함이 자명하다. 따라서, 본 발명이 실시예 및 선택적 특징으로 특정하게 개시되었지만 본 명세서에 개시된 개념의 수정, 및 변형이 해당 분야의 통상의 기술자에 의해 이용될 수 있고, 이러한 수정 및 변형이 첨부된 청구항에 의해 정의된 본 발명의 범위 내에 있는 것으로 간주됨이 이해될 것이다.
본 개시내용은 첨부된 도면과 함께 설명된다:
도 1은 다양한 실시예에 따른 데이터 기반 기술 솔루션을 제공하기 위한 디지털 건강 플랫폼의 다이어그램을 도시한다.
도 2는 다양한 실시예에 따른 커널의 다이어그램을 도시한다.
도 3은 다양한 실시예에 따른 분산 파드 기반 시스템 내의 서비스 오케스트레이션을 위한 프로세스의 블록도를 도시한다.
도 4는 다양한 실시예에 따라 디지털 건강 플랫폼에서 서브서비스 또는 서비스를 배포하기 위해 커널을 사용하기 위한 프로세스를 예시하는 스윔 레인 다이어그램을 도시한다.
도 5는 다양한 실시예에 따라 소프트웨어 플랫폼 상에 서비스의 하나 이상의 서브서비스를 배포하기 위한 프로세스를 예시하는 흐름도를 도시한다.
첨부된 도면에서, 유사한 구성요소 및/또는 특징이 동일한 참조 라벨을 가질 수 있다. 또한, 동일한 유형의 다양한 구성요소는 참조 라벨 뒤의 대시와 유사한 구성요소를 구별하는 두 번째 라벨로 구분할 수 있다. 명세서에서 첫 번째 참조 라벨만 사용되는 경우 두 번째 참조 라벨과 관계없이 동일한 첫 번째 참조 라벨을 가진 유사한 구성요소 중 하나에 설명이 적용된다.
도 1은 다양한 실시예에 따른 데이터 기반 기술 솔루션을 제공하기 위한 디지털 건강 플랫폼의 다이어그램을 도시한다.
도 2는 다양한 실시예에 따른 커널의 다이어그램을 도시한다.
도 3은 다양한 실시예에 따른 분산 파드 기반 시스템 내의 서비스 오케스트레이션을 위한 프로세스의 블록도를 도시한다.
도 4는 다양한 실시예에 따라 디지털 건강 플랫폼에서 서브서비스 또는 서비스를 배포하기 위해 커널을 사용하기 위한 프로세스를 예시하는 스윔 레인 다이어그램을 도시한다.
도 5는 다양한 실시예에 따라 소프트웨어 플랫폼 상에 서비스의 하나 이상의 서브서비스를 배포하기 위한 프로세스를 예시하는 흐름도를 도시한다.
첨부된 도면에서, 유사한 구성요소 및/또는 특징이 동일한 참조 라벨을 가질 수 있다. 또한, 동일한 유형의 다양한 구성요소는 참조 라벨 뒤의 대시와 유사한 구성요소를 구별하는 두 번째 라벨로 구분할 수 있다. 명세서에서 첫 번째 참조 라벨만 사용되는 경우 두 번째 참조 라벨과 관계없이 동일한 첫 번째 참조 라벨을 가진 유사한 구성요소 중 하나에 설명이 적용된다.
I. 개요
본 개시는 분산 파드 기반 시스템 내 서비스 오케스트레이션을 위한 기법과 관련된다. 더 구체적으로, 본 개시의 실시예는 클러스터 관리자(이하 커널이라 함)에 의해 분산 파드 기반 시스템 내에서 서비스의 적어도 일부분(이하 서브서비스라 함)을 상기 서브서비스 또는 서비스의 유형에 기초하여 프로비저닝 및 배포하기 위한 기법을 제공한다.
커널은 분산 컴퓨팅 환경(가령, 클라우드 컴퓨팅) 내의 애플리케이션 또는 프레임워크 전반에 걸쳐 자원 할당 및 격리를 제공한다. 클라우드 컴퓨팅은 일반적으로 가상 자원, 가령, 가상 머신을 이용해 클라우드-기반 애플리케이션 및 서비스를 프로비저닝하는 것을 포함하는 가상화에 의존한다. 이들 자원의 효율적인 관리가 분산 컴퓨팅 환경의 확장성과 운영 비용 모두에 직접적인 영향을 미치기 때문에 도전과제이다. 가상화 기법의 한 가지 유형이, 전통적인 가상 머신에 비해 자원의 이식성을 제공하고 최소한의 오버헤드를 필요로 하는 컨테이너이다. 그러나 전통적인 자원 관리 전략은 가상 머신의 할당 및 마이그레이션을 위해 설계되었으므로 컨테이너화된 분산 컴퓨팅 환경의 관리를 위해 이들 전략이 적용될 수 있는 방식에 대한 과제가 있다. 이와는 별도로, 클라우드 컴퓨팅 솔루션, 가령, AaaS 및 SaaS(Software as a Service)이 더는 단일 분산 컴퓨팅 환경에 국한되지 않는다. 일부 경우, 조직이 DevOps 구동적이고, 벤더 종속으로부터 자유로우며, 단일 분산 컴퓨팅 환경으로부터 얻어질 수 있는 것보다 우수한 기능 세트를 전달할 수 있는 휴대용 소프트웨어 스택을 빌드할 수 있게 하는 다중 분산 컴퓨팅 환경에 걸쳐 서비스(즉, 상이한 기술적 또는 사업적 요건을 충족하기 위해 다수의 클라우드 제공자 및 이들이 제공하는 컴퓨터 하드웨어 및 물리적 네트워크 인프라구조를 사용하는 멀티-클라우드 솔루션)가 프로비저닝되고 배포된다. 그러나 전통적인 자원 관리 전략은 단일 분산 컴퓨팅 환경 내에서 가상 머신의 할당 및 마이그레이션을 위해 설계되었으므로, 이들 전략이 다수의 컨테이너화된 분산 컴퓨팅 환경의 관리를 위해 적용될 수 있는 방식에 대한 추가 과제가 발생한다.
이들 제한 및 문제를 해결하기 위해, 본 개시의 분산 파드 기반 시스템 내의 서비스 오케스트레이션을 위한 기법이 자원 할당 및 격리에 대한 커스텀화된 접근법을 활용한다. 이 기법은 서브서비스 또는 서비스가 분산 컴퓨팅 환경에 배포되기 위한 자원을 프로비저닝하기 위한 것이다. 서브서비스 또는 서비스는 하나의 유형을 가지며, 상기 서브서비스 또는 서비스가 지정 분산 컴퓨팅 환경 상에 배포되기 위해, 상기 서브서비스 또는 서비스의 유형은 상기 분산 컴퓨팅 환경이 지원하도록 구성된 것이어야 한다. 서브서비스 또는 서비스의 유형은 모델 소프트웨어, 가령, 머신 러닝된 모델, 회귀 모델, 또는 그 밖의 다른 임의의 유형의 지도 또는 비지도 모델, 머신 러닝된 모델 소프트웨어, SAMD(software as a medical device), 물리적 의료 장치와 함께 동작하는 소프트웨어, 또는 데이터 입수 및 처리 소프트웨어일 수 있다. 또한 서브서비스 또는 서비스는 파드에 래핑된 하나 이상의 컨테이너를 사용하여 배포된다. 하나 이상의 컨테이너는 하나 이상의 컨테이너 내에 배포될 해당 서브서비스 또는 서비스의 유형에 기초하여 획득된 이미지를 이용해 구성된다. 각 이미지는 단일 컨테이너를 실행하기 위한 모든 요건, 및 컨테이너의 요구사항과 기능을 설명하는 메타데이터를 포함하는 바이너리이다.
본 개시내용의 하나의 실시예는 제1 분산 컴퓨팅 환경에 상주하는 제1 커널에서, 제1 분산 컴퓨팅 환경 상의 제1 서브서비스 또는 서비스에 대한 배포 프로세스를 개시하라는 제1 요청을 수신하는 단계를 포함하는 방법에 관한 것이다. 제1 서브서비스 또는 서비스는 하나의 유형을 가지며, 상기 제1 서브서비스 또는 서비스가 제1 분산 컴퓨팅 환경 상에 배포되기 위해, 상기 제1 서브서비스 또는 서비스의 유형은 상기 제1 분산 컴퓨팅 환경이 지원하도록 구성된 것이어야 한다. 방법은 요청을 수신하고 제1 서브서비스 또는 서비스의 유형이 제1 분산 컴퓨팅 환경이 지원하도록 구성된 것임에 응답하여, 상기 제1 커널에 의해, 제1 분산 컴퓨팅 환경의 플레이스먼트 링 내 특정된 자원을 프로비저닝하는 단계를 더 포함한다. 프로비저닝하는 것은, 제1 서브서비스 또는 서비스의 유형에 기초하여 이미지를 획득하는 것 - 상기 이미지는 소프트웨어 패키지를 실행하는 데 사용되는 자원의 사양(specification)을 포함하는 소프트웨어 패키지의 템플릿이며 상기 템플릿은 제1 서브서비스 또는 서비스의 유형에 기초하여 특정된 자원을 이용하도록 커스텀화됨 - , 상기 이미지를 이용해 플레이스먼트 링(placement ring)에서 특정된 자원의 위치를 찾는 것, 이미지를 이용해, 특정된 자원을 캡슐화하는 하나 이상의 컨테이너를 빌드하는 것 - 상기 하나 이상의 컨테이너는 제1 서브서비스 또는 서비스를 제공하기 위해 하나 이상의 프로그램을 실행시키기 위한 제1 파드(pod)에 래핑(wrap)되는 것, 및 쓰기 가능 레이어(writable layer)를 이용해, 하나 이상의 프로그램을 실행하는 데 필요한 소스 코드를 포함하도록 이미지를 수정하는 것을 포함한다. 이 방법은 상기 제1 커널에 의해 제1 파드 및 수정된 이미지의 하나 이상의 레플리카를 이용해 제1 서브서비스 또는 서비스를 배포하는 단계를 더 포함한다.
일부 경우에, 방법은 제2 분산 컴퓨팅 환경에 상주하는 제2 커널에서, 제2 분산 컴퓨팅 환경에서의 제2 서브서비스 또는 서비스에 대한 배포 프로세스를 개시하라는 제2 요청을 수신하는 단계를 더 포함한다. 제2 서브서비스 또는 서비스는 하나의 유형을 가지며, 상기 제2 서브서비스 또는 서비스가 상기 분산 컴퓨팅 환경 상에 배포되기 위해, 상기 제2 서브서비스 또는 서비스의 유형은 상기 제2 분산 컴퓨팅 환경이 지원하도록 구성된 것이어야 한다. 방법은 요청을 수신하고 제2 서브서비스 또는 서비스의 유형이 제2 분산 컴퓨팅 환경이 지원하도록 구성된 것임에 응답하여, 제2 커널에 의해, 제2 분산 컴퓨팅 환경의 플레이스먼트 링 내 특정된 자원을 프로비저닝하는 단계를 더 포함한다. 프로비저닝하는 것은, 제2 서브서비스 또는 서비스의 유형에 기초하여 이미지를 획득하는 것 - 상기 이미지는 소프트웨어 패키지를 실행하는 데 사용되는 자원의 사양을 포함하는 소프트웨어 패키지의 템플릿이며 상기 템플릿은 제2 서브서비스 또는 서비스의 유형에 기초하여 특정된 자원을 이용하도록 커스텀화됨 - , 상기 이미지를 이용해 플레이스먼트 링에서 특정된 자원의 위치를 찾는 것, 이미지를 이용해, 특정된 자원을 캡슐화하는 하나 이상의 컨테이너를 빌드하는 것 - 상기 하나 이상의 컨테이너는 제2 서브서비스 또는 서비스를 제공하기 위해 하나 이상의 프로그램을 실행시키기 위한 제2 파드에 래핑되는 것, 및 쓰기 가능 레이어를 이용해, 하나 이상의 프로그램을 실행하는 데 필요한 소스 코드를 포함하도록 이미지를 수정하는 것을 포함한다. 이 방법은 제2 커널에 의해 제2 파드 및 수정된 이미지의 하나 이상의 레플리카를 이용해 제2 서브서비스 또는 서비스를 배포하는 단계를 더 포함한다.
II. 디지털 건강 플랫폼
도 1은 다양한 실시예에 따라 데이터 기반 기술 솔루션을 제공하기 위한 디지털 건강 플랫폼(100)의 단순화된 도면을 도시한다. 실시예에서, 디지털 건강 플랫폼(100)은 네트워크 게이트웨이(120) 및 네트워크 메시(125)를 포함하는 네트워크(들)(115)를 통해 클라우드 기반 인프라구조(110)에 연결된 클라이언트 컴퓨팅 장치(105)를 포함한다. 인프라구조(110)는 다양한 하드웨어 및 클라우드 인프라구조(가령, 프라이빗 클라우드 또는 온-프레미스 클라우드 인프라구조 및 공공 클라우드 인프라구조)를 사용하여 클라우드 서비스 제공자(140)(가령, 분산 컴퓨팅 환경)에 의해 플레이스먼트 링(135) 내에 프로비저닝된 자원을 사용하여 서비스 파드(130) 내에서 서비스 또는 소프트웨어 애플리케이션을 실행하도록 구성된다. 이들 서비스 또는 소프트웨어 애플리케이션은 클라이언트 컴퓨팅 장치(105)의 사용자에게 AaaS 또는 SaaS 모델과 같은 웹 기반 또는 클라우드 서비스로서 제공될 수 있다. 여러 공급자가 클라우드 서비스, 가령, Amazon, Google 및 Oracle을 제공한다. 클라우드 서비스라는 용어는 일반적으로 온디맨드(on demand)로 그리고 통신 네트워크를 통해 이용 가능하게 만들어지는 서비스, 가령, 서비스 제공자, 가령, 정부 통제 개체의 시스템(가령, 인프라구조(110))에 의한 인터넷을 지칭하는 데 사용된다. 따라서 소비자는 별도의 라이센스, 지원 또는 서비스를 지원하는 하드웨어 및 소프트웨어 자원을 구매할 필요 없이 서비스 제공자에 의해 제공되는 클라우드 서비스를 이용할 수 있다. 가령, 클라우드 서비스 제공자의 시스템은 하나 이상의 프로그램을 호스팅할 수 있으며, 사용자는, 사용자가 하나 이상의 프로그램을 실행하기 위한 인프라구조 자원을 구매할 필요 없이, 인터넷을 통해, 온디맨드로, 하나 이상의 프로그램을 사용할 수 있다. 클라우드 서비스는 애플리케이션, 자원 및 서비스에 대한 쉽고 확장 가능한 액세스를 제공하도록 설계된다.
일부 경우에, 클라이언트 컴퓨팅 장치(105)를 작동하는 사용자(가령, 소프트웨어 또는 서비스 소비자)는 인프라구조(110)의 다양한 구성요소(145)에 의해 제공되는 소프트웨어 프로덕트, 서비스 또는 시스템을 소비하기 위해 하나 이상의 클라이언트 애플리케이션을 활용한다. 또 다른 경우에, 클라이언트 컴퓨팅 장치(105)를 작동하는 사용자(가령, 개발자)는 인프라구조(110)의 다양한 구성요소(145)에 의해 제공될 소프트웨어 프로덕트, 서비스 또는 시스템에 대한 소스 코드를 업로드하기 위해 하나 이상의 클라이언트 애플리케이션을 활용한다. 구성요소(145)는 하나 이상의 프로세서, 하드웨어 구성요소 또는 이들의 조합에 의해 실행될 수 있는 소프트웨어 구성요소를 포함한다. 디지털 건강 플랫폼(100)에 대해 예시된 것과 상이할 수 있는 다양한 상이한 시스템 구성이 가능하다는 것을 이해해야 한다. 따라서 도 1에 도시된 실시예는 디지털 건강 플랫폼을 구현하기 위한 분산 컴퓨팅 환경의 한 예이며 제한하려는 의도가 아니다.
클라이언트 컴퓨팅 장치(105)는 컴퓨팅 시스템의 다양한 유형, 가령, 휴대용 핸드헬드 장치, 범용 컴퓨터, 가령, 개인 컴퓨터 및 랩톱, 워크스테이션 컴퓨터, 웨어러블 장치, 게임 시스템, 씬 클라이언트, 다양한 메시징 장치, 센서 또는 그 밖의 다른 센싱 장치 등을 포함한다. 이들 컴퓨팅 장치는 다양한 모바일 운영 체제(가령, Microsoft Windows Mobile®, iOS®, Windows Phone®, Android??, BlackBerry®, Palm OS®)를 포함해 다양한 유형 및 버전의 소프트웨어 애플리케이션 및 운영 체제(가령, Microsoft Windows®, Apple Macintosh®, UNIX® 또는 UNIX형 운영 체제, Linux 또는 Linux형 운영 체제, 가령, Google Chrome?? OS)를 실행할 수 있다. 휴대용 핸드헬드 장치는 휴대폰, 스마트폰(가령, iPhone®), 태블릿(가령, iPad®), PDA(personal digital assistant) 등을 포함할 수 있다. 웨어러블 장치는 Fitbit VersaTM 스마트 워치, 가상 현실(VR) 또는 증강 현실(AR) 시스템, 가령, magic leap 1®, HTV Vive, 및 Oculus® 및 그 밖의 다른 장치를 포함한다. 게임 시스템은 다양한 핸드헬드 게임 장치, 인터넷-가능 게임 장치(가령, Kinect® 제스처 입력 장치가 구비되거나 구비되지 않은 Microsoft Xbox® 게임 콘솔, Sony PlayStation® 시스템, Nintendo®에 의해 제공되는 다양한 게임 시스템, 및 그 밖의 다른 것) 등을 포함할 수 있다. 클라이언트 장치(105)는 다양한 상이한 애플리케이션, 가령, 다양한 인터넷-관련 앱, 통신 애플리케이션(가령, 이메일 애플리케이션, 단문 메시지 서비스(SMS) 애플리케이션)을 실행시킬 수 있고 다양한 통신 프로토콜을 사용할 수 있다.
네트워크(들)(115)는 다양한 이용 가능한 프로토콜, 비제한적 예를 들면, TCP/IP (transmission control protocol/Internet protocol), SNA (systems network architecture), IPX (Internet packet exchange), AppleTalk® 등 중 임의의 것을 이용해 데이터 통신을 지원할 수 있는 통상의 기술자에게 친숙한 임의의 유형의 네트워크이다. 단지 예시로서, 네트워크(들)(115)는 근거리 통신망(LAN), 이더넷(Ethernet) 기반 네트워크, 토큰-링(Token-Ring), 광역 통신망(WAN), 인터넷(Internet), 가상 네트워크, 가상 사설망(VPN), 인트라넷, 엑스트라넷, PSTN(Public Switched Telephone Network), 적외선 네트워크, 무선 네트워크(가령, IEEE(Institute of Electrical and Electronics) 1002.11 프로토콜 군 중 임의의 것 하에서 동작하는 네트워크, Bluetooth® 및/또는 그 밖의 다른 임의의 무선 프로토콜) 및/또는 이들 및/또는 그 밖의 다른 네트워크의 임의의 조합일 수 있다.
네트워크 게이트웨이(120)는 동일하거나 상이한 프로토콜에서 동작하는 둘 이상의 네트워크(115) 사이에 안전한 통로를 형성하는 네트워크 노드이다. 네트워크 게이트웨이(120)는 다음 기술 중 하나 이상을 사용하여 네트워크 보안을 제공할 수 있다: 들어오고 나가는 네트워크 트래픽을 모니터링하기 위한 방화벽, 사설 보안 통신 채널을 제공하기 위한 가상 사설망, 네트워크 내의 보안 결함을 식별하기 위한 보안 스캐닝, 인증 및 인가 서비스를 위한 액세스 관리자 등. 네트워크 게이트웨이(120)는 다양한 소프트웨어 프로덕트, 서비스 또는 시스템에 대한 액세스를 관리하는 서비스 커넥터 및 라우터를 사용하여(가령, 서비스 가입 비즈니스 모델을 사용하여) 네트워크 트래픽을 라우팅한다. 네트워크 메시(network mesh)(125)는 인프라구조(110)(가령, 브리지, 스위치 및 그 밖의 다른 인프라 장치)가 가능한 한 많은 다른 노드에 직접, 동적으로 및 비계층적으로 연결되고 장치와 노드 간에 데이터를 효율적으로 라우팅하기 위해 서로 협력하는 로컬 네트워크 토폴로지이다. 네트워크 메시(125)는 다음 기술 중 하나 이상을 이용해 연결을 관리한다: 로드 밸런싱, 프로덕트, 서비스 또는 시스템 탐색, 네트워크 액세스, 라우팅, 및 피어링, 트래픽 미러링 등. 네트워크(들)(115), 네트워크 게이트웨이(120), 및 네트워크 메시(125)는 결합하여 인프라구조(110)로부터 유입 또는 유출되는 모든 데이터를 관리한다.
구성요소(145)는 하나 이상의 범용 컴퓨터, 특수화된 서버 컴퓨터(가령, PC(개인용 컴퓨터) 서버, 애플리케이션 특정 서버, 중급 서버, 메인프레임 컴퓨터, 랙 장착형 서버 등), 서버 팜, 서버 클러스터, 또는 자원, 데이터, 서비스, 또는 프로그램을 네트워크(들)(115)를 통해 클라이언트 컴퓨팅 장치(105)로 제공하도록 개별적으로 또는 조합하여 작동하는 그 밖의 다른 임의의 적절한 배열 및/또는 조합 컴퓨터 또는 시스템을 포함한다. 구성요소(145)는 가상 운영 체제를 실행하는 하나 이상의 가상 머신, 또는 가상화와 관련된 그 밖의 다른 컴퓨팅 아키텍처, 가령, 가상 저장 장치를 유지하도록 가상될 수 있는 논리적 저장 장치의 하나 이상의 유연한 풀을 더 포함할 수 있다. 다양한 실시예에서, 구성요소(145)는 본 개시 내용에 기재된 기능을 제공하는 하나 이상의 서비스 또는 소프트웨어 애플리케이션을 실행하도록 구성된다.
구성요소(145)는 또한 하나 이상의 데이터 레포지토리를 더 포함한다. 이들 데이터 레포지토리는 다양한 실시예에서 데이터 및 그 밖의 다른 정보를 저장하는 데 사용될 수 있다. 가령, 데이터 레포지토리 중 하나 이상은 데이터 기반 기술 솔루션, 가령, SAMD을 제공하기 위한 정보를 저장하고 데이터 기반 기술 솔루션을 구현하기 위해 소스 코드의 검증 및 배포를 위한 정보를 저장하기 위해 사용될 수 있다. 데이터 레포지토리는 다양한 위치에 상주할 수 있다. 가령, 구성요소에 의해 사용되는 데이터 레포지토리는 구성요소에 로컬이거나 구성요소로부터 원격일 수 있고 네트워크 기반 또는 전용 연결을 통해 구성요소와 통신할 수 있다. 데이터 레포지토리는 상이한 유형일 수 있다. 특정 실시예에서, 구성요소에 의해 사용되는 데이터 레포지토리는 데이터베이스, 가령 중앙집중식 데이터베이스, 분산 데이터베이스, NoSQL 데이터베이스, 관계형 데이터베이스 등일 수 있다. 이들 데이터베이스 중 하나 이상은 SQL 형식 커맨드에 대한 응답으로 데이터베이스에서 데이터를 저장, 업데이트 및 검색할 수 있도록 조정될 수 있다. 특정 실시예에서, 데이터 레포지토리 중 하나 이상이 또한 애플리케이션 데이터를 저장하기 위해 애플리케이션에 의해 사용될 수 있다. 애플리케이션에 의해 사용되는 데이터 레포지토리는 상이한 유형일 수 있는데, 예를 들어 키-값 저장 레포지토리, 객체 저장 레포지토리, 또는 파일 시스템에서 지원하는 일반적인 저장 레포지토리일 수 있다.
구성요소(145)는 또한 본 개시에서 기재된 기능을 제공하는 하나 이상의 프로그램, 가령, 서비스 또는 소프트웨어 애플리케이션(가령, 웹 기반 또는 클라우드 서비스로 제공되는 서비스 또는 소프트웨어 애플리케이션 또는 지속적 통합 지속적 배포(CI/CD) 시스템을 구현하기 위한 애플리케이션)을 실행하도록 구성된 컴퓨팅 노드를 더 포함한다. 각 노드는 노드 클러스터 내에서 선택적으로 구현되는 단일 시스템을 나타낸다. 단일 머신은 물리적 머신(가령, 데이터 센터 내 서버) 또는 사용될 수 있는 CPU와 RAM 자원의 세트가 있는 클라우드 제공자, 가령, Amazon Web ServicesTM (AWS)에 호스팅되는 가상 머신일 수 있다. 클러스터에서 노드는 자원을 함께 풀링하여 보다 강력한 시스템을 형성할 수 있다. 하나 이상의 프로그램이 클러스터 상에 배포될 때 클러스터는 개별 노드로의 작업 분산을 지능적으로 처리한다. 노드가 추가되거나 제거되면 클러스터는 필요에 따라 작업을 이동할 수 있다. 어느 개별 기계가 실제로 코드를 실행하고 있는지는 하나 이상의 프로그램 또는 인프라구조(110)에 중요하지 않다.
하나 이상의 클러스터 상으로 배포되는 하나 이상의 프로그램이 컨테이너로서 패키징된다. 컨테이너는 널리 수용된 표준이며 인프라구조(110) 상에 하나 이상의 프로그램을 배포하기 위해 다양한 이미지가 정의될 수 있다. 컨테이너화는 인프라구조(110)가 자체 포함된 실행 환경을 생성할 수 있게 한다. 임의의 프로그램과 이의 모든 종속관계는 단일 파일로 묶인 후 인프라구조(110) 상에서 공유될 수 있다. 컨테이너 생성은 프로그램에 의해 수행될 수 있고, 이로써, 인프라구조(110) 상에서 코드를 검증하고 코드를 배포하기 위해 강력하고 완전 자동화된 CI/CD 파이프라인이 사용될 수 있다. 컨테이너는 파드(pod)(130)라고 알려진 더 높은 레벨의 구조체로 래핑된다. 동일한 파드(130) 내 컨테이너는 동일한 자원 및 로컬 네트워크를 공유할 수 있다. 일부 경우에, 컨테이너는 다른 컨테이너로부터 어느 정도의 격리를 유지하면서 동일한 머신 상에 있는 것처럼 동일한 파드(130) 내 다른 컨테이너와 통신할 수 있다. 파드(130)는 인프라구조(110)에서 복제 단위로서 사용된다. 프로그램 또는 자원이 프로세싱에 버거워지고 단일 파드(130) 인스턴스가 로드를 운반할 수 없는 경우, 인프라구조(110)는 필요에 따라 파드(130)의 새로운 레플리카를 클러스터에 배포하도록 구성될 수 있다. 과도한 로드 상태가 아닐 때에도 로드 밸런싱 및 장애 저항을 허용하기 위해 프로덕션 시스템에서 언제든지 실행 중인 파드(130)의 여러 복사본을 갖는 것이 유리할 수 있다. 파드(130)의 하나 이상의 인스턴스는 하나 이상의 클라우드 서비스 제공자(140)에 의해 제공되는 클라우드 인프라 시스템 상에 프로비저닝된다.
하나 이상의 클라우드 서비스 제공자(140)에 의해 제공되는 클라우드 인프라 시스템은 인프라구조(110)에 의해 제공되는 다양한 클라우드 서비스를 지원하는 파드(130)의 하나 이상의 인스턴스의 제공을 용이하게 하기 위해 활용되는 인프라 자원을 포함한다. 파드(130)의 하나 이상의 인스턴스를 프로비저닝하기 위해 이들 자원의 효율적인 활용을 용이하게 하기 위해, 자원은 자원 또는 자원 모듈의 세트("플레이스먼트 링(placement ring)(135)"라고도 함)로 묶일 수 있다. 각각의 자원 모듈 또는 플레이스먼트 링(135)은 하나 이상의 유형의 자원의 미리 통합되고 최적화된 조합을 포함할 수 있다. 특정 예에서, 상이한 플레이스먼트 링(135)은 상이한 유형의 클라우드 서비스에 대해 미리 프로비저닝될 수 있다. 가령, 플레이스먼트 링(135)의 제1 세트가 SAMD 서비스를 위해 프로비저닝될 수 있고, 상기 플레이스먼트 링(135)의 제1 세트의 플레이스먼트 링(135)과 상이한 자원 조합을 포함할 수 있는 플레이스먼트 링(135)의 제2 세트가 데이터 분석 서비스를 위해 프로비저닝될 수 있는 등이다. 일부 클라우드 서비스의 경우, 서비스를 프로비저닝을 위해 할당된 자원이 서비스들 간에 공유될 수 있다.
디지털 건강 플랫폼(100)은 하나 이상의 커널(150)을 더 포함한다. 커널(150)은 하나 이상의 클라우드 서비스 제공자(140)에 의해 제공되는 각각의 클라우드 인프라구조 시스템(가령, 분산 컴퓨팅 환경)에서 실행되도록 적응된다. 커널(150)은 전체 디지털 건강 플랫폼(100)에 걸쳐 분산된 애플리케이션 또는 프레임워크에 걸쳐 자원 할당 및 격리를 제공하는 클러스터 관리자이다. 커널(150)은 자원 관리 및 스케줄링을 포함하는 서비스 및 소프트웨어의 오케스트레이션을 위한 애플리케이션 프로그래밍 인터페이스(API)를 하나 이상의 프로그램에 제공한다. 커널(150)의 아키텍처는 작업을 실행하기 위한 에이전트 노드, 작업을 에이전트 노드로 전송하기 위한 마스터 노드, 선택 및 마스터 노드의 주소를 찾기 위한 주키퍼(zookeeper), 및 마스터 노드와 협력하여 작업을 에이전트 노드 상으로 스케줄링하기 위한 프레임워크를 포함한다.
디지털 건강 플랫폼(100)은 CI/CD 시스템(155)을 더 포함한다. CI/CD 시스템(155)은 클라우드 인프라구조 시스템 내에서 구현되며 디지털 건강 플랫폼(100)이 소프트웨어 프로덕트, 서비스 또는 시스템에 대한 소스 코드 내에서 변경 사항을 자주 업데이트, 테스트 및 전달할 수 있게 한다. 본 명세서에서 자세히 논의한 바와 같이, 헬스케어에서, 소프트웨어가 반드시 준수해야 하는 데이터 보안(가령, 데이터 무결성 및 데이터 프라이버시)에 관한 정부 규정이 있다. CI/CD 시스템(155)에서, 이들 정책 규정은 코드에 포함될 수 있어, 준법 감시가 자동으로 추적, 검증 및 재구성될 수 있다. SAMD의 예에서, 데이터 저장 위치, 서버 액세스 제어, 및 활동 로깅이 소스 코드에 포함될 수 있으므로 소프트웨어를 사용하는 동안 사용자 데이터가 보호되고 관리될 수 있다. 지속적인 통합 중에 암호화 및 패스워드-보호 작업이 추가로 포함될 수 있다. 지속적 전달 중에 보안 및 모니터링 툴이 사용되어 사용자 활동을 추적하고 보안 위협으로 이어질 수 있는 오류를 검출할 수 있다.
CI/CD 시스템(155)은 또한 머신 러닝 모델을 프로비저닝하기 위해 사용될 수 있다. 머신 러닝 모델은 초기에 데이터세트를 사용하여 훈련되지만 시간이 지남에 따라 모델이 표류하거나 데이터가 변경될 수 있으므로 업데이트된 머신 러닝 모델이 필요하다. 머신 러닝 모델이 소프트웨어 애플리케이션 내에서 실행되는 경우 소프트웨어 애플리케이션과 연관된 코드가 머신 러닝 모델을 재훈련되어야 하는 때에 대한 트리거를 포함할 수 있다. 예컨대, 코드는 새로운 훈련 데이터가 이용 가능할 때, 또는 머신 러닝 모델의 성능이 임계값 아래로 떨어진다고 결정될 때 지정 시간 간격으로 머신 러닝 모델이 재훈련되기 위한 명령을 포함할 수 있다. 또한 소프트웨어 개발자는 프로덕션 환경에서 머신 러닝 모델의 성능을 모니터링하는 것에 기초하거나 모델 최적화를 위한 추정된 개선에 기초하여, 테스트 환경에서 모델 아키텍처 및 하이퍼파라미터의 변형을 탐색할 수 있다. CI/CD 시스템(155)은 머신 러닝 모델이 성능 요건을 충족하는 것으로 결정될 때 프로덕션 환경으로의 용이한 빌드, 테스트 및 배포를 가능하게 한다.
III. 커널
도 2는 다양한 실시예에 따라 분산된 애플리케이션 또는 프레임워크에 걸친 자원 할당 및 격리를 위한 커널(200)(가령, 도 1과 관련하여 기재된 커널(150))의 단순화된 도면을 도시한다. 실시예에서, 커널(200)은 마스터(205), 백업 마스터(210), 주키퍼(215), 에이전트(220(a-n)), 및 스케줄러(225) 및 실행자(230)를 포함하는 프레임워크의 소프트웨어 로직을 포함한다. 커널(200)은 분산 컴퓨팅 환경에서 배포될 서브서비스 또는 서비스의 유형에 기초하여 컨테이너 기반 환경 내에서 자원(235)을 함께 그룹화하고 프로비저닝한다. 특히 서브서비스 또는 서비스의 유형은 분산 컴퓨팅 환경이 지원하도록 구성된 유형이어야 한다. 서브서비스 또는 서비스의 유형은 모델 소프트웨어, 가령, 머신 러닝된 모델, 회귀 모델, 또는 그 밖의 다른 임의의 유형의 지도 또는 비지도 모델, 머신 러닝된 모델 소프트웨어, SAMD, 물리적 의료 장치와 함께 동작하는 소프트웨어, 또는 데이터 입수 및 처리 소프트웨어일 수 있다. 이러한 유형별 제한은 자원(235)의 효율적이고 효과적인 관리를 지원하고 분산 컴퓨팅 환경의 확장성과 운영 비용 모두에 긍정적인 직접적인 영향을 미친다. 기본 스크립트 또는 복잡한 "오케스트레이터(orchestrator)"를 사용하여 개발자는 충돌된 서브서비스 또는 서비스 구성요소를 신속하게 복구하거나, 증가된 수요를 충족하기 위해 새 인스턴스를 추가하거나, 어떠한 중단 시간 없이 서브서비스 또는 서비스를 업데이트하기 위해 롤링 업그레이드를 수행할 수 있다. 또한 컨테이너 기반 환경은 가상 머신보다 가볍고 단일 운영 체제를 공유할 수 있기 때문에 인프라구조 비용을 크게 줄일 수 있다.
커널(200)은 클러스터 또는 플레이스먼트 링에 위치한 머신/노드의 자원(235)를 단일 파드 인스턴스(245(a-n))에 래핑된 하나 이상의 컨테이너(240(a-n))로 그룹화하고 단일 파드 인스턴스(245(a-n))로부터 하나 이상의 프로그램에 대한 다양한 작업(250)이 자원(235)을 이용해 실행되어 서브서비스 또는 서비스를 제공할 수 있다. 하나 이상의 컨테이너(240(a-n))는 하나 이상의 컨테이너 내에 배치될 서브서비스 또는 서비스의 유형에 기초하여 획득된 이미지를 사용하여 구성된다. 각 이미지는 단일 컨테이너를 실행하기 위한 모든 요건, 및 컨테이너의 요구사항과 기능을 설명하는 메타데이터를 포함하는 바이너리이다. 컨테이너에 의해 개발자는 서로 격리되고 종속관계를 포함할 수 있는 일관되고 재생성 가능한 환경을 만들 수 있다. 격리가 완료되지는 않았지만(가령, 승인된 서비스가 API 호출을 통해 서로 통신할 수 있음) 컨테이너는 핵심 자원, 가령, 기본 CPU, 메모리, 저장소 및 각 컨테이너 간의 네트워크 자원에 대한 컨테이너 액세스를 격리한다. 이렇게 하면 개별 컨테이너가 너무 많은 자원을 소비할 가능성이 줄어들고 잠재적인 보안 문제도 방지된다.
주키퍼(215)가 클러스터 또는 플레이스먼트 링에 걸쳐 활동을 조정하기 위해 커널(200)에 의해 사용되는 중앙집중형 구성 관리자이다. 주키퍼(215)는 선두 마스터(205)를 선출할 수 있고, 고장 난 선두 마스터(205)를 교체하기 위해 백업 마스터(210)를 선출함으로써 내고장성을 제공할 수 있으며, 클러스터 또는 플레이스먼트 링에 합류하도록 에이전트(220)를 선출할 수 있다. 마스터(205)는 각 클러스터 노드에서 실행되는 에이전트(220)와 상기 에이전트(220)에서 작업을 실행하는 프레임워크를 관리한다. 마스터(205)는 자원 제안을 사용하여 클러스터 또는 플레이스먼트 링 내의 특정 자원의 프로비저닝 및 프레임워크 전반에 걸친 세분화된 공유를 구현한다. 각 자원 제안은 다수의 에이전트(220)에 의해 이용 가능한 자원(235)의 목록이다. 마스터(205)는 조직 정책, 가령, 공평한 공유 또는 우선순위에 따라 각 프레임워크에 얼마나 많은 자원(235)를 제안할지를 결정한다. 다양한 프레임워크간 할당 정책 세트를 지원하기 위해 커널(200)은 사용자가 플러그형 할당 모듈을 통해 자신의 정책을 정의할 수 있도록 조정된다.
커널(200) 상에서 실행되는 각 프레임워크는 다음의 2개의 구성요소로 구성된다: 자원(235)을 제안 받기 위해 마스터(205)에 등록하는 스케줄러(225) 및 프레임워크의 작업(250)을 실행하기 위해 에이전트(220) 상에서 실행되는 실행자(230). 마스터(205)가 각각의 프레임워크에 얼마나 많은 자원(235)을 제안할지 결정하는 동안, 프레임워크의 스케줄러(225)는 제안된 자원(235) 중 어느 것을 사용할지 선택한다. 프레임워크가 제안된 자원(235)을 수락할 때, 프레임워크는 프레임워크가 에이전트(220) 상에서 실행하기를 원하는 하나 이상의 프로그램에 의해 정의된 작업(250)의 마스터(205)에 설명을 전달한다. 예를 들어 프레임워크는 다음과 같이 하나 이상의 작업을 실행하는 것을 예약할 수 있다. 초기에 에이전트(220)는 자원(235), 예를 들어 6개의 CPU 및 9GB의 여유 메모리를 가지고 있음을 마스터에 보고한다. 그런 다음 마스터(205)는 프레임워크가 모든 이용 가능한 자원을 제공해야 한다고 마스터(205)에게 알려주는 할당 모듈을 호출한다. 그 후, 마스터(205)는 모든 이용 가능한 자원(235)을 설명하는 자원 제안을 프레임워크에 전송한다. 프레임워크의 스케줄러(225)는 하나 이상의 프로그램에 의해 정의된 작업(250)에 대한 정보, 가령, 제1 작업을 위해 3개의 CPU; 1 GB RAM, 및 제2 작업을 위해 2개의 CPU; 6 GB RAM를 사용하여 에이전트에서 실행할 두 개의 작업으로 마스터(205)에 응답한다. 마지막으로, 마스터(205)는 작업(250)을 에이전트(220)로 전송하고 상기 에이전트는 적절한 자원(235)을 프레임워크의 실행자(230)에 할당하여 두 작업을 시작한다. 1개의 CPU와 RAM 2GB는 여전히 이용 가능하므로 할당 모듈은 이제 이들을 다른 프레임워크에 제안할 수 있다. 또한 이 자원 제안 프로세스는 작업이 완료되고 새 자원을 사용할 수 있게 되면 반복된다.
IV. 디지털 건강 플랫폼 상에 서비스를 배포하기 위한 기법
도 3-5는 분산 파드 기반 시스템 내의 서비스 오케스트레이션을 위한 프로세스 및 작업을 보여준다. 개별 실시예는 흐름 차트, 흐름도, 데이터 흐름도, 구조도 또는 블록도로서 묘사되는 프로세스로서 기술될 수 있다. 흐름 차트는 작업을 순차적 프로세스로 설명할 수 있지만 많은 작업이 병렬로 또는 동시에 수행될 수 있다. 또한 작업 순서가 다시 정렬될 수 있다. 작업이 완료되면 프로세스가 종료되지만 도면에 포함되지 않은 추가 단계가 있을 수 있다. 프로세스는 방법, 기능, 절차, 서브루틴, 서브프로그램 등에 대응할 수 있다. 프로세스가 함수에 대응하는 경우 이의 종료는 호출 함수 또는 메인 함수에 대한 함수 반환에 대응할 수 있다.
도 3-5에 도시된 프로세스 및/또는 동작은 하나 이상의 처리 장치(가령, 프로세서 코어), 하드웨어 또는 이들의 조합에 의해 실행되는 소프트웨어(가령, 코드, 명령, 프로그램)로 구현될 수 있다. 소프트웨어는 메모리(가령, 메모리 장치, 비일시적 컴퓨터 판독 가능 저장 매체)에 저장될 수 있다. 도 3-5의 특정 일련의 처리 단계는 제한하려는 의도를 갖지 않는다. 대안적인 실시예에 따라 다른 일련의 단계들이 또한 수행될 수 있다. 가령, 대안적인 실시예에서 위에서 설명한 단계는 다른 순서로 수행될 수 있다. 또한, 도 3-5에 도시된 개별 단계는 개별 단계에 적합한 다양한 순서로 수행될 수 있는 다수의 하위 단계를 포함할 수 있다. 또한 특정 애플리케이션에 따라 추가 단계가 추가되거나 제거될 수 있다. 통상의 기술자라면 많은 변형, 수정 및 대안을 인식할 것이다.
도 3은 본 발명의 다양한 양태에 따른 분산 파드 기반 시스템 내의 서비스 오케스트레이션을 위한 프로세스(300)의 상위 레벨 블록도이다. 다이어그램(300)에 도시된 프로세스는 도 1 및 2에 묘사된 아키텍처, 시스템 및 기법에 의해 구현된다.
블록(305)에서, 다양한 유형의 서브서비스 또는 서비스가 배포되도록 이미지 템플릿이 구성된다. 이미지 템플릿은 특정 이미지 템플릿을 빌드하는 방법을 정의하는 명령의 스크립트를 사용하여 구성된다. 명령의 스크립트는 주어진 유형의 서브서비스 또는 서비스를 배포하도록 의도한 사용자, 가령, 소프트웨어 배포 서비스의 관리자 또는 소프트웨어 개발자에 의해 서비스 하드웨어 요건에 기초하여 써질 수 있다. 서브서비스 또는 서비스 유형은 모델 소프트웨어, 가령, 머신 러닝된 모델, 회귀 모델, 또는 그 밖의 다른 임의의 유형의 지도 또는 비지도 모델, SAMD, 물리적 의료 장치와 함께 작동하는 소프트웨어, 및 데이터 입수 및 처리 소프트웨어(가령, 스트림 처리, 배치 처리, 장기 실행 서비스, 데이터 분석 및 처리, 데이터 저장 등)을 포함하지만, 이에 한정되지 않는다. 또한 이들 카테고리는 상호 배타적이지 않는데, 예를 들어 SAMD 애플리케이션은 머신 러닝 모델 또는 데이터 입수 및 처리 양태가 포함될 수 있다. 각 이미지 템플릿은 서브서비스 또는 서비스의 유형에 대한 단일 컨테이너를 실행하기 위한 모든 요건 및 컨테이너의 요구사항과 기능을 설명하는 메타데이터를 포함하는 바이너리이다. 템플릿 이미지는 서브서비스 또는 서비스의 유형을 제공하기 위해 하나 이상의 프로그램을 실행하기 위한 컨테이너를 빌드하는 데 사용된다. 따라서 각 컨테이너는 본질적으로 하나 이상의 프로그램에 대한 실행 이미지입니다. 그러나 컨테이너가 빌드되는 이미지 템플릿은 별도로 존재하며 변경될 수 없다. 컨테이너가 이미지 템플릿으로 빌드될 때, 컨테이너 실행을 위한 요건(가령, 서브서비스 또는 서비스에 대해 지정된 자원)의 읽기-쓰기 복사본이 상기 컨테이너 내부에서 생성된다. 컨테이너가 빌드되면, 컨테이너는 변경할 수 없는 템플릿 이미지 위에 쓰기 가능 레이어를 추가하는데, 즉, 이제 템플릿 이미지가 서브서비스 또는 서비스를 제공하도록 하나 이상의 프로그램을 실행하기 위해 필요한 소스 코드, 라이브러리, 종속관계, 툴, 및 그 밖의 다른 파일을 포함하도록 수정될 수 있음을 의미한다. 하나 이상의 프로그램을 실행하기 위해 제한되지 않는 개수의 이미지가 단일 이미지 템플릿으로부터 생성될 수 있다.
블록(310)에서, 이미지 템플릿이 배포하도록 구성된 서브서비스 또는 서비스의 유형에 기초하여 이미지 템플릿이 강화된다. 강화는 이미지의 취약성을 줄이기 위해 보안 모범 사례에 따라 이미지를 구성하는 프로세스이다(가령, 상이한 툴 및 구성을 사용하여 노출 표면 및 공격 벡터를 줄이기 위해 소프트웨어 패키지 강화). 보안 모범 사례는 클라우드 서비스 제공자에 구애 받지 않으며 이미지 템플릿이 배포를 위해 구성된 서비스 또는 서브서비스의 유형에 대해 독립적으로 구성할 수 있다. 가령, 데이터 분석 및 처리를 위해 구성된 이미지 템플릿을 강화하기 위해 보안 모범 사례의 제1 세트가 정의될 수 있다. 보안 모범 사례의 제1 세트는 데이터 분석 및 처리와 관련하여 일반적으로 나타나는 약점을 고려한다. 또한, SAMD를 위해 구성된 이미지 템플릿을 강화하기 위해 보안 모범 사례의 제2 세트가 정의될 수 있다. 보안 모범 사례의 제2 세트는 SAMD와 관련하여 일반적으로 나타나는 약점을 고려한다. 또한 인공 지능 또는 머신 러닝 처리를 위해 구성된 이미지 템플릿을 강화하기 위해 보안 모범 사례의 제3 세트가 정의될 수 있다. 보안 모범 사례의 제3 세트는 인공 지능 또는 머신 러닝 처리와 관련하여 일반적으로 나타나는 약점을 고려한다. 세 가지 유형의 경화 프로세스만이 도 3에 도시되어 있지만, 스트림 프로세스 강화 및 배치 프로세스 강화를 포함하는 이미지 템플릿 강화를 위해 다수의 추가 또는 대체 강화 공정이 이용 가능하다는 것을 이해해야 한다.
블록(315)에서, 강화된 이미지 템플릿은 이미지 템플릿이 배포를 위해 구성된 서브서비스 또는 서비스의 유형에 기초하여 튜닝된다. 튜닝은 배포 작업흐름 및 성능을 최적화하기 위해 이미지 사양에 따라 이미지를 구성하는 프로세스이다(가령, 실행 시간, 메모리 사용량, 디스크 공간 사용량, 네트워크 사용량 등과 같은 자원 사용량 개선). 이미지 사양은 클라우드 서비스 제공자에 구애 받지 않으며 배포를 위해 이미지 템플릿이 구성된 서브서비스 또는 서비스의 유형에 대해 독립적으로 구성될 수 있다. 가령, 스트림 처리를 위해 구성된 이미지 템플릿을 튜닝하기 위해 이미지 사양의 제1 세트가 정의될 수 있다. 이미지 사양의 제1 세트는 스트림 처리와 관련하여 일반적으로 나타나는 작업 및 문제를 고려한다. 또한, 입/출력 처리를 위해 구성된 이미지 템플릿을 튜닝하기 위해 이미지 사양의 제2 세트가 정의될 수 있다. 이미지 사양의 제2 세트는 입/출력 처리와 관련하여 일반적으로 나타나는 작업 및 문제를 고려한다. 또한 네트워크 처리를 위해 구성된 이미지 템플릿을 튜닝하기 위해 이미지 사양의 제3 세트가 정의될 수 있다. 이미지 사양의 제3 세트는 네트워크 처리와 관련하여 일반적으로 나타나는 작업 및 문제를 고려한다. 세 가지 유형의 튜닝 프로세스만이 도 3에 도시되어 있지만, 배치 프로세스 튜닝 및 장기 실행 서비스 튜닝을 포함하는 이미지 템플릿 튜닝을 위해 다수의 추가 또는 대체 튜닝 프로세스가 이용 가능하다는 것을 이해해야 한다.
블록(320)에서, (강화 및/또는 튜닝된) 이미지 템플릿이 레지스트리에 등록된다. 레지스트리는 하나 이상의 레포지토리(즉, 이미지 아티팩토리(image artifactory))에서 이미지를 저장하고 불러오기 위한 서비스를 제공한다. 각 레포지토리는 하나 이상의 이미지 템플릿(강화 및/또는 튜닝됨)을 포함한다.
블록(325)에서, 행위자는 소프트웨어 플랫폼(가령, 도 1과 관련하여 설명된 바와 같은 정부 규제 개체의 디지털 건강 플랫폼(100))의 CI/CD 시스템에 검증, 확인 및 배포를 위한 소스 코드를 릴리즈(release)한다. 다양한 경우(가령, 행위자가 제3자 개발자 또는 파트너인 경우) 소스 코드는 각 행위자와 연관된 품질 관리 시스템(QMS: Quality Management System)에 따라 이미 검증되었다. 예를 들어 각 행위자는 제품 및 조직에 적합한 QMS의 프레임워크 내에서 개발된 소프트웨어를 검증하기 위한 소프트웨어 수명 주기 모델을 설정할 수 있다. QMS는 조직을 안내하기 위해 개별적으로 또는 집합적으로 설정되는 정책, 목표, 절차, 프로세스 및 자원과 같은 상호 관련되거나 상호 작용하는 요소의 집합이다. 각 소프트웨어 수명 주기 활동에 대해, 소프트웨어가 검증되었다는 결론을 뒷받침하는 수행될 수 있는 작업이 있다. 그러나 수행될 작업, 수행 순서, 수행의 반복 및 타이밍은 선택된 특정 소프트웨어 수명 주기 모델과 행위자가 개별적으로 인식하는 소프트웨어 애플리케이션과 연관된 안전 위험에 따라 결정된다. 소프트웨어 검증을 위한 각 작업은, 일반적으로 요건으로 시작하는데, 예를 들어, 소프트웨어의 각 특징에 대해, 행위자는 기능을 설명하는 요구 사항을 가리킬 수 있어야 한다. 또한 각 요건에 대해 행위자는 해당 기능이 요구대로 기능할 수 있음을 보장하기 위한 테스트 계획과 계획이 실행되었다는 증거 및 테스트 결과를 기록하기 위한 기록 유지 시스템을 가져야 한다. 행위자의 QMS에 따라 소스 코드가 확인 및 검증되면 행위자는 소프트웨어 플랫폼의 QMS에 따라 확인, 검증 및 배포를 위해 CI/CD 시스템에 소스 코드를 릴리즈(release)할 수 있다.
블록(330)에서, 소프트웨어 플랫폼의 CI/CD 시스템은 소스 코드를 수신하고 소프트웨어 플랫폼과 연관된 QMS에 따라 소스 코드 및 실행 가능 프로그램의 품질 및 적합성 체크를 자동으로 수행한다. 그 후, 소스 코드 및 실행 프로그램이 유효한지 및/또는 오픈 소스로 인한 취약성을 포함하는지에 대한 결정이 내려진다. 소스 코드 및 실행 프로그램이 유효하지 않은 경우(QMS의 요건의 전부 또는 일부를 충족하지 못함) 및/또는 소스 코드 및 실행 프로그램이 (QMS에 따라 소프트웨어 플랫폼에서 정의하고 결정한 대로의) 오픈 소스로 인한 취약점을 포함하는 경우, CI/CD 시스템은 소스 코드를 행위자에게 다시 전달하여 소스 코드의 오류 및/또는 취약성을 수정할 수 있다. 반대로, 소스 코드 및 실행 프로그램이 유효한 경우(QMS 요건의 전부 또는 일부를 충족함) 및/또는 소스 코드 및 실행 프로그램이 (QMS에 따라 소프트웨어 플랫폼에 의해 정의되고 결정된 대로의) 오픈 소스로 인한 취약점을 포함하지 않는 경우, CI/CD 시스템은 소스 코드 또는 소프트웨어를 사용하여 서브서비스 또는 서비스에 대한 배포 프로세스를 개시하도록 커널에 알린다.
블록(335)에서, 커널(가령, 도 2와 관련하여 설명된 바와 같은 커널(200))은 소스 코드 또는 소프트웨어를 사용하여 서브서비스 또는 서비스에 대한 배치 프로세스를 개시하라는 요청을 수신한다. 커널은 분산 컴퓨팅 환경 상에 있다.
블록(340)에서, 커널은 배포될 서브서비스 또는 서비스의 유형, 및 서브서비스 또는 서비스를 제공하기 위해 하나 이상의 프로그램을 실행하는 데 필요한 소스 코드, 라이브러리, 종속관계, 툴 및 그 밖의 다른 파일을 식별하기 위해 요청을 파싱(parse)한다. 서브서비스 또는 서비스 유형은 모델 소프트웨어, 가령, 머신 러닝된 모델, 회귀 모델, 또는 그 밖의 다른 임의의 유형의 지도 또는 비지도 모델, SAMD, 물리적 의료 장치와 함께 작동하는 소프트웨어, 또는 데이터 입수 및 처리 소프트웨어(가령, 스트림 처리, 배치 처리, 장기 실행 서비스, 데이터 분석 및 처리, 데이터 저장 등)을 포함하지만, 이에 한정되지 않는다. 서브서비스 또는 서비스가 상기 분산 컴퓨팅 환경 상에 배포되기 위해, 상기 서브서비스 또는 서비스의 유형은 상기 분산 컴퓨팅 환경이 지원하도록 구성된 것이어야 한다. 커널은 분산 컴퓨팅 환경에 의해 지원되는 서브서비스 또는 서비스의 유형에 대해 배포될 서브서비스 또는 서비스의 유형을 체크한다. 해당 서브서비스 또는 서비스의 유형이 분산 컴퓨팅 환경이 지원하도록 구성된 것이 아닌 경우, 커널은 해당 서브서비스 또는 서비스의 유형을 지원하도록 구성될 수 있는 상이한 분산 컴퓨팅 환경 상의 상이한 커널에 요청을 전달한다. 따라서 커널이 궁극적으로 서브서비스 또는 서비스의 유형을 지원하도록 구성된 것으로 식별하는 분산 컴퓨팅 환경은 초기에 서브서비스 또는 서비스에 대한 요청을 수신하는 커널을 실행하는 분산 컴퓨팅 환경과 동일하거나 상이할 수 있다.
블록(345)에서, 그 서브서비스 또는 서비스의 유형이 분산 컴퓨팅 환경이 지원하도록 구성된 것인 경우, 커널은 분산 컴퓨팅 환경의 플레이스먼트 링 내 특정된 자원을 프로비저닝하기 위한 이미지를 획득한다. 이미지는 블록(320)과 관련하여 기재된 레지스트리를 사용하여 하나 이상의 레포지토리로부터 획득된다. 이미지는 소프트웨어 패키지를 실행하는 데 사용되는 자원의 사양을 포함하는 소프트웨어 패키지의 템플릿이며 템플릿은 배포될 서비스의 제1 부분의 유형에 기초하여 자원을 사용하도록 커스텀화된다. 예를 들어 SAMD 서브서비스가 배포될 경우 커널은 SAMD 처리용으로 구성된 이미지 템플릿을 불러올 것이다.
블록(350)에서, 커널은 플레이스먼트 링 내에서 이용 가능한 자원을 요청한다. 플레이스먼트 링 내의 사용 가능한 자원이 파싱되고 이미지로부터의 특정된 모든 자원이 사용 가능한 자원의 파싱에 기초하여 플레이스먼트 링 내에서 사용 가능한지 여부가 결정된다.
블록(355)에서, 이미지로부터의 모든 특정된 자원이 플레이스먼트 링 내에서 이용 가능할 때, 커널은 특정된 자원을 캡슐화하는 하나 이상의 컨테이너를 빌드하기 위해 이미지를 사용하는 빌드 및 배포 프로세스를 개시한다. 이미지로부터의 모든 특정된 자원이 플레이스먼트 링 내에서 이용 가능하지 않을 때 커널은 오토스케일 프로세스를 개시하여 이미지에 기초하여 이용 가능한 자원을 스케일-업하여, 이미지로부터 식별된 특정된 자원을 만족시키기 위해 상기 플레이스먼트 링에 추가 자원을 제공할 수 있다. 그런 다음 커널은 이미지를 사용하여 이용 가능한 자원 및 추가 자원을 캡슐화하는 하나 이상의 컨테이너를 빌드하는 빌드 및 배포 프로세스를 개시한다. 하나 이상의 컨테이너가 빌드되면, 하나 이상의 컨테이너는 이미지 위에 쓰기 가능 레이어를 추가하고, 이미지를 서브서비스 또는 서비스를 제공하기 위해 하나 이상의 프로그램을 실행하는 데 필요한 소스 코드, 라이브러리, 종속관계, 툴, 및 그 밖의 다른 파일을 포함하도록 수정한다. 하나 이상의 컨테이너는 서브서비스 또는 서비스를 제공하기 위해 하나 이상의 프로그램을 실행하기 위한 단일 파드 인스턴스에 래핑된다. 서브서비스 또는 서비스는 단일 파드 인스턴스 및 수정된 이미지의 하나 이상의 레플리카를 사용하여 배포된다.
블록(360)에서, 서브서비스 또는 서비스가 퍼블리싱되고 서브서비스 또는 서비스의 보안이 개시된다. 보안은 (i) 신원 및 액세스 관리를 위한 인증/인가 프로세스, 및 (ii) 취약성 문제에 대한 인증/인가 프로세스 및 서브서비스 또는 서비스의 사용의 모니터링으로 구성된다.
도 4는 소프트웨어 플랫폼 상에 서브서비스 또는 서비스를 배포하기 위해 커널을 사용하는 프로세스(400)를 예시한다. 흐름도(400)에 도시된 프로세스는 도 1 및 2에 묘사된 아키텍처, 시스템, 및 기법에 의해 구현된다.
단계(405)에서, 소프트웨어 개발 시스템의 CI는 배포를 위한 소스 코드를 검색하고 빌드 프로세스를 실행하여 실행 가능한 프로그램을 빌드한다. 빌드 프로세스의 일부로서, 소프트웨어 개발 시스템의 CI는 소프트웨어 개발 시스템의 QMS에 따라 소스 코드와 실행 가능한 프로그램을 테스트하고 검증한다. QMS는 릴리스 관리자의 제품 및 조직에 적합한 소스 코드를 검증하기 위한 요건의 세트를 정의한다. 가령, 소스 코드가 의도된 용도를 준수하는지, 의도된 용도를 구현하도록 의도된 대로 수행하는지, 기본 수준의 보안을 충족하는지 여부를 결정하기 위해 요건의 세트가 정의될 수 있다. 빌드 프로세스의 추가 부분으로서, 소프트웨어 개발 시스템의 CI는 소스 코드의 품질을 체크한다. 코드 품질 체크는 신뢰성(가령, 코드가 최소한의 결함으로 의도한 대로 작동하는지 결정), 유지 관리 가능성(가령, 일관된 구조/스타일을 따르고, 이해하기 쉽고, 잘 문서화되어 있는지 등) 및 테스트 가능성(가령, 소프트웨어가 확인/검증을 위한 테스트 노력을 얼마나 잘 지원하는지)에 대한 체크를 포함한다. 그 후, 소스 코드와 실행 가능 프로그램이 유효한지 및/또는 충분한 품질인지에 대한 결정이 이뤄진다. 소스 코드 및 실행 가능 프로그램이 유효하지 않은 경우(QMS 요건의 전부 또는 일부를 충족하지 못함) 및/또는 (QMS에 따라 소프트웨어 개발 시스템에 의해 정의되고 측정된 대로) 소스 코드 및 실행 가능 프로그램의 품질이 나쁜 경우, 소프트웨어 개발 시스템의 CI는 소스 코드를 개발 팀에 다시 전달하여 소스 코드의 오류 및/또는 품질을 수정할 수 있다. 반대로, 소스 코드와 실행 가능 프로그램이 유효한 경우(QMS 요건의 전부 또는 일부를 충족하는 경우) 및/또는 (QMS에 따라 소프트웨어 개발 시스템에 의해 정의되고 측정된 때) 소스 코드와 실행 가능 프로그램의 품질이 양호한 경우, 소프트웨어 개발 시스템의 CI는 소스 코드의 소프트웨어 플랫폼으로의 릴리즈를 단축(cut)시킨다.
단계(410)에서 소프트웨어 플랫폼의 CI/CD 시스템은 소스 코드를 수신한다. 경우에 따라 CI/CD 시스템을 제어하는 개체는 소프트웨어 개발 시스템을 제어하는 개체와 동일하거나 상이하다.
단계(415)에서 CI/CD 시스템은 수신된 소스 코드에 기초하여 실행 가능 프로그램을 빌드하기 위해 빌드 프로세스를 실행한다. 빌드 프로세스의 일부로서, CI/CD 시스템은 소프트웨어 플랫폼의 QMS에 따라 소스 코드와 실행 가능 프로그램을 테스트하고 검증한다. QMS는 소프트웨어 플랫폼에 적합한 소스 코드를 검증하기 위한 요건의 세트를 정의한다. 가령, 소스 코드가 의도된 용도를 구현하기 위한 의도대로 수행되는지, 강화된 보안 수준을 충족하는지, 국제, 국가 및/또는 지역 규정에 의해 시행되는 요건을 만족하는지, 데이터 프라이버시 문제를 충족하는지, 그리고 컨테이너 및 소프트웨어 플랫폼 환경에 특정한 성능 요건을 만족하는지 여부를 결정하기 위해 요건의 세트가 정의될 수 있다. 빌드 프로세스의 추가 부분으로서, CI/CD 시스템은 소스 코드를 화이트 소스화한다. 화이트 소스화는 소스 코드의 오픈 소스 특징을 식별하는 것, 오픈 소스 특징과 연관된 권한 또는 라이센스를 결정하는 것, 및 권한 또는 라이센스 및 관련 오픈 소스 특징을 데이터 구조로 컴파일하는 것을 포함한다. 그 후, 소스 코드 및 실행 가능 프로그램이 유효한지 및/또는 오픈 소스로 인한 취약성을 포함하는지에 대한 결정이 내려진다. 소스 코드 및 실행 프로그램이 유효하지 않은 경우(QMS의 요건의 전부 또는 일부를 충족하지 못함) 및/또는 소스 코드 및 실행 프로그램이 (QMS에 따라 소프트웨어 플랫폼에서 정의하고 결정한 대로의) 오픈 소스로 인한 취약점을 포함하는 경우, CI/CD 시스템은 소스 코드를 개발 팀에게 다시 전달하여 소스 코드의 오류 및/또는 취약성을 수정할 수 있다. 반대로, 소스 코드 및 실행 프로그램이 유효한 경우(QMS 요건의 전부 또는 일부를 충족함) 및/또는 소스 코드 및 실행 프로그램이 (QMS에 따라 소프트웨어 플랫폼에 의해 정의되고 결정된 대로의) 오픈 소스로 인한 취약점을 포함하지 않는 경우, CI/CD 시스템은 소스 코드 또는 소프트웨어에 대한 개발 프로세스를 진행하도록 커널에 알린다.
블록(420)에서, 커널(가령, 도 2와 관련하여 설명된 바와 같은 커널(200))은 소스 코드 또는 소프트웨어를 사용하여 서브서비스 또는 서비스에 대한 배치 프로세스를 개시하라는 요청을 수신한다. 커널은 분산 컴퓨팅 환경(소프트웨어 플랫폼의 일부) 상에 위치한다.
단계(425)에서, 커널은 배포될 서브서비스 또는 서비스의 유형, 및 서브서비스 또는 서비스를 제공하기 위해 하나 이상의 프로그램을 실행하는 데 필요한 소스 코드, 라이브러리, 종속관계, 툴 및 그 밖의 다른 파일을 식별하기 위해 요청을 파싱(parse)한다. 서브서비스 또는 서비스 유형은 모델 소프트웨어, 가령, 머신 러닝된 모델, 회귀 모델, 또는 그 밖의 다른 임의의 유형의 지도 또는 비지도 모델, SAMD, 물리적 의료 장치와 함께 작동하는 소프트웨어, 또는 데이터 입수 및 처리 소프트웨어(가령, 스트림 처리, 배치 처리, 장기 실행 서비스, 데이터 분석 및 처리, 데이터 저장 등)을 포함하지만, 이에 한정되지 않는다. 서브서비스 또는 서비스가 상기 분산 컴퓨팅 환경 상에 배포되기 위해, 상기 서브서비스 또는 서비스의 유형은 상기 분산 컴퓨팅 환경이 지원하도록 구성된 것이어야 한다. 커널은 분산 컴퓨팅 환경에 의해 지원되는 서브서비스 또는 서비스의 유형에 대해 배포될 서브서비스 또는 서비스의 유형을 체크한다. 해당 서브서비스 또는 서비스의 유형이 분산 컴퓨팅 환경이 지원하도록 구성된 것이 아닌 경우, 커널은 해당 서브서비스 또는 서비스의 유형을 지원하도록 구성될 수 있는 상이한 분산 컴퓨팅 환경 상의 상이한 커널에 요청을 전달한다.
단계(430)에서, 서브서비스 또는 서비스의 유형이 분산 컴퓨팅 환경이 지원하도록 구성된 것인 경우, 커널은 분산 컴퓨팅 환경 내의 하나 이상의 플레이스먼트 링을 통해 실행되는 플레이스먼트 제약 프로세스로부터 이용 가능한 자원을 요청한다. 각 플레이스먼트 링은 하나 이상의 유형의 자원의 사전-통합되고 최적화된 조합을 포함할 수 있다. 특정 예에서, 상이한 유형의 클라우드 서비스에 대해 상이한 플레이스먼트 링이 선-프로비저닝될 수 있다. 가령, 플레이스먼트 링의 제1 세트는 SAMD 서비스를 위해 프로비저닝될 수 있고, 플레이스먼트 링의 제1 세트의 플레이스먼트 링과 상이한 자원 조합을 포함할 수 있는 플레이스먼트 링의 제2 세트는 데이터 분석 서비스를 위해 프로비저닝될 수 있는 등이다.
단계(435)에서, 플레이스먼트 제약 프로세스는 분산 컴퓨팅 환경 내의 하나 이상의 플레이스먼트 링에서 이용 가능한 자원을 파싱한다. 분산 컴퓨팅 환경 내의 하나 이상의 플레이스먼트 링에서 이용 가능한 모든 자원의 목록을 획득하기 위해 파싱이 수행된다.
단계(440)에서, 플레이스먼트 제약 프로세스는 이용 가능한 자원의 파싱에 기초하여 이미지로부터의 모든 특정된 자원이 플레이스먼트 링 내에 있는지 여부에 대해 결정한다. 이미지는 서브서비스 또는 서비스의 유형에 기초하여 이미지 아티팩토리(하나 이상의 레포지토리)로부터 획득된다. 이미지는 소프트웨어 패키지를 실행하는 데 사용되는 자원의 사양을 포함하는 소프트웨어 패키지의 템플릿이며 템플릿은 서브서비스 또는 서비스의 유형에 기초하여 특정된 자원을 사용하도록 커스텀화된다. 이미지로부터의 모든 특정된 자원이 하나 이상의 플레이스먼트 링 내에서 이용 가능할 때 플레이스먼트 제약 프로세스는 특정된 자원을 예약하고 상기 특정된 자원이 이용 가능하고 예약됨을 커널에게 알린다. 이미지로부터의 모든 특정된 자원이 플레이스먼트 링 내에서 이용 가능하지 않을 때, 플레이스먼트 제약 프로세스는 이미지에 기초하여 이용 가능한 자원을 오토스케일링하여, 이미지로부터 식별된 특정된 자원을 만족시키기 위해 추가 자원을 하나 이상의 플레이스먼트 링에 제공할 수 있다. 그 후, 플레이스먼트 제약 프로세스는 특정된 자원을 예약하고 특정된 자원이 이용 가능하고 예약되었음을 커널에 알린다.
단계(445)에서, 커널은 오케스트레이션 엔진(orchestration engine)을 통해 서브서비스 또는 서비스의 배치를 요청한다. 요청은 하나 이상의 플레이스먼트 링 내에서의 특정된 자원의 위치에 관한 정보, 배포될 서브서비스 또는 서비스의 유형과 연관된 이미지, 및 소스 코드, 라이브러리, 종속관계, 툴, 및 서브서비스 또는 서비스를 제공하도록 하나 이상의 프로그램을 실행하는 데 필요한 그 밖의 다른 파일을 포함한다.
단계(450)에서, 오케스트레이션 엔진은 서브서비스 또는 서비스의 배포를 위해 수행될 오케스트레이션의 유형을 검출한다. 오케스트레이션의 유형은 서브서비스 또는 서비스의 유형에 기초하여 복수의 오케스트레이션 유형으로부터 오케스트레이션 유형을 식별하는 것을 포함한다.
단계(455)에서, 오케스트레이션 엔진은 서브서비스 또는 서비스의 배포를 위한 오케스트레이션 유형에 기초하여 특정된 자원을 캡슐화하는 하나 이상의 컨테이너를 빌드하기 위해 이미지를 사용한다. 하나 이상의 컨테이너가 빌드되면, 하나 이상의 컨테이너는 이미지 위에 쓰기 가능 레이어를 추가하고, 이미지를 서브서비스 또는 서비스를 제공하기 위해 하나 이상의 프로그램을 실행하는 데 필요한 소스 코드, 라이브러리, 종속관계, 툴, 및 그 밖의 다른 파일을 포함하도록 수정한다. 하나 이상의 컨테이너는 서브서비스 또는 서비스를 제공하기 위해 하나 이상의 프로그램을 실행하기 위한 단일 파드 인스턴스에 래핑된다. 서브서비스 또는 서비스는 단일 파드 인스턴스 및 수정된 이미지의 하나 이상의 레플리카를 사용하여 배포된다. 이후, 오케스트레이션 엔진은 서브서비스 또는 서비스의 배포가 성공인지 또는 실패인지(및 그 이유)를 커널에 알린다.
단계(460)에서, 배포가 실패인 때, 커널은 교정 조치가 취해질 수 있도록 CI/CD 시스템에 통지한다. 배포가 성공이며, 커널은 건강 체크를 수행하여 서브서비스 또는 서비스의 기능을 평가하고 서브서비스 또는 서비스가 예상대로 작동하는지 여부를 결정한다. 서비스가 예상대로 작동하지 않는 때 커널은 서비스가 예상대로 작동하지 않음을 CI/CD 시스템에 알린다.
단계(465)에서, 서비스가 예상대로 기능하고 있을 때, 커널은: (i) 서브서비스 또는 서비스를 퍼블리싱하고(가령, 하나 이상의 가입자 또는 사용자가 사용할 서브서비스 또는 서비스를 등록하고), (ii) 서브서비스 또는 서비스의 보안을 개시하며 및 (iii) 예상대로 작동하도록 서비스의 성공에 대해 CICD 시스템에 통지한다. 보안은 (i) 신원 및 액세스 관리를 위한 인증/인가 프로세스, 및 (ii) 취약성 문제에 대한 인증/인가 프로세스 및 서브서비스 또는 서비스의 사용의 모니터링으로 구성된다.
도 5는 소프트웨어 플랫폼 상에 서비스의 하나 이상의 서브서비스를 배포하기 위한 프로세스(500)를 예시한다. 단계(505)에서, 제1 분산 컴퓨팅 환경 상에 상주하는 제1 커널에서 제1 요청이 수신된다. 제1 요청은 제1 분산 컴퓨팅 환경 상에서 서비스의 제1 서브서비스에 대한 배포 프로세스를 시작하라는 것이다. 제1 서브서비스는 하나의 유형을 가지며, 상기 제1 서브서비스가 제1 분산 컴퓨팅 환경 상에 배포되기 위해, 상기 제1 서브서비스의 유형은 상기 제1 분산 컴퓨팅 환경이 지원하도록 구성된 것이어야 한다. 지원하도록 구성됨의 의미는 분산 컴퓨팅 환경이 서브서비스의 유형을 안정적으로 실행하고 스케일링하기 위해 컴퓨팅 파워, 메모리 저장소, 콘텐츠 전달 및 그 밖의 다른 기능을 제안한다는 것이다. 경우에 따라, 제1 서브서비스의 유형은, 모델 소프트웨어, 가령, 머신 러닝된 모델, 회귀 모델, 또는 그 밖의 다른 임의의 유형의 지도 또는 비지도 모델, 의료 장치로서의 소프트웨어(software as a medical device), 물리 의료 장치와 함께 동작하는 소프트웨어, 또는 데이터 입수 및 처리 소프트웨어를 포함할 수 있지만, 이에 한정되지는 않는다.
제1 서브서비스의 유형이 제1 분산 컴퓨팅 환경이 지원하도록 구성된 것임을 보장하기 위해, 요청을 전송하는 개체(가령, CI/CD 시스템)는 제1 서브서비스의 유형을 결정하고, 복수의 분산 컴퓨팅 환경이 지원하도록 구성된 서브서비스의 유형을 결정하고, 제1 서브서비스의 유형을 지원하도록 구성된 주어진 분산 컴퓨팅 환경(가령, 제1 분산 컴퓨팅 환경)을 선택하고, 주어진 분산 컴퓨팅 환경(가령, 제1 분산 컴퓨팅 환경)으로 요청을 전송한다. 대안으로, 제1 서브서비스의 유형이 제1 분산 컴퓨팅 환경이 지원하도록 구성된 것임을 보장하기 위해, 요청을 전송하는 개체(가령, CI/CD 시스템)는 제1 서브서비스의 유형을 결정하고 제1 서브서비스의 유형과 함께 제1 요청을 전송한다. 제1 커널은 제1 분산 컴퓨팅 환경에 의해 지원되는 서브서비스의 유형에 대해 배포될 제1 서브서비스의 유형을 체크하고, 제1 서브서비스의 유형이 제1 분산 컴퓨팅 환경이 지원하도록 구성된 것이 아닌 경우, 커널은 제1 서브서비스의 유형을 지원하도록 구성될 수 있는 상이한 분산 컴퓨팅 환경 상의 상이한 커널에 요청을 전달한다. 이와 달리, 제1 서브서비스의 유형이 제1 분산 컴퓨팅 환경이 지원하도록 구성된 것인 경우, 프로세스는 단계(510)에서 계속된다.
단계(510)에서, 제1 요청을 수신하고 제1 서브서비스의 유형이 제1 분산 컴퓨팅 환경이 지원하도록 구성된 것임에 응답하여, 제1 커널은 제1 분산 컴퓨팅 환경의 플레이스먼트 링 내 특정된 자원에 대한 프로비저닝 프로세스를 개시한다. 프로비저닝 프로세스는 제1 서브서비스의 유형에 기초하여 이미지를 획득하는 것을 포함한다. 이미지는 소프트웨어 패키지를 실행하는 데 사용되는 자원의 사양을 포함하는 소프트웨어 패키지의 템플릿이며 템플릿은 제1 서브서비스의 유형에 기초하여 특정된 자원을 사용하도록 커스텀화된다. 이미지를 획득하는 것은 제1 서브서비스의 유형에 기초하여 복수의 이미지로부터 이미지를 식별하는 것을 포함한다. 이미지는 이미지의 취약성을 줄이기 위해 보안 모범 사례에 맞춰 구성되며 보안 모범 사례가 제1 서브서비스의 유형에 기초하여 선택된다. 일부 경우에서, 이미지는 배포 작업흐름 및 성능을 최적화하도록 이미지 사양에 따라 더 구성되며, 상기 이미지 사양은 상기 제1 서브서비스의 유형에 기초하여 선택된다.
프로비저닝 프로세스는 플레이스먼트 링 내에서 특정된 자원의 위치를 찾는 것을 포함하며, 이는 상기 이미지를 파싱하여 상기 특정된 자원을 식별하는 것, 상기 플레이스먼트 링으로부터 이용 가능 자원을 요청하는 것, 상기 플레이스먼트 링으로부터의 상기 이용 가능 자원을 파싱하는 것, 상기 이용 가능 자원의 파싱에 기초하여 상기 이미지로부터의 상기 특정된 자원 모두가 상기 플레이스먼트 링 내에서 이용 가능한지 여부를 결정하는 것을 더 포함한다. 이미지로부터의 특정된 자원 모두가 상기 플레이스먼트 링 내에서 이용 가능 한 것은 아닐 때, 이미지에 기초하여 이용 가능 자원을 오토스케일링하여 상기 플레이스먼트 링에 상기 이미지로부터 식별된 상기 특정된 자원을 만족시키기 위해 추가 자원을 제공하는 것을 포함한다. 이미지로부터의 특정된 자원 모두가 플레이스먼트 링 내에서 이용 가능한 때, 상기 특정된 자원을 예약한다.
프로비저닝 프로세스는 특정된 자원을 캡슐화하는 하나 이상의 컨테이너를 이미지를 사용하여 빌드하는 것을 더 포함한다. 하나 이상의 컨테이너는 제1 서브서비스를 제공하기 위해 하나 이상의 프로그램을 실행하기 위한 제1 파드에 래핑된다. 하나 이상의 컨테이너가 빌드되면, 하나 이상의 프로그램을 실행하는 데 필요한 소스 코드를 포함하도록 쓰기 가능 레이어를 사용하여 이미지가 수정된다. 특정 경우에서, 이미지는 소스 코드, 라이브러리, 종속관계, 툴 및 제1 서브서비스를 제공하기 위해 하나 이상의 프로그램을 실행하는 데 필요한 그 밖의 다른 파일을 포함하도록 수정된다.
단계(515)에서, 프로비저닝된 특정된 자원 및 제1 서브서비스의 유형에 대한 수정된 이미지를 포함하는 제1 파드의 하나 이상의 레플리카를 이용해 제1 서브서비스가 배포된다. 제1 서브서비스는 제1 분산 컴퓨팅 환경 상에 배포된다.
단계(520)에서, 제1 서브서비스의 기능을 평가하고 제1 서브서비스가 예상대로 기능하고 있는지를 결정하기 위해 건강 체크가 수행된다. 소스 코드 및 실행 프로그램이 유효한 경우(QMS 요건의 전부 또는 일부를 충족함), 소스 코드 및 실행 프로그램이 (QMS에 따라 소프트웨어 플랫폼에 의해 정의되고 결정된 대로) 오픈 소스로 인한 취약점을 포함하지 않는 경우, 및/또는 제1 서브서비스가 건강 체크를 통과한 경우, 제1 서브서비스가 예상대로 작동한다. 제1 서브서비스가 건강 체크를 통과하지 못할 때 서비스가 예상대로 작동하지 않음을 CICD 시스템에 알린다. 제1 서브서비스가 예상대로 작동하면 (i) 제1 서브서비스를 퍼블리싱하고, (ii) 제1 서브서비스의 보안을 개시하며, (iii) 제1 서브서비스가 예상대로 작동함을 CICD 시스템에 알린다.
선택적으로 단계(525)에서, 제1 서브서비스가 예상대로 작동할 때, 제1 서브서비스가 사용을 위해 제안될 수 있고 사용자는 제1 서브서비스의 실행을 개시할 수 있다. 제1 서브서비스의 실행은 (i) 상기 커널의 마스터에 의해, 상기 제1 서브서비스의 유형에 기초하여 상기 제1 서브서비스를 실행하기 위한 프레임워크를 결정하는 것, (ii) 상기 커널의 마스터에 의해, 상기 플레이스먼트 링 내 이용 가능 자원을 상기 제1 서브서비스를 제공하기 위해 하나 이상의 프로그램을 실행하기 위한 상기 프레임워크에 제안하는 것, 상기 커널의 마스터에 의해, 상기 제안에 응답하여, 상기 하나 이상의 프로그램에 의해 정의된 작업에 대한 정보를 수신하는 것, 및 상기 커널의 마스터에 의해, 상기 작업을 실행하기 위해 프레임워크의 실행자에게 상기 특정된 자원을 할당하는 상기 커널의 에이전트에게 상기 작업을 전송하는 것을 포함할 수 있다.
도 5에 또한 도시된 바와 같이, 단계(505-525)와 유사한 프로세스가 제1 서브서비스에 대해 수행된 프로세스와 병렬로, 실질적으로 병렬로, 오프셋되어, 또는 서로 순차적으로 서비스의 제2, 제3, 제4 등(n)의 서브서비스에 대해 수행될 수 있다. 이들 프로세스는 본 발명의 양태에 따라 다수의 분산 컴퓨팅 환경에 걸쳐 소프트웨어 플랫폼 상에 배포될 서비스와 연관된 서브서비스의 전부 또는 일부를 배포하기 위해 수행될 수 있다.
V. 추가 고려사항
본 개시의 일부 실시예는 하나 이상의 데이터 프로세서를 포함하는 시스템을 포함한다. 일부 실시예에서, 시스템은 하나 이상의 데이터 프로세서 상에서 실행될 때 하나 이상의 데이터 프로세서로 하여금 여기서 개시된 하나 이상의 방법 중 일부 또는 전부 및/또는 하나 이상의 프로세스 중 일부 또는 전부를 수행하게 하는 명령을 포함하는 비일시적 컴퓨터 판독형 저장 매체를 포함한다. 본 개시내용의 일부 실시예는 하나 이상의 데이터 프로세서 상에서 실행될 때 하나 이상의 데이터 프로세서로 하여금 여기서 개시된 하나 이상의 방법 중 일부 또는 전부 및/또는 여기서 개시된 하나 이상의 프로세스의 일부 또는 전부를 수행하게 하는 명령을 포함하는 비일시적 기계 판독형 저장 매체 내에 유형적으로 구현되는 컴퓨터-프로그램 프로덕트를 포함한다.
채용된 용어 및 표현은 한정이 아닌 설명 측면에서 사용되며, 이러한 용어 및 표현의 사용에 도시되고 기재된 특징부 또는 이의 일부분의 임의의 균등물을 배제하는 어떠한 의도도 없고, 청구된 발명의 범위 내에서 다양한 수정이 가능함이 자명하다. 따라서, 본 발명이 실시예 및 선택적 특징으로 특정하게 개시되었지만 본 명세서에 개시된 개념의 수정, 및 변형이 해당 분야의 통상의 기술자에 의해 이용될 수 있고, 이러한 수정 및 변형이 첨부된 청구항에 의해 정의된 본 발명의 범위 내에 있는 것으로 간주됨이 이해될 것이다.
뒤 이은 설명은 단지 바람직한 예시적인 실시 형태를 제공하며, 본 개시내용의 범위, 적용 가능성 또는 구성을 제한하도록 의도되지 않는다. 오히려, 바람직한 예시적인 실시예의 뒤 이은 설명은 다양한 실시예를 구현하기 위한 가능한 설명을 통상의 기술자에게 제공할 것이다. 첨부된 특허청구범위에 기재된 정신 및 범위를 벗어나지 않고 요소의 기능 및 배열에 다양한 변경이 이루어질 수 있음을 이해해야 한다.
실시예의 완전한 이해를 제공하기 위해 다음 설명에서 특정 세부사항이 제공된다. 그러나, 이러한 특정 세부사항 없이 실시예가 실시될 수 있음이 이해될 것이다. 예를 들어, 회로, 시스템, 네트워크, 프로세스 및 그 밖의 다른 구성요소는 실시예를 불필요한 세부 사항으로 모호하게 하지 않기 위해 블록도 형태의 구성요소로 표시될 수 있다. 또 다른 예에서, 잘 알려진 회로, 프로세스, 알고리즘, 구조 및 기술은 실시예를 모호하게 하는 것을 피하기 위해 불필요한 세부 사항 없이 표시될 수 있다.
Claims (27)
- 컴퓨터로 구현되는 방법으로서,
제1 분산 컴퓨팅 환경 상에 상주하는 제1 커널에서, 상기 제1 분산 컴퓨팅 환경 상에서의 제1 서브서비스 또는 서비스에 대한 배포 프로세스를 개시하라는 제1 요청을 수신하는 단계 - 상기 제1 서브서비스 또는 서비스는 하나의 유형을 가지며, 상기 제1 서브서비스 또는 서비스가 상기 제1 분산 컴퓨팅 환경 상에서 배포되기 위해, 상기 제1 서브서비스 또는 서비스의 유형은 상기 제1 분산 컴퓨팅 환경이 지원하도록 구성된 것이어야 함 - ,
상기 요청을 수신한 것 및 상기 제1 서브서비스 또는 서비스의 유형은 상기 제1 분산 컴퓨팅 환경이 지원하도록 구성된 것임에 응답하여, 상기 제1 커널에 의해, 상기 제1 분산 컴퓨팅 환경의 플레이스먼트 링 내 특정된 자원을 프로비저닝하는 단계 - 상기 프로비저닝하는 단계는
상기 제1 서브서비스 또는 서비스의 유형에 기초하여 이미지를 획득하는 단계 - 상기 이미지는 소프트웨어 패키지를 실행하기 위해 사용되는 자원의 사양을 포함하는 상기 소프트웨어 패키지의 템플릿이며 상기 템플릿은 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 상기 특정된 자원을 이용하도록 커스텀화됨 - ,
상기 플레이스먼트 링 내에서 상기 특정된 자원의 위치를 찾는 단계,
상기 이미지를 이용해, 상기 특정된 자원을 캡슐화하는 하나 이상의 컨테이너를 빌드하는 단계 - 상기 하나 이상의 컨테이너는 상기 제1 서브서비스 또는 서비스를 제공하기 위해 하나 이상의 프로그램을 실행하기 위한 제1 파드(pod)에 래핑됨 - , 및
쓰기 가능 레이어를 이용해, 상기 하나 이상의 프로그램을 실행하기 위해 필요한 소스 코드를 포함하도록 상기 이미지를 수정하는 단계를 포함함 - , 및
상기 제1 커널에 의해, 상기 제1 파드 및 수정된 이미지의 하나 이상의 레플리카를 이용해 상기 제1 서브서비스 또는 서비스를 배포하는 단계
를 포함하는, 컴퓨터로 구현되는 방법. - 제1항에 있어서, 상기 자원의 위치를 찾는 단계는
상기 이미지를 파싱하여 상기 특정된 자원을 식별하는 단계,
상기 플레이스먼트 링으로부터 이용 가능 자원을 요청하는 단계,
상기 플레이스먼트 링으로부터의 상기 이용 가능 자원을 파싱하는 단계,
상기 이용 가능 자원의 파싱에 기초하여 상기 이미지로부터의 상기 특정된 자원 모두가 상기 플레이스먼트 링 내에서 이용 가능한지 여부를 결정하는 단계, 및
상기 이미지로부터의 상기 특정된 자원 모두가 상기 플레이스먼트 링 내에서 이용 가능 한 것은 아님에 응답하여, 상기 이미지에 기초하여 상기 이용 가능 자원을 오토스케일링하여 상기 플레이스먼트 링에 상기 이미지로부터 식별된 상기 특정된 자원을 만족시키기 위해 추가 자원을 제공하는 단계
를 포함하는, 컴퓨터로 구현되는 방법. - 제1항 또는 제2항에 있어서,
상기 이미지를 획득하는 단계는 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 복수의 이미지로부터 상기 이미지를 식별하는 단계를 더 포함하며,
상기 이미지는 상기 이미지의 취약점을 감소시키도록 보안 모범 사례에 따라 구성되며,
상기 보안 모범 사례는 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 선택되는, 컴퓨터로 구현되는 방법. - 제3항에 있어서,
상기 이미지는 배포 작업흐름 및 성능을 최적화하도록 이미지 사양에 따라 더 구성되며,
상기 이미지 사양은 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 선택되는, 컴퓨터로 구현되는 방법. - 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 제1 서브서비스 또는 서비스의 유형은 머신 러닝된 모델 소프트웨어, 의료 장치로서의 소프트웨어, 물리적 의료 장치와 함께 동작하는 소프트웨어, 또는 데이터 입수 및 처리 소프트웨어인, 컴퓨터로 구현되는 방법.
- 제5항에 있어서, 상기 커널에 의해, 상기 제1 서브서비스 또는 서비스를 실행하는 단계를 더 포함하며, 상기 실행하는 단계는
상기 커널의 마스터에 의해, 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 상기 제1 서브서비스 또는 서비스를 실행하기 위한 프레임워크를 결정하는 단계,
상기 커널의 마스터에 의해, 상기 플레이스먼트 링 내 이용 가능 자원을 상기 제1 서브서비스 또는 서비스를 제공하기 위해 하나 이상의 프로그램을 실행하기 위한 상기 프레임워크에 제안하는 단계,
상기 커널의 마스터에 의해, 상기 제안에 응답하여, 상기 하나 이상의 프로그램에 의해 정의된 작업에 대한 정보를 수신하는 단계, 및
상기 커널의 마스터에 의해, 상기 작업을 실행하기 위해 프레임워크의 실행자에게 상기 특정된 자원을 할당하는 상기 커널의 에이전트에게 상기 작업을 전송하는 단계
를 포함하는, 컴퓨터로 구현되는 방법. - 제1항 내지 제6항 중 어느 한 항에 있어서,
상기 커널에 의해, 상기 제1 서브서비스 또는 서비스를 퍼블리싱하는 단계, 및
상기 커널에 의해, 상기 제1 서브서비스 또는 서비스의 보안을 개시하는 단계
를 더 포함하는, 컴퓨터로 구현되는 방법. - 제1항 내지 제7항 중 어느 한 항에 있어서,
상기 커널에 의해, 상기 제1 서브서비스 또는 서비스의 기능을 평가하고 제1 서브서비스 또는 서비스가 예상대로 기능하고 있는지 여부를 결정하기 위해 건강 체크를 수행하는 단계,
상기 제1 서브서비스 또는 서비스가 상기 건강 체크를 통과하지 못할 때, 지속적 통합 지속적 배포(CICD: continuous integration continuous deployment) 시스템에게 상기 제1 서브서비스 또는 서비스가 예상대로 기능하지 못함에 대해 통지하는 단계 - 상기 제1 요청은 상기 CICD 시스템으로부터 수신됨 - , 및
상기 제1 서브서비스 또는 서비스가 예상대로 기능할 때, (i) 상기 커널에 의해, 제1 서브서비스 또는 서비스를 퍼블리싱하고, (ii) 상기 커널에 의해 상기 제1 서브서비스 또는 서비스의 보안을 개시하며, (iii) 상기 제1 서브서비스 또는 서비스가 예상대로 기능함에 대해 상기 CICD 시스템에게 통지하는 단계
를 더 포함하는, 컴퓨터로 구현되는 방법. - 제1항 내지 제8항 중 어느 한 항에 있어서,
제2 분산 컴퓨팅 환경 상에 상주하는 제2 커널에서, 상기 제2 분산 컴퓨팅 환경 상에서의 제2 서브서비스 또는 서비스에 대한 배포 프로세스를 개시하라는 제2 요청을 수신하는 단계 - 상기 제2 서브서비스는 하나의 유형을 가지며, 상기 제2 서브서비스 또는 서비스가 상기 제2 분산 컴퓨팅 환경 상에 배포되기 위해, 상기 제2 서브서비스 또는 서비스의 유형은 상기 제2 분산 컴퓨팅 환경이 지원하도록 구성된 것이어야 함 - ,
상기 제2 커널에 의해, 상기 요청을 수신한 것에 응답하여, 상기 제2 분산 컴퓨팅 환경의 플레이스먼트 링 내 특정된 자원을 프로비저닝하는 단계 - 상기 프로비저닝하는 단계는
상기 제2 서브서비스 또는 서비스의 유형에 기초하여 이미지를 획득하는 단계 - 상기 이미지는 소프트웨어 패키지를 실행하는 데 사용되는 자원의 사양을 포함하는 상기 소프트웨어 패키지의 템플릿이고 상기 템플릿은 상기 제2 서브서비스 또는 서비스의 유형에 기초하여 상기 특정된 자원을 이용하도록 커스텀화됨 - ,
상기 플레이스먼트 링 내에서 상기 특정된 자원의 위치를 찾는 단계,
상기 이미지를 이용해, 상기 특정된 자원을 캡슐화하는 하나 이상의 컨테이너를 빌드하는 단계 - 상기 하나 이상의 컨테이너는 제2 서브서비스 또는 서비스를 제공하기 위해 하나 이상의 프로그램을 실행하기 위한 제2 파드에 래핑됨 - , 및
쓰기 가능 레이어를 이용해, 상기 하나 이상의 프로그램을 실행하기 위해 필요한 소스 코드를 포함하도록 상기 이미지를 수정하는 단계를 포함함 - , 및
상기 제2 커널에 의해, 상기 제2 파드 및 수정된 이미지의 하나 이상의 레플리카를 이용해 상기 제2 서브서비스 또는 서비스를 배포하는 단계
를 더 포함하는, 컴퓨터로 구현되는 방법. - 시스템으로서,
하나 이상의 데이터 프로세서, 및
상기 하나 이상의 데이터 프로세서 상에서 실행될 때 상기 하나 이상의 데이터 프로세서로 하여금 동작을 수행하게 하는 명령을 포함하는 비일시적 컴퓨터 판독형 저장 매체
를 포함하며, 상기 동작은
제1 분산 컴퓨팅 환경 상에 상주하는 제1 커널에서, 상기 제1 분산 컴퓨팅 환경 상에서의 제1 서브서비스 또는 서비스에 대한 배포 프로세스를 개시하라는 제1 요청을 수신하는 것 - 상기 제1 서브서비스 또는 서비스는 하나의 유형을 가지며, 상기 제1 서브서비스 또는 서비스가 상기 제1 분산 컴퓨팅 환경 상에서 배포되기 위해, 상기 제1 서브서비스 또는 서비스의 유형은 상기 제1 분산 컴퓨팅 환경이 지원하도록 구성된 것이어야 함 - ,
상기 요청을 수신한 것 및 상기 제1 서브서비스 또는 서비스의 유형은 상기 제1 분산 컴퓨팅 환경이 지원하도록 구성된 것임에 응답하여, 상기 제1 커널에 의해, 상기 제1 분산 컴퓨팅 환경의 플레이스먼트 링 내 특정된 자원을 프로비저닝하는 것 - 상기 프로비저닝하는 것은
상기 제1 서브서비스 또는 서비스의 유형에 기초하여 이미지를 획득하는 것 - 상기 이미지는 소프트웨어 패키지를 실행하기 위해 사용되는 자원의 사양을 포함하는 상기 소프트웨어 패키지의 템플릿이며 상기 템플릿은 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 상기 특정된 자원을 이용하도록 커스텀화됨 - ,
상기 플레이스먼트 링 내에서 상기 특정된 자원의 위치를 찾는 것,
상기 이미지를 이용해, 상기 특정된 자원을 캡슐화하는 하나 이상의 컨테이너를 빌드하는 것 - 상기 하나 이상의 컨테이너는 상기 제1 서브서비스 또는 서비스를 제공하기 위해 하나 이상의 프로그램을 실행하기 위한 제1 파드(pod)에 래핑됨 - , 및
쓰기 가능 레이어를 이용해, 상기 하나 이상의 프로그램을 실행하기 위해 필요한 소스 코드를 포함하도록 상기 이미지를 수정하는 것을 포함함 - , 및
상기 제1 커널에 의해, 상기 제1 파드 및 수정된 이미지의 하나 이상의 레플리카를 이용해 상기 제1 서브서비스 또는 서비스를 배포하는 것
을 포함하는, 시스템. - 제10항에 있어서, 상기 자원의 위치를 찾는 것은
상기 이미지를 파싱하여 상기 특정된 자원을 식별하는 것,
상기 플레이스먼트 링으로부터 이용 가능 자원을 요청하는 것,
상기 플레이스먼트 링으로부터의 상기 이용 가능 자원을 파싱하는 것,
상기 이용 가능 자원의 파싱에 기초하여 상기 이미지로부터의 상기 특정된 자원 모두가 상기 플레이스먼트 링 내에서 이용 가능한지 여부를 결정하는 것, 및
상기 이미지로부터의 상기 특정된 자원 모두가 상기 플레이스먼트 링 내에서 이용 가능 한 것은 아님에 응답하여, 상기 이미지에 기초하여 상기 이용 가능 자원을 오토스케일링하여 상기 플레이스먼트 링에 상기 이미지로부터 식별된 상기 특정된 자원을 만족시키기 위해 추가 자원을 제공하는 것
을 포함하는, 시스템. - 제10항 또는 제11항에 있어서,
상기 이미지를 획득하는 것은 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 복수의 이미지로부터 상기 이미지를 식별하는 것을 더 포함하며,
상기 이미지는 상기 이미지의 취약점을 감소시키도록 보안 모범 사례에 따라 구성되며,
상기 보안 모범 사례는 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 선택되는, 시스템. - 제12항에 있어서,
상기 이미지는 배포 작업흐름 및 성능을 최적화하도록 이미지 사양에 따라 더 구성되며,
상기 이미지 사양은 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 선택되는, 시스템. - 제10항 내지 제13항 중 어느 한 항에 있어서, 상기 제1 서브서비스 또는 서비스의 유형은 머신 러닝된 모델 소프트웨어, 의료 장치로서의 소프트웨어, 물리적 의료 장치와 함께 동작하는 소프트웨어, 또는 데이터 입수 및 처리 소프트웨어인, 시스템.
- 제14항에 있어서, 상기 동작은 상기 커널에 의해, 상기 제1 서브서비스 또는 서비스를 실행하는 것을 더 포함하며, 상기 실행하는 것은
상기 커널의 마스터에 의해, 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 상기 제1 서브서비스 또는 서비스를 실행하기 위한 프레임워크를 결정하는 것,
상기 커널의 마스터에 의해, 상기 플레이스먼트 링 내 이용 가능 자원을 상기 제1 서브서비스 또는 서비스를 제공하기 위해 상기 하나 이상의 프로그램을 실행하기 위한 상기 프레임워크에 제안하는 것,
상기 커널의 마스터에 의해, 상기 제안에 응답하여, 상기 하나 이상의 프로그램에 의해 정의된 작업에 대한 정보를 수신하는 것, 및
상기 커널의 마스터에 의해, 상기 작업을 실행하기 위해 프레임워크의 실행자에게 상기 특정된 자원을 할당하는 상기 커널의 에이전트에게 상기 작업을 전송하는 것
을 포함하는, 시스템. - 제10항 내지 제15항 중 어느 한 항에 있어서,
상기 커널에 의해, 상기 제1 서브서비스 또는 서비스를 퍼블리싱하는 것, 및
상기 커널에 의해, 상기 제1 서브서비스 또는 서비스의 보안을 개시하는 것
을 더 포함하는, 시스템. - 제10항 내지 제16항 중 어느 한 항에 있어서, 상기 동작은
상기 커널에 의해, 상기 제1 서브서비스 또는 서비스의 기능을 평가하고 제1 서브서비스 또는 서비스가 예상대로 기능하고 있는지 여부를 결정하기 위해 건강 체크를 수행하는 것,
상기 제1 서브서비스 또는 서비스가 상기 건강 체크를 통과하지 못할 때, 지속적 통합 지속적 배포(CICD: continuous integration continuous deployment) 시스템에게 상기 제1 서브서비스 또는 서비스가 예상대로 기능하지 못함에 대해 통지하는 것 - 상기 제1 요청은 상기 CICD 시스템으로부터 수신됨 - , 및
상기 제1 서브서비스 또는 서비스가 예상대로 기능할 때, (i) 상기 커널에 의해, 상기 제1 서브서비스 또는 서비스를 퍼블리싱하고, (ii) 상기 커널에 의해 상기 제1 서브서비스 또는 서비스의 보안을 개시하며, (iii) 상기 제1 서브서비스 또는 서비스가 예상대로 기능함에 대해 상기 CICD 시스템에게 통지하는 것
을 더 포함하는, 시스템. - 제10항 내지 제17항 중 어느 한 항에 있어서, 상기 동작은
제2 분산 컴퓨팅 환경 상에 상주하는 제2 커널에서, 상기 제2 분산 컴퓨팅 환경 상에서의 제2 서브서비스 또는 서비스에 대한 배포 프로세스를 개시하라는 제2 요청을 수신하는 것 - 상기 제2 서브서비스는 하나의 유형을 가지며, 상기 제2 서브서비스 또는 서비스가 상기 제2 분산 컴퓨팅 환경 상에 배포되기 위해, 상기 제2 서브서비스 또는 서비스의 유형은 상기 제2 분산 컴퓨팅 환경이 지원하도록 구성된 것이어야 함 - ,
상기 제2 커널에 의해, 상기 요청을 수신한 것에 응답하여, 상기 제2 분산 컴퓨팅 환경의 플레이스먼트 링 내 특정된 자원을 프로비저닝하는 것 - 상기 프로비저닝하는 것은
상기 제2 서브서비스 또는 서비스의 유형에 기초하여 이미지를 획득하는 것 - 상기 이미지는 소프트웨어 패키지를 실행하는 데 사용되는 자원의 사양을 포함하는 상기 소프트웨어 패키지의 템플릿이고 상기 템플릿은 상기 제2 서브서비스 또는 서비스의 유형에 기초하여 상기 특정된 자원을 이용하도록 커스텀화됨 - ,
상기 플레이스먼트 링 내에서 상기 특정된 자원의 위치를 찾는 것,
상기 이미지를 이용해, 상기 특정된 자원을 캡슐화하는 하나 이상의 컨테이너를 빌드하는 것 - 상기 하나 이상의 컨테이너는 제2 서브서비스 또는 서비스를 제공하기 위해 하나 이상의 프로그램을 실행하기 위한 제2 파드에 래핑됨 - , 및
쓰기 가능 레이어를 이용해, 상기 하나 이상의 프로그램을 실행하기 위해 필요한 소스 코드를 포함하도록 상기 이미지를 수정하는 것을 포함함 - , 및
상기 제2 커널에 의해, 상기 제2 파드 및 수정된 이미지의 하나 이상의 레플리카를 이용해 상기 제2 서브서비스 또는 서비스를 배포하는 것
을 더 포함하는, 시스템. - 하나 이상의 데이터 프로세서로 하여금 동작을 수행하게 하도록 구성된 명령을 포함하는, 비일시적 기계 판독형 저장 매체에 유형적으로 구현되는 컴퓨터-프로그램 프로덕트로서, 상기 동작은
제1 분산 컴퓨팅 환경 상에 상주하는 제1 커널에서, 상기 제1 분산 컴퓨팅 환경 상에서의 제1 서브서비스 또는 서비스에 대한 배포 프로세스를 개시하라는 제1 요청을 수신하는 것 - 상기 제1 서브서비스 또는 서비스는 하나의 유형을 가지며, 상기 제1 서브서비스 또는 서비스가 상기 제1 분산 컴퓨팅 환경 상에서 배포되기 위해, 상기 제1 서브서비스 또는 서비스의 유형은 상기 제1 분산 컴퓨팅 환경이 지원하도록 구성된 것이어야 함 - ,
상기 요청을 수신한 것 및 상기 제1 서브서비스 또는 서비스의 유형은 상기 제1 분산 컴퓨팅 환경이 지원하도록 구성된 것임에 응답하여, 상기 제1 커널에 의해, 상기 제1 분산 컴퓨팅 환경의 플레이스먼트 링 내 특정된 자원을 프로비저닝하는 것 - 상기 프로비저닝하는 것은
상기 제1 서브서비스 또는 서비스의 유형에 기초하여 이미지를 획득하는 것 - 상기 이미지는 소프트웨어 패키지를 실행하기 위해 사용되는 자원의 사양을 포함하는 상기 소프트웨어 패키지의 템플릿이며 상기 템플릿은 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 상기 특정된 자원을 이용하도록 커스텀화됨 - ,
상기 플레이스먼트 링 내에서 상기 특정된 자원의 위치를 찾는 것,
상기 이미지를 이용해, 상기 특정된 자원을 캡슐화하는 하나 이상의 컨테이너를 빌드하는 것 - 상기 하나 이상의 컨테이너는 상기 제1 서브서비스 또는 서비스를 제공하기 위해 하나 이상의 프로그램을 실행하기 위한 제1 파드(pod)에 래핑됨 - , 및
쓰기 가능 레이어를 이용해, 상기 하나 이상의 프로그램을 실행하기 위해 필요한 소스 코드를 포함하도록 상기 이미지를 수정하는 것을 포함함 - , 및
상기 제1 커널에 의해, 상기 제1 파드 및 수정된 이미지의 하나 이상의 레플리카를 이용해 상기 제1 서브서비스 또는 서비스를 배포하는 것
을 포함하는, 컴퓨터-프로그램 프로덕트. - 제19항에 있어서, 상기 자원의 위치를 찾는 것은
상기 이미지를 파싱하여 상기 특정된 자원을 식별하는 것,
상기 플레이스먼트 링으로부터 이용 가능 자원을 요청하는 것,
상기 플레이스먼트 링으로부터의 상기 이용 가능 자원을 파싱하는 것,
상기 이용 가능 자원의 파싱에 기초하여 상기 이미지로부터의 상기 특정된 자원 모두가 상기 플레이스먼트 링 내에서 이용 가능한지 여부를 결정하는 것, 및
상기 이미지로부터의 상기 특정된 자원 모두가 상기 플레이스먼트 링 내에서 이용 가능 한 것은 아님에 응답하여, 상기 이미지에 기초하여 상기 이용 가능 자원을 오토스케일링하여 상기 플레이스먼트 링에 상기 이미지로부터 식별된 상기 특정된 자원을 만족시키기 위해 추가 자원을 제공하는 것
을 포함하는, 컴퓨터-프로그램 프로덕트. - 제19항 또는 제20항에 있어서,
상기 이미지를 획득하는 것은 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 복수의 이미지로부터 상기 이미지를 식별하는 것을 더 포함하며,
상기 이미지는 상기 이미지의 취약점을 감소시키도록 보안 모범 사례에 따라 구성되며,
상기 보안 모범 사례는 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 선택되는, 컴퓨터-프로그램 프로덕트. - 제21항에 있어서,
상기 이미지는 배포 작업흐름 및 성능을 최적화하도록 이미지 사양에 따라 더 구성되며,
상기 이미지 사양은 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 선택되는, 컴퓨터-프로그램 프로덕트. - 제19항 내지 제22항 중 어느 한 항에 있어서, 상기 제1 서브서비스 또는 서비스의 유형은 머신 러닝된 모델 소프트웨어, 의료 장치로서의 소프트웨어, 물리적 의료 장치와 함께 동작하는 소프트웨어, 또는 데이터 입수 및 처리 소프트웨어인, 컴퓨터-프로그램 프로덕트.
- 제23항에 있어서, 상기 동작은 상기 커널에 의해, 상기 제1 서브서비스 또는 서비스를 실행하는 것을 더 포함하며, 상기 실행하는 것은
상기 커널의 마스터에 의해, 상기 제1 서브서비스 또는 서비스의 유형에 기초하여 상기 제1 서브서비스 또는 서비스를 실행하기 위한 프레임워크를 결정하는 것,
상기 커널의 마스터에 의해, 상기 플레이스먼트 링 내 이용 가능 자원을 상기 제1 서브서비스 또는 서비스를 제공하기 위해 하나 이상의 프로그램을 실행하기 위한 상기 프레임워크에 제안하는 것,
상기 커널의 마스터에 의해, 상기 제안에 응답하여, 상기 하나 이상의 프로그램에 의해 정의된 작업에 대한 정보를 수신하는 것, 및
상기 커널의 마스터에 의해, 상기 작업을 실행하기 위해 프레임워크의 실행자에게 상기 특정된 자원을 할당하는 상기 커널의 에이전트에게 상기 작업을 전송하는 것
을 포함하는, 컴퓨터-프로그램 프로덕트. - 제19항 내지 제24항 중 어느 한 항에 있어서,
상기 커널에 의해, 상기 제1 서브서비스 또는 서비스를 퍼블리싱하는 것, 및
상기 커널에 의해, 상기 제1 서브서비스 또는 서비스의 보안을 개시하는 것
을 더 포함하는, 컴퓨터-프로그램 프로덕트. - 제19항 내지 제25항 중 어느 한 항에 있어서, 상기 동작은
상기 커널에 의해, 상기 제1 서브서비스 또는 서비스의 기능을 평가하고 상기 제1 서브서비스 또는 서비스가 예상대로 기능하고 있는지 여부를 결정하기 위해 건강 체크를 수행하는 것,
상기 제1 서브서비스 또는 서비스가 상기 건강 체크를 통과하지 못할 때, 지속적 통합 지속적 배포(CICD: continuous integration continuous deployment) 시스템에게 상기 제1 서브서비스 또는 서비스가 예상대로 기능하지 못함에 대해 통지하는 것 - 상기 제1 요청은 상기 CICD 시스템으로부터 수신됨 - , 및
상기 제1 서브서비스 또는 서비스가 예상대로 기능할 때, (i) 상기 커널에 의해, 제1 서브서비스 또는 서비스를 퍼블리싱하고, (ii) 상기 커널에 의해 상기 제1 서브서비스 또는 서비스의 보안을 개시하며, (iii) 상기 제1 서브서비스 또는 서비스가 예상대로 기능함에 대해 상기 CICD 시스템에게 통지하는 것
을 더 포함하는, 시스템. - 제19항 내지 제26항 중 어느 한 항에 있어서, 상기 동작은
제2 분산 컴퓨팅 환경 상에 상주하는 제2 커널에서, 상기 제2 분산 컴퓨팅 환경 상에서의 제2 서브서비스 또는 서비스에 대한 배포 프로세스를 개시하라는 제2 요청을 수신하는 것 - 상기 제2 서브서비스는 하나의 유형을 가지며, 상기 제2 서브서비스 또는 서비스가 상기 제2 분산 컴퓨팅 환경 상에 배포되기 위해, 상기 제2 서브서비스 또는 서비스의 유형은 상기 제2 분산 컴퓨팅 환경이 지원하도록 구성된 것이어야 함 - ,
상기 제2 커널에 의해, 상기 요청을 수신한 것에 응답하여, 상기 제2 분산 컴퓨팅 환경의 플레이스먼트 링 내 특정된 자원을 프로비저닝하는 것 - 상기 프로비저닝하는 것은
상기 제2 서브서비스 또는 서비스의 유형에 기초하여 이미지를 획득하는 것 - 상기 이미지는 소프트웨어 패키지를 실행하는 데 사용되는 자원의 사양을 포함하는 상기 소프트웨어 패키지의 템플릿이고 상기 템플릿은 상기 제2 서브서비스 또는 서비스의 유형에 기초하여 상기 특정된 자원을 이용하도록 커스텀화됨 - ,
상기 플레이스먼트 링 내에서 상기 특정된 자원의 위치를 찾는 것,
상기 이미지를 이용해, 상기 특정된 자원을 캡슐화하는 하나 이상의 컨테이너를 빌드하는 것 - 상기 하나 이상의 컨테이너는 제2 서브서비스 또는 서비스를 제공하기 위해 하나 이상의 프로그램을 실행하기 위한 제2 파드에 래핑됨 - , 및
쓰기 가능 레이어를 이용해, 상기 하나 이상의 프로그램을 실행하기 위해 필요한 소스 코드를 포함하도록 상기 이미지를 수정하는 것을 포함함 - , 및
상기 제2 커널에 의해, 상기 제2 파드 및 수정된 이미지의 하나 이상의 레플리카를 이용해 상기 제2 서브서비스 또는 서비스를 배포하는 것
을 더 포함하는, 컴퓨터-프로그램 프로덕트.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063111996P | 2020-11-10 | 2020-11-10 | |
US63/111,996 | 2020-11-10 | ||
PCT/US2021/058418 WO2022103689A1 (en) | 2020-11-10 | 2021-11-08 | Service orchestration within a distributed pod based system |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230098647A true KR20230098647A (ko) | 2023-07-04 |
Family
ID=78709566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020237018734A KR20230098647A (ko) | 2020-11-10 | 2021-11-08 | 분산 파드 기반 시스템 내에서의 서비스 오케스트레이션 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20230359455A1 (ko) |
EP (1) | EP4244719A1 (ko) |
JP (1) | JP2023550608A (ko) |
KR (1) | KR20230098647A (ko) |
CN (1) | CN116457759A (ko) |
WO (1) | WO2022103689A1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020142110A1 (en) * | 2018-12-31 | 2020-07-09 | Intel Corporation | Securing systems employing artificial intelligence |
US20230229438A1 (en) * | 2022-01-20 | 2023-07-20 | Target Brands, Inc. | Kernels as a service |
CN115202908B (zh) * | 2022-09-09 | 2023-01-03 | 杭州海康威视数字技术股份有限公司 | 一种基于动态编排的隐私计算请求响应方法及装置 |
SE2350239A1 (en) * | 2023-03-02 | 2024-09-03 | Nor2 Ab | Automatic network protocol agnostic implementation for software application programs |
-
2021
- 2021-11-08 CN CN202180075633.7A patent/CN116457759A/zh active Pending
- 2021-11-08 KR KR1020237018734A patent/KR20230098647A/ko active Search and Examination
- 2021-11-08 JP JP2023526941A patent/JP2023550608A/ja active Pending
- 2021-11-08 WO PCT/US2021/058418 patent/WO2022103689A1/en active Application Filing
- 2021-11-08 EP EP21811208.4A patent/EP4244719A1/en active Pending
-
2023
- 2023-05-04 US US18/312,565 patent/US20230359455A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022103689A1 (en) | 2022-05-19 |
US20230359455A1 (en) | 2023-11-09 |
JP2023550608A (ja) | 2023-12-04 |
CN116457759A (zh) | 2023-07-18 |
EP4244719A1 (en) | 2023-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11842221B2 (en) | Techniques for utilizing directed acyclic graphs for deployment instructions | |
US10402301B2 (en) | Cloud validation as a service | |
KR20230098647A (ko) | 분산 파드 기반 시스템 내에서의 서비스 오케스트레이션 | |
Petcu et al. | Experiences in building a mOSAIC of clouds | |
US20190317825A1 (en) | System for managing deployment of distributed computing resources | |
US20230325204A1 (en) | Techniques for managing dependencies of an orchestration service | |
US20160127418A1 (en) | Policy-guided fulfillment of a cloud service | |
US20230305813A1 (en) | Continuous integration and development of code in a secure environment | |
US11137732B2 (en) | Flow engine for building automated flows within a cloud based developmental platform | |
US11003499B1 (en) | Resource allocation based on agent behavior in a simulation environment | |
US20210226929A1 (en) | Techniques for transferring data across air gaps | |
Zhou et al. | CloudsStorm: A framework for seamlessly programming and controlling virtual infrastructure functions during the DevOps lifecycle of cloud applications | |
EP4094155A1 (en) | Techniques for utilizing directed acyclic graphs for deployment instructions | |
Raj et al. | Automated multi-cloud operations and container orchestration | |
US20240264874A1 (en) | System for synchronizing execution of workload tasks | |
KR20230101868A (ko) | 중앙 네트워크 메시를 통한 서비스 간 통신 및 인증 | |
Mezghani et al. | DRAAS: dynamically reconfigurable architecture for autonomic services | |
Kumara et al. | The SODALITE Runtime Environment | |
Aggarwal | A Platform as a Service for Concurrency-based Applications Provisioning in Internet of Things | |
WO2024118431A1 (en) | Managing integration of a medical device into a computing platform | |
CN116719627A (zh) | 数据处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |