KR20200131375A - A method for containerization of a server application and computer system performing the same - Google Patents

A method for containerization of a server application and computer system performing the same Download PDF

Info

Publication number
KR20200131375A
KR20200131375A KR1020190055605A KR20190055605A KR20200131375A KR 20200131375 A KR20200131375 A KR 20200131375A KR 1020190055605 A KR1020190055605 A KR 1020190055605A KR 20190055605 A KR20190055605 A KR 20190055605A KR 20200131375 A KR20200131375 A KR 20200131375A
Authority
KR
South Korea
Prior art keywords
container
image
server
host server
access
Prior art date
Application number
KR1020190055605A
Other languages
Korean (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 KR1020190055605A priority Critical patent/KR20200131375A/en
Publication of KR20200131375A publication Critical patent/KR20200131375A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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
    • 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/45562Creating, deleting, cloning virtual machine instances
    • 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/4557Distribution of virtual machine instances; Migration and load balancing

Abstract

Disclosed is a server application containerization method for allocating server computing resources by user so as to solve problems of server application sharing in an existing server-client distributed computing system. The server application containerization method, which is performed by a network computer system including a container image storage for storing an image of an application, a VPN server and a host server, comprises the following steps of: receiving, by the VPN server, a request for accessing the application from a user terminal and transmitting a container generation request for the user terminal to the host server; generating, by the host server, a container of the application from the image in response to the container generation request received from the VPN server; allocating, by the host server, an access IP to the generated container, and generating container access information that maps the container access IP and the user terminal to transmit the same to the VPN server; and transmitting, by the VPN server, the container access information including DNS information to the user terminal.

Description

서버 애플리케이션 컨테이너화 방법 및 이를 수행하는 컴퓨터 시스템{A METHOD FOR CONTAINERIZATION OF A SERVER APPLICATION AND COMPUTER SYSTEM PERFORMING THE SAME}Server application containerization method and computer system that performs it {A METHOD FOR CONTAINERIZATION OF A SERVER APPLICATION AND COMPUTER SYSTEM PERFORMING THE SAME}

본 발명은 애플리케이션의 컨테이너화에 관한 것으로, 보다 상세하게는, VPN 서버를 사용하여 복수의 사용자에게 각각 특정 애플리케이션을 컨테이너화하여 할당하고, 각각의 컨테이너의 세션 유지 여부에 따라 이미지 및 컨테이너의 파기 및 유지 여부를 결정하는 애플리케이션의 컨테이너화 방법 및 이를 수행하는 컴퓨터 시스템에 관한 것이다.The present invention relates to containerization of applications, and more particularly, containerization and allocation of specific applications to a plurality of users using a VPN server, and destruction and maintenance of images and containers according to whether or not sessions of each container are maintained. It relates to a containerization method of an application that determines the method and a computer system that performs the same.

최근 컴퓨터 기술의 발전으로 복잡하고 다양한 종류의 태스크가 컴퓨터 시스템에 의해 처리되고 있다. 분산형 컴퓨팅 환경은 컴퓨팅에 필요한 자원을 복수의 컴퓨터 장치에 분산시켜 처리속도와 자원배분 효율을 향상시킬 수 있는 기술로, 널리 사용되고 있다. 특히, 서버-클라이언트 분산형 컴퓨팅 환경에서는, 특정의 작업을 수행하기 위한기능을 서버와 클라이언트에 적절히 나누어 배분하는데, 이때 서버에서 실행되는 애플리케이션은 복수의 클라이언트에 의해 사용될 수 있다. 즉, 복수의 사용자 단말은 서버에 접속하여 서버에서 제공되는 동일한 애플리케이션을 통해 원하는 작업을 수행하게 된다. With the recent development of computer technology, complex and various kinds of tasks are being processed by computer systems. The distributed computing environment is a technology capable of improving processing speed and resource allocation efficiency by distributing resources necessary for computing across a plurality of computer devices, and is widely used. Particularly, in a server-client distributed computing environment, functions for performing a specific task are appropriately divided and distributed to a server and a client. In this case, an application running on the server can be used by a plurality of clients. That is, a plurality of user terminals access the server and perform desired tasks through the same application provided by the server.

이와 같은 서버-클라이언트 분산형 컴퓨팅 시스템에서, 다수의 사용자 단말에 의해 서버 애플리케이션이 실행되면, 사용자 단말마다 동일한 서버 애플리케이션에 의해 처리하고자 하는 프로세스가 달라, 특정 사용자에게 자원이 집중되는 현상이 발생할 수 있다. 서버의 컴퓨팅 자원이 특정 사용자에게 집중 할당되면, 서버 전체의 처리 부하가 증가되어 처리속도가 현저히 저하되거나, 심하면 서버 시스템이 다운되는 등의 문제가 발생할 수 있다.In such a server-client distributed computing system, when a server application is executed by a plurality of user terminals, the process to be processed by the same server application is different for each user terminal, and a phenomenon in which resources are concentrated on a specific user may occur. . When the computing resources of the server are intensively allocated to a specific user, the processing load of the server as a whole increases and the processing speed is significantly lowered or, in extreme cases, the server system is down.

이와 같은 종래 서버-클라이언트 분산형 컴퓨팅 시스템의 서버 애플리케이션 공유의 문제점을 해결하기 위해, 서버 애플리케이션을 컨테이너화하여 자원을 할당하는 애플리케이션의 일부분을 구비하는 하나 이상의 클라이언트 시스템(예를 들어, GUI 소자, 처리 소자(클라이언트 애플리케이션)), 분산형 애플리케이션의 나머지 부분을 구비하는 서버계 시스템(서버 애플리케이션 또는 서버 소자), 및 클라이언트 시스템과 서버 시스템 사이에서 데이터를 교환(예를 들어, 애플리케이션 데이터용 저장소를 제공)하는 제 3 티어 서버 시스템(third tier server system)으로 구성된다. 예를 들어, SAP R/3(SAP의 상표)은 애플리케이션이 클라이언트 부분(예를 들면, IBM 싱크패드와 같은 워크스테이션 상에서 구동됨)과 다수의 서버 부분(예를 들어, IBM zSeries 메인프레임 시스템 상에서 구동됨)으로 분할되는 분산형 애플리케이션의 전형적인 예이다.j폰, 태블릿 등의 다양한 휴대용 컴퓨팅 장치의 보급으로 인하여 다양한 형태의 애플리케이션이 개발되어 배포되고 있다. 한편, 컴퓨팅 장치의 운영체제 역시 다양화되고 있다. 이와 같은 IT 기술의 급속한 발전으로 인해, 애플리케이션의 빠른 개발 및 배포를 가능하게 하는 애플리케이션 개발 운영 환경이 요구되고 있다.In order to solve the problem of sharing server applications in such a conventional server-client distributed computing system, one or more client systems (eg, GUI elements, processing elements) having a portion of an application that allocates resources by containerizing a server application (Client application)), a server-based system (server application or server element) having the rest of the distributed application, and exchanging data between the client system and the server system (for example, providing storage for application data). It consists of a third tier server system. For example, SAP R/3 (a trademark of SAP) allows the application to run on a client portion (e.g., on a workstation such as an IBM sinkpad) and multiple server portions (e.g. on an IBM zSeries mainframe system). Driven) is a typical example of a distributed application. Due to the spread of various portable computing devices such as j phones and tablets, various types of applications have been developed and distributed. Meanwhile, operating systems of computing devices are also diversifying. Due to such rapid development of IT technology, an application development operating environment that enables rapid development and distribution of applications is required.

