KR102066792B1 - 컨테이너 오케스트레이션을 위해 TOSCA를 Docker Swarm로 변환하는 동작을 수행하는 단말 장치 및 방법과, 이를 수행하는 기록 매체 - Google Patents

컨테이너 오케스트레이션을 위해 TOSCA를 Docker Swarm로 변환하는 동작을 수행하는 단말 장치 및 방법과, 이를 수행하는 기록 매체 Download PDF

Info

Publication number
KR102066792B1
KR102066792B1 KR1020180060618A KR20180060618A KR102066792B1 KR 102066792 B1 KR102066792 B1 KR 102066792B1 KR 1020180060618 A KR1020180060618 A KR 1020180060618A KR 20180060618 A KR20180060618 A KR 20180060618A KR 102066792 B1 KR102066792 B1 KR 102066792B1
Authority
KR
South Korea
Prior art keywords
tosca
normative
docker
docker swarm
policies
Prior art date
Application number
KR1020180060618A
Other languages
English (en)
Other versions
KR20190140514A (ko
Inventor
이춘화
최희욱
Original Assignee
한양대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한양대학교 산학협력단 filed Critical 한양대학교 산학협력단
Priority to KR1020180060618A priority Critical patent/KR102066792B1/ko
Publication of KR20190140514A publication Critical patent/KR20190140514A/ko
Application granted granted Critical
Publication of KR102066792B1 publication Critical patent/KR102066792B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting

Landscapes

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

Abstract

컨테이너 오케스트레이션을 위해 TOSCA를 Docker Swarm로 변환하는 동작을 수행하는 단말 장치 및 방법과, 이를 수행하는 기록 매체가 개시된다. 개시된 단말 장치는 컴퓨터에서 판독 가능한 명령을 저장하는 메모리; 및 상기 명령을 실행하도록 구현되는 프로세서;를 포함하고, 상기 프로세서는, 복수의 TOSCA normative type을 담고 있는 TOSCA 문서를 파싱하여 TOSCA normative type 내에 포함된 TOSCA 구성 요소를 생성하고, 상기 복수의 TOSCA normative type과 Docker Swarm 객체의 맵핑 분석을 통해 상기 생성된 TOSCA 구성 요소를 상기 Docker Swarm 객체에 포함된 Docker Swarm 구성 요소로 변환하는 동작을 수행하되, 상기 복수의 TOSCA normative type는 미리 정의된 적어도 하나의 TOSCA normative type와, 미리 정의된 TOSCA normative type에서 확장된 적어도 하나의 TOSCA normative type를 포함한다.

Description

컨테이너 오케스트레이션을 위해 TOSCA를 Docker Swarm로 변환하는 동작을 수행하는 단말 장치 및 방법과, 이를 수행하는 기록 매체{Terminal device and Method for performing operation of converting TOSCA to Docker Swarm for container orchestration, and a recording medium for executing the same}
본 발명의 실시예들은 컨테이너 오케스트레이션을 위하여 TOSCA를 Docker Swarm로 변환하는 동작을 수행하는 단말 장치 및 방법과, 이를 수행하는 기록 매체에 관련된 것이다.
컨테이너 가상화 기술은 가볍고, 성능이 좋으면서 가상 서버에서 많은 애플리케이션을 구동할 수 있다. 그러나, 대규모로 컨테이너를 관리하는 것은 절대 쉬운 일이 아니다. 이에, 전체 단일 프레임워크를 통해 클러스터의 컨테이너 운영 방식을 관리하는 오케스트레이션(Orchestration) 서비스를 이용하여 다중 컨테이너의 구성을 동적으로 제어할 수 있다.
클라우드 컴퓨팅 발전과 함께 관련 표준화 연구도 활발하게 이루어지고 있다. 그 중에서, OASIS(Organization for the Advancement of Structured Information Standards)의 표준인 TOSCA(Topology and Orchestration Specification for Cloud Applications)는 특정 플랫폼에 대한 종속성이 없고 상호 운용성의 표준을 제공한다. 나아가, 서비스 컴포넌트들에 대한 정의와 관계를 제공함으로써 클라우드 애플리케이션의 서비스 이식성을 지원하며, 인프라의 클라우드 서비스에 대한 호환성을 기반으로 클라우드 애플리케이션의 상호 작용을 구성하여 서비스를 제공한다.
한편, 클라우드 컴퓨팅 분야에서, 클라우드 컴퓨팅 서비스의 민첩성을 향상시키기 위한 경량화된 오픈 소스 가상화 기술인 Docker가 크게 주목받고 있다. Docker는 오픈 소스 컨테이너 관리 소프트웨어로서, 경량 가상화 환경인 컨테이너를 제공하고 응용 프로그램 실행 환경을 그대로 Docker image로 저장이 가능하다. 그리고, Docker Swarm은 멀티 호스트 환경의 컨테이너 오케스트레이션 도구로써, 컨테이너 스케줄러를 통해 클러스터 크기, 컨테이너의 개수, 리소스 할당 및 컨테이너 배치를 조절하고, 자원 용량 제약조건을 위반하지 않도록 보장한다.
Docker는 호스트 운영체제 위에 별도의 Docker 실행에 필요한 engine을 실행하고, 독립된 다수 개의 컨테이너를 구축하며, 각각의 컨테이너는 서로 다른 애플리케이션을 실행할 수 있다. 그리고, Docker는 게스트 운영체제가 아닌 호스트 운영체제의 자원을 할당하기 때문에, 응용프로그램 운영에 필요한 최소의 자원만을 할당받아 동작이 가능하다. 따라서 Docker 컨테이너 방식은 기존의 하이퍼바이저 방식보다 적으며 가볍고 빠르며 관리가 쉽다는 점에서 차별화된다.
하지만, Docker Swarm은 클라우드 제공자들의 플랫폼간의 상호 호환이 되지 않는 문제점이 있다.
상기한 바와 같은 종래기술의 문제점을 해결하기 위해, 본 발명에서는 컨테이너 오케스트레이션을 위하여 TOSCA를 Docker Swarm로 변환하는 동작을 수행하여 응용 프로그램의 클라우드 플랫폼 간 상호 호환성 및 이식성을 지원하는 단말 장치 및 방법과, 이를 수행하는 기록매체를 제안하고자 한다.
본 발명의 다른 목적들은 하기의 실시예를 통해 당업자에 의해 도출될 수 있을 것이다.
상기한 목적을 달성하기 위해 본 발명의 바람직한 일 실시예에 따르면, 컴퓨터에서 판독 가능한 명령을 저장하는 메모리; 및 상기 명령을 실행하도록 구현되는 프로세서;를 포함하고, 상기 프로세서는, 복수의 TOSCA normative type을 담고 있는 TOSCA 문서를 파싱하여 TOSCA normative type 내에 포함된 TOSCA 구성 요소를 생성하고, 상기 복수의 TOSCA normative type과 Docker Swarm 객체의 맵핑 분석을 통해 상기 생성된 TOSCA 구성 요소를 상기 Docker Swarm 객체에 포함된 Docker Swarm 구성 요소로 변환하는 동작을 수행하되, 상기 복수의 TOSCA normative type는 미리 정의된 적어도 하나의 TOSCA normative type와, 미리 정의된 TOSCA normative type에서 확장된 적어도 하나의 TOSCA normative type를 포함하는 것을 특징으로 하는 단말 장치가 제공된다.
상기 확장된 적어도 하나의 TOSCA normative type는 미리 정의된 TOSCA normative type인 tosca.nodes.container.Runtime에서 확장된 TOSCA normative type인 ds.nodes.container.Docker를 포함하고, 상기 Docker Swarm 객체는 상기 ds.nodes.container.Docker와 맵핑되는 container 객체를 포함한다.
상기 ds.nodes.container.Docker에 포함된 TOSCA 구성 요소는 'artifact', 'ports', 'networks', 'volume'를 포함하고, 상기 container 객체에 포함된 Docker Swarm 구성 요소는, 'redis'에 속하는 'image', 'ports' 및 'networks'와, 'web'에 속하는 'volume'를 포함하며, 상기 프로세서는, 상기 ds.nodes.container.Docker와 상기 container 객체의 맵팽 관계에 기초하여, 상기 TOSCA 구성 요소 중 'artifact'를 상기 Docker Swarm 구성 요소 중 'image'로 변환하고, 상기 TOSCA 구성 요소 중 'ports'를 상기 Docker Swarm 구성 요소 중 'ports'로 변환하고, 상기 TOSCA 구성 요소 중 'networks'를 상기 Docker Swarm 구성 요소 중 'networks'로 변환하고, 상기 TOSCA 구성 요소 중 'volume'를 상기 Docker Swarm 구성 요소 중 'volume'로 변환한다.
상기 확장된 적어도 하나의 TOSCA normative type는 미리 정의된 TOSCA normative type인 tosca.datatypes.Root에서 확장된 TOSCA normative type인 ds.datatypes.volume 및 ds.datatypes.resource를 포함하고, 상기 Docker Swarm 객체는 상기 ds.datatypes.volume와 맵핑되는 volume 객체 및 상기 ds.datatypes.resource와 맵핑되는 resource 객체를 포함한다.
상기 ds.datatypes.volume에 포함된 TOSCA 구성 요소는 'physical' 및 'path'를 포함하고, 상기 volume 객체에 포함된 Docker Swarm 구성 요소는 'volume' 내의 'data-volume:/var/lib/redis'를 포함하며, 상기 프로세서는, 상기 ds.datatypes.volume와 상기 volume 객체의 맵팽 관계에 기초하여, 상기 TOSCA 구성 요소 중 'physical'를 상기 Docker Swarm 구성 요소 중 'data-volume'로 변환하고, 상기 TOSCA 구성 요소 중 'path'를 상기 Docker Swarm 구성 요소 중 '/var/lib/redis'로 변환한다.
상기 ds.datatypes.resource에 포함된 TOSCA 구성 요소는 'cpus' 및 'memory'를 포함하고, 상기 resource 객체에 포함된 Docker Swarm 구성 요소는 'cpus' 및 'memory'를 포함하고, 상기 프로세서는, 상기 ds.datatypes.resource와 상기 resource 객체의 맵팽 관계에 기초하여, 상기 TOSCA 구성 요소 중 'cpus'를 상기 Docker Swarm 구성 요소 중 'cpus'로 변환하고, 상기 TOSCA 구성 요소 중 'memory'를 상기 Docker Swarm 구성 요소 중 'memory'로 변환한다.
상기 확장된 적어도 하나의 TOSCA normative type는 미리 정의된 TOSCA normative type인 tosca.policies.Placement에서 확장된 TOSCA normative type인 ds.policies.Placement를 포함하고, 상기 Docker Swarm 객체는 상기 ds.policies.Placement와 맵핑되는 placement 객체를 포함한다.
상기 ds.policies.Placement에 포함된 TOSCA 구성 요소는 'constraints'를 포함하고, 상기 placement 객체에 포함된 Docker Swarm 구성 요소는 'constraints'를 포함하고, 상기 프로세서는, 상기 ds.policies.Placement와 상기 placement 객체의 맵팽 관계에 기초하여, 상기 TOSCA 구성 요소 중 'constraints'를 상기 Docker Swarm 구성 요소 중 'constraints'로 변환한다.
상기 확장된 적어도 하나의 TOSCA normative type는 미리 정의된 TOSCA normative type인 tosca.policies.Root에서 확장된 TOSCA normative type인 ds.policies.restart를 포함하고, 상기 Docker Swarm 객체는 상기 ds.policies.restart와 맵핑되는 restartpolicy 객체를 포함한다.
상기 ds.policies.restart에 포함된 TOSCA 구성 요소는 'condition'를 포함하고, 상기 restartpolicy 객체에 포함된 Docker Swarm 구성 요소는 'condition'를 포함하고, 상기 프로세서는, 상기 ds.policies.restart와 상기 restartpolicy 객체의 맵팽 관계에 기초하여, 상기 TOSCA 구성 요소 중 'condition'를 상기 Docker Swarm 구성 요소 중 'condition'로 변환한다.
상기 확장된 적어도 하나의 TOSCA normative type는 미리 정의된 TOSCA normative type인 tosca.policies.Update에서 확장된 TOSCA normative type인 ds.policies.Update를 포함하고, 상기 Docker Swarm 객체는 상기 ds.policies.Update와 맵핑되는 updateconfig 객체를 포함한다.
상기 ds.policies.Update에 포함된 TOSCA 구성 요소는 'parallelism'를 포함하고, 상기 updateconfig 객체에 포함된 Docker Swarm 구성 요소는 'parallelism'를 포함하고, 상기 프로세서는, 상기 ds.policies.Update와 상기 updateconfig 객체의 맵팽 관계에 기초하여, 상기 TOSCA 구성 요소 중 'parallelism'를 상기 Docker Swarm 구성 요소 중 'parallelism'로 변환한다.
상기 Docker Swarm 객체는 networks 객체, ports 객체 및 dependson 객체를 포함하되, 상기 networks 객체는 미리 정의된 TOSCA normative type인 tosca.nodes.network.Port와 맵핑되고, 상기 ports 객체는 미리 정의된 TOSCA normative type인 tosca.datatypes.network.PortSpec과 맵핑되고, 상기 dependson 객체는 미리 정의된 TOSCA normative type인 tosca.relationships.DependsOn와 맵핑된다.
또한, 본 빌명의 다른 실시예에 따르면, 프로세서가 포함된 장치에서 수행되며, 컨테이너 오케스트레이션을 수행하기 위하여 TOSCA를 Docker Swarm으로 변환하는 방법에 있어서, 복수의 TOSCA normative type을 담고 있는 TOSCA 문서를 파싱하여 TOSCA normative type 내에 포함된 TOSCA 구성 요소를 생성하는 단계; 및 상기 복수의 TOSCA normative type과 Docker Swarm 객체의 맵핑 분석을 통해 상기 생성된 TOSCA 구성 요소를 상기 Docker Swarm 객체에 포함된 Docker Swarm 구성 요소로 변환하는 단계;를 포함하되, 상기 복수의 TOSCA normative type는 미리 정의된 적어도 하나의 TOSCA normative type와, 미리 정의된 TOSCA normative type에서 확장된 적어도 하나의 TOSCA normative type를 포함하는 것을 특징으로 하는 방법이 제공된다.
또한, 본 빌명의 또 다른 실시예에 따르면, TOSCA를 Docker Swarm로 변환하기 위하여 디지털 처리 장치에 의해 실행될 수 있는 명령어들의 프로그램이 유형적으로 구현되어 있으며 디지털 처리 장치에 의해 판독될 수 있는 기록매체로서, 복수의 TOSCA normative type을 담고 있는 TOSCA 문서를 파싱하여 TOSCA normative type 내에 포함된 TOSCA 구성 요소를 생성하는 단계; 및 상기 복수의 TOSCA normative type과 Docker Swarm 객체의 맵핑 분석을 통해 상기 생성된 TOSCA 구성 요소를 상기 Docker Swarm 객체에 포함된 Docker Swarm 구성 요소로 변환하는 단계;를 수행하되, 상기 복수의 TOSCA normative type는 미리 정의된 적어도 하나의 TOSCA normative type와, 미리 정의된 TOSCA normative type에서 확장된 적어도 하나의 TOSCA normative type를 포함하는 것을 특징으로 하는 기록매체가 제공된다.
본 발명에 따르면, 컨테이너 애플리케이션 오케스트레이션을 위하여 TOSCA를 Docker Swarm로 변환하는 동작을 수행하여 응용 프로그램의 클라우드 플랫폼 간 상호 호환성 및 이식성을 지원할 수 있다.
도 1는 TOSCA의 서비스 템플릿의 개념을 도시한 도면이다.
도 2는 Docker Swarm의 TOSCA의 개략적인 구조를 도시한 도면이다.
도 3은 본 발명의 일 실시예에 따른 단말 장치의 개략적인 구성을 도시한 도면이다.
도 4는 본 발명의 일 실시예에 따른 TOSCA를 Docker Swarm로 변환하는 동작을 수행하는 방법의 흐름도를 도시한 도면이다.
도 5는 미리 정의된 TOSCA normative types 및 확장한 TOSCA normative types를 도시한 도면이다.
도 6은 TOSCA의 ds.nodes.container.Docker와 Docker Swarm container 객체의 관계를 나타낸 도면이다.
도 7는 TOSCA의 ds.datypes.volume와 Docker Swarm의 volume 객체의 관계를 나타낸 도면이다.
도 8은 네트워크와 관련된 TOSCA의 normative type의 개념을 설명하기 위한 도면이다.
도 9는 TOSCA의 tosca.nodes.network.Port과 Docker Swarm의 network 객체의 관계를 나타낸 도면이다.
도 10은 TOSCA의 tosca.datatypes.network.PortSpec 과 Docker Swarm의 port 객체의 관계를 나타낸 도면이다.
도 11는 TOSCA의 ds.datatypes.resource과 Docker Swarm resource 객체의 관계를 나타낸 도면이다.
도 12는 TOSCA의 ds.policies.Placement과 Docker Swarm의 placement 객체의 관계를 나타낸 도면이다.
도 13은 TOSCA의 ds.policies.restart과 Docker Swarm의 restartpolicy 객체의 관계를 나타낸 도면이다.
도 14는 TOSCA의 ds.policies.Update과 Docker Swarm의 updateconfig 객체의 관계를 나타낸 도면이다.
도 15는 tosca.nodes.Container.Runtime의 relationship을 나타낸 도면이다.
도 16 내지 도 20은 본 발명의 성능 평가를 설명하기 위한 도면이다.
본 명세서에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "구성된다" 또는 "포함한다" 등의 용어는 명세서상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다. 또한, 명세서에 기재된 "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
이하, 본 발명의 다양한 실시예들을 첨부된 도면을 참조하여 상술한다.
먼저, TOSCA(Topology and Orchestration Specification for Cloud Applications) 및 Docker Swarm의 개념을 설명하기로 난 후, 본 발명에 따른 실시예를 상세하게 설명하기로 한다.
도 1는 TOSCA의 서비스 템플릿의 개념을 도시한 도면이다.
도 1을 참조하면, TOSCA는 Cloud workloads를 서비스 템플릿(Service Template)에서 토폴로지 템플릿(Topology Template)으로 인스턴스화하여 기술하고, 제약 사항 및 정책에 따라 관리한다. 토폴로지 템플릿은 응용 프로그램의 추상 표현으로 모델링하는 노드 템플릿(Node Template) 및 관계 템플릿(Relationship Template)으로 구성된다. 서비스 템플릿은 서비스 정의와 이식성을 지원하고 서비스를 상호 운용 가능한 방식으로 제공된다.
TOSCA 서비스 템플릿은 토폴로지 템플릿과 플랜(Plan)를 포함한다. 여기서, 토폴로지 템플릿은 서비스 구조를 정의하고, 플랜은 서비스 프로세스(Service Process)에 관한 전체 생명 주기를 정의한다.
토폴로지 템플릿을 구성하는 노드 템플릿은 서비스 컴포넌트(Service Component)의 노드 유형(Node Types)에 대하여 기술한다. 각 노드 템플릿은 노드 유형을 정의한다. 노드 유형은 'properties', 'attributes', 'requirements', 'capabilities' 등으로 구성되고, 재사용을 위해 별도로 정의된다. 관계 템플릿은 노드 간의 관계를 정의하는데 사용되는 관계 유형(Relationship Types)을 나타낸다. 서비스 컴포넌트의 요구 사항(requirements) 및 기능(capability)를 표현할 수 있다. 각 템플릿은 'properties', 'attributes', 'interface' 등으로 구성되고 관계 유형 또한 재사용을 위해 별도로 정의된다.
도 2는 Docker Swarm의 TOSCA의 개략적인 구조를 도시한 도면이다.
도 2를 참조하면, Docker는 오픈 소스(Open Source) 컨테이너 관리 소프트웨어로서, 경량 가상화 환경인 컨테이너를 제공하고, 응용 프로그램 실행 환경을 그대로 Docker image로 저장이 가능하다. 그러나, Docker는 원칙적으로 하나의 컨테이너에 하나의 응용 프로그램으로 실행된다.
이를 기반으로, Docker Swarm은 여러 호스트에 있는 Docker daemon들을 관리하는 Docker 컨테이너 클러스터링 도구이다. 여러 호스트를 클러스터링 하여 마치 하나의 Docker engine처럼 취급한다. Docker engine은 Docker 이미지를 생성하거나 Docker 컨테이너를 실행시키는데 필요한 핵심 기능을 제공한다. 나아가, Service Discovery, High Availability, Scailing 등의 Docker 오케스트레이션(Orchestration) 기능을 제공한다.
Docker machine은 여러 개의 Docker 호스트를 프로비저닝하기 위해서 가상 호스트에 Docker engine을 설치하고 호스트를 생성 및 관리한다. 다수의 Docker machine을 통해 Docker Swarm이 생성된다. 또한, Docker Swarm은 Docker Hub라는 클라우드 저장소를 제공하여 Docker image를 이용하거나 공유할 수 있다. 컨테이너의 이미지를 image를 repository에 저장했다가, 다른 환경으로 쉽게 옮겨서 사용이 가능하다.
Docker Compose는 멀티 컨테이너를 하나의 파일로 운용하여 하나의 command로 모든 Docker file들을 실행하는 도구이다. 하나의 서비스만 관리해야 한다면 문제가 없지만, 만약 여러 개의 Docker 컨테이너를 이용해서 하나의 서비스를 운영해야 하는 경우가 대부분이다. 이를 위해 Docker Swarm은 컨테이너에 관한 Docker Compose를 생성하고 연계한다.
Docker Swarm의 구조는 Manager 노드와 Worker 노드로 구성된다. Manager 노드는 Swarm 컨테이너 상태를 관리하고 Worker 노드는 Manager 노드의 명령을 받아 컨테이너를 생성하고 관리한다. 서비스는 Docker Swarm의 기본적인 배포 단위로 하나의 서비스는 여러 개의 태스크를 실행할 수 있고 각각의 태스크가 컨테이너를 관리한다.
이하, 상기에서 설명한 내용을 참조하여 컨테이너 오케스트레이션을 위하여 TOSCA를 Docker Swarm로 변환하는 동작을 수행하는 본 발명의 일 실시예를 설명하기로 한다.
도 3은 본 발명의 일 실시예에 따른 단말 장치의 개략적인 구성을 도시한 도면이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 단말 장치(300)는 컨테이너 오케스트레이션을 실행하기 위해 TOSCA를 Docker Swarm로 변환하는 동작을 수행하는 장치로서, 메모리(310) 및 프로세서(320)를 포함한다. 이하, 각 구성 요소 별로 그 기능을 상세하게 설명하기로 한다.
메모리(310)는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함하여 구성될 수 있으며, 단말 장치(300)의 적어도 하나의 다른 구성요소에 관계된 명령어 또는 데이터를 저장한다.
프로세서(320)는 중앙처리장치, 애플리케이션 프로세서, 또는 커뮤니케이션 프로세서 중 하나 또는 그 이상을 포함할 수 있다. 예를 들면, 프로세서(320)는 단말 장치(300)의 적어도 하나의 다른 구성요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다.
특히, 프로세서(320)는 컨테이너 오케스트레이션 기능을 제공하기 위해, TOSCA normative type을 Docker Swarm의 객체에 맞게 자동으로 툴 변환하는 동작을 수행한다. 즉, Docker Swarm는 클라우드 제공자들이 사용하는 플랫폼 간에 상호 호환이 되지 않는 문제점이 있으며, 프로세서(320)는 플랫폼에 종속되지 않는 TOSCA를 이용하여 Docker Swarm을 플랫폼에 종속되지 않게 사용할 수 있도록 하는 동작을 수행한다.
이하, 도 4 내지 도 15를 참조하여, 단말 장치(300)에서 수행되는 동작을 상세하게 설명하기로 한다.
도 4는 본 발명의 일 실시예에 따른 단말 장치(300)의 동작인 TOSCA를 Docker Swarm로 변환하는 동작을 수행하는 방법의 흐름도를 도시한 도면이다. 이하, 각 단계 별로 수행되는 과정을 상세하게 설명하기로 한다.
단계(410)에서, 프로세서(320)는 TOSCA 문서(document)를 로드한다.
여기서, TOSCA 문서는 YAML 형식으로 작성되며, 복수의 TOSCA normative type을 담고 있다. 그리고, 복수의 TOSCA normative type는 미리 정의된(즉, 표준인) 적어도 하나의 TOSCA normative type와, 미리 정의된 TOSCA normative type에서 확장된 적어도 하나의 TOSCA normative type를 포함한다.
다음으로, 단계(420)에서, 프로세서(320)는 로드된 TOSCA 문서를 파싱하여 TOSCA normative type 내에 포함된 TOSCA 구성 요소를 생성한다. 즉, 프로세서(320)는 미리 정의된 적어도 하나의 TOSCA normative type와, 확장된 적어도 하나의 TOSCA normative type에서 TOSCA 구성 요소를 생성 및 저장한다.
계속하여, 단계(430)에서, 프로세서(320)는 복수의 TOSCA normative type과 Docker Swarm 객체의 맵핑 분석을 통해, 상기에서 생성된 TOSCA 구성 요소를 Docker Swarm 객체에 포함된 Docker Swarm 구성 요소로 변환한다. 여기서, Docker Swarm 역시 YAML 형식으로 작성된다.
한편, 프로세서(320)는 상기의 단계들이 수행된 후, Docker Swarm 클러스터에 Docker Swarm 구성요소로 구성된 응용 프로그램을 배포 및 관리가 가능하다.
이하, 단계(420) 및 단계(430)에서 수행되는 동작을 보다 상세하게 설명하기로 한다.
TOSCA에서는 표준 TOSCA normative type을 재사용하거나 확장하여 사용하는 것이 가능하다. 또한, 각 TOSCA normative type은 YAML 형식을 사용하여 정의한다. 프로세서(320)에 구현되어 있는 Docker Swarm 객체 변환기(Object Converter)는 Parser를 통해 TOSCA의 구성 요소를 Docker Swarm의 구성요소로 변환한다.
그리고, 표 1은 TOSCA Normative types과 Docker Swarm 객체의 연관성을 정리한 표이다.
Figure 112018052275239-pat00001
프로세서(320)는 표 1의 관계를 이용하여 TOSCA normative type과 Docker Swarm 객체의 맵핑 관계를 정의한다. 그리고, 표 1을 참조하면, 확장된 적어도 하나의 TOSCA normative type는 ds.nodes.container.Docker, ds.datatypes.volumes, ds.datatypes.resource, ds.policies.restart, ds.policies.Update 및 ds.policies.Placement를 포함할 수 있다. 여기서, ds.nodes.container.Docker는 tosca.nodes.container.Runtime에서 확장된 것이고, ds.datatypes.volumes 및 ds.datatypes.resource는 tosca.datatypes.Root에서 확장된 것이고, ds.policies.restart는 tosca.policies.Root에서 확장된 것이고, ds.policies.Update는 tosca.policies.Update에서 확장된 것이고, ds.policies.Placement는 tosca.policies.Placement에서 확장된 것일 수 있다. 도 5에서는 미리 정의된 TOSCA normative types 및 확장한 TOSCA normative types를 도시하고 있다.
이하, Docker Swarm 객체 각각에 대한 맵핑 관계를 설명하면 다음과 같다.
1.container 객체
TOSCA의 표준 normative type인 tosca.nodes.container.Runtime는 단일 호스트에서 다수의 애플리케이션 서비스를 운영하기 위하여 가상 환경의 OS를 사용하는 컨테이너 런타임(container Runtime)을 정의한다. ds.nodes.container.Docker은 tosca.nodes.container.Runtime를 확장한 것으로, Docker Swarm container 객체에 관한 정보를 나타낸다.
여기서, ds.nodes.container.Docker에 포함된 TOSCA 구성 요소는 'artifact', 'ports', 'networks', 'volumes'를 포함한다. 또한, container 객체에 포함된 Docker Swarm 구성 요소는, 'redis'에 속하는 'image', 'ports' 및 'networks'와, 'web'에 속하는 'volumes'를 포함한다.
도 6에서는 TOSCA의 ds.nodes.container.Docker와 Docker Swarm container 객체의 관계를 나타내고 있다.
도 6을 참조하면, ds.nodes.container.Docker의 'artifact' 구성 요소는 Docker Swarm의 container 객체의 'image'에 대한 정보를 정의한다. Docker Swarm의 container 객체의 'network'는 컨테이너가 통신하기 위한 네트워크를 결정한다. Docker Swarm의 container 객체의 'port'는 컨테이너가 외부와 통신하기 위해서 외부로 노출할 포트를 정의하는 것으로서, TOSCA의 표준 normative type인 tosca.datatypes.network.PortSpec으로 나타낸다. Docker Swarm의 container 객체의 'volume'은 컨테이너에서 데이터를 저장하고 공유하기 위해서 사용되며, TOSCA의 표준 normative type인 tosca.datatypes.Root을 확장한 ds.datatypes.volumes으로 나타낸다.
그리고, 도 6을 참조하면, ds.nodes.container.Docker의 'artifact'는 Docker Swarm의 container 객체의 'image'와, ds.nodes.container.Docker의 'network'는 Docker Swarm의 container 객체의 'network'와, ds.nodes.container.Docker의 'port'는 Docker Swarm의 container 객체의 'port'와, ds.nodes.container.Docker의 'volume'는 Docker Swarm의 container 객체의 'volume'와 맵핑될 수 있다. 그리고, ds.nodes.container.Docker에 'replicas'와 'resources'의 구성 요소를 추가할 수 있다. 'replicas'는 컨테이너의 복제 갯수를 설정한 것으로서 복제할 컨테이너 수와 맵핑된다. 그리고, 'resources'는 컨테이너의 자원에 관한 데이터를 나타낸다.
요컨대, 프로세서(320)는, ds.nodes.container.Docker와 Docker Swarm의 container 객체의 맵팽 관계에 기초하여, TOSCA 구성 요소 중 'artifact'를 Docker Swarm 구성 요소 중 'image'로 변환하고, TOSCA 구성 요소 중 'ports'를 Docker Swarm 구성 요소 중 'ports'로 변환하고, TOSCA 구성 요소 중 'networks'를 Docker Swarm 구성 요소 중 'networks'로 변환하고, TOSCA 구성 요소 중 'volumes'를 Docker Swarm 구성 요소 중 'volumes'로 변환할 수 있다.
2. volume 객체
Docker Swarm의 volume 객체는 영구적인 데이터와 공유 컨테이너를 처리하는 디렉토리로서, 컨테이너의 데이터 저장과 컨테이너 간 데이터를 공유할 때 활용된다. 컨테이너가 중지되더라도 사용 중이던 데이터를 보존해야 할 필요가 있다. 그러나 해당 컨테이너가 제거되었을 경우 데이터 기록이 계속 남아있게 되는데, 이 경우 용량 차지와 삭제가 어려운 단점이 있다.
최근 Docker에서는 기본 동작 단위인 컨테이너보다 상위에 "서비스(service)"라는 개념을 두고 부족한 기능을 추가하였다. 서비스를 여러 노드에 태스크로 할당하는 방식으로서, 해당 서비스가 제거되었을 경우 서비스 태스크에 의해서 생성된 모든 volume이 동시에 제거가 가능하다.
한편, 서비스 기능을 적용하기 위해, TOSCA의 표준 normative type인 tosca.datatypes.Root가 ds.datypes.volume으로 확장된다. ds.datatypes.volume으로 확장한 이유는 volume의 구성 요소(속성)인 'physical'과 'path'를 나타내기 위함이다. 여기서, 'physical' 구성 요소는 해당 볼륨의 호스트 이름을 의미하고, 'path' 구성 요소는 볼륨의 경로를 설정한 것을 의미한다. 도 7에서는 TOSCA의 ds.datypes.volume와 Docker Swarm의 volume 객체의 관계를 나타내고 있다.
요컨대, ds.datatypes.volume에 포함된 TOSCA 구성 요소는 'physical' 및 'path'를 포함하고, Docker Swarm의 volume 객체에 포함된 Docker Swarm 구성 요소는 'volume' 내의 'data-volume:/var/lib/redis'를 포함하며, 프로세서(320)는 ds.datatypes.volume와 volume 객체의 맵팽 관계에 기초하여, TOSCA 구성 요소 중 'physical'를 Docker Swarm 구성 요소 중 'data-volume'로 변환하고, TOSCA 구성 요소 중 'path'를 Docker Swarm 구성 요소 중 '/var/lib/redis'로 변환할 수 있다.
3. network 객체
TOSCA는 서비스 템플릿의 이식성을 유지하기 위해 응용 프로그램 구성 요소와 컴퓨터 노드(compute node)를 연결하여 네트워크를 모델링한다.
도 8은 네트워크와 관련된 TOSCA의 normative type의 개념을 설명하기 위한 도면이다. 도 8을 참조하면, 컴퓨터 노드에서 Bindable capability type을 사용하여 포트에 관한 노드 유형이 컴퓨터 노드와 응용 프로그램의 컴퓨터 노드 사이에서 연결해준다. 그리고, 응용 프로그램 구성 요소의 requirements와 capabilities type으로 상호 연결성을 나타낸다.
Docker 호스트에 컨테이너가 배포되면 각 컨테이너는 독립된 네트워크 공간을 할당받게 된다. 이러한 네트워크 환경은 각각의 컨테이너 만을 위한 네트워크 환경이다. 만약, 여러 호스트에 설치된 컨테이너들끼리 직접 통신을 수행하여야 할 경우 Docker에서 지원하는 오버레이 네트워크(overly network)를 설정해야 한다. 즉, 오버레이 드라이버(overlay driver)를 통해 응용 프로그램의 코드 변화 없이 통신이 가능하다.
이와 같이, TOSCA의 네트워크와 Docker Swarm의 네트워크는 밀접한 연관성이 존재한다. 즉, TOSCA의 네트워크와 관련된 표준 normative type인 tosca.nodes.network.Port과 Docker Swarm의 network 객체는 밀접한 연관성이 존재한다. 도 9에서는 TOSCA의 tosca.nodes.network.Port과 Docker Swarm의 network 객체의 관계를 나타내고 있다. TOSCA의 응용 프로그램의 requirements 구성 요소에서 binding되는 데이터와 container의 network가 맵핑됨을 확인할 수 있다.
4. port 객체
TOSCA의 표준 normative type인 tosca.datatypes.network.PortSpec은 네트워크를 연결할 때 사용되는 특정 포트를 정의하며, 이는 Docker Swarm의 port 객체와 연관성이 있다.
도 10에서는 TOSCA의 tosca.datatypes.network.PortSpec 과 Docker Swarm의 port 객체의 관계를 나타내고 있다.
도 10을 참조하면, TOSCA의 tosca.datatypes.network.PortSpec은 'target', 'source', 'protocol'의 구성 요소로 표현될 수 있다. TOSCA의 'target' 구성 요소는 Docker Swarm의 컨테이너 내부의 포트를 나타내는 Docker Swarm의 port 객체의 'target' 구성 요소와 맵핑되고, TOSCA의 'source' 구성 요소는 컨테이너 내부의 포트를 외부로 사용하기 위해서 나타내는 Docker Swarm의 port 객체의 'published' 구성 요소와 맵핑되며, TOSCA의 'protocol' 구성 요소는 tcp 또는 udp를 나타내는 Docker Swarm의 port 객체의 'protocol' 구성 요소와 맵핑된다.
5. resource 객체
Docker Swarm은 컨테이너에 할당할 cpu와 memory에 대한 자원을 제한한다. Docker Swarm의 resource 객체는 컨테이너 자원에 관한 데이터를 나타내기 위하여, 연관성 있는 TOSCA의 표준 normative type인 tosca.datatypes.Root을 확장하여 ds.datatypes.resource로 정의한다.
도 11에서는 TOSCA의 ds.datatypes.resource과 Docker Swarm resource 객체의 관계를 나타내고 있다.
도 11를 참조하면, ds.datatypes.resource의 'cpus' 구성 요소는 사용 가능한 처리 시간을 float type으로 나타내고, ds.datatypes.resource의 'memory' 구성 요소는 물리적인 메모리 크기를 scalar-unit.size 형식으로 나타낸다. 그리고, ds.datatypes.resource의 'cpus' 구성 요소는 Docker Swarm의 resource 객체의 'resources' 내의 'cpus' 구성 요소와 맵팽되고, 그리고, ds.datatypes.resource의 'memory' 구성 요소는 Docker Swarm의 resource 객체의 'resources' 내의 'memory' 구성 요소와 맵팽된다.
요컨대, ds.datatypes.resource에 포함된 TOSCA 구성 요소는 'cpus' 및 'memory'를 포함하고, resource 객체에 포함된 Docker Swarm 구성 요소는 'cpus' 및 'memory'를 포함하고, 프로세서(320)는 ds.datatypes.resource와 resource 객체의 맵팽 관계에 기초하여, TOSCA 구성 요소 중 'cpus'를 Docker Swarm 구성 요소 중 'cpus'로 변환하고, TOSCA 구성 요소 중 'memory'를 Docker Swarm 구성 요소 중 'memory'로 변환한다.
6. placement 객체
TOSCA의 policy type는 자원에 대한 사용 또는 접근을 통제하는 유형이다.
policy type 중 하나인 tosca.policies.Placement은 클라우드 프로바이더(provider)의 인프라스트럭처(infrastructure) 내에서 애플리케이션 또는 특정 자원의 배치를 결정한다. Docker Swarm의 placement 객체는 컨테이너를 배치할 특정 노드를 결정해주는 역할을 하므로, Docker Swarm 의 placement 객체는 TOSCA의 표준 normative type인 tosca.policies.Placement이 밀접한 연관성이 있다.
따라서, Docker Swarm의 placement 객체와의 맵핑을 위해, tosca.policies.Placement이 ds.policies.Placement로 확장되고, TOSCA의 ds.policies.Placement 내의 'constraints' 구성 요소와 Docker Swarm의 placement 객체의 'constraints' 구성 요소가 맵핑된다. 도 12에서는 TOSCA의 ds.policies.Placement과 Docker Swarm의 placement 객체의 관계를 나타내고 있다.
요컨대, ds.policies.Placement에 포함된 TOSCA 구성 요소는 'constraints'를 포함하고, Docker Swarm placement 객체에 포함된 Docker Swarm 구성 요소는 'constraints'를 포함하고, 프로세서(320)는, ds.policies.Placement와 , Docker Swarm placement 객체의 맵팽 관계에 기초하여, TOSCA 구성 요소 중 'constraints'를 Docker Swarm 구성 요소 중 'constraints'로 변환한다.
7. restartpolicy 객체
TOSCA의 policy type 중 하나인 tosca.policeis.Root은 TOSCA 노드의 논리적인 관계를 나타내거나 특정 정책을 결정하는 역할을 수행한다. 따라서, 특정 노드에 관한 정책을 정의하는 Docker Swarm의 restartpolicy 객체와 밀접한 관계가 있다. 그러나, 컨테이너가 none, on-failure or any 상태인지 결정해주는 condition에 관한 조건을 필요로 한다.
따라서, Docker Swarm의 restartpolicy 객체와의 맵핑을 위해, tosca.policeis.Root이 ds.policies.restart로 확장되고, TOSCA의 ds.policies.restart 내의 'condition' 구성 요소와 Docker Swarm restartpolicy 객체의 'condition' 구성 요소가 맵핑된다. 도 13에서는 TOSCA의 ds.policies.restart과 Docker Swarm의 restartpolicy 객체의 관계를 나타내고 있다.
요컨대, ds.policies.restart에 포함된 TOSCA 구성 요소는 'condition'를 포함하고, Docker Swarm의 restartpolicy 객체에 포함된 Docker Swarm 구성 요소는 'condition'를 포함하고, 프로세서(320)는, ds.policies.restart와 Docker Swarm의 restartpolicy 객체의 맵팽 관계에 기초하여, TOSCA 구성 요소 중 'condition'를 Docker Swarm 구성 요소 중 'condition'로 변환한다.
8. updateconfig 객체
TOSCA의 policy type 중 하나인 tosca.policies.Update은 특정 노드 또는 그룹 노드에 관한 업데이트 상태를 정의한다. 이는 Docker Swarm의 updateconfig 객체와 밀접한 관계가 있지만, 컨테이너가 동시에 업데이트 가능한 태스크의 개수를 정해주는 'parallelism'에 관한 조건을 필요로 한다.
따라서, Docker Swarm의 updateconfig 객체와의 맵핑을 위해, tosca.policies.Update를 ds.policies.Update로 확장하고, TOSCA의 ds.policies.Update 내의 'parallelism' 구성 요소와 Docker Swarm의 updateconfig 객체의 'parallelism' 구성 요소가 맵핑된다. 도 14에서는 TOSCA의 ds.policies.Update과 Docker Swarm의 updateconfig 객체의 관계를 나타내고 있다.
요컨대, ds.policies.Update에 포함된 TOSCA 구성 요소는 'parallelism'를 포함하고, Docker Swarm의 updateconfig 객체에 포함된 Docker Swarm 구성 요소는 'parallelism'를 포함하고, 프로세서(320)는, ds.policies.Update와 Docker Swarm updateconfig 객체의 맵팽 관계에 기초하여, TOSCA 구성 요소 중 'parallelism'를 Docker Swarm 구성 요소 중 'parallelism'로 변환한다,
9. dependson 객체
TOSCA의 표준 normative type인 tosca.relationships.DependsOn은 관계 템플릿은 특정 노드와의 연결 관계에 대해 나타내며, 한 구성요소가 다른 구성요소에 의해 제공되는 기능이 필요하다고 표현하기 위해 'depends on'의 형식으로 나타낸다.
도 15에서는 tosca.nodes.Container.Runtime의 relationship을 나타내고 있다. 도 15를 참조하면, 특정 노드에 대한 요구사항은 'requirement'로 정의하고 'capability'를 통해 다른 노드에게 제공하거나 요구사항을 받아들인다. tosca.relationships.DependsOn은 일반적으로 두 개의 노드 사이에 의존하는 관계를 나타낸다. Docker Swarm에서 컨테이너 사이에 관계를 나타낼 때 dependson type으로 정의한다. 이는 tosca.relationships.DependsOn과 Docker Swarm의 dependson 객체가 서로 밀접한 관계가 있음을 의미한다. 컨테이너에 관해 정의한 tosca.nodes.Container.Runtime에 relationship으로 dependson 관계를 설정하였을 때, tosca.capabilities.Contianer로 요구사항을 받아들임을 확인할 수 있다.
이하, 도 16 내지 도 20을 참조하여, 본 발명의 성능 평가를 설명한다.
TOSCA 문서의 파싱을 통해 객체가 생성되면 Docker Swarm 객체 변환기를 통해 Docker Swarm의 객체인 Container(Volume, Network, Port), Resource, Policy로 변환하고, 실행 결과를 확인한다. 도 16은 Redis, Web 서비스에 대한 다른 Docker image를 갖고 있는 컨테이너 검증을 위해 사용할 토폴로지이다.
그리고, 도 17을 참조하면, TOSCA 문서에서 노드 템플릿으로 정의된 'Web'과 'Redis'는 Docker Swarm의 객체인 Container(Network, Volume, Port), Resource로 변환된다. 그리고 Placement_deploy, Restart_deploy, Update_deploy가 Policy(Placement,Restartpolicy, Updateconfig) 구성 요소로 변환된 것을 확인할 수 있다.
그리고, 도 18 및 19는 Docker service inspect 명령어를 통해 Redis, Web 의 서비스에 관한 정보를 나타낸다. 도 18 및 19를 참조하면, 각각의 Container(Volume, Network, Port), Resource에 대한 구성요소 생성 결과를 확인할 수 있다.
policy 구성요소를 확인한 결과,placement와 updateconfig은 타겟을 Redis로 하여 "node.role == manager" 및 "parallelism : 1"로 설정하였으며, 도 19과 같이 placement updateconfig 구성 요소가 생성되어 Redis 컨테이너에 적용된 것을 확인할 수 있다.
그리고, restartpolicy는 타겟을 Web으로 지정하여 "condition : on-failure" 속성으로 설정하였으며, manager, worker1, worker2, worker3로 구성된 Docker Swarm 클러스터에 도 20와 같이 임의로 worker2 노드를 Shutdown하여 컨테이너를 FAIL 상태로 만들었다. Web 서비스를 확인해 본 결과 Restartpolicy가 적용되어 worker3 노드에 container가 재시작된 것을 확인할 수 있다.
또한, 본 발명의 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 일 실시예들의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.

Claims (15)

  1. 컴퓨터에서 판독 가능한 명령을 저장하는 메모리; 및
    상기 명령을 실행하도록 구현되는 프로세서;를 포함하고,
    상기 프로세서는, 복수의 TOSCA normative type을 담고 있는 TOSCA 문서를 파싱하여 TOSCA normative type 내에 포함된 TOSCA 구성 요소를 생성하고, 상기 복수의 TOSCA normative type과 Docker Swarm 객체의 맵핑 분석을 통해 상기 생성된 TOSCA 구성 요소를 상기 Docker Swarm 객체에 포함된 Docker Swarm 구성 요소로 변환하는 동작을 수행하되,
    상기 복수의 TOSCA normative type는 미리 정의된 적어도 하나의 TOSCA normative type와, 미리 정의된 TOSCA normative type에서 확장된 적어도 하나의 TOSCA normative type를 포함하되,
    상기 확장된 적어도 하나의 TOSCA normative type는 미리 정의된 TOSCA normative type인 tosca.policies.Placement에서 확장된 TOSCA normative type인 ds.policies.Placement를 포함하고,
    상기 Docker Swarm 객체는 상기 ds.policies.Placement와 맵핑되는 placement 객체를 포함하는 것을 특징으로 하는 단말 장치.
  2. 제1항에 있어서,
    상기 확장된 적어도 하나의 TOSCA normative type는 미리 정의된 TOSCA normative type인 tosca.nodes.container.Runtime에서 확장된 TOSCA normative type인 ds.nodes.container.Docker를 포함하고,
    상기 Docker Swarm 객체는 상기 ds.nodes.container.Docker와 맵핑되는 container 객체를 포함하는 것을 특징으로 하는 단말 장치.
  3. 제2항에 있어서,
    상기 ds.nodes.container.Docker에 포함된 TOSCA 구성 요소는 'artifact', 'ports', 'networks', 'volume'를 포함하고, 상기 container 객체에 포함된 Docker Swarm 구성 요소는, 'redis'에 속하는 'image', 'ports' 및 'networks'와, 'web'에 속하는 'volume'를 포함하며,
    상기 프로세서는, 상기 ds.nodes.container.Docker와 상기 container 객체의 맵팽 관계에 기초하여, 상기 TOSCA 구성 요소 중 'artifact'를 상기 Docker Swarm 구성 요소 중 'image'로 변환하고, 상기 TOSCA 구성 요소 중 'ports'를 상기 Docker Swarm 구성 요소 중 'ports'로 변환하고, 상기 TOSCA 구성 요소 중 'networks'를 상기 Docker Swarm 구성 요소 중 'networks'로 변환하고, 상기 TOSCA 구성 요소 중 'volume'를 상기 Docker Swarm 구성 요소 중 'volume'로 변환하는 것을 특징으로 하는 단말 장치.
  4. 제1항에 있어서,
    상기 확장된 적어도 하나의 TOSCA normative type는 미리 정의된 TOSCA normative type인 tosca.datatypes.Root에서 확장된 TOSCA normative type인 ds.datatypes.volume 및 ds.datatypes.resource를 포함하고,
    상기 Docker Swarm 객체는 상기 ds.datatypes.volume와 맵핑되는 volume 객체 및 상기 ds.datatypes.resource와 맵핑되는 resource 객체를 포함하는 것을 특징으로 하는 단말 장치.
  5. 제4항에 있어서,
    상기 ds.datatypes.volume에 포함된 TOSCA 구성 요소는 'physical' 및 'path'를 포함하고, 상기 volume 객체에 포함된 Docker Swarm 구성 요소는 'volume' 내의 'data-volume:/var/lib/redis'를 포함하며,
    상기 프로세서는, 상기 ds.datatypes.volume와 상기 volume 객체의 맵팽 관계에 기초하여, 상기 TOSCA 구성 요소 중 'physical'를 상기 Docker Swarm 구성 요소 중 'data-volume'로 변환하고, 상기 TOSCA 구성 요소 중 'path'를 상기 Docker Swarm 구성 요소 중 '/var/lib/redis'로 변환하는 것을 특징으로 하는 단말 장치.
  6. 제4항에 있어서,
    상기 ds.datatypes.resource에 포함된 TOSCA 구성 요소는 'cpus' 및 'memory'를 포함하고, 상기 resource 객체에 포함된 Docker Swarm 구성 요소는 'cpus' 및 'memory'를 포함하고,
    상기 프로세서는, 상기 ds.datatypes.resource와 상기 resource 객체의 맵팽 관계에 기초하여, 상기 TOSCA 구성 요소 중 'cpus'를 상기 Docker Swarm 구성 요소 중 'cpus'로 변환하고, 상기 TOSCA 구성 요소 중 'memory'를 상기 Docker Swarm 구성 요소 중 'memory'로 변환하는 것을 특징으로 하는 단말 장치.
  7. 삭제
  8. 제1항에 있어서,
    상기 ds.policies.Placement에 포함된 TOSCA 구성 요소는 'constraints'를 포함하고, 상기 placement 객체에 포함된 Docker Swarm 구성 요소는 'constraints'를 포함하고,
    상기 프로세서는, 상기 ds.policies.Placement와 상기 placement 객체의 맵팽 관계에 기초하여, 상기 TOSCA 구성 요소 중 'constraints'를 상기 Docker Swarm 구성 요소 중 'constraints'로 변환하는 것을 특징으로 하는 단말 장치.
  9. 제1항에 있어서,
    상기 확장된 적어도 하나의 TOSCA normative type는 미리 정의된 TOSCA normative type인 tosca.policies.Root에서 확장된 TOSCA normative type인 ds.policies.restart를 포함하고,
    상기 Docker Swarm 객체는 상기 ds.policies.restart와 맵핑되는 restartpolicy 객체를 포함하는 것을 특징으로 하는 단말 장치.
  10. 제9항에 있어서,
    상기 ds.policies.restart에 포함된 TOSCA 구성 요소는 'condition'를 포함하고, 상기 restartpolicy 객체에 포함된 Docker Swarm 구성 요소는 'condition'를 포함하고,
    상기 프로세서는, 상기 ds.policies.restart와 상기 restartpolicy 객체의 맵팽 관계에 기초하여, 상기 TOSCA 구성 요소 중 'condition'를 상기 Docker Swarm 구성 요소 중 'condition'로 변환하는 것을 특징으로 하는 단말 장치.
  11. 제1항에 있어서,
    상기 확장된 적어도 하나의 TOSCA normative type는 미리 정의된 TOSCA normative type인 tosca.policies.Update에서 확장된 TOSCA normative type인 ds.policies.Update를 포함하고,
    상기 Docker Swarm 객체는 상기 ds.policies.Update와 맵핑되는 updateconfig 객체를 포함하는 것을 특징으로 하는 단말 장치.
  12. 제11항에 있어서,
    상기 ds.policies.Update에 포함된 TOSCA 구성 요소는 'parallelism'를 포함하고, 상기 updateconfig 객체에 포함된 Docker Swarm 구성 요소는 'parallelism'를 포함하고,
    상기 프로세서는, 상기 ds.policies.Update와 상기 updateconfig 객체의 맵팽 관계에 기초하여, 상기 TOSCA 구성 요소 중 'parallelism'를 상기 Docker Swarm 구성 요소 중 'parallelism'로 변환하는 것을 특징으로 하는 단말 장치.
  13. 제1항에 있어서,
    상기 Docker Swarm 객체는 networks 객체, ports 객체 및 dependson 객체를 포함하되,
    상기 networks 객체는 미리 정의된 TOSCA normative type인 tosca.nodes.network.Port와 맵핑되고, 상기 ports 객체는 미리 정의된 TOSCA normative type인 tosca.datatypes.network.PortSpec과 맵핑되고, 상기 dependson 객체는 미리 정의된 TOSCA normative type인 tosca.relationships.DependsOn와 맵핑되는 것을 특징으로 하는 단말 장치.
  14. 프로세서가 포함된 장치에서 수행되며, 클라우드 오케스트레이션을 수행하기 위하여 TOSCA를 Docker Swarm으로 변환하는 방법에 있어서,
    복수의 TOSCA normative type을 담고 있는 TOSCA 문서를 파싱하여 TOSCA normative type 내에 포함된 TOSCA 구성 요소를 생성하는 단계; 및
    상기 복수의 TOSCA normative type과 Docker Swarm 객체의 맵핑 분석을 통해 상기 생성된 TOSCA 구성 요소를 상기 Docker Swarm 객체에 포함된 Docker Swarm 구성 요소로 변환하는 단계;를 포함하되,
    상기 복수의 TOSCA normative type는 미리 정의된 적어도 하나의 TOSCA normative type와, 미리 정의된 TOSCA normative type에서 확장된 적어도 하나의 TOSCA normative type를 포함하되,
    상기 확장된 적어도 하나의 TOSCA normative type는 미리 정의된 TOSCA normative type인 tosca.policies.Placement에서 확장된 TOSCA normative type인 ds.policies.Placement를 포함하고,
    상기 Docker Swarm 객체는 상기 ds.policies.Placement와 맵핑되는 placement 객체를 포함하는 것을 특징으로 하는 방법.
  15. TOSCA를 Docker Swarm로 변환하기 위하여 디지털 처리 장치에 의해 실행될 수 있는 명령어들의 프로그램이 유형적으로 구현되어 있으며 디지털 처리 장치에 의해 판독될 수 있는 기록매체로서,
    복수의 TOSCA normative type을 담고 있는 TOSCA 문서를 파싱하여 TOSCA normative type 내에 포함된 TOSCA 구성 요소를 생성하는 단계; 및
    상기 복수의 TOSCA normative type과 Docker Swarm 객체의 맵핑 분석을 통해 상기 생성된 TOSCA 구성 요소를 상기 Docker Swarm 객체에 포함된 Docker Swarm 구성 요소로 변환하는 단계;를 수행하되,
    상기 복수의 TOSCA normative type는 미리 정의된 적어도 하나의 TOSCA normative type와, 미리 정의된 TOSCA normative type에서 확장된 적어도 하나의 TOSCA normative type를 포함하되,
    상기 확장된 적어도 하나의 TOSCA normative type는 미리 정의된 TOSCA normative type인 tosca.policies.Placement에서 확장된 TOSCA normative type인 ds.policies.Placement를 포함하고,
    상기 Docker Swarm 객체는 상기 ds.policies.Placement와 맵핑되는 placement 객체를 포함하는 것을 특징으로 하는 기록매체.
KR1020180060618A 2018-05-28 2018-05-28 컨테이너 오케스트레이션을 위해 TOSCA를 Docker Swarm로 변환하는 동작을 수행하는 단말 장치 및 방법과, 이를 수행하는 기록 매체 KR102066792B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180060618A KR102066792B1 (ko) 2018-05-28 2018-05-28 컨테이너 오케스트레이션을 위해 TOSCA를 Docker Swarm로 변환하는 동작을 수행하는 단말 장치 및 방법과, 이를 수행하는 기록 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180060618A KR102066792B1 (ko) 2018-05-28 2018-05-28 컨테이너 오케스트레이션을 위해 TOSCA를 Docker Swarm로 변환하는 동작을 수행하는 단말 장치 및 방법과, 이를 수행하는 기록 매체

Publications (2)

Publication Number Publication Date
KR20190140514A KR20190140514A (ko) 2019-12-20
KR102066792B1 true KR102066792B1 (ko) 2020-01-15

Family

ID=69062998

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180060618A KR102066792B1 (ko) 2018-05-28 2018-05-28 컨테이너 오케스트레이션을 위해 TOSCA를 Docker Swarm로 변환하는 동작을 수행하는 단말 장치 및 방법과, 이를 수행하는 기록 매체

Country Status (1)

Country Link
KR (1) KR102066792B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230007683A (ko) * 2021-07-06 2023-01-13 한양대학교 산학협력단 TOSCA-to-OAM 모델 변환 방법

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Luca Rinaldi, "Orchestrating Applications with TOSCA and Docker"(2017.)*
YuLing Chen et al, "Bridging the Gap Between ETSI-NFV and Cloud Native Architecture", SCTE/ISBE 2017 Fall Technical Forum(2017.10.)*
박민재 외, "클라우드 어플리케이션 오케스트레이션을 위한 TOSCA에서 쿠버네테스로의 맵핑", 2017년 한국컴퓨터종합학술대회 논문집, pp. 680-682(2017.06.)*

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230007683A (ko) * 2021-07-06 2023-01-13 한양대학교 산학협력단 TOSCA-to-OAM 모델 변환 방법
KR102602395B1 (ko) 2021-07-06 2023-11-16 한양대학교 산학협력단 TOSCA-to-OAM 모델 변환 방법

Also Published As

Publication number Publication date
KR20190140514A (ko) 2019-12-20

Similar Documents

Publication Publication Date Title
US10764109B2 (en) Instantiating resources of an IT-service
US9413819B1 (en) Operating system interface implementation using network-accessible services
US9444760B2 (en) Allocating instantiated resources to an IT-service
US11385892B1 (en) Optimal software architecture recommendations by an application modernization service
US8789048B2 (en) Virtual machine placement to improve memory utilization
US9317311B2 (en) Generating a deployment pattern for reuse in a networked computing environment
CN105144093B (zh) 使用基础设施管理代理供应的工作负荷部署
US11403146B2 (en) Method, apparatus, and server for managing image across cloud servers
WO2017067016A1 (en) Extension of resource constraints for service-defined containers
US8516495B2 (en) Domain management and integration in a virtualized computing environment
US20100205604A1 (en) Systems and methods for efficiently running multiple instances of multiple applications
US11593103B1 (en) Anti-pattern detection in extraction and deployment of a microservice
US11301262B2 (en) Policy enabled application-release-management subsystem
US11442725B1 (en) Software modernization refactoring of local calls to network calls
US9959157B1 (en) Computing instance migration
US11467826B1 (en) Automated extraction of isolated nodes during source code refactoring
US20120222004A1 (en) Publishing and updating of multidimensional models using orchestration tools for software offerings
US11327750B1 (en) Domain-driven application breakout
US11500628B1 (en) Isolated code detection from application code analysis
US20200241909A1 (en) Host computing systems determination to deploy virtual machines based on disk specifications
US20130227572A1 (en) Test device, a system, a program and a method
WO2022199136A1 (zh) 应用改造方法、系统、集群、介质及程序产品
KR102066792B1 (ko) 컨테이너 오케스트레이션을 위해 TOSCA를 Docker Swarm로 변환하는 동작을 수행하는 단말 장치 및 방법과, 이를 수행하는 기록 매체
KR20040079337A (ko) 분산형 컴퓨팅 시스템을 위한 아키텍처 및 분산형애플리케이션들의 자동화된 설계, 배포와 관리
US11630804B1 (en) Classifying and storing multiple layers of a file system

Legal Events

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