KR20240030358A - 컨테이너 기반의 마이크로서비스 배포 방법 및 시스템 - Google Patents

컨테이너 기반의 마이크로서비스 배포 방법 및 시스템 Download PDF

Info

Publication number
KR20240030358A
KR20240030358A KR1020220109293A KR20220109293A KR20240030358A KR 20240030358 A KR20240030358 A KR 20240030358A KR 1020220109293 A KR1020220109293 A KR 1020220109293A KR 20220109293 A KR20220109293 A KR 20220109293A KR 20240030358 A KR20240030358 A KR 20240030358A
Authority
KR
South Korea
Prior art keywords
microservice
service
microservices
combination
container
Prior art date
Application number
KR1020220109293A
Other languages
English (en)
Other versions
KR102674306B1 (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 KR1020220109293A priority Critical patent/KR102674306B1/ko
Priority claimed from KR1020220109293A external-priority patent/KR102674306B1/ko
Publication of KR20240030358A publication Critical patent/KR20240030358A/ko
Application granted granted Critical
Publication of KR102674306B1 publication Critical patent/KR102674306B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

컨테이너 기반의 마이크로서비스 배포 방법 및 시스템이 개시된다. 본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 방법은, 특정 소프트웨어 구현과 연관된 복수의 마이크로서비스가 클라이언트 단말에 의해 배포 대상으로 선택되면, 상기 복수의 마이크로서비스 각각의 이름 및 서비스 풀 내에서의 위치를 포함하여 작성된 명세 파일을, 명세 풀로부터 추출하는 단계와, 상기 복수의 마이크로서비스의 조합에 할당된 게이트웨이 정보를 포함하여 작성된 조합 명세 파일을, 상기 명세 풀로부터 더 추출하는 단계와, 상기 명세 파일 및 상기 조합 명세 파일에 근거하여, 컨테이너 오케스트레이션(Container Orchestration)에서 실행 가능한 배포 템플릿을 생성하는 단계, 및 상기 배포 템플릿을 상기 컨테이너 오케스트레이션을 통해 실행하여, 상기 게이트웨이 정보를 통해 연결되는 상기 위치의 각 마이크로서비스로 접근 가능하도록, 상기 복수의 마이크로서비스를 배포하는 단계를 포함한다.

Description

컨테이너 기반의 마이크로서비스 배포 방법 및 시스템{CONTAINER BASED MICROSERVICE DEPLOYMENT METHOD AND SYSTEM}
본 발명은 명세(Specification)와 BCE(Boundary-Control-Entity) 패턴을 활용한 컨테이너 오케스트레이션(Container Orchestration) 기반의 마이크로서비스 배포 방법 및 마이크로서비스 배포 시스템에 연관된다.
소프트웨어나 마이크로서비스 등의 어플리케이션 배포와 관련된 다양한 기술이 개발되어 상용화되어 있다.
일례로 한국 등록특허 제10-1262234호(2013.05.02)(이하, 특허문헌 1)에서는, 웹 기반 소프트웨어의 유통을 위해 패키지를 생성, 배포, 설치하도록 하는 웹 기반 소프트웨어 배포 시스템 및 방법이 개시된다.
구체적으로 특허문헌 1에서는, 소프트웨어 개발부에서 생성된 웹 기반 소프트웨어를 소프트웨어 패키지로 패키징하고, 소프트웨어 패키지를 웹 기반 소프트웨어 배포 장치로 전송하고, 전송된 소프트웨어 패키지는 소프트웨어 사용 장치에 설치되어 실행되고, 소프트웨어 패키지는 데이터베이스에 대한 정보 및 스키마 정보를 포함하고 있다.
하지만 특허문헌 1은, 데이터베이스, OS 등에 의존적인 웹 기반 소프트웨어를 배포하고 있을 뿐, 현재 소프트웨어 개발 환경에서 활용되는 클라우드 기반의 분산 환경과 컨테이너의 개념을 포함하지 않고 있다. 즉, 특허문헌 1에서의 소프트웨어 배포 방식은, 클라우드나 컨테이너를 지원하지 않는 종래 웹 기반의 단순 배포에 한정되고 있다.
다른 일례로 한국 등록특허 제10-2368165호(2022.02.23)(이하, 특허문헌 2)에서는, 엣지 컴퓨팅 환경에서 비용을 고려한 마이크로서비스 기반 어플리케이션 배포 기술이 개시된다.
구체적으로 특허문헌 2에서는, 엣지 컴퓨팅 환경에서 비용 정보를 고려하여 마이크로서비스 기반의 어플리케이션을 배포하기 위한 배포 문제를 설정하고, 설정된 배포 문제에 기초하여 탐색된 배포 상태에 따라 분할된 어플리케이션을 복수 개의 엣지 서버에 각각 배포하고 있다.
하지만 특허문헌 2는, 제한된 비용 정보를 바탕으로 최적해를 찾아가는 휴리스틱 알고리즘(Heuristic Algorithm)을 적용한 응답시간 계산 결과에 따라, 마이크로서비스를 배포하고 있을 뿐, 마이크로서비스의 특성을 나타내는 명세를 기반으로 한 배포를 수행하는 데에는 한계가 있다.
특허문헌 1: 한국 등록특허 제10-1262234호 특허문헌 2: 한국 등록특허 제10-2368165호
본 발명의 실시예는 단일 마이크로서비스를 분산 배치해 이들 간의 약결합(Loosely Coupling)으로 소프트웨어를 구동하고 각 데이터베이스도 서비스화시켜 별도로 구성함으로써, 특허문헌 1에서와 같이 웹 기반의 특정 OS나 데이터베이스에 종속되지 않고, 마이크로서비스의 개발 및 배포를 진행할 수 있는 컨테이너 기반의 마이크로서비스 배포 기법을 제안하는 것을 목적으로 한다.
본 발명의 실시예는 마이크로서비스를 유형화시킨 후 마이크로서비스 약결합을 반영하는 조합 가능한 후보 마이크로서비스를 함께 배포함으로써, 특허문헌 2에서와 같이 응답시간을 기반으로 한 배포가 아닌, 마이크로서비스의 특성을 나타내는 명세를 기반으로 마이크로서비스를 배포할 수 있는 기법을 제안하는 것을 목적으로 한다.
본 발명의 실시예는 마이크로서비스의 설계에서 구현, 배포의 전 주기를 지원하기 위해, 마이크로서비스에 대한 단일 명세와 조합 명세를 활용하는 명세 기반의 배포 기법을 제안하는 것을 목적으로 한다.
본 발명의 실시예는 BCE 패턴을 기반으로 마이크로서비스를 조합함으로써, 컨테이너 가상화 기술을 지원하는 프레임워크인 Docker나 Kubernetes 등의 다양한 컨테이너 오케스트레이션 프레임워크에 마이크로서비스를 배치 및 배포할 수 있는 마이크로서비스 배포 기법을 제안하는 것을 목적으로 한다.
본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 방법은, 특정 소프트웨어 구현과 연관된 복수의 마이크로서비스가 클라이언트 단말에 의해 배포 대상으로 선택되면, 상기 복수의 마이크로서비스 각각의 이름 및 서비스 풀 내에서의 위치를 포함하여 작성된 명세 파일을, 명세 풀로부터 추출하는 단계와, 상기 복수의 마이크로서비스의 조합에 할당된 게이트웨이 정보를 포함하여 작성된 조합 명세 파일을, 상기 명세 풀로부터 더 추출하는 단계와, 상기 명세 파일 및 상기 조합 명세 파일에 근거하여, 컨테이너 오케스트레이션에서 실행 가능한 배포 템플릿을 생성하는 단계, 및 상기 배포 템플릿을 상기 컨테이너 오케스트레이션을 통해 실행하여, 상기 게이트웨이 정보를 통해 연결되는 상기 위치의 각 마이크로서비스로 접근 가능하도록, 상기 복수의 마이크로서비스를 배포하는 단계를 포함할 수 있다.
또한, 본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 시스템은, 특정 소프트웨어 구현과 연관된 복수의 마이크로서비스가 클라이언트 단말에 의해 배포 대상으로 선택되면, 상기 복수의 마이크로서비스 각각의 이름 및 서비스 풀 내에서의 위치를 포함하여 작성된 명세 파일을, 명세 풀로부터 추출하고, 상기 복수의 마이크로서비스의 조합에 할당된 게이트웨이 정보를 포함하여 작성된 조합 명세 파일을, 상기 명세 풀로부터 더 추출하는 추출부와, 상기 명세 파일 및 상기 조합 명세 파일에 근거하여, 컨테이너 오케스트레이션(Container Orchestration)에서 실행 가능한 배포 템플릿을 생성하는 생성부, 및 상기 배포 템플릿을 상기 컨테이너 오케스트레이션을 통해 실행하여, 상기 게이트웨이 정보를 통해 연결되는 상기 위치의 각 마이크로서비스로 접근 가능하도록, 상기 복수의 마이크로서비스를 배포하는 배포부를 포함할 수 있다.
본 발명에 따르면, 컨테이너 기반 마이크로서비스 구현 및 배포를 위해 BCE 패턴과 마이크로서비스 명세 및 조합 명세를 기반으로 배포 템플릿을 생성하여, 컨테이너 오케스트레이션 프레임워크(예, Kubernetes)를 통해 배포할 수 있다.
도 1은 본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 시스템 및 컨테이너 오케스트레이션을 도시한 도면이다.
도 2는 본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 시스템에서, 선택되는 마이크로서비스 명세 및 조합 명세의 일례를 도시한 도면이다.
도 3은 본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 시스템의 내부 구성을 도시한 블록도이다.
도 4는 본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 시스템에 의한 서비스 배포 과정을 도시한 흐름도이다.
도 5는 본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 시스템에서, 레지스트리 등록을 위해 생성되는 yaml 파일의 일례를 도시한 도면이다.
도 6은 본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 시스템에서, 레지스트리 등록을 위해 생성되는 yaml 파일의 다른 일례를 도시한 도면이다.
도 7은 본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 시스템에서, 마이크로서비스의 배포 및 배포 환경 설정 과정을 설명하기 위한 도면이다.
도 8은 본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 방법의 순서를 도시한 흐름도이다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 실시예들에는 다양한 변경이 가해질 수 있어서 특허출원의 권리 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 실시예들에 대한 모든 변경, 균등물 내지 대체물이 권리 범위에 포함되는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 설명을 목적으로 사용된 것으로, 한정하려는 의도로 해석되어서는 안된다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, 본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나", "A 또는 B 중 적어도 하나", "A, B 또는 C", "A, B 및 C 중 적어도 하나", 및 "A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들 중 어느 하나, 또는 그들의 모든 가능한 조합을 포함할 수 있다. 또한 "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
도 1은 본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 시스템 및 컨테이너 오케스트레이션을 도시한 도면이다.
도 1을 참조하면, 본 발명의 컨테이너 기반의 마이크로서비스 배포 시스템(100)은, 컨테이너 오케스트레이션(120)을 통해서, 배포 대상 마이크로서비스의 특징이 기술된 명세 정보(단일 명세 정보)를 바탕으로, 해당 마이크로서비스의 배포를 수행할 수 있다.
마이크로서비스 배포 시스템(100)은, 배포할 단일 마이크로서비스에 대한 단일 명세 정보를 처리하여, 마이크로서비스가 수행하는 기능 등록을 위한 제1 yaml 파일 및 서비스 레지스트리 등록을 위한 제2 yaml 파일을 생성한다.
일례로 마이크로서비스 배포 시스템(100)은, 제1 yaml 파일(예, 'Deployment.yaml')을 통해 마이크로서비스의 기능을 등록하고, 서비스 레지스트리 등록을 위해 제2 yaml 파일(예, 'Service.yaml')을 컨테이너 오케스트레이션(120)에 등록할 수 있다.
상술과 같이 마이크로서비스 배포 시스템(100)은, 배포할 단일 마이크로서비스 마다 제1 및 제2 yaml 파일을 각각 생성할 수도 있고, 또는, 마이크로서비스의 기능 등록을 위한 yaml 파일의 생성 후, 서비스 레지스트리 등록을 위해 필요한 데이터를 추가해 하나의 yaml 파일로서 생성할 수도 있다.
컨테이너 오케스트레이션(120)은 등록된 제2 yaml 파일을 쉘스크립트를 통해 실행해 서비스 레지스트리에 단일 마이크로서비스를 등록시키고, 이후 해당 마이크로서비스와 연결된 API Gateway를 통해서 마이크로서비스 배포가 진행되도록 할 수 있다.
배포된 단일 마이크로서비스는, 도 7에 도시된 서비스 레지스트리(703)에서 확인 가능하고, API Gateway를 통하여 해당 마이크로서비스로의 접근이 가능하다.
실시예에 따라, 마이크로서비스 배포 시스템(100)은 마이크로서비스의 명세 정보 기반으로 yaml 파일을 생성 시, 컨테이너 오케스트레이션(120)에 설정된 배포 환경, 일례로, 'Kubernetes', 'Docker' 등에 적용 가능한 형식으로 yaml 파일을 생성할 수 있다.
예를 들어, 배포 환경이 'Kubernetes'로 설정된 경우에 JSON 포맷으로 작성된 2개의 제1 yaml 파일(501) 및 제2 yaml 파일(502)이 도 5에 예시되고, 배포 환경이 'Docker'로 설정된 경우에 JSON 포맷으로 작성된 1개의 yaml 파일(600)이 도 6에 예시된다.
이처럼 마이크로서비스 배포 시스템(100)은 설정된 배포 환경에 적합한 형식으로 yaml 파일을 생성 가능하기 때문에, 하나의 컨테이너 오케스트레이션(120)에 국한되지 않고, 다양한 컨테이너 오케스트레이션(120)을 활용한 마이크로서비스의 배포를 수행할 수 있다.
또한 실시예에 따라, 마이크로서비스 배포 시스템(100)은 배포할 단일 마이크로서비스에 대한 단일 명세 정보 내 BCE 패턴('type'값)을 통해 확인되는 마이크로서비스의 역할(기능)을 고려해, 그에 적합한 yaml 파일을 생성하여 배포를 수행할 수 있다.
일반적으로 하나의 마이크로서비스는, 외부와의 데이터 입출력을 위한 인터페이스(Boundary), 데이터 연산/동작의 제어(Control), 및 데이터(Entity) 중 어느 한 가지의 역할을 수행하게 된다.
이에 따라 단일 마이크로서비스를 표현하는 단일 명세 정보에는, 마이크로서비스의 역할을 규정하기 위한 BCE 패턴(즉, Boundary/Control/Entity 패턴)이 'type' 필드에 포함될 수 있다.
일례로, 단일 명세 정보 내 'type' 필드가 '0'이면 Boundary 패턴을 나타내고 이는 해당 마이크로서비스가 인터페이스 역할을 수행하는 것을 의미한다. 'type' 필드가 '1'이면 Control 패턴을 나타내고 이는 해당 마이크로서비스가 데이터 연산/동작의 제어 역할을 수행하는 것을 의미한다. 'type' 필드가 '2'이면 Entity 패턴을 나타내고 이는 해당 마이크로서비스가 영속적(Persistence)인 데이터 역할을 수행하는 것을 의미한다.
이처럼 마이크로서비스 배포 시스템(100)은 상기 단일 명세 정보를 분석 처리해 상기 yaml 파일을 생성하기 때문에, 종래의 휴리스틱 알고리즘 등에 기초한 응답시간이나 비용 등의 배포 상태에 따른 배포가 아닌, 배포 대상 마이크로서비스의 BCE 패턴 등과 같은 특성을 고려한 배포를 수행할 수 있다.
일례로 마이크로서비스 배포 시스템(100)은 단일 명세 정보에 기재된 'BCE 패턴'('type'값)으로부터, 배포할 단일 마이크로서비스의 역할(인터페이스/동작/데이터)을 식별하고, 단일 명세 정보에 기재된 '연결 가능한 다른 이미지('service_id')로부터, 배포할 단일 마이크로서비스와 약결합으로 구동 가능한 다른 마이크로서비스를 식별하고, 식별한 단일 마이크로서비스 및 다른 마이크로서비스를 포함하여 서비스 조합을 구성하고, 상기 서비스 조합을 표현하는 조합 명세 정보를 작성하여, 상기 조합 명세 정보 기반으로 상기 yaml 파일을 생성할 수 있다.
여기서 마이크로서비스 배포 시스템(100)은 서비스 조합을 구성 시, 배포할 단일 마이크로서비스와 역할이 상이한 다른 마이크로서비스를 선택할 수 있다.
예컨대 마이크로서비스 배포 시스템(100)은 배포할 단일 마이크로서비스의 BCE 패턴이 인터페이스 역할을 의미하는 Boundary 패턴이라면, BCE 패턴이 동작 제어 역할을 의미하는 Control 패턴인 마이크로서비스들 중에서 서비스 조합을 구성할 수 있고, 또한 BCE 패턴이 데이터 역할을 의미하는 Entity 패턴인 마이크로서비스를 더 추가하여 서비스 조합을 구성할 수 있다.
즉, 마이크로서비스 배포 시스템(100)은 BCE 패턴의 순서대로, Boundary 패턴의 마이크로서비스A와, Control 패턴의 마이크로 서비스B와, Entity 패턴의 마이크로서비스C를 포함하여 서비스 조합을 구성할 수 있고, 이때 BCE 패턴이 동작 역할을 수행하는 Control 패턴의 마이크로 서비스B 없이, 인터페이스 역할의 Boundary 패턴인 마이크로서비스A와 데이터 역할의 Entity 패턴인 마이크로서비스C만을 바로 연결해 서비스 조합을 구성하는 것은 제외된다.
마이크로서비스 배포 시스템(100)은 배포할 단일 마이크로서비스에 대해서, 단일 명세 정보 기반의 yaml 파일과 함께, 상기 조합 명세 정보 기반으로 yaml 파일을 생성하여, 컨테이너 오케스트레이션(120)에 등록할 수 있다.
이후 컨테이너 오케스트레이션(120)에서의 각 yaml 파일의 실행에 의해, 배포 대상 단일 마이크로서비스가 배포될 때, 상기 서비스 조합 내 다른 마이크로서비스도 함께 배포될 수 있다.
배포된 단일 마이크로서비스 및 상기 서비스 조합 내 다른 마이크로서비스는, 서비스 레지스트리에서 확인 가능하고, API Gateway를 통하여 해당 마이크로서비스들에 접근이 가능하다.
본 발명에 의하면, 단일 명세 정보를 바탕으로, 특정의 OS나 데이터베이스에 종속되지 않는, 컨테이너 오케스트레이션(120) 기반의 단일 마이크로서비스 배포가 가능하고, 또한 조합 명세 정보를 바탕으로, 단일 마이크로서비스와의 약결합으로 구동 가능한 다른 마이크로서비스 배포가 가능하므로, 서비스 풀(123) 내에 분산 배치되는 각 마이크로서비스들의 약결합에 의해 개발자(Client)에 의해 개발되는 컨테이너 오케스트레이션(120) 기반의 다양한 소프트웨어 구동이 가능해진다.
본 명세서에서 마이크로서비스 배포 시스템(100)은 배포할 마이크로서비스의 단일 명세 정보와, 단일 명세 정보 내 BCE 패턴, 및 서비스 조합에 관한 조합 명세 정보를 처리하여 배포 템플릿(예, 'yaml 파일')을 생성하고, 생성한 배포 템플릿을 컨테이너 오케스트레이션(120)(예, Kubernetes)에 등록함으로써, 컨테이너 기반의 명세 정보를 바탕으로 한 마이크로서비스의 배포를 구현할 수 있다.
여기서 마이크로서비스 배포 시스템(100)은 단일 명세 정보 내 BCE 패턴에 따라, 단일 마이크로서비스들의 서비스 조합을 구성하고, 서비스 조합에 관한 조합 명세 정보를 처리해 생성한 배포 템플릿을 컨테이너 오케스트레이션(120)에 등록하므로, 컨테이너 가상화 기술을 지원하는 프레임워크인 'Docker'나 'Kubernetes'와 같은 다양한 컨테이너 오케스트레이션 프레임워크(120) 기반으로 동작하는 소프트웨어의 구동에 필요한 각 마이크로서비스들의 분산 배치 및 배포를 실시할 수 있다.
본 발명에 의하면, 마이크로서비스에 대한 단일 명세 정보 및 조합 명세 정보를 활용한 명세 기반의 배포 기법을 통해, 컨테이너 오케스트레이션(120)을 이용하여 마이크로서비스의 설계에서 구현, 배포의 전 주기를 지원할 수 있다.
도 1에 도시된 바와 같이, 본 발명의 마이크로서비스 배포 시스템(100)은 마이크로서비스 명세 모듈(MicroService Specification Module)(111), 조합 명세 모듈(Composition Specification Module)(112), 명세 처리 모듈(Specification Processing Module)(113), 등록 모듈(Registration Module)(114) 및 배포 모듈(Deployment Module)(114)을 포함하여 구성할 수 있다.
마이크로서비스 명세 모듈(111)은, 개발자(Client)에 의해 배포를 위해 선택되는 단일 마이크로서비스의 특성을 표현하는 단일 명세 정보를 마이크로서비스 명세 풀(MicroService Specification Pool)(116)을 참조하여 조회하고, 조회한 단일 명세 정보를 명세 처리 모듈(113)로 전달한다. 마이크로서비스 명세 풀(116)에 유지되는 단일 명세 정보는, [표 1]에 도시한 항목들을 포함할 수 있다.
항목 설명
BCE 패턴(type) Boundary, Controller, Entity 패턴 타입
이름(name) 마이크로서비스의 이름
버전(version) 마이크로서비스 이미지의 버전
입력 타입(input_type) 마이크로서비스 요청 시 전달될 데이터 타입
출력 타입(output_type) 마이크로서비스 요청 후 반환될 데이터 타입
에러처리정책
(error_handling)
내부 에러 발생시 대응 정책
연결 가능 서비스 마이크로서비스에서 연결 가능한 이미지
method HTTP 요청 메소드
url 약결합에 사용될 주소
작성 언어(lanquage) 마이크로서비스 구현에 사용된 언어
Image URL(docker_address) 서비스 풀(123)에서의 마이크로서비스 위치
여기서 단일 명세 정보 내 'BCE 패턴' 항목은 단일 마이크로서비스의 Boundary, Control, Entity의 패턴 타입을 의미하며, Boundary 타입은 외부와의 데이터 입출력을 위한 인터페이스 역할, Control 타입은 마이크로서비스의 연산 동작 제어를 위한 비즈니스 로직(Business Logic) 역할, Entity 타입은 영속적인 데이터 역할을 의미한다.
또한 단일 명세 정보 내 'Image URL(docker_address)' 항목은, 배포 대상의 단일 마이크로서비스의 서비스 풀(123)에서의 위치(docker_address)를 나타내고, 단일 명세 정보 내 '연결 가능 서비스' 항목은, 단일 마이크로서비스와 함께 약결합으로 구동 가능한 다른 마이크로서비스(프로그램)의 위치(docker_address)나 service_id를 나타낼 수 있다.
이때, 마이크로서비스 명세 모듈(111)은, 상기 '연결 가능 서비스' 항목이 나타내는 다른 마이크로서비스에 관한 단일 명세 정보를, 마이크로서비스 명세 풀(116)로부터 조회하여, 배포할 단일 마이크로서비스와의 실제 연결 가능성을 검사할 수 있다.
단일 명세 정보 상에는 연결 가능 서비스로 지정되어 있어도, 서비스들 간에 입출력 타입이 다르거나, BCE 패턴으로 인해, 실제 연결이 불가능한 경우도 있을 수 있기 때문에, 마이크로서비스 명세 모듈(111)은, 배포할 단일 마이크로서비스 및 상기 '연결 가능 서비스' 항목이 나타내는 다른 마이크로서비스 각각의 단일 명세 정보로부터, 서비스들의 입력 타입(input_type) 및 출력 타입(output_type)이 일치하는지, 서비스들을 연결할 경우에 BCE 패턴이 지정된 순서를 가지는지 등을 확인하여, 실제 연결 가능성을 검증할 수 있다.
조합 명세 모듈(112)은, 마이크로서비스 명세 모듈(111)에서 연결 가능한 것으로 검증된 다른 마이크로서비스와, 배포 대상의 단일 마이크로 서비스를 포함하여 서비스 조합을 구성하고, 상기 서비스 조합에 관한 조합 명세 정보를 작성하여 명세 처리 모듈(113)로 전달한다. 작성된 조합 명세 정보는, 조합 명세 풀(Composition Specification Pool)(117)에 유지된다. 조합 명세 정보는, [표 2]에 도시한 항목들을 포함할 수 있다.
항목 설명
조합 고유 ID(combination_config_id) 마이크로서비스 조합의 고유한 이름
Gateway Image URL 서비스 풀(123)에서의 조합 게이트웨이의 위치
마이크로서비스 리스트(services_id) 조합을 구성하는 마이크로서비스의 집합
여기서 상기 조합 명세 정보에는, 상기 서비스 조합을 이루는 각 마이크로서비스의 리스트(Service_id)와, 조합 고유 id(combination_config_id), 및 서비스 풀(123)에서의 조합 게이트웨이의 위치(Gateway Image URL) 등의 항목이 포함될 수 있다. 이 중에서, 'Gateway Image URL' 항목은, 마이크로서비스가 약결합 단위로 배포되는 점을 고려해, 서비스 조합에 해당하는 엔드포인트를 설정 및 유지하기 위해서 정의된다.
조합 명세 모듈(112)은, 상기 단일 명세 정보에 근거해 상기 서비스 조합을 구성하여 조합 명세 정보를 직접 작성하는 것 외에, 배포 대상의 단일 마이크로서비스의 service_id가 포함되어 이미 작성된 조합 명세 정보를 조합 명세 풀(117)로부터 조회할 수 있다.
조합 명세 모듈(112)은, 조회한 조합 명세 정보로부터 각 마이크로서비스의 조합이 구현하는 기능(예를 들면, 소프트웨어 등)을 판별하고, 각 마이크로서비스의 조합이 특정 기능을 수행하는 것으로 판별되면, 상기 조합 명세 정보를 명세 처리 모듈(113)로 전달한다.
명세 처리 모듈(113)은, 마이크로서비스 명세 모듈(111) 및 조합 명세 모듈(112)로부터 전달되는 단일 명세 정보와 조합 명세 정보, 및 서비스 풀(123) 내 이미지 주소를 포함하여, 단일 마이크로서비스의 기능 등록을 위한 제1 yaml파일(예, 'Deployment.yaml')을 배포 템플릿으로서 생성한다.
상기 배포 템플릿에는, 개발자(Client)로부터 입력된 배포 대상 단일 마이크로서비스의 개방 포트가 더 포함될 수 있다.
등록 모듈(114)은, 명세 처리 모듈(113)에 의해 생성된 제1 yaml파일(예, 'Deployment.yaml') 및 조합 명세 모듈(112)로부터 전달된 조합 명세 정보를 이용하여, 단일 마이크로서비스의 서비스 레지스트리 등록을 위한 제2 yaml 파일(예, 'Service.yaml')을 생성한다.
배포 모듈(114)은, 등록 모듈(114)로부터 받은 제2 yaml 파일(예, 'Service.yaml')을 컨테이너 오케스트레이션(120)에 전송하면서, 컨테이너 오케스트레이션(120) 내 API 서버(121)에 API 요청을 발생한다.
컨테이너 오케스트레이션(120)은, 배포 모듈(114)로부터 전송된 제2 yaml 파일(예, 'Service.yaml')을 해석하고, 이후 컨테이너 등록 및 실행 검사를 수행한 후 배포를 진행한다.
API 서버(121)는 서비스 풀(Service Pool)(123)에서 이미지를 가져와서, 마이크로서비스를 배포하고 약결합을 형성한다.
API 서버(121)는 상기 API 요청의 발생에 따라, 제2 yaml 파일(예, 'Service.yaml')을 컨테이너 오케스트레이션(120)에 등록하고, Pod 실행 상태를 검사한다.
API 서버(121)는 Yaml 파일 등록 이후, Pod들의 실행 상태가 모두 Running 상태인지 조회하기 위한 쉘스크립트를 실행하고 json 포맷의 데이터를 받는다. 해당 Pod들은 items라는 이름의 리스트 형태로 저장된다. 만약 Running 상태가 아닌 경우, API 서버(121)는 일정 간격으로 Pod 상태를 조회한다.
API 모듈(122)은, Pod들의 실행 상태가 모두 'Running' 상태이면, 컨테이너 오케스트레이션(120)에서 동작 중인 마이크로서비스들에 대해 포트 포워딩을 수행하여, 서비스 레지스트리 및 API Gateway의 서비스 포트를, 제2 yaml 파일 내 타겟 포트로 변환한다.
배포된 서비스들은 서비스 레지스트리에서 확인할 수 있으며, API Gateway를 통하여 접근 가능하다.
도 2는 본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 시스템에서, 선택되는 마이크로서비스 명세 및 조합 명세의 일례를 도시한 도면이다.
도 2에는, 3개의 단일 마이크로서비스 각각의 단일 명세 정보(201)와, 3개의 단일 마이크로서비스의 조합에 대한 조합 명세 정보(202)가 예시된다.
단일 명세 정보(201)에서, id 항목은, 도 1의 마이크로서비스 명세 풀(116)에 등록된 각 단일 명세 정보의 고유 아이디로서, 도 2에서는 id가 각각 '6', '7', '8'로 기재된 3개의 단일 마이크로서비스가 예시되어 있다.
또한 docker_address 항목은, 도 1의 서비스 풀(123)에서의 각 마이크로서비스의 위치를 나타내고, error_handling 항목은, 에러 처리 정책을 나타내고, input_type 항목은, 각 마이크로서비스에 입력되는 데이터 타입을 나타낸다.
또한 method 항목은, HTTP 요청 Method로서, '0'값은 GET, '1'값은 POST, '2'값은 PUT, '3'값은 DELETE, '4'값은 HEAD, '5'값은 OPTION을 나타내며, 도 2에서는 3개의 단일 마이크로서비스의 method가 각각 '1'(POST), '0'(GET), '0'(GET)으로서 예시되어 있다.
또한 name 항목은, 각 마이크로 서비스의 이름을 나타내고, output_type 항목은, 각 마이크로서비스에서 출력되는 데이터 타입을 나타내고, service_id 항목은, 각 마이크로서비스의 고유 아이디를 나타낸다.
또한 type 항목은, 각 마이크로 서비스의 역할을 의미하는 Boundary-Control-Entity 패턴을 나타내고, '0'값은 Boundary(인터페이스 역할), '1'은 Control(연산 동작 제어 역할), '2'값은 Entity(데이터 역할)를 나타낸다.
또한 url 항목은, 각 마이크로서비스의 URL(path)을 나타내고, language 항목은 각 마이크로서비스 구현에 사용된 언어를 나타내고, version 항목은 마이크로서비스 이미지의 버전을 나타내며, 호스트명 항목(미도시)은 Gateway를 따른다.
본 발명의 마이크로서비스 배포 시스템은, 단일 명세 정보(201)에 근거하여, 3개의 단일 마이크로서비스(service_id 6, 7, 8)의 입출력 타입 항목이 모두 string으로 일치하면서, 3개의 단일 마이크로서비스(service_id 6, 7, 8)의 type 항목이 각각 '2', '1', '0'으로서 Entity, Control, Boundary를 나타내므로, 특정 기능을 수행할 수 있는 연결 가능한 서비스 조합으로 판단하고, 서비스 조합의 조합 명세 정보(202)를 작성할 수 있다.
조합 명세 정보(202)에서, service_id 항목은, 서비스 조합을 구성하는 각 마이크로서비스의 리스트로서 각 마이크로서비스의 고유 아이디를 나타내고, combination_config_id 항목은, 조합 명세 정보(202) 고유의 아이디(예, 마이크로서비스 조합의 고유이름)를 나타내고, gateway_docker_address 항목은, 매핑에 의해 서비스 조합에 설정되는 엔드포인트로서, 서비스 풀(123)에서의 조합 게이트웨이의 위치를 나타낸다.
도 3은 본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 시스템의 내부 구성을 도시한 블록도이다.
도 3을 참조하면, 본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 시스템(300)은, 추출부(310), 생성부(320), 배포부(330), 판단부(340), 할당부(350), 매핑부(360) 및 추가부(370)를 포함하여 구성할 수 있다.
추출부(310)는 특정 소프트웨어 구현과 연관된 복수의 마이크로서비스가 클라이언트 단말에 의해 배포 대상으로 선택되면, 상기 복수의 마이크로서비스 각각의 이름 및 서비스 풀(382) 내에서의 위치를 포함하여 작성된 명세 파일을, 명세 풀(381)로부터 추출한다.
상기 특정 소프트웨어 구현을 위해 배포될 상기 복수의 마이크로서비스 각각은, 서비스 풀(382) 내의 지정된 위치에 분산 배치될 수 있다.
명세 풀(381)은 서비스 풀(382) 내 각 마이크로서비스를 설명하는 명세 파일을 보관하고, 또한, 특정 기능이나 소프트웨어를 구현하는 복수 마이크로서비스의 조합에 관한 조합 명세 파일을 보관한다.
상기 명세 파일에는, 상기 마이크로서비스에 대한 이름, 버전, 입력 데이터 타입, 출력 데이터 타입, 에러처리정책, HTTP 요청 메소드, 인터페이스('Boundary')와 연산 제어('Controller') 및 데이터('Entity') 중 어느 하나로 지정되는 BCE 패턴, 상기 마이크로서비스의 서비스 풀(382)에서의 위치(docker_address), 상기 마이크로서비스와 연결 가능한 다른 마이크로서비스의 서비스ID, 및 상기 다른 마이크로서비스와의 약결합(Loosely Coupling)시 사용되는 주소(url) 중 적어도 1개 이상의 항목의 값이 포함될 수 있다.
또한 추출부(310)는 상기 복수의 마이크로서비스의 조합에 할당된 게이트웨이 정보를 포함하여 작성된 조합 명세 파일을, 명세 풀(381)로부터 더 추출한다.
생성부(320)는 상기 명세 파일 및 상기 조합 명세 파일에 근거하여, 컨테이너 오케스트레이션(390)에서 실행 가능한 배포 템플릿(예, 'Service.yaml')을 생성한다.
실시예에 따라, 판단부(340)는 상기 명세 파일에 근거하여, 상기 복수의 마이크로서비스 간 연결 가능 여부를 판단한다.
일례로 상기 명세 파일에는, 상기 마이크로서비스에서 사용되는 입력 데이터 타입 및 출력 데이터 타입이 기재되고, 판단부(340)는 상기 복수의 마이크로서비스 중, 상기 입력 데이터 타입 및 상기 출력 데이터 타입이 일치하는 마이크로서비스의 각각을, 연결 가능한 것으로 판단할 수 있다.
추출부(310)는 상기 복수의 마이크로서비스 중, 연결 가능한 것으로 판단되는 마이크로서비스의 조합에 대해, 상기 조합 명세 파일의 추출을 수행할 수 있다.
이를 통해 본 발명에서는 배포하려는 복수의 마이크로서비스에 대해, 기 작성된 조합 명세 파일이 있으면 이를 활용해 손쉽게 배포 템플릿을 작성할 수 있다.
만일, 명세 풀(381)에, 상기 조합 명세 파일이 존재하지 않은 경우에는 아직 조합이 구성되지 않은 것으로서, 할당부(350)는 상기 마이크로서비스의 조합을 구성하고, 상기 조합에 조합ID 및 게이트웨이 정보를 할당한다.
여기서 게이트웨이 정보는 각 마이크로서비스의 엔드포인트 간 자동 연결을 위해 할당되는 것으로, 매핑부(360)는 상기 조합을 이루는 각 마이크로서비스의 엔드포인트에 상기 게이트웨이 정보를 매핑시켜, 서비스 풀(382) 내에 분산 배치된 상기 각 마이크로서비스가 상기 소프트웨어를 구현하기 위해서 약결합으로 자동 연결되어 구동하도록 기능한다.
추가부(370)는 상기 조합ID 및 게이트웨이 정보와, 상기 마이크로서비스 각각의 서비스ID를 적어도 포함하여, 상기 조합 명세 파일을 작성하고, 상기 작성된 조합 명세 파일을, 명세 풀(381)에 추가한다.
실시예에 따라 추출부(310)는 연결 불가능한 것으로 판단되면, 상기 조합 명세 파일의 추출을 생략할 수 있다. 이 경우 생성부(320)는 상기 복수의 마이크로서비스 중, 연결 불가능한 것으로 판단되는 마이크로서비스의 각각에 대해, 조합 명세 파일 없이 상기 명세 파일에 기재된 값에 근거하여, 상기 배포 템플릿을 생성할 수 있다.
또한 상기 명세 파일에는, 상기 특정 소프트웨어 구현을 위해 상기 마이크로서비스에서 수행하는 역할을 규정한 BCE 패턴이 기재될 수 있다.
상기 BCE 패턴이 규정하는 역할이 외부와의 인터페이스('Boundary')인 마이크로서비스를 제1 서비스, 상기 BCE 패턴이 규정하는 역할이 데이터의 연산 제어('Controller')인 마이크로서비스를 제2 서비스, 및 상기 BCE 패턴이 규정하는 역할이 데이터 보존('Entity')인 마이크로서비스를 제3 서비스로 가정하여, 복수의 마이크로서비스의 명세 파일 내 BCE 패턴에 따라, 서비스 간 연결 가능 여부를 판단하는 과정을 설명한다.
일례로 판단부(340)는 상기 복수의 마이크로서비스로서, 상기 제2 서비스와 상기 제1 서비스가 선택되는 경우, 또는, 상기 제2 서비스와 상기 제3 서비스가 선택되는 경우, 상기 선택된 마이크로서비스 간에 연결 가능한 것으로 판단할 수 있다.
다른 일례로 판단부(340)는 상기 복수의 마이크로서비스로서, 상기 제1 서비스와 상기 제2 서비스 및 상기 제3 서비스가 모두 선택되는 경우, 상기 선택된 마이크로서비스 간에 연결 가능한 것으로 판단할 수 있다. 이 경우, B->C->E의 순서대로, 제1 서비스에서 제2 서비스로 연결되고, 다음에 제3 서비스로 연결될 수 있다.
한편 상기 복수의 마이크로서비스로서, 상기 제2 서비스(Controller)를 제외한, 상기 제1 서비스와 상기 제3 서비스가 선택되는 경우, 판단부(340)는 상기 선택된 마이크로서비스 간에 연결을 불가능한 것으로 판단할 수 있다.
이 경우 생성부(320)는 상기 복수의 마이크로서비스 중, 연결 불가능한 것으로 판단되는 마이크로서비스의 각각에 대해, 조합 명세 파일 없이 각각의 명세 파일에 기재된 값에 근거하여, 상기 배포 템플릿을 생성할 수 있다.
실시예에 따라, 상기 복수의 마이크로서비스 중 제1 마이크로서비스에 관한 상기 명세 파일로부터, 기 배포된 마이크로서비스 중 상기 제1 마이크로서비스와 연결 가능한 다른 마이크로서비스(제2 마이크로서비스의 서비스ID)가 식별되는 경우가 있을 수 있다.
이 경우 클라이언트 단말(개발자)에 의해 선택된 상기 복수의 마이크로서비스 간 조합 외에, 선택된 이미지와 연결된 다른 이미지 간 조합을 구성하는 것도 가능하다.
구체적으로 설명하면, 추출부(310)는 명세 풀(381)로부터 상기 제2 마이크로서비스에 관한 상기 명세 파일을 추출하고, 판단부(340)는 상기 명세 파일에 근거하여, 상기 제1 마이크로서비스와 상기 제2 마이크로서비스 각각이 연결 가능한 서비스인지 판단한다.
여기서 연결 가능한 서비스로 판단되면, 할당부(350)는 상기 제1 마이크로서비스와 상기 제2 마이크로서비스와의 서비스 조합을 구성하고, 상기 서비스 조합에 조합ID 및 게이트웨이 정보를 할당하고, 생성부(320)는, 상기 서비스 조합에 관해 작성되는 조합 명세 파일에 더 근거하여, 상기 배포 템플릿을 생성한다.
일례로 생성부(320)는, 컨테이너 오케스트레이션(390)이 'Kubernetes'인 경우, 상기 명세 파일에 기재된 값 중, 각 마이크로서비스에 대한 이름과, 서비스 풀(382) 내에서의 위치, 및 상기 클라이언트 단말에 의해 입력된 개방 포트를 각각, 컨테이너 이름(name), 마이크로서비스 위치(image), 및 포트주소(ports)로서 지정한 제1 yaml 파일을 생성할 수 있다.
또한 생성부(320)는, 상기 제1 yaml 파일을 통한 상기 각 마이크로서비스의 기능 등록 후에, 상기 제1 yaml 파일 및 상기 조합 명세 파일에 근거하여, 상기 제1 yaml 파일 내 상기 컨테이너 이름(name) 및 포트주소(ports)를 각각, 게이트웨이명('app') 및 타겟주소('targetPort')로서 지정하고, 상기 각 마이크로서비스의 게이트웨이로의 내부 또는 외부 접근 타입을 규정한 데이터를 추가한 제2 yaml 파일을, 상기 배포 템플릿으로서 생성할 수 있다.
만일 컨테이너 오케스트레이션(390)이 'Docker'로 변경되는 경우, 생성부(320)는 그에 맞춰, 상기 제1 yaml 파일 및 상기 제2 yaml 파일이 결합된 단일의 yaml 파일을, 상기 배포 템플릿으로서 생성할 수 있다.
배포부(330)는 상기 배포 템플릿을 컨테이너 오케스트레이션(390)을 통해 실행하여, 상기 게이트웨이 정보를 통해 연결되는 서비스 풀(382) 내 상기 위치의 각 마이크로서비스로 접근 가능하도록, 상기 복수의 마이크로서비스를 배포한다.
컨테이너 오케스트레이션(390)은 제2 yaml 파일('Service.yaml')을 실행하고, 쉘스크립트에 의한 Pod의 실행 상태 검사 및 포트 포워딩 후에 마이크로서비스 배포가 진행된다.
이와 같이, 본 발명에 따르면, 단일 마이크로서비스를 분산 배치해 이들 간의 약결합(Loosely Coupling)으로 소프트웨어를 구동하고 각 데이터베이스도 서비스화시켜 별도로 구성함으로써, 웹 기반의 특정 OS나 데이터베이스에 종속되지 않고, 마이크로서비스의 개발 및 배포를 진행할 수 있다.
본 발명에 따르면, 마이크로서비스를 유형화시킨 후 마이크로서비스 약결합을 반영하는 조합 가능한 후보 마이크로서비스를 함께 배포함으로써, 응답시간을 기반으로 한 배포가 아닌, 마이크로서비스의 특성을 나타내는 명세를 기반으로 마이크로서비스를 배포할 수 있다.
본 발명에 따르면, 마이크로서비스에 대한 단일 명세와 조합 명세를 활용하여, 마이크로서비스의 설계에서 구현, 배포의 전 주기를 지원할 수 있다.
본 발명에 따르면, BCE 패턴을 기반으로 마이크로서비스를 조합함으로써, 컨테이너 가상화 기술을 지원하는 프레임워크인 Docker나 Kubernetes 등의 다양한 컨테이너 오케스트레이션 프레임워크를 활용하여, 마이크로서비스를 배치 및 배포할 수 있다.
도 4는 본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 시스템에 의한 서비스 배포 과정을 도시한 흐름도이다.
도 4를 참조하면, 본 발명에 따른 컨테이너 오케스트레이션 프레임워크로의 서비스 배포 과정은 상술한 마이크로서비스 배포 시스템(100)에 의해 수행될 수 있다.
단계(410)에서 마이크로서비스 배포 시스템(100)은 명세 기반 마이크로서비스 선택을 수행한다.
본 단계에서는 개발자(Client)가 배포할 복수의 단일 마이크로서비스를 선택하면, 복수의 단일 마이크로서비스의 단일 명세 정보를 마이크로서비스 명세 풀(116)로부터 추출(조회)하고, 추출된 단일 명세 정보를 바탕으로 복수의 단일 마이크로서비스의 연결 가능성을 검사하고, 연결 가능한 복수의 단일 마이크로서비스에 대한 조합 명세 정보를 작성하거나, 또는, 이미 작성된 조합 명세 정보를 조합 명세 풀(117)로부터 추출한다.
단계(420)에서 마이크로서비스 배포 시스템(100)은 단일 마이크로서비스 레지스트리 등록을 수행한다.
본 단계에서는, 마이크로서비스 선택 단계(410)에서 선택된 복수의 단일 마이크로서비스에 대한 단일 명세 정보 및 조합 명세 정보를 기반으로, 마이크로서비스 기능 등록 및 서비스 레지스트리 등록을 위한 배포 템플릿으로서 yaml 파일을 생성한다.
도 2와 도 5 및 도 6을 참조하여 yaml 파일 생성 과정을 설명한다.
도 5는 본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 시스템에서, 레지스트리 등록을 위해 생성되는 yaml 파일의 일례를 도시한 도면이다.
도 5에는 컨테이너 오케스트레이션 프레임워크로서 'Kubernetes'를 선택하고, 서비스 레지스트리로서 'Eureka'를 선택하고, API Gateway로서 'Spring Cloud Gateway'를 선택한 배포 환경에서, 명세 기반의 yaml 파일을 JSON 포맷으로 작성하는 일례가 도시된다.
도 5를 참조하면, 마이크로서비스 배포 시스템(100)은 단일 명세 정보 및 조합 명세 정보에 근거하여, 마이크로서비스 기능 등록을 위한 'Deployment.yaml'(501)을 생성하고, 생성된 'Deployment.yaml'(501) 및 조합 명세 정보에 근거하여, 서비스 레지스트리 등록을 위한 'Service.yaml'(502)을 생성할 수 있다. 'Deployment.yaml'(501) 및 'Service.yaml'(502)은 'Kubernetes'라는 컨테이너 기능을 수행하는 요소를 명시한 것이다.
복수의 yaml 파일 중 'Service.yaml'(502)이 컨테이너 오케스트레이션(120)으로 전송되며, 컨테이너 오케스트레이션(120)에서 쉘스크립트에 의한 Pod의 실행 상태 검사 및 포트 포워딩 후에 마이크로서비스 배포가 진행된다.
도 5에서 좌측의 'Deployment.yaml'(501)은, 도 2의 단일 명세 정보(201)에 근거해 작성되는 코드 영역인 "spec"을 가지고 있다. 'Deployment.yaml'(501)의 "spec"에서는, 배포할 마이크로서비스에 해당하는 '컨테이터 생성'을 위해 필요한 "name", "image", "imagePullPolicy", "ports" 등의 항목의 값이 지정될 수 있다.
예를 들어 'Deployment.yaml'(501)에서 "name"(컨테이너 이름)은 단일 명세 정보(201) 내 'name' 항목의 값으로 지정되고, "image"(마이크로서비스 위치)는 단일 명세 정보(201) 내 'docker_address' 항목의 값으로 지정되고, "ports"(포트주소)는, 개발자에 의해 입력된 개방 포트 값(예, '9999')으로 지정될 수 있다.
즉, 마이크로서비스 배포 시스템(100)은 배포할 단일 마이크로서비스에 대해서, 서비스 풀(123) 내 마이크로서비스의 위치 및 접속 포트 주소를 지정하고 'gateway-app'라는 이름의 컨테이너를 생성하는 'Deployment.yaml'(501)을, 명세 정보에 근거해 생성해, 마이크로서비스의 기능 등록(컨테이너 생성)을 수행할 수 있다.
도 5에서 우측의 'Service.yaml'(502)은, 'Deployment.yaml'(501)에 근거해 작성되는 코드 영역인 "spec"을 가지고 있다. 'Service.yaml'(502)의 "spec"에서는, 생성된 '컨테이너의 등록'을 위해 필요한 "type", "ports", "selector" 등의 항목의 값이 지정될 수 있다.
예를 들어 'Service.yaml'(502)에서 "type" 항목은, 마이크로서비스 Gateway로의 내부/외부접근 타입을 나타내고, 컨테이너 오케스트레이션(120)으로서 'Kubernetes'를 적용하는 경우, 마이크로서비스의 Gateway에 외부 및 내부에서 모두 접근 가능하도록 'LoadBalancer' 타입으로 지정될 수 있다.
또한 'Service.yaml'(502)에서의 "ports" 항목 내 'targetPort'는, 'Deployment.yaml'(501)에서의 "ports"(포트주소)(개방 포트값)로 지정되고, "selector" 항목 내 'app'은, 'Deployment.yaml'(501)에서의 "name"(컨테이너 이름)으로 지정될 수 있다.
즉, 마이크로서비스 배포 시스템(100)은 'Service.yaml'(502)의 실행을 통해, 'gateway-app'라는 이름의 컨테이너(배포할 마이크로서비스)를, 서비스 레지스트리에 등록시킬 수 있다. 이때 마이크로서비스 배포 시스템(100)은 API Gateway의 서비스 포트를 타겟 포트(개방 포트값)로 변환하는 포트 포워딩을 수행할 수 있다.
도 6은 본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 시스템에서, 레지스트리 등록을 위해 생성되는 yaml 파일의 다른 일례를 도시한 도면이다.
도 5에서는 컨테이너 오케스트레이션(120)으로서 'Kubernetes'가 적용되는 경우에 생성되는 복수의 yaml 파일(501, 502)을 예시하였으나, 컨테이너 오케스트레이션(120)에 따라 하나의 결합된 yaml 파일(600)이 도 6과 같이 생성될 수 있다.
도 6에는 컨테이너 오케스트레이션(120)으로서 'Docker'가 적용되는 경우의 yaml 파일의 일례가 도시된다. 마이크로서비스 배포 시스템(100)은 단일 명세 정보에 근거해 컨테이너 생성에 필요한 정보들로 yaml 파일을 생성한 후, 서비스 레지스트리 등록에 필요한 타겟 주소 등을 상기 yaml 파일에 추가함으로써, 도 6과 같이 'Docker'에서 해석 가능한 하나의 yaml 파일(예, 'Docker Swarm Service.yaml')(600)을 생성할 수 있다.
따라서 본 발명에 의하면, 도 5에서 설명한 'Kubernetes' 외에, 'Docker' 등 다양한 컨테이너 오케스트레이션 프레임워크를 활용한 마이크로서비스 배포를 구현할 수 있다.
단계(430)에서 마이크로서비스 배포 시스템(100)은 서비스 조합을 이루는 각 마이크로서비스 간 자동 연결을 위한 매핑을 수행한다.
도 2에 도시된 조합 명세 정보(202)를 참조하면, 동일한 조합 고유 아이디('12')에 대응되는 3개의 단일 마이크로서비스(service_id 6, 7, 8)는, 특정 기능을 구현하기 위한 서비스 조합을 구성하고 있다.
그런데 3개의 단일 마이크로서비스(service_id 6, 7, 8)는 서비스 풀(123)에서 분산 배치되어, 서로 다른 엔드포인트를 가지고 있기 때문에, 서비스 조합의 특정 기능 구현을 위해서는 각 마이크로서비스의 엔드포인트 간 연결을 자동화시키는 매핑 작업이 필요하다.
도 2에서 마이크로서비스 배포 시스템(100)은 조합 고유 아이디('12')인 서비스 조합에 이미지 주소('dhd6573/gateway')를 매핑하고 있다.
이에 따라 3개의 단일 마이크로서비스(service_id 6, 7, 8) 각각은, 매핑된 이미지 주소('dhd6573/gateway')에 자동적으로 연결될 수 있다.
즉, 3개의 단일 마이크로서비스(service_id 6, 7, 8)들은 분산 배치되지만, 매핑된 이미지 주소에 자동 연결되므로, 서비스 간 약결합에 의해 동일한 소프트웨어를 구동하거나 특정 기능을 실행하는데 이용될 수 있다.
단계(440)에서 마이크로서비스 배포 시스템(100)은, 상기 단계(420)에서 생성한 배포 템플릿(Service.yaml)을 컨테이너 오케스트레이션(120)으로 전송하면서 API 요청을 발생하고, 단계(450)에서 컨테이너 오케스트레이션(120)은 배포 템플릿(Service.yaml)을 해석하여 배포 환경을 설정하고, 마이크로서비스의 배포를 진행한다.
일례로 컨테이너 오케스트레이션(120)은 쉘스크립트를 이용해 Service.yaml을 실행하여, 마이크로서비스(컨테이너)의 등록과, Pod들의 실행 상태 검사, 및 포트 포워딩과 같은 배포 환경 설정을 수행한 후, 컨테이너를 배포를 수행한다.
마이크로서비스 배포 시스템(100)은 마이크로서비스 배포를 위해 생성된 yaml 파일들을 쉘스크립트를 사용하여 컨테이너 오케스트레이션 프레임워크에 등록하고, Pod 실행 상태를 검사한다.
이에 따라 도 7과 같이 서비스 레지스트리(703)에서는, 배포된 단일 마이크로서비스(등록된 컨테이너)들의 리스트를 확인할 수 있고, API gateway를 통해 접근이 가능해진다.
도 7은 본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 시스템에서, 마이크로서비스의 배포 및 배포 환경 설정 과정을 설명하기 위한 도면이다.
도 7에는 마이크로서비스 배포 시스템(100)에서 'frontend-svc'라는 단일 마이크로서비스의 'Service.yaml'을 컨테이너 오케스트레이션에 등록했을 때의 결과 화면 'response'(701)이 예시되어 있다. 'response'(701)에서는 마이크로서비스 'frontend-svc'의 컨테이너 생성을 알리는 created 상태가 나타나 있다.
마이크로서비스 배포 시스템(100)은 yaml 파일 등록 이후, 쉘스크립트를 실행하여, 컨테이너를 구성하는 Pod들의 실행 상태가 모두 Running 상태인지 조회한다. Pod들은 list 형태로 저장되어 관리된다. 만일 컨테이너의 모든 Pod들의 실행 상태가 Running이 아닌 경우, 마이크로서비스 배포 시스템(100)은 일정 간격으로 Pod 상태를 다시 조회한다.
컨테이너의 모든 Pod들의 실행 상태가 Running이면, 마이크로서비스 배포 시스템(100)은 서비스 레지스트리 및 API Gateway의 서비스 포트를, 'Service.yaml' 내 타겟 포트로 변환하는 포트 포워딩을 수행하여, 서비스들의 서비스 레지스트리 및 API Gateway의 접근을 가능하게 한다. 이러한 포트 포워딩을 수행 후의 결과 화면(702)이 도 7에 예시되어 있다.
지정된 타겟 포트로의 포트 포워딩이 완료되면, 배포된 서비스들은 도 7에 도시된 서비스 레지스트리(703)로부터 확인 가능하다. 이에 따라 포트 포워딩에 의해 API Gateway를 통한 서비스 접근이 가능해진다.
정리하면, 마이크로서비스 배포 시스템(100)은 배포를 위해 선택되는 단일 마이크로서비스(단계(410)를, 명세 풀(116) 내의 단일 명세 정보에 근거하여 레지스트리에 등록한다(단계(420).
이때 서비스 조합을 구성하는 각 마이크로서비스의 엔드포인트 연결 자동화를 위해, API Gateway에 이미지 주소를 매핑하는 작업이 수행된다(단계(430)).
이후 마이크로서비스 배포 시스템(100)은 조합 명세와 API Gateway의 매핑을 통해 생성되는 yaml 파일을 컨테이너 오케스트레이션으로 배포한다(단계(440)).
그러면 컨테이너 오케스트레이션은 yaml 파일을 해석하고, 이후 마이크로서비스 배포 시스템(100)의 요청 발생시, 컨테이너 등록 및 실행 검사를 수행 후, 배포를 진행한다(단계(450)).
도 8은 본 발명에 따른 컨테이너 기반의 마이크로서비스 배포 방법의 순서를 도시한 흐름도이다.
본 실시예에 따른 컨테이너 기반의 마이크로서비스 배포 방법은, 상술한 마이크로서비스 배포 시스템(300)에 의해 수행될 수 있다.
도 8을 참조하면, 단계(810)에서 마이크로서비스 배포 시스템(300)은 특정 소프트웨어 구현과 연관된 복수의 마이크로서비스를 클라이언트 단말로부터 배포 대상으로 선택 입력받는다.
단계(820)에서 마이크로서비스 배포 시스템(300)은 상기 복수의 마이크로서비스 각각에 관해 작성된 명세 파일을, 명세 풀로부터 추출한다.
상기 명세 파일에는, 상기 마이크로서비스에 대한 이름, 버전, 입력 데이터 타입, 출력 데이터 타입, 에러처리정책, HTTP 요청 메소드, 인터페이스('Boundary')와 연산 제어('Controller') 및 데이터('Entity') 중 어느 하나로 지정되는 BCE 패턴, 상기 마이크로서비스의 서비스 풀에서의 위치(docker_address), 상기 마이크로서비스와 연결 가능한 다른 마이크로서비스의 서비스ID, 및 상기 다른 마이크로서비스와의 약결합(Loosely Coupling)시 사용되는 주소(url) 중 적어도 1개 이상의 항목의 값이 포함될 수 있다.
단계(830)에서 마이크로서비스 배포 시스템(300)은 상기 복수의 마이크로서비스의 조합에 관해 작성된 조합 명세 파일을, 상기 명세 풀로부터 더 추출한다.
상기 조합 명세 파일에는, 상기 마이크로서비스의 조합에 할당된 조합ID 및 게이트웨이 정보, 상기 조합ID 및 게이트웨이 정보와, 상기 마이크로서비스 각각의 서비스ID 등이 포함될 수 있다.
단계(840)에서 마이크로서비스 배포 시스템(300)은 상기 명세 파일 및 상기 조합 명세 파일에 기재된 값에 근거하여, 컨테이너 오케스트레이션에서 실행 가능한 배포 템플릿을 생성한다.
일례로 컨테이너 오케스트레이션이 'Kubernetes'인 경우, 마이크로서비스 배포 시스템(300)은 상기 명세 파일에 근거해 각 마이크로서비스의 기능 등록을 위한 제1 yaml 파일을 생성하고, 상기 제1 yaml 파일 및 상기 조합 명세 파일에 근거해 제2 yaml 파일을 상기 배포 템플릿으로서 생성할 수 있다.
상기 제1 yaml 파일 생성시, 제1 yaml 파일 내 컨테이너 이름(name), 마이크로서비스 위치(image), 및 포트주소(ports)는, 각각, 상기 명세 파일 내 각 마이크로서비스에 대한 이름과, 서비스 풀 내에서의 위치, 및 상기 클라이언트 단말에 의해 입력된 개방 포트로 지정될 수 있다.
실제로 컨테이너 오케스트레이션으로 전달되는 배포 템플릿은, 상기 제2 yaml 파일로서, 상기 제2 yaml 파일 내 게이트웨이명('app') 및 타겟주소('targetPort')는, 상기 제1 yaml 파일 내 상기 컨테이너 이름(name) 및 포트주소(ports)로 지정될 수 있고, 또한, 상기 각 마이크로서비스의 게이트웨이로의 내부 또는 외부 접근 타입을 규정한 데이터('LoadBalancer')가 추가될 수 있다.
다른 일례로 상기 컨테이너 오케스트레이션이 'Docker'인 경우, 마이크로서비스 배포 시스템(300)은 상기 제1 yaml 파일 및 상기 제2 yaml 파일이 결합된 단일의 yaml 파일을, 상기 배포 템플릿으로서 생성할 수도 있다.
단계(850)에서 마이크로서비스 배포 시스템(300)은 상기 배포 템플릿(제2 yaml 파일)을 상기 컨테이너 오케스트레이션을 통해 실행하여, 상기 게이트웨이 정보를 통해 연결되는 서비스 풀 내 상기 위치의 각 마이크로서비스로 접근 가능하도록, 상기 복수의 마이크로서비스를 배포한다.
이를 통해 마이크로서비스 배포 시스템(300)은 상기 서비스 풀 내에 분산 배치된 각각의 마이크로서비스를 약결합으로 자동 연결되도록 배포할 수 있으므로, 상기 각 마이크로서비스(의 조합)를 통해 특정 OS나 데이터베이스에 종속되지 않고 소프트웨어의 구현이 가능하게 할 수 있다.
일례로 컨테이너 오케스트레이션은 쉘스크립트를 이용해 제2 yaml 파일(Service.yaml)을 실행하여, 마이크로서비스(컨테이너)의 등록과, Pod들의 실행 상태 검사, 및 포트 포워딩과 같은 배포 환경 설정을 수행한 후, 컨테이너를 배포를 수행한다.
이와 같이, 본 발명에 따르면, 컨테이너 기반 마이크로서비스 구현 및 배포를 위해 BCE 패턴과 마이크로서비스 명세 및 조합 명세를 기반으로 배포 템플릿을 생성하여, 컨테이너 오케스트레이션 프레임워크(예, Kubernetes)를 통해 배포할 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 영구적으로 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.
100: 마이크로서비스 배포 시스템
111: 마이크로서비스 명세 모듈
112: 조합 명세 모듈
113: 명세 처리 모듈
114: 등록 모듈
115: 배포 모듈
116: 마이크로서비스 명세 풀
117: 조합 명세 풀
120: 컨테이너 오케스트레이션
121: API 서버
122: API 모듈
123: 서비스 풀

Claims (15)

  1. 특정 소프트웨어 구현과 연관된 복수의 마이크로서비스가 클라이언트 단말에 의해 배포 대상으로 선택되면,
    상기 복수의 마이크로서비스 각각의 이름 및 서비스 풀 내에서의 위치를 포함하여 작성된 명세 파일을, 명세 풀로부터 추출하는 단계;
    상기 복수의 마이크로서비스의 조합에 할당된 게이트웨이 정보를 포함하여 작성된 조합 명세 파일을, 상기 명세 풀로부터 더 추출하는 단계;
    상기 명세 파일 및 상기 조합 명세 파일에 근거하여, 컨테이너 오케스트레이션(Container Orchestration)에서 실행 가능한 배포 템플릿을 생성하는 단계; 및
    상기 배포 템플릿을 상기 컨테이너 오케스트레이션을 통해 실행하여, 상기 게이트웨이 정보를 통해 연결되는 상기 위치의 각 마이크로서비스로 접근 가능하도록, 상기 복수의 마이크로서비스를 배포하는 단계
    를 포함하는 컨테이너 기반의 마이크로서비스 배포 방법.
  2. 제1항에 있어서,
    상기 명세 파일에 근거하여, 상기 복수의 마이크로서비스 간 연결 가능 여부를 판단하는 단계;
    상기 복수의 마이크로서비스 중, 연결 가능한 것으로 판단되는 마이크로서비스의 조합에 대해, 상기 조합 명세 파일의 추출을 수행하는 단계; 및
    상기 복수의 마이크로서비스 중, 연결 불가능한 것으로 판단되는 마이크로서비스의 각각에 대해, 상기 명세 파일에 기재된 값에 근거하여, 상기 배포 템플릿을 생성하는 단계
    를 더 포함하는 컨테이너 기반의 마이크로서비스 배포 방법.
  3. 제2항에 있어서,
    상기 명세 풀에, 상기 조합 명세 파일이 존재하지 않을 경우,
    상기 마이크로서비스의 조합에 대해, 조합ID 및 게이트웨이 정보를 할당하는 단계;
    상기 조합을 이루는 각 마이크로서비스의 엔드포인트에 상기 게이트웨이 정보를 매핑시켜, 상기 각 마이크로서비스가 자동 연결되도록 하는 단계;
    상기 조합ID 및 게이트웨이 정보와, 상기 마이크로서비스 각각의 서비스ID를 적어도 포함하여, 상기 조합 명세 파일을 작성하는 단계; 및
    상기 작성된 조합 명세 파일을, 상기 명세 풀에 추가하는 단계
    를 더 포함하는 컨테이너 기반의 마이크로서비스 배포 방법.
  4. 제2항에 있어서,
    상기 명세 파일에는, 상기 마이크로서비스에서 사용되는 입력 데이터 타입 및 출력 데이터 타입이 기재되고,
    상기 연결 가능 여부를 판단하는 단계는,
    상기 복수의 마이크로서비스 중, 상기 입력 데이터 타입 및 상기 출력 데이터 타입이 일치하는 마이크로서비스의 각각을, 연결 가능한 것으로 판단하는 단계
    를 포함하는 컨테이너 기반의 마이크로서비스 배포 방법.
  5. 제2항에 있어서,
    상기 명세 파일에는, 상기 특정 소프트웨어 구현을 위해 상기 마이크로서비스에서 수행하는 역할을 규정한 BCE 패턴이 기재되고,
    상기 BCE 패턴이 규정하는 역할이 인터페이스('Boundary')인 마이크로서비스를 제1 서비스, 상기 BCE 패턴이 규정하는 역할이 연산 제어('Controller')인 마이크로서비스를 제2 서비스, 및 상기 BCE 패턴이 규정하는 역할이 데이터('Entity')인 마이크로서비스를 제3 서비스로 가정하면,
    상기 연결 가능 여부를 판단하는 단계는,
    상기 복수의 마이크로서비스로서, 상기 제2 서비스를 제외한, 상기 제1 서비스와 상기 제3 서비스가 선택되는 경우, 상기 선택된 마이크로서비스 간에 연결을 불가능한 것으로 판단하는 단계; 또는
    상기 복수의 마이크로서비스로서, 상기 제2 서비스와 상기 제1 서비스, 또는, 상기 제2 서비스와 상기 제3 서비스가 선택되는 경우, 상기 선택된 마이크로서비스 간에 연결 가능한 것으로 판단하는 단계; 또는
    상기 복수의 마이크로서비스로서, 상기 제1 서비스와 상기 제2 서비스 및 상기 제3 서비스가 선택되는 경우, 상기 선택된 마이크로서비스 간에 연결 가능한 것으로 판단하는 단계
    를 포함하는 컨테이너 기반의 마이크로서비스 배포 방법.
  6. 제1항에 있어서,
    상기 복수의 마이크로서비스 중 제1 마이크로서비스에 관한 상기 명세 파일로부터, 기 배포된 마이크로서비스 중에서 상기 제1 마이크로서비스와 연결 가능한 제2 마이크로서비스의 서비스ID를 식별하는 단계;
    상기 제2 마이크로서비스에 관해 작성된 명세 파일을, 상기 명세 풀로부터 추출하는 단계;
    상기 명세 파일에 근거하여, 상기 제1 마이크로서비스와 상기 제2 마이크로서비스 각각이 연결 가능한 서비스인지 판단하는 단계;
    연결 가능한 서비스로 판단되면,
    상기 제1 마이크로서비스와 상기 제2 마이크로서비스와의 서비스 조합을 구성하고, 상기 서비스 조합에 조합ID 및 게이트웨이 정보를 할당하는 단계; 및
    상기 서비스 조합에 관해 작성되는 조합 명세 파일에 더 근거하여, 상기 배포 템플릿을 생성하는 단계
    를 더 포함하는 컨테이너 기반의 마이크로서비스 배포 방법.
  7. 제1항에 있어서,
    상기 특정 소프트웨어 구현을 위해 배포될 상기 복수의 마이크로서비스 각각은, 서비스 풀 내의 지정된 위치에 분산 배치되고,
    상기 컨테이너 오케스트레이션이 'Kubernetes'인 경우,
    상기 배포 템플릿을 생성하는 단계는,
    상기 명세 파일에 기재된 값 중, 각 마이크로서비스에 대한 이름과, 서비스 풀 내에서의 위치, 및 상기 클라이언트 단말에 의해 입력된 개방 포트를 각각, 컨테이너 이름(name), 마이크로서비스 위치(image), 및 포트주소(ports)로서 지정한 제1 yaml 파일을 생성하는 단계; 및
    상기 제1 yaml 파일을 통한 상기 각 마이크로서비스의 기능 등록 후에,
    상기 제1 yaml 파일 및 상기 조합 명세 파일에 근거하여, 상기 제1 yaml 파일 내 상기 컨테이너 이름(name) 및 포트주소(ports)를 각각, 게이트웨이명('app') 및 타겟주소('targetPort')로서 지정하고, 상기 각 마이크로서비스의 게이트웨이로의 내부 또는 외부 접근 타입을 규정한 데이터를 추가한 제2 yaml 파일을, 상기 배포 템플릿으로서 생성하는 단계
    를 포함하는 컨테이너 기반의 마이크로서비스 배포 방법.
  8. 제7항에 있어서,
    상기 컨테이너 오케스트레이션이 'Docker'인 경우,
    상기 배포 템플릿을 생성하는 단계는,
    상기 제1 yaml 파일 및 상기 제2 yaml 파일이 결합된 단일의 yaml 파일을, 상기 배포 템플릿으로서 생성하는 단계
    를 더 포함하는 컨테이너 기반의 마이크로서비스 배포 방법.
  9. 제1항에 있어서,
    상기 명세 파일에는,
    상기 마이크로서비스에 대한 이름, 버전, 입력 데이터 타입, 출력 데이터 타입, 에러처리정책, HTTP 요청 메소드, 인터페이스('Boundary')와 연산 제어('Controller') 및 데이터('Entity') 중 어느 하나로 지정되는 BCE 패턴, 상기 마이크로서비스의 서비스 풀에서의 위치(docker_address), 상기 마이크로서비스와 연결 가능한 다른 마이크로서비스의 서비스ID, 및 상기 다른 마이크로서비스와의 약결합(Loosely Coupling)시 사용되는 주소(url) 중 적어도 1개 이상의 항목의 값이 포함되는,
    컨테이너 기반의 마이크로서비스 배포 방법.
  10. 특정 소프트웨어 구현과 연관된 복수의 마이크로서비스가 클라이언트 단말에 의해 배포 대상으로 선택되면,
    상기 복수의 마이크로서비스 각각의 이름 및 서비스 풀 내에서의 위치를 포함하여 작성된 명세 파일을, 명세 풀로부터 추출하고, 상기 복수의 마이크로서비스의 조합에 할당된 게이트웨이 정보를 포함하여 작성된 조합 명세 파일을, 상기 명세 풀로부터 더 추출하는 추출부;
    상기 명세 파일 및 상기 조합 명세 파일에 근거하여, 컨테이너 오케스트레이션에서 실행 가능한 배포 템플릿을 생성하는 생성부; 및
    상기 배포 템플릿을 상기 컨테이너 오케스트레이션을 통해 실행하여, 상기 게이트웨이 정보를 통해 연결되는 상기 위치의 각 마이크로서비스로 접근 가능하도록, 상기 복수의 마이크로서비스를 배포하는 배포부
    를 포함하는 컨테이너 기반의 마이크로서비스 배포 시스템.
  11. 제10항에 있어서,
    상기 명세 파일에 근거하여, 상기 복수의 마이크로서비스 간 연결 가능 여부를 판단하는 판단부
    를 더 포함하고,
    상기 추출부는,
    상기 복수의 마이크로서비스 중, 연결 가능한 것으로 판단되는 마이크로서비스의 조합에 대해, 상기 조합 명세 파일의 추출을 수행하고,
    상기 생성부는,
    상기 복수의 마이크로서비스 중, 연결 불가능한 것으로 판단되는 마이크로서비스의 각각에 대해, 상기 명세 파일에 기재된 값에 근거하여, 상기 배포 템플릿을 생성하는
    컨테이너 기반의 마이크로서비스 배포 시스템.
  12. 제11항에 있어서,
    상기 명세 풀에, 상기 조합 명세 파일이 존재하지 않을 경우,
    상기 마이크로서비스의 조합에 대해, 조합ID 및 게이트웨이 정보를 할당하는 할당부;
    상기 조합을 이루는 각 마이크로서비스의 엔드포인트에 상기 게이트웨이 정보를 매핑시켜, 상기 각 마이크로서비스가 자동 연결되도록 하는 매핑부; 및
    상기 조합ID 및 게이트웨이 정보와, 상기 마이크로서비스 각각의 서비스ID를 적어도 포함하여, 상기 조합 명세 파일을 작성하고, 상기 작성된 조합 명세 파일을, 상기 명세 풀에 추가하는 추가부
    를 더 포함하는 컨테이너 기반의 마이크로서비스 배포 시스템.
  13. 제11항에 있어서,
    상기 명세 파일에는, 상기 마이크로서비스에서 사용되는 입력 데이터 타입 및 출력 데이터 타입이 기재되고,
    상기 판단부는,
    상기 복수의 마이크로서비스 중, 상기 입력 데이터 타입 및 상기 출력 데이터 타입이 일치하는 마이크로서비스의 각각을, 연결 가능한 것으로 판단하는
    컨테이너 기반의 마이크로서비스 배포 시스템.
  14. 제11항에 있어서,
    상기 명세 파일에는, 상기 특정 소프트웨어 구현을 위해 상기 마이크로서비스에서 수행하는 역할을 규정한 BCE 패턴이 기재되고,
    상기 BCE 패턴이 규정하는 역할이 외부와의 인터페이스('Boundary')인 마이크로서비스를 제1 서비스, 상기 BCE 패턴이 규정하는 역할이 데이터의 연산 제어('Controller')인 마이크로서비스를 제2 서비스, 및 상기 BCE 패턴이 규정하는 역할이 데이터 보존('Entity')인 마이크로서비스를 제3 서비스로 가정하면,
    상기 판단부는,
    상기 복수의 마이크로서비스로서, 상기 제2 서비스를 제외한, 상기 제1 서비스와 상기 제3 서비스가 선택되는 경우, 상기 선택된 마이크로서비스 간에 연결을 불가능한 것으로 판단하고,
    상기 복수의 마이크로서비스로서, 상기 제2 서비스와 상기 제1 서비스, 또는, 상기 제2 서비스와 상기 제3 서비스가 선택되는 경우, 상기 선택된 마이크로서비스 간에 연결 가능한 것으로 판단하고,
    상기 복수의 마이크로서비스로서, 상기 제1 서비스와 상기 제2 서비스 및 상기 제3 서비스가 선택되는 경우, 상기 선택된 마이크로서비스 간에 연결 가능한 것으로 판단하는
    컨테이너 기반의 마이크로서비스 배포 시스템.
  15. 제1항 내지 제9항 중 어느 한 항의 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
KR1020220109293A 2022-08-30 컨테이너 기반의 마이크로서비스 배포 방법 및 시스템 KR102674306B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220109293A KR102674306B1 (ko) 2022-08-30 컨테이너 기반의 마이크로서비스 배포 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220109293A KR102674306B1 (ko) 2022-08-30 컨테이너 기반의 마이크로서비스 배포 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20240030358A true KR20240030358A (ko) 2024-03-07
KR102674306B1 KR102674306B1 (ko) 2024-06-11

Family

ID=

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101262234B1 (ko) 2009-11-09 2013-05-15 한국전자통신연구원 웹 기반 소프트웨어 배포 시스템 및 방법
KR102368165B1 (ko) 2020-11-04 2022-02-28 한국과학기술원 엣지 컴퓨팅 환경에서 비용을 고려한 마이크로서비스 기반 어플리케이션 배포 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101262234B1 (ko) 2009-11-09 2013-05-15 한국전자통신연구원 웹 기반 소프트웨어 배포 시스템 및 방법
KR102368165B1 (ko) 2020-11-04 2022-02-28 한국과학기술원 엣지 컴퓨팅 환경에서 비용을 고려한 마이크로서비스 기반 어플리케이션 배포 방법

Similar Documents

Publication Publication Date Title
US20210314223A1 (en) Managing Virtual Network Functions
US10860339B2 (en) Autonomous creation of new microservices and modification of existing microservices
CN107580083B (zh) 一种容器ip地址分配的方法和系统
US20200159573A1 (en) Methods and apparatus to automate deployments of software defined data centers
US20190082004A1 (en) Systems and methods for instantiating services on top of services
CN102402446B (zh) 应用软件的安装方法和应用软件的安装装置
US20170052807A1 (en) Methods, apparatuses, and computer program products for deploying and managing software containers
US8464246B2 (en) Automation of mainframe software deployment
US11163669B1 (en) Measuring test coverage during phased deployments of software updates
JP5352890B2 (ja) 計算機システムの運用管理方法、計算機システム及びプログラムを記憶する計算機読み取り可能な媒体
US9996331B1 (en) Customized application state transition
US10057122B1 (en) Methods, systems, and computer readable mediums for system configuration optimization
CN105793820A (zh) 用于管理虚拟机的方法和装置
Lu et al. Pattern-based deployment service for next generation clouds
US10013340B1 (en) Testing in virtualized computing environments
US10146519B2 (en) Generation and deployment of scripts for large scale processing framework services
US11327750B1 (en) Domain-driven application breakout
US20150347170A1 (en) Grouping virtual machines in a cloud application
US20230418623A1 (en) Application remodeling method, system, cluster, medium, and program product
US8856775B2 (en) Unstacking software components for migration to virtualized environments
Marshall Mastering VMware VSphere 6
CN111045780A (zh) 一种适用于跨kubernetes集群的应用迁移方法
US11593103B1 (en) Anti-pattern detection in extraction and deployment of a microservice
KR102674306B1 (ko) 컨테이너 기반의 마이크로서비스 배포 방법 및 시스템
KR20240030358A (ko) 컨테이너 기반의 마이크로서비스 배포 방법 및 시스템