본 발명은 이와 같은 종래 서버-클라이언트 분산형 컴퓨팅 시스템의 서버 애플리케이션 공유의 문제점을 해결하기 위한 것으로, 서버 애플리케이션을 컨테이너화하여 사용자별로 서버 컴퓨팅 자원을 할당하는 네트워크 컴퓨터 시스템 및 방법을 제공하는 것을 목적으로 한다.The present invention is to solve the problem of server application sharing in the conventional server-client distributed computing system, and an object of the present invention is to provide a network computer system and method for allocating server computing resources for each user by containerizing server applications. .

또한, 서버 애플리케이션의 컨테이너화에 있어서, 사용자별 컨테이너 할당의 효율성 및 보안을 강화하는 것을 목적으로 한다.In addition, in containerization of server applications, it is an object to enhance the efficiency and security of container allocation for each user.

본 발명의 또 다른 목적은 서버 애플리케이션의 컨테이너화의 기초가 되는 이미지의 업데이트시, 이미 생성된 컨테이너의 세션을 유지하여 서버 애플리케이션 실행의 안정성을 강화하는 것이다.Another object of the present invention is to enhance the stability of server application execution by maintaining a session of an already created container when an image, which is a basis for containerization of a server application, is updated.

본 발명의 일 실시예에 따른 컨테이너화 방법은, 애플리케이션의 이미지를 저장하는 컨테이너 이미지 저장소, VPN 서버 및 호스트 서버를 포함하는 네트워크 컴퓨터 시스템에서 수행되며, 상기 VPN서버가 사용자 단말로부터 상기 애플리케이션으로의 액세스 요청을 수신하고, 상기 사용자 단말에 대한 컨테이너 생성 요청을 상기 호스트 서버로 전송하는 단계; 상기 호스트 서버가, 상기 VPN 서버로부터 수신된 상기 컨테이너 생성 요청에 응답하여 상기 이미지로부터 상기 애플리케이션의 컨테이너를 생성하는 단계; 상기 호스트 서버가, 상기 생성된 컨테이너에 접속 IP를 할당하고, 상기 접속 IP의 DNS 정보를 생성하여 상기 VPN 서버로 전송하는 단계; 및 상기 VPN 서버가, 상기 DNS 정보를 포함하는 컨테이너 접속 정보를 상기 사용자 단말에 전송하는 단계를 포함한다.The containerization method according to an embodiment of the present invention is performed in a network computer system including a container image storage storing an image of an application, a VPN server, and a host server, and the VPN server requests access to the application from a user terminal. Receiving and transmitting a container creation request for the user terminal to the host server; Generating, by the host server, a container of the application from the image in response to the container creation request received from the VPN server; Assigning, by the host server, an access IP to the created container, generating DNS information of the access IP, and transmitting the DNS information to the VPN server; And transmitting, by the VPN server, container access information including the DNS information to the user terminal.

상기 컨테이너화 방법은, 상기 VPN 서버가, 상기 사용자 단말로부터 접속 IP에 대응하는 DNS 정보를 수신하고, 상기 컨테이너의 호출을 상기 호스트 서버에 전송하는 단계; 상기 호스트 서버는 상기 컨테이너 호출에 응답하여, 상기 이미지의 업데이트 여부를 판정하는 단계; 및 상기 호스트 서버는, 상기 이미지가 업데이트된 것으로 판정되면, 업데이트된 이미지로부터 컨테이너를 재생성하고, 상기 재생성된 컨테이너에 상기 접속 IP를 할당하는 단계를 더 포함할 수 있다.The containerization method includes the steps of: receiving, by the VPN server, DNS information corresponding to an access IP from the user terminal, and transmitting a call of the container to the host server; Determining, by the host server, whether to update the image in response to the container call; And when it is determined that the image is updated, the host server regenerating a container from the updated image and allocating the access IP to the regenerated container.

이때, 상기 컨테이너화 방법은, 상기 호스트 서버가, 상기 이미지 저장소에 저장된 상기 이미지를 업데이트하는 단계; 및 상기 이미지 변경이 감지된 시점에서 업데이트 전의 이미지를 기초로 생성된 복수의 컨테이너의 세션이 유지 중인지 판정하는 단계를 더 포함할 수 있으며, 상기 업데이트 전의 이미지를 기초로 생성된 복수의 컨테이너 중, 적어도 하나 이상의 세션이 유지 중인 경우에는 업데이트 전의 이미지를 파기하지 않고 유지시킬 수 있다.In this case, the containerization method includes: updating, by the host server, the image stored in the image storage; And determining whether sessions of the plurality of containers generated based on the image before the update are being maintained at the time when the image change is detected, at least among the plurality of containers generated based on the image before the update. If more than one session is being maintained, the image before the update can be maintained without destroying it.

한편, 호스트 서버는 상기 업데이트 전의 이미지를 기초로 생성된 복수의 컨테이너 전부의 세션이 종료된 경우에는 상기 업데이트 전의 이미지를 파기할 수 있다.Meanwhile, when the session of all the plurality of containers generated based on the image before the update is terminated, the host server may destroy the image before the update.

또한, 상기 호스트 서버는 상기 업데이트 전의 이미지를 기초로 생성된 복수의 컨테이너 중, 세션이 종료된 컨테이너는 파기할 수 있다.In addition, the host server may destroy a container in which a session is terminated among a plurality of containers generated based on the image before the update.

도 1은 본 발명의 일 실시예에 따른 네트워크 컴퓨터 시스템을 도시한 블록도이다.
도 2는 도 1의 시스템에 의해 수행되는 애플리케이션의 컨테이너화 방법을 도시한 흐름도이다.
도 3은 도 2의 방법으로 생성된 컨테이너가 복수의 사용자 단말에 할당된 상태를 나타낸 다이어그램이다
도 4는 도 2의 방법으로 생성된 컨테이너로의 액세스 요청을 처리하는 과정을 도시한 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 이미지의 업데이트시의 처리과정을 도시한 흐름도이다.
1 is a block diagram showing a network computer system according to an embodiment of the present invention.
2 is a flowchart illustrating a method for containerizing an application executed by the system of FIG. 1.
3 is a diagram showing a state in which containers created by the method of FIG. 2 are allocated to a plurality of user terminals
FIG. 4 is a flowchart illustrating a process of processing an access request to a container created by the method of FIG. 2.
5 is a flowchart illustrating a processing procedure when an image is updated according to an embodiment of the present invention.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조 부호를 유사한 구성 요소에 대해 사용하였다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 과장하여 도시한 것일 수 있다. In the present invention, various modifications may be made and various forms may be applied, and specific embodiments will be illustrated in the drawings and described in detail in the text. However, this is not intended to limit the present invention to a specific form disclosed, it should be understood to include all changes, equivalents, and substitutes included in the spirit and scope of the present invention. In describing each drawing, similar reference numerals are used for similar components. In the accompanying drawings, dimensions of structures may be exaggerated than actual for clarity of the present invention.

제1, 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다. Terms such as first and second may be used to describe various components, but the components should not be limited by the terms. These terms are only used for the purpose of distinguishing one component from another component. For example, without departing from the scope of the present invention, a first component may be referred to as a second component, and similarly, a second component may be referred to as a first component.

본 출원에서 사용한 용어는 단지 특정한 실시예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 또한, A와 B가'연결된다', '결합된다'라는 의미는 A와 B가 직접적으로 연결되거나 결합하는 것 이외에 다른 구성요소 C가 A와 B 사이에 포함되어 A와 B가 연결되거나 결합되는 것을 포함하는 것이다.The terms used in the present application are only used to describe specific embodiments, and are not intended to limit the present invention. Singular expressions include plural expressions unless the context clearly indicates otherwise. In the present application, terms such as "comprise" or "have" are intended to designate the presence of features, numbers, steps, actions, components, parts, or a combination thereof described in the specification, but one or more other features or It is to be understood that the presence or addition of numbers, steps, actions, components, parts, or combinations thereof does not preclude the possibility of preliminary exclusion. In addition, A and B are'connected' and'coupled' means that A and B are directly connected or combined, and other components C are included between A and B, so that A and B are connected or combined. To include that.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 또한, 방법 발명에 대한 특허청구범위에서, 각 단계가 명확하게 순서에 구속되지 않는 한, 각 단계들은 그 순서가 서로 바뀔 수도 있다.Unless otherwise defined, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which the present invention belongs. Terms as defined in a commonly used dictionary should be interpreted as having a meaning consistent with the meaning in the context of the related technology, and should not be interpreted as an ideal or excessively formal meaning unless explicitly defined in this application. Does not. Further, in the claims for the method invention, the order of each step may be interchanged with each other, as long as each step is not clearly bound to the order.

이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예들을 보다 상세하게 설명한다.Hereinafter, preferred embodiments of the present invention will be described in more detail with reference to the accompanying drawings.

도 1은 본 발명의 일 실시예에 따른 네트워크 컴퓨터 시스템을 도시한 블록도이다.1 is a block diagram showing a network computer system according to an embodiment of the present invention.

도 1을 참조하면, 네트워크 컴퓨터 시스템은 복수의 사용자 단말(10), 이미지 저장소(20), VPN 서버(30), 및 호스트 서버(40)을 포함한다.Referring to FIG. 1, the network computer system includes a plurality of user terminals 10, an image storage 20, a VPN server 30, and a host server 40.

이미지 저장소(20)는 애플리케이션의 컨테이너 이미지를 저장 및 관리하기 위한 장치로서, 하드 디스크, SSD(Solid State Drive) 등의 저장매체일 수 있다. 구체적으로, 이미지 저장소(20)는 호스트 서버(40) 또는 외부의 개발자 장치 등으로부터 전송된 이미지를 수신하여 저장할 수 있다. 그리고, 이미지 저장소(20)는 호스트 서버(10)가 이미지를 풀링(pulling)할 수 있도록 이미지를 전송할 수 있다. 이미지 저장소(20)는 개방형(public) 저장소 또는 사설(private) 저장소일 수 있다.The image storage 20 is a device for storing and managing a container image of an application, and may be a storage medium such as a hard disk or a solid state drive (SSD). Specifically, the image storage 20 may receive and store an image transmitted from the host server 40 or an external developer device. In addition, the image storage 20 may transmit an image so that the host server 10 can pull the image. The image storage 20 may be a public storage or a private storage.

이미지는 정보처리 기술(IT) 인프라 상의 독립된 프로세스를 수행할 수 있도록, 실행 가능한 코드를 포함하는 수정 불가능하며 정적인 파일이다. 본 명세서에서 이미지라 함은, 특정 애플리케이션에 대응하는 패키지로서, 애플리케이션의 프로세스들의 수행을 위한 시스템 라이브러리들과, 시스템 도구 및 각종 설정 파일 등을 포함하는 패키지를 뜻한다. 이와 같은 이미지는 가상화 엔진의 빌드 명령에 의하여 생성될 수 있다. 이미지는 읽기 전용일 수도 있고 읽기와 쓰기가 가능하도록 설정될 수도 있다. 이미지는 후술할 컨테이너를 생성하는 데 이용된다. 즉, 본 발명의 호스트 서버(40)는 이미지 저장소에 저장된 이미지를 기초로 애플리케이션 컨테이너를 생성한다. 하나의 이미지는 하나의 컨테이너를 생성하는데 이용될 수도 있고, 복수의 컨테이너를 생성하는데 이용될 수도 있다. 본 발명의 일실시예에 따르면, 호스트 서버(40)는 하나의 애플리케이션 이미지를 기초로 복수의 사용자 각각에 대하여 할당되는 복수의 컨테이너를 생성하도록 구성된다. An image is an unmodifiable and static file containing executable code so that independent processes on an information processing technology (IT) infrastructure can be performed. In the present specification, an image is a package corresponding to a specific application, and means a package including system libraries for executing processes of an application, system tools, and various configuration files. Such an image can be created by the build command of the virtualization engine. Images can be read-only or set to be read and writeable. The image is used to create a container to be described later. That is, the host server 40 of the present invention creates an application container based on the image stored in the image storage. One image may be used to create one container, or may be used to create a plurality of containers. According to an embodiment of the present invention, the host server 40 is configured to create a plurality of containers allocated to each of a plurality of users based on one application image.

이미지는 호스트 서버(40) 외부의 개발자 장치 등 다양한 외부 장치에 의하여 빌드될 수 있다. 외부 장치는 호스트 서버(40) 이외의 다양한 개발 플랫폼이 구비된 컴퓨팅 장치를 말한다. 이 경우, 개발자 장치 등의 외부 장치는 빌드한 이미지를 이미지 저장소(20)에 전송한다.The image may be built by various external devices such as a developer device outside the host server 40. The external device refers to a computing device equipped with various development platforms other than the host server 40. In this case, an external device such as a developer device transmits the built image to the image storage 20.

다른 예로서, 이미지 저장소(20)에 저장된 이미지는 외부의 개발자 장치의 명령에 따라, 호스트 서버상(40) 상에서 빌드된 것일 수도 있다. 이 때, 호스트 서버(40)는 빌드된 이미지를 이미지 저장소(20)에 전송할 수 있다. 호스트 서버(40)는 이미지 저장소(20)로부터 이미지를 풀링(pulling)할 수 있다.As another example, the image stored in the image storage 20 may be built on the host server 40 according to a command of an external developer device. In this case, the host server 40 may transmit the built image to the image storage 20. The host server 40 can pull an image from the image storage 20.

VPN 서버(30)는, 가상 사설 네트워크를 구성하는 서버로서, 사용자의 인터넷 트래픽을 리디렉션하고 IP 주소를 숨기거나 주고받는 데이터를 암호화하는 기능을 수행한다. 본 발명의 일 실시예에 따르면, VPN 서버(30)는, 상기 사용자 단말(10)로부터 상기 애플리케이션으로의 액세스 요청을 수신한다. The VPN server 30 is a server constituting a virtual private network and performs a function of redirecting Internet traffic of a user, hiding an IP address, or encrypting data exchanged. According to an embodiment of the present invention, the VPN server 30 receives a request for access to the application from the user terminal 10.

상기 사용자 단말(10)로부터 상기 애플리케이션으로의 액세스 요청을 수신한 VPN서버(40)는 액세스 요청을 전송한 사용자 단말(10)이 호스트 서버에 등록된 사용자 단말(10)인지 인증한다.The VPN server 40 receiving the request for access to the application from the user terminal 10 authenticates whether the user terminal 10 that transmitted the access request is the user terminal 10 registered in the host server.

사용자 단말(10)이 호스트 서버에 등록된 사용자 단말(10)인 경우, VPN서버(40)는 상기 사용자 단말(10)에 대한 컨테이너 생성 요청을 호스트 서버(40)로 전송한다. When the user terminal 10 is the user terminal 10 registered in the host server, the VPN server 40 transmits a container creation request for the user terminal 10 to the host server 40.

사용자 단말(10)이 호스트 서버에 등록되지 않은 경우, VPN 서버는 해당 사용자 단말(10)을 호스트 서버(40)에 등록하기 위한 절차를 수행한다. 예컨대, VPN 서버는 사용자 단말(10)을 호스트 서버(40)에서 제공하는 사용등록 웹페이지에 접속시킬 수 있다. When the user terminal 10 is not registered with the host server, the VPN server performs a procedure for registering the user terminal 10 with the host server 40. For example, the VPN server may connect the user terminal 10 to a user registration web page provided by the host server 40.

호스트 서버(40)는 상기 VPN 서버(30)로부터 상기 컨테이너 생성 요청을 수신하고, 상기 컨테이너 생성 요청에 응답하여 상기 컨테이너 이미지로부터 상기 애플리케이션의 컨테이너를 생성하며, 상기 생성된 컨테이너에 컨테이너 접속 IP를 할당한다. 이때, 호스트 서버(40)는 상기 컨테이너 접속 IP와 상기 사용자 단말(10)을 맵핑한 컨테이너 접속 정보를 생성하여 메모리 등 저장 장치에 저장하고, 생성된 접속 정보를 상기 VPN 서버(30)에 전송한다. The host server 40 receives the container creation request from the VPN server 30, generates a container of the application from the container image in response to the container creation request, and allocates a container access IP to the created container do. At this time, the host server 40 generates container access information in which the container access IP and the user terminal 10 are mapped, stores it in a storage device such as a memory, and transmits the generated access information to the VPN server 30. .

접속 정보는 사용자 단말(10)에 할당된 컨테이너 접속 IP에 대응하는 도메인 네임(Domain Name)일 수 있다.The access information may be a domain name corresponding to the container access IP assigned to the user terminal 10.

컨테이너(Container)는 시스템의 나머지 부분과 격리된 하나 이상의 프로세스 세트로서, 애플리케이션을 실행하기 위한 가상의 격리 영역이다. 호스트 서버(40)는 등록된 사용자 단말(10)마다 컨테이너를 생성하여 할당하는데, 생성된 컨테이너는 호스트 서버(40)에 내장된 메모리상에 저장될 수 있다. 컨테이너는 컨테이너화 명령에 의하여, 이미지로부터 생성될 수 있다. 컨테이너는 컨테이너는 동일한 운영 체제 커널을 공유하고 시스템의 나머지 부분으로부터 애플리케이션 프로세스를 격리한다. 한편, 애플리케이션을 실행하는 컨테이너는 바이너리 (binary) 및 필수 라이브러리, 종속 요소와 파일을 포함하여 구성될 수 있다. 즉, 컨테이너는 게스트 운영체제를 별도로 포함하지 않고, 호스트 운영체제의 커널(kernel)을 기초로, 바이너리 및 라이브러리를 이용하여 애플리케이션을 실행할 수 있다.A container is a set of one or more processes isolated from the rest of the system, and is a virtual isolated area for running applications. The host server 40 creates and allocates a container for each of the registered user terminals 10, and the created container may be stored in a memory built into the host server 40. Containers can be created from images by containerization commands. Containers Containers share the same operating system kernel and isolate application processes from the rest of the system. Meanwhile, a container for executing an application may be configured including a binary, essential library, dependent elements and files. That is, the container does not separately include a guest operating system, and can execute an application using a binary and a library based on the kernel of the host operating system.

호스트 서버(40)는 빌드 또는 풀링된 이미지를 기초로 컨테이너를 생성할 수 있다. 예컨대, 호스트 서버(40)는 이미지 저장소(20)에 저장된 이미지를 풀링하여 컨테이너를 생성하고, 생성된 컨테이너를 호스트 서버의 호스트 운영체제 상에서 실행함으로써, 컨테이너화된 애플리케이션을 실행할 수 있다. 즉, 호스트 서버(40)는 호스트 서버의 운영체제의 커널을 기초로 바이너리 및 라이브러리를 포함하는 서포팅 파일을 이용하여, 컨테이너에 포함된 애플리케이션을 실행할 수 있다.The host server 40 may create a container based on the built or pooled image. For example, the host server 40 creates a container by pooling images stored in the image storage 20 and executes the containerized application by executing the created container on the host operating system of the host server. That is, the host server 40 may execute an application included in the container by using a supporting file including a binary and a library based on the kernel of the operating system of the host server.

이하에서는 도 2 및 도 3을 참조하여, 도 1의 실시예에 따른 네트워크 컴퓨터 시스템의 컨테이너 생성 과정에서의 이미지 저장소(20), VPN 서버(30) 및 호스트 서버(40)의 동작을 보다 구체적으로 설명한다.Hereinafter, operations of the image storage 20, the VPN server 30, and the host server 40 in the container creation process of the network computer system according to the embodiment of FIG. 1 will be described in more detail with reference to FIGS. 2 and 3. Explain.

도 2는 도 1의 시스템에 의해 수행되는 애플리케이션의 컨테이너화 방법을 도시한 흐름도이고, 도 3은 도 2의 방법으로 생성된 컨테이너가 복수의 사용자 단말(10)에 할당된 상태를 나타낸 다이어그램이다.FIG. 2 is a flowchart illustrating a containerization method of an application executed by the system of FIG. 1, and FIG. 3 is a diagram illustrating a state in which containers created by the method of FIG. 2 are allocated to a plurality of user terminals 10.

도 2를 참조하면, 먼저 사용자 단말(10)은 VPN 서버에 접속하여 애플리케이션으로의 액세스를 요청한다. 애플리케이션은 호스트 서버에 의해 제공되며, 호스트 서버상에서 실행된다. VPN 서버(30)는, 사용자 단말로부터 상기 애플리케이션으로의 액세스 요청을 수신하고(S110), 액세스 요청을 전송한 사용자 단말(10)이 호스트 서버에 등록된 사용자 단말인지 인증한다(S120).Referring to FIG. 2, first, the user terminal 10 accesses a VPN server and requests access to an application. The application is provided by the host server and runs on the host server. The VPN server 30 receives an access request from the user terminal to the application (S110), and authenticates whether the user terminal 10 that has transmitted the access request is a user terminal registered in the host server (S120).

사용자 단말이 호스트 서버에 등록되지 않은 경우, VPN 서버는 해당 사용자 단말을 호스트 서버(40)에 등록하기 위한 절차를 수행한다. 예컨대, VPN 서버는 사용자 단말을 호스트 서버(40)에서 제공하는 사용등록 웹페이지에 접속시킬 수 있다. If the user terminal is not registered with the host server, the VPN server performs a procedure for registering the user terminal with the host server 40. For example, the VPN server may connect the user terminal to a use registration web page provided by the host server 40.

사용자 단말이 호스트 서버에 등록된 사용자 단말인 경우, VPN서버(40)는 상기 사용자 단말에 대한 컨테이너 생성 요청을 호스트 서버(40)로 전송한다(S130). When the user terminal is a user terminal registered in the host server, the VPN server 40 transmits a container creation request for the user terminal to the host server 40 (S130).

호스트 서버(40)는 상기 VPN 서버로부터 수신한 컨테이너 생성 요청에 응답하여 이미지 저장소에 저장된 이미지로부터 컨테이너를 생성한다(S140). 생성된 컨테이너는 컨테이너 생성을 요청한 해당 사용자 단말에 전속 할당된다. 호스트 서버(40)는 생성된 컨테이너를 컨테이너 생성을 요청한 해당 사용자 단말에 전속 할당하기 위해, 상기 생성된 컨테이너에 컨테이너 접속 IP를 할당하고, 컨테이너 접속 IP와 상기 사용자 단말(10)을 맵핑한 컨테이너 접속 정보를 생성하여 메모리 등 저장 장치에 저장하고, 생성된 컨테이너 접속 정보를 VPN 서버(30)에 전송한다(S140). The host server 40 generates a container from the image stored in the image storage in response to the container creation request received from the VPN server (S140). The created container is exclusively assigned to the user terminal that requested the container creation. The host server 40 allocates a container access IP to the created container and maps the container access IP to the user terminal 10 in order to exclusively allocate the created container to the corresponding user terminal that requested container creation. Information is generated and stored in a storage device such as a memory, and the generated container access information is transmitted to the VPN server 30 (S140).

컨테이너 접속 정보는 접속 IP에 맵핑된 DNS 정보를 포함할 수 있다.The container access information may include DNS information mapped to the access IP.

계속해서, VPN 서버(30)는 수신한 컨테이너 접속 정보를 사용자 단말(10)에 전송한다(S150).Subsequently, the VPN server 30 transmits the received container access information to the user terminal 10 (S150).

사용자 단말(10)은 수신된 컨테이너 접속 정보를 이용하여 VPN 서버에 접속함으로써, 할당된 컨테이너를 통해 애플리케이션을 실행할 수 있다.The user terminal 10 may access the VPN server using the received container access information, and execute the application through the assigned container.

도 3을 참조하면, 호스트 서버(40)에는 호스트 서버 운영체제(호스트 서버 OS)가 설치되어 있으며, 이미지 저장소(20)에는 애플리케이션(APP1)의 컨테이너화를 위한 이미지(IMG_APP1)이 저장되어 있다. 이미지 저장소(20)에는 APP1 외에도 다른 애플리케이션들(APP2, APP3...) 등의 컨테이너화를 위한 이미지들 (IMG_APP2, IMG_APP3,...)이 저장될 수 있다.Referring to FIG. 3, a host server operating system (host server OS) is installed in the host server 40, and an image IMG_APP1 for containerization of the application APP1 is stored in the image storage 20. In addition to APP1, images (IMG_APP2, IMG_APP3,...) for containerization of other applications (APP2, APP3...) may be stored in the image storage 20.

복수의 사용자 단말(UT1, UT2, UT3)이 각각 동일한 애플리케이션 APP1으로의 액세스를 요청하면, 호스트 서버(40)는 상술한 도 2의 과정을 거쳐, 애플리케이션 APP1의 이미지(IMG_APP1)을 기초로 사용자 단말(UT1, UT2, UT3) 각각에 대하여 할당된 컨테이너들(CT1, CT2, CT3)을 생성한다. 다시 말하면, 호스트 서버(40)는, 사용자 단말 UT1의 애플리케이션 APP1에 대한 액세스 요청에 응답하여 제1 컨테이너 CT1을 생성하고, 사용자 단말 UT2의 애플리케이션 APP1에 대한 액세스 요청에 응답하여 제2 컨테이너 CT2를 생성하며, 사용자 단말 UT3의 애플리케이션 APP1에 대한 액세스 요청에 응답하여 제3 컨테이너 CT3을 생성한다. 전술한 바와 같이, 제1 내지 제3 컨테이너(CT1, CT2, CT3)는 모두 동일한 애플리케이션 APP1의 이미지 IMG_APP1으로부터 생성되는 것이다.When a plurality of user terminals UT1, UT2, and UT3 each request access to the same application APP1, the host server 40 goes through the process of FIG. 2, based on the image of the application APP1 (IMG_APP1). Containers CT1, CT2, CT3 allocated for each of (UT1, UT2, UT3) are created. In other words, the host server 40 creates a first container CT1 in response to an access request for the application APP1 of the user terminal UT1, and creates a second container CT2 in response to the access request for the application APP1 of the user terminal UT2. The third container CT3 is created in response to a request for access to the application APP1 of the user terminal UT3. As described above, the first to third containers CT1, CT2, and CT3 are all generated from the image IMG_APP1 of the same application APP1.

호스트 서버(40)는 사용자 단말마다 생성된 컨테이너 각각에 컨테이너 접속 IP(IP1, IP2, IP3)를 할당하고, 할당된 컨테이너 접속 IP를 사용자 단말에 맵핑한 컨테이너 접속 정보(ACI1, ACI2, ACI3)를 생성하여 저장한다.The host server 40 allocates container access IPs (IP1, IP2, IP3) to each container created for each user terminal, and provides container access information (ACI1, ACI2, ACI3) mapping the assigned container access IP to the user terminal. Create and save.

전술한 바와 같이, 각각의 컨테이너(CT1~CT3)는 애플리케이션과, 애플리케이션 구동을 위한 서포팅 파일(바이너리, 라이브러리, 레이어 등을 포함)을 포함하며, 호스트 서버 OS 상에서 호스트 서버의 커널을 기초로 실행된다.As described above, each of the containers CT1 to CT3 includes an application and a supporting file (including binaries, libraries, layers, etc.) for driving the application, and is executed on the host server OS based on the kernel of the host server. .

전술한 바와 같이, 이미지 저장소에 저장된 다른 애플리케이션들의 이미지 IMG_APP2와 IMG_APP3에 대해서도 도 2 동일한 처리를 거쳐 도 3과 유사한 컨테이너화가 수행될 수 있음은 당연하다.As described above, it is natural that containerization similar to that of FIG. 3 may be performed for the images IMG_APP2 and IMG_APP3 of other applications stored in the image storage through the same processing of FIG. 2.

도 4를 참조하여, 호스트 서버(40)이 도 2의 방법으로 생성된 컨테이너로의 액세스 요청을 처리하는 과정을 보다 상세히 설명한다.Referring to FIG. 4, a process of processing an access request to a container generated by the method of FIG. 2 by the host server 40 will be described in more detail.

도 4은 도 2의 방법으로 생성된 컨테이너로의 액세스 요청을 처리하는 과정을 도시한 흐름도이다.FIG. 4 is a flowchart illustrating a process of processing an access request to a container created by the method of FIG. 2.

먼저, 사용자 단말(10)이 컨테이너 접속 정보에 포함된 DNS 정보를 이용하여 VPN 서버(30)에 애플리케이션 컨테이너 접속 요청을 전송한다.First, the user terminal 10 transmits an application container access request to the VPN server 30 using DNS information included in the container access information.

VPN 서버(30)는 애플리케이션 컨테이너 접속 요청을 수신하고(S210), 컨테이너 접속 정보에 대응하는 컨테이너의 호출 요청을 상기 호스트 서버(40)에 전송한다(S220).The VPN server 30 receives an application container access request (S210), and transmits a container call request corresponding to the container access information to the host server 40 (S220).

호스트 서버(40)는 호출 요청에 포함된 접속정보를 이용하여 접속정보에 맵핑된 컨테이너 접속 IP에 대응하는 컨테이너, 즉 해당 사용자 단말에 할당된 컨테이너를 호출한다(S240). The host server 40 calls a container corresponding to the container access IP mapped to the access information, that is, a container allocated to a corresponding user terminal by using the access information included in the call request (S240).

사용자 단말(10)은 호출된 컨테이너를 이용하여 애플리케이션을 실행할 수 있다.The user terminal 10 may execute an application using the called container.

전술한 바와 같이, 애플리케이션을 수정하거나, 라이브러리, 바이너리 등을 변경하거나 레이어를 추가할 필요가 있는 경우, 이미지 자체를 새로이 빌드할 수 있다. 새로 빌드된 이미지는 수정된 애플리케이션을 컨테이너화하는데 사용된다. 이하에서는 편의상 애플리케이션의 수정(업데이트)를 반영하여 이미지를 새로 빌드하는 경우를 "이미지의 업데이트"라 하고, 애플리케이션의 수정 등으로 인하여 새로 빌드된 이미지를 "업데이트 이미지"라 한다.As described above, when it is necessary to modify an application, change a library, a binary, or the like, or add a layer, the image itself can be newly built. The newly built image is used to containerize the modified application. Hereinafter, for convenience, a case where an image is newly built by reflecting the modification (update) of the application is referred to as "update of the image", and the newly built image due to the modification of the application, etc. is referred to as "update image".

호스트 서버(40)는 상기 컨테이너 호출에 응답하여, 상기 이미지의 업데이트 여부를 판정한다(S230). 즉, 호스트 서버(40)는 사용자 단말(10)로부터 컨테이너 호출이 요청되면, 컨테이너화된 애플리케이션의 수정에 따른 새로운 이미지 빌드가 있었는지를 판정한다.The host server 40 determines whether to update the image in response to the container call (S230). That is, when a container call is requested from the user terminal 10, the host server 40 determines whether there is a new image build according to the modification of the containerized application.

상기 이미지가 업데이트된 것으로 판정되면, 상기 호스트 서버는 업데이트된 이미지로부터 컨테이너를 재생성하고(S250), 재생성된 컨테이너를 호출하여 요청한 사용자 단말에 제공한다. 이때, 상기 재생성된 컨테이너에는 이미 할당된 IP가 그대로 다시 할당된다.If it is determined that the image has been updated, the host server regenerates the container from the updated image (S250), and calls the regenerated container to provide it to the requested user terminal. In this case, the already allocated IP is allocated again to the regenerated container.

만약, 이미지가 업데이트되지 않은 것으로 판정되면, 호스트 서버(40)는 호출 요청에 포함된 접속정보를 이용하여 접속정보에 맵핑된 컨테이너 접속 IP에 대응하는 컨테이너, 즉 해당 사용자 단말에 할당된 컨테이너를 호출한다(S240). If it is determined that the image has not been updated, the host server 40 calls the container corresponding to the container access IP mapped to the access information by using the access information included in the call request, that is, the container assigned to the corresponding user terminal. Do (S240).

애플리케이션 수정 등으로 인하여 이미지를 새로 빌드한 경우, 종전 이미지는 파기하고 새로 빌드된 이미지만 이미지 저장소에 저장하는 것이 일반적이다.When an image is newly built due to application modification, it is common to destroy the old image and store only the newly built image in the image storage.

그러나, 종전 이미지에 의해 생성된 컨테이너에 접속하여 애플리케이션을 사용하고 있는 다른 사용자 단말이 있는 경우에는 종전 이미지를 곧바로 파기할 경우, 컨테이너 세션이 강제로 종료되는 문제가 발생할 수 있다. However, when there is another user terminal that is using an application by accessing a container created by the previous image, if the previous image is immediately destroyed, the container session may be forcibly terminated.

따라서, 본 발명의 일 실시예에 따른 상기 컨테이너화 방법은, 이미지 저장소에 저장된 이미지가 새로 빌드된 경우, 이미지의 신규 빌드가 감지된 시점에서 새로 빌드되기 전, 즉 종전의 이미지를 기초로 생성된 복수의 컨테이너의 세션이 유지 중인지 판정하도록 구성될 수 있다.Therefore, in the containerization method according to an embodiment of the present invention, when an image stored in an image storage is newly built, a plurality of images generated based on the previous image are newly built at the time when a new build of the image is detected. May be configured to determine if a session of the container of the device is being maintained.

도 5는 본 발명의 일 실시예에 따른 이미지의 업데이트시의 처리과정을 도시한 흐름도이다.5 is a flowchart illustrating a processing process when an image is updated according to an embodiment of the present invention.

먼저, 상기 호스트 서버는 이미지 저장소에 저장된 이미지를 업데이트한다(S310). 즉, 애플리케이션을 수정하거나, 라이브러리, 바이너리 등을 변경하거나 레이어를 추가할 필요가 있는 경우, 호스트 서버(40)는 업데이트 이미지 자체를 새로이 빌드하고, 새로 빌드된 업데이트 이미지를 이미지 저장소(20)에 저장한다. First, the host server updates the image stored in the image storage (S310). That is, when there is a need to modify an application, change a library, binary, etc., or add a layer, the host server 40 newly builds the update image itself, and stores the newly built update image in the image storage 20 do.

이때, 업데이트 이미지의 빌드는 호스트 서버(40)에 의해, 또는 외부의 개발자 장치에 의해 수행될 수 있으며, 외부의 개발자 장치에 의해 수행된 경우, 새로 빌드된 업데이트 이미지는 개발자 장치에 의해 이미지 저장소(20)에 푸시되어 저장될 수 있다.At this time, the build of the update image may be performed by the host server 40 or by an external developer device, and when performed by an external developer device, the newly built update image is image storage ( 20) can be pushed and saved.

상기와 같이 이미지의 업데이트가 수행된 경우, 호스트 서버(40)는 이미지의 업데이트가 감지된 시점에서 업데이트 전의 이미지를 기초로 생성된 복수의 컨테이너의 세션이 유지 중인지를 판정한다(S320).When the image update is performed as described above, the host server 40 determines whether sessions of a plurality of containers generated based on the image before the update are being maintained at the time when the image update is detected (S320).

판정 결과, 업데이트 전의 이미지를 기초로 생성된 복수의 컨테이너 중, 적어도 하나 이상의 세션이 유지 중인 경우에는 업데이트 전의 이미지를 파기하지 않고 유지시킬 수 있다(S340).As a result of the determination, if at least one session is being maintained among a plurality of containers generated based on the image before the update, the image before the update may be maintained without destroying (S340).

판정 결과, 업데이트 전의 이미지를 기초로 생성된 복수의 컨테이너 전부의 세션이 종료된 경우에는, 호스트 서버는 상기 업데이트 전의 이미지를 파기할 수 있다(S330). 즉, 업데이트 전의 이미지를 기초로 생성된 복수의 컨테이너 전부의 세션이 종료된 경우에는, 호스트 서버는 업데이트 이미지만 이미지 저장소에 남기고 업데이트 전의 이미지는 이미지 저장소에서 삭제할 수 있다.As a result of the determination, when the session of all the plurality of containers generated based on the image before the update is terminated, the host server may destroy the image before the update (S330). That is, when the session of all of the plurality of containers created based on the image before the update is terminated, the host server may leave only the updated image in the image storage and delete the image before the update from the image storage.

예컨대, 도 3의 예에서, 애플리케이션 APP1이 수정되어 APP1의 이미지 IMG_APP1이 새로 빌드된 경우, 새로 빌드된 이미지를 IMG_APP1'이라 하자. 호스트 서버(40)는 새로 빌드된 이미지 IMG_APP1'을 이미지 저장소에 저장한다. 이미지 업데이트 이후, 예컨대, 제1 사용자 단말(UT1)이 제1 컨테이너(CT1)로의 액세스를 요청하면, 호스트 서버(40)는 업데이트된 이미지 IMG_APP1'을 기초로 새로운 제1 컨테이너(CT1')을 생성한다. 새로 생성된 제1 컨테이너 CT1'은 종전의 제1 컨테이너 CT1에 할당된 IP를 그대로 사용한다. 따라서, 제1 사용자 단말에 부여된 컨테이너 접속 정보도 변하지 않는다. 한편, 호스트 서버(40)는 이미지가 업데이트된 다음, 도 5의 처리에 따라 종전 이미지 IMG_APP1을 기초로 생성된 컨테이너들(CT1, CT2, CT3) 중 세션이 유지되고 있는 컨테이너가 있는지 판정한다. 예컨대, 제2 사용자 단말(UT2)가 이미지가 업데이트되기 전에 종전 제2 컨테이너(CT2)에 접속하여 작업 중인 경우에는 제2 컨테이너의 세션이 유지되고 있으므로 종전 이미지 IMG_APP1을 이미지 저장소에서 삭제하지 않고 유지한다. 이후 제2 사용자 단말(UT2)의 세션이 종료되면, 종전 이미지 IMG_APP1을 기초로 생성된 컨테이너들의 세션이 모두 종료되었으므로 종전 이미지 IMG_APP1은 더 이상 이미지 저장소에 유지될 필요가 없다. 따라서, 호스트 서버(40)는 종전 이미지 IMG_APP1을 이미지 저장소에서 삭제하고, 업데이트된 새로운 이미지 IMG_APP1'만을 이미지 저장소에 남긴다.For example, in the example of FIG. 3, when the application APP1 is modified and the image IMG_APP1 of APP1 is newly built, the newly built image is assumed to be IMG_APP1'. The host server 40 stores the newly built image IMG_APP1' in the image storage. After the image is updated, for example, when the first user terminal UT1 requests access to the first container CT1, the host server 40 creates a new first container CT1' based on the updated image IMG_APP1'. do. The newly created first container CT1' uses the IP allocated to the previous first container CT1 as it is. Accordingly, the container access information assigned to the first user terminal does not change. Meanwhile, after the image is updated, the host server 40 determines whether there is a container in which a session is maintained among the containers CT1, CT2, and CT3 generated based on the previous image IMG_APP1 according to the processing of FIG. 5. For example, if the second user terminal UT2 is working by accessing the previous second container CT2 before the image is updated, the session of the second container is maintained, so the previous image IMG_APP1 is not deleted from the image storage. . Thereafter, when the session of the second user terminal UT2 is terminated, all sessions of containers created based on the previous image IMG_APP1 have been terminated, so that the previous image IMG_APP1 does not need to be maintained in the image storage any more. Accordingly, the host server 40 deletes the old image IMG_APP1 from the image storage, and leaves only the updated new image IMG_APP1' in the image storage.

이 때, 상기 호스트 서버는 상기 업데이트 전의 이미지를 기초로 생성된 복수의 컨테이너 중, 세션이 종료된 컨테이너는 파기할 수 있다.In this case, the host server may destroy a container in which a session is terminated among a plurality of containers generated based on the image before the update.

앞서 설명한 본 발명의 상세한 설명에서는 본 발명의 바람직한 실시예들을 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자 또는 해당 기술분야에 통상의 지식을 갖는 자라면 후술될 특허청구범위에 기재된 본 발명의 사상 및 기술 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.In the detailed description of the present invention described above, it has been described with reference to preferred embodiments of the present invention, but those skilled in the art or those of ordinary skill in the art will have the spirit of the present invention described in the claims to be described later. And it will be appreciated that various modifications and changes can be made to the present invention within a range not departing from the technical field.

또한, 본 발명의 일 실시예에 따른 이미지 저장소(20)는 Docker Registry Hub가 될 수 있으나, 이에 한정되는 것은 아니다. In addition, the image storage 20 according to an embodiment of the present invention may be a Docker Registry Hub, but is not limited thereto.

10 : 사용자 단말 20 : 이미지 저장소
30 : VPN 서버 40 : 호스트 서버
10: user terminal 20: image storage
30: VPN server 40: host server

Claims (11)

애플리케이션의 이미지를 저장하는 컨테이너 이미지 저장소, VPN 서버 및 호스트 서버를 포함하는 네트워크 컴퓨터 시스템에 의해 수행되는 애플리케이션을 컨테이너화하는 방법으로서,
상기 VPN서버가 사용자 단말로부터 상기 애플리케이션으로의 액세스 요청을 수신하고, 상기 사용자 단말에 대한 컨테이너 생성 요청을 상기 호스트 서버로 전송하는 단계;
상기 호스트 서버가, 상기 VPN 서버로부터 수신된 상기 컨테이너 생성 요청에 응답하여 상기 이미지로부터 상기 애플리케이션의 컨테이너를 생성하는 단계;
상기 호스트 서버가, 상기 생성된 컨테이너에 접속 IP를 할당하고, 상기 컨테이너 접속 IP와 상기 사용자 단말을 맵핑한 컨테이너 접속 정보를 생성하여 상기 VPN 서버에 전송하는 단계; 및
상기 VPN 서버가, 상기 컨테이너 접속 정보를 포함하는 컨테이너 접속 정보를 상기 사용자 단말에 전송하는 단계
를 포함하는 방법.
A method of containerizing an application executed by a network computer system including a container image store, a VPN server and a host server for storing an image of the application,
Receiving, by the VPN server, a request for access to the application from a user terminal, and transmitting a container creation request for the user terminal to the host server;
Generating, by the host server, a container of the application from the image in response to the container creation request received from the VPN server;
Allocating, by the host server, an access IP to the created container, generating container access information in which the container access IP and the user terminal are mapped, and transmitting it to the VPN server; And
Transmitting, by the VPN server, container access information including the container access information to the user terminal
How to include.
제 1항에 있어서,
상기 VPN 서버가, 상기 사용자 단말로부터 상기 접속 정보를 이용한 컨테이너 접속 요청을 수신하고, 상기 접속 정보에 대응하는 컨테이너의 호출 요청을 상기 호스트 서버에 전송하는 단계;
상기 호스트 서버는 상기 컨테이너 호출 요청에 응답하여, 상기 이미지의 업데이트 여부를 판정하는 단계; 및
상기 호스트 서버는, 상기 이미지가 업데이트된 것으로 판정되면, 업데이트된 이미지로부터 컨테이너를 재생성하고, 상기 재생성된 컨테이너에 상기 접속 IP를 할당하는 단계
를 더 포함하는 방법.
The method of claim 1,
Receiving, by the VPN server, a container access request using the access information from the user terminal, and transmitting a container call request corresponding to the access information to the host server;
Determining, by the host server, whether to update the image in response to the container call request; And
If it is determined that the image has been updated, the host server regenerating a container from the updated image and allocating the access IP to the regenerated container
How to further include.
제1항에 있어서,
상기 호스트 서버가, 상기 이미지 저장소에 저장된 상기 이미지를 업데이트하는 단계; 및
상기 이미지 변경이 감지된 시점에서 업데이트 전의 이미지를 기초로 생성된 적어도 하나의 컨테이너의 세션이 유지 중인지 판정하는 단계
를 더 포함하며,
상기 업데이트 전의 이미지를 기초로 생성된 적어도 하나의 컨테이너의 세션이 유지 중인 경우에는 업데이트 전의 이미지를 파기하지 않고 유지시키는 것을 특징으로 하는 방법.
The method of claim 1,
Updating, by the host server, the image stored in the image storage; And
Determining whether a session of at least one container created based on the image before the update is being maintained at the time when the image change is detected
It further includes,
When a session of at least one container generated based on the image before the update is being maintained, the image before the update is maintained without being destroyed.
제3항에 있어서,
상기 업데이트 전의 이미지를 기초로 생성된 컨테이너 전부의 세션이 종료된 경우에는 상기 업데이트 전의 이미지를 파기하는 것을 특징으로 하는 방법.
The method of claim 3,
When the session of all containers created based on the image before the update is terminated, the image before the update is discarded.
제3항에 있어서,
상기 업데이트 전의 이미지를 기초로 생성된 복수의 컨테이너 중, 세션이 종료된 컨테이너는 파기하는 것을 특징으로 하는 방법.
The method of claim 3,
And destroying a container in which a session has ended among the plurality of containers generated based on the image before the update.
사용자 단말;
애플리케이션의 컨테이너 이미지를 저장하는 컨테이너 이미지 저장소;
상기 사용자 단말로부터 상기 애플리케이션으로의 액세스 요청을 수신하고, 상기 사용자 단말에 대한 컨테이너 생성 요청을 전송하는 VPN 서버; 및
상기 VPN 서버로부터 상기 컨테이너 생성 요청을 수신하고, 상기 컨테이너 생성 요청에 응답하여 상기 컨테이너 이미지로부터 상기 애플리케이션의 컨테이너를 생성하며, 상기 생성된 컨테이너에 컨테이너 접속 IP를 할당하고, 상기 컨테이너 접속 IP와 상기 사용자 단말을 맵핑한 컨테이너 접속 정보를 생성하여 상기 VPN 서버에 전송하는 호스트 서버
를 포함하는 네트워크 컴퓨터 시스템.
User terminal;
A container image store that stores a container image of an application;
A VPN server that receives a request for access to the application from the user terminal and transmits a container creation request to the user terminal; And
Receiving the container creation request from the VPN server, generating a container of the application from the container image in response to the container creation request, allocating a container access IP to the created container, and assigning the container access IP and the user Host server that generates terminal-mapped container access information and transmits it to the VPN server
Network computer system comprising a.
제 1항에 있어서,
상기 사용자 단말은 상기 컨테이너 접속 정보를 이용하여 상기 VPN 서버에 접속함으로써, 상기 할당된 컨테이너로의 액세스를 요청하는 네트워크 컴퓨터 시스템.
The method of claim 1,
The user terminal accesses the VPN server by using the container access information, thereby requesting access to the assigned container.
제 7항에 있어서,
상기 VPN 서버는, 상기 컨테이너 액세스 요청에 응답하여, 상기 컨테이너 접속 IP에 대응하는 컨테이너의 호출 요청을 상기 호스트 서버에 전송하고,
상기 호스트 서버는 상기 컨테이너 호출 요청에 응답하여, 상기 이미지의 업데이트 여부를 판정하며, 상기 이미지가 업데이트된 것으로 판정되면, 업데이트된 이미지로부터 컨테이너를 재생성하고, 상기 재생성된 컨테이너에 상기 접속 IP를 할당하는 네트워크 컴퓨터 시스템.
The method of claim 7,
The VPN server, in response to the container access request, transmits a container call request corresponding to the container access IP to the host server,
The host server determines whether or not the image is updated in response to the container call request, and if the image is determined to be updated, regenerates a container from the updated image, and assigns the access IP to the regenerated container. Network computer system.
제6항에 있어서, 상기 호스트 서버는,
상기 이미지 저장소에 저장된 상기 이미지의 업데이트 여부를 감지하고,
상기 이미지의 업데이트가 감지되면, 업데이트 전의 이미지를 기초로 생성된 복수의 컨테이너의 세션이 유지 중인지 판정하며,
상기 업데이트 전의 이미지를 기초로 생성된 복수의 컨테이너 중, 적어도 하나 이상의 세션이 유지 중인 경우에는 업데이트 전의 이미지를 파기하지 않고 유지시키는 네트워크 컴퓨터 시스템.
The method of claim 6, wherein the host server,
Detects whether the image stored in the image storage is updated,
When an update of the image is detected, it is determined whether sessions of a plurality of containers created based on the image before the update are being maintained,
A network computer system that maintains the image before the update without destroying it when at least one session is being maintained among the plurality of containers generated based on the image before the update.
제9항에 있어서, 상기 호스트 서버는,
상기 업데이트 전의 이미지를 기초로 생성된 복수의 컨테이너 전부의 세션이 종료된 경우에는 상기 업데이트 전의 이미지를 파기하는 네트워크 컴퓨터 시스템.
The method of claim 9, wherein the host server,
A network computer system for destroying the image before the update when the sessions of all of the plurality of containers generated based on the image before the update are ended.
제9항에 있어서, 상기 호스트 서버는,
상기 업데이트 전의 이미지를 기초로 생성된 복수의 컨테이너 중, 세션이 종료된 컨테이너는 파기하는 네트워크 컴퓨터 시스템.

The method of claim 9, wherein the host server,
A network computer system for destroying a container in which a session is terminated among a plurality of containers generated based on the image before the update.

KR1020190055605A 2019-05-13 2019-05-13 A method for containerization of a server application and computer system performing the same KR20200131375A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190055605A KR20200131375A (en) 2019-05-13 2019-05-13 A method for containerization of a server application and computer system performing the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190055605A KR20200131375A (en) 2019-05-13 2019-05-13 A method for containerization of a server application and computer system performing the same

Publications (1)

Publication Number Publication Date
KR20200131375A true KR20200131375A (en) 2020-11-24

Family

ID=73679457

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190055605A KR20200131375A (en) 2019-05-13 2019-05-13 A method for containerization of a server application and computer system performing the same

Country Status (1)

Country Link
KR (1) KR20200131375A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220179380A1 (en) * 2020-12-08 2022-06-09 Electronics And Telecommunications Research Institute Service operation method for energy management for each tenant in multi-tenant environment, and energy management service supply system
WO2022239954A1 (en) * 2021-05-12 2022-11-17 (주)모니터랩 Method and system for managing and operating containers in multi-node environment

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220179380A1 (en) * 2020-12-08 2022-06-09 Electronics And Telecommunications Research Institute Service operation method for energy management for each tenant in multi-tenant environment, and energy management service supply system
US11868110B2 (en) 2020-12-08 2024-01-09 Electronics And Telecommunications Research Institute Service operation method for energy management for each tenant in multi-tenant environment, and energy management service supply system
WO2022239954A1 (en) * 2021-05-12 2022-11-17 (주)모니터랩 Method and system for managing and operating containers in multi-node environment

Similar Documents

Publication Publication Date Title
US11418512B2 (en) Method for virtual machine to access physical server in cloud computing system, apparatus, and system
US8336047B2 (en) Provisioning virtual resources using name resolution
US10341251B2 (en) Method and system for securely transmitting volumes into cloud
US8694637B1 (en) Virtual private server with CPU time scheduler and isolation of system components
CN115269184B (en) Function As A Service (FAAS) execution allocator
CN110035079B (en) Honeypot generation method, device and equipment
RU2436149C2 (en) Migrating virtual machine, having resource such as hardware
US20160277311A1 (en) Dynamic management of computing platform resources
US7584228B1 (en) System and method for duplication of virtual private server files
US9838371B2 (en) Method and system for securely transmitting volumes into cloud
WO2016177079A1 (en) Method and device for processing cloud desktop resource
JP2009009566A (en) Access control system and method
TW201643713A (en) Virtual host, and isolation method, resource accessing request process method and apparatus
US11159367B2 (en) Apparatuses and methods for zero touch computing node initialization
US20160099913A1 (en) Internet Protocol (IP) Address Virtualization for Terminal Server Sessions
EP3300336A1 (en) Method and device for merging multiple virtual desktop architectures
CN111787126A (en) Container creation method, server, and storage medium
CN111083166A (en) Method and device for setting white list in cloud database and computer storage medium
KR20200131375A (en) A method for containerization of a server application and computer system performing the same
US8838768B2 (en) Computer system and disk sharing method used thereby
US11422862B1 (en) Serverless computation environment with persistent storage
JP7473287B2 (en) Method, apparatus and computer program for provisioning resources associated with multiple instances of a computer system - Patents.com
KR20110006488A (en) Apparatus and method for providing terminal service using virtual internet protocol address

Legal Events

Date Code Title Description
E902 Notification of reason for refusal