KR102491987B1 - 가상화 서버, 이의 동작 방법, 및 프로그램 - Google Patents

가상화 서버, 이의 동작 방법, 및 프로그램 Download PDF

Info

Publication number
KR102491987B1
KR102491987B1 KR1020200168629A KR20200168629A KR102491987B1 KR 102491987 B1 KR102491987 B1 KR 102491987B1 KR 1020200168629 A KR1020200168629 A KR 1020200168629A KR 20200168629 A KR20200168629 A KR 20200168629A KR 102491987 B1 KR102491987 B1 KR 102491987B1
Authority
KR
South Korea
Prior art keywords
container
api
processes
type
containers
Prior art date
Application number
KR1020200168629A
Other languages
English (en)
Other versions
KR20220079157A (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 KR1020200168629A priority Critical patent/KR102491987B1/ko
Publication of KR20220079157A publication Critical patent/KR20220079157A/ko
Application granted granted Critical
Publication of KR102491987B1 publication Critical patent/KR102491987B1/ko

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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • 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/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation
    • 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
    • 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/45591Monitoring or debugging support

Landscapes

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

Abstract

본 발명의 실시 예에 따른 가상화 서버의 동작 방법은 동시에 실행되고 있는 제1타입 API(Application Program Interface)의 프로세스들의 개수를 모니터링하는 단계, 모니터링된 상기 제1타입 API의 프로세스들의 개수에 기초하여, 상기 제1타입 API의 프로세스들을 실행시키고 있는 제1컨테이너를 제2타입 API의 프로세스들을 실행시키기 위한 제2컨테이너로 전환하는 단계 및 전환된 상기 제2컨테이너를 통해 상기 제2타입의 API 프로세스를 실행시키는 단계를 포함한다.

Description

가상화 서버, 이의 동작 방법, 및 프로그램{VIRTUALIZATION SERVER, OPERATING METHOD THEREOF, AND PROGRAM USING THE SAME}
본 발명은 가상화 서버, 이의 동작 방법, 및 프로그램에 관한 것으로, 보다 상세하게는 동시에 실행되고 있는 제1타입 API(Application Program Interface)의 프로세스들의 개수에 기초하여, 제1타입 API의 프로세스들을 실행시키고 있는 제1컨테이너를 제2타입 API의 프로세스들을 실행시키기 위한 제2컨테이너로 전환시킬 수 있는 가상화 서버, 이의 동작 방법, 및 프로그램에 관한 것이다.
서버 가상화 환경에서 컨테이너(container)를 기반으로 API(Application Program Interface)를 실행시키는 경우, 미리 생성한 컨테이너 이미지를 기반으로 컨테이너를 생성할 수 있기 때문에 콜드 스타트(cold start) 시에도 빠른 속도로 API 프로세스를 실행시키기 위한 환경을 제공할 수 있다.
하나의 컨테이너에서는 제한된 자원에 한해서 API 프로세스들이 동시 실행 가능하다. 따라서, 하나의 컨테이너에서 동시 실행되는 API 프로세스들의 개수가 많아질수록 사용되는 자원량이 커지며, 서비스 운용비용도 함께 높아지게 된다.
본 발명이 이루고자 하는 기술적 과제는 동시에 실행되고 있는 제1타입 API(Application Program Interface)의 프로세스들의 개수에 기초하여, 제1타입 API의 프로세스들을 실행시키고 있는 제1컨테이너를 제2타입 API의 프로세스들을 실행시키기 위한 제2컨테이너로 전환시킬 수 있는 가상화 서버, 이의 동작 방법, 및 프로그램을 제공하는 것이다.
본 발명의 실시 예에 따른 가상화 서버의 동작 방법은 동시에 실행되고 있는 제1타입 API(Application Program Interface)의 프로세스들의 개수를 모니터링하는 단계, 모니터링된 상기 제1타입 API의 프로세스들의 개수에 기초하여, 상기 제1타입 API의 프로세스들을 실행시키고 있는 제1컨테이너를 제2타입 API의 프로세스들을 실행시키기 위한 제2컨테이너로 전환하는 단계 및 전환된 상기 제2컨테이너를 통해 상기 제2타입의 API 프로세스를 실행시키는 단계를 포함할 수 있다.
실시 예에 따라, 상기 모니터링하는 단계는, 적어도 하나 이상의 컨테이너에 의해 실행되고 있는 상기 제1타입 API의 프로세스들의 개수를 모니터링할 수 있다.
실시 예에 따라, 상기 모니터링하는 단계는, 적어도 하나 이상의 컨테이너에 의해 실행되고 있는 상기 제1타입 API의 프로세스들의 개수, 상기 제1타입 API의 프로세스들의 타입 정보, 및 상기 제1타입 API의 프로세스들을 실행시키고 있는 컨테이너의 정보를 수집할 수 있다.
실시 예에 따라, 상기 전환하는 단계는, 모니터링된 상기 제1타입 API의 프로세스들의 개수에 기초하여, 상기 제2컨테이너를 생성하는 단계를 포함할 수 있다.
실시 예에 따라, 상기 전환하는 단계는, 모니터링된 상기 제1타입 API의 프로세스들의 개수의 변화 추세에 따라 서로 다른 기준 개수를 적용하여 상기 제2컨테이너를 생성할 수 있다.
실시 예에 따라, 상기 전환하는 단계는, 모니터링된 상기 제1타입 API의 프로세스들의 개수의 변화 추세가 상대적으로 급격하게 증가하는 추세일수록 상대적으로 적은 기준 개수를 적용하여 상기 제2컨테이너를 생성할 수 있다.
실시 예에 따라, 상기 제2컨테이너를 생성하기 위한 기준이 되는 제1기준 개수가, 상기 제1컨테이너를 상기 제2컨테이너로 전환하기 위한 기준이 되는 제2기준 개수보다 적을 수 있다.
실시 예에 따라, 상기 전환하는 단계는, 상기 제2컨테이너의 이미지 정보를 이용하여 상기 제1컨테이너를 상기 제2컨테이너로 전환할 수 있다.
실시 예에 따라, 상기 전환하는 단계는, 상기 제1컨테이너를 상기 제2컨테이너로 전환한 이후에 상기 제1컨테이너를 제거하는 단계를 포함할 수 있다.
실시 예에 따라, 상기 제거하는 단계는, 동시에 실행되고 있는 상기 제2타입 API의 프로세스들의 개수가 제3기준 개수를 초과하는 경우에 상기 제1컨테이너를 제거할 수 있다.
실시 예에 따라, 상기 제거하는 단계는, 상기 제1컨테이너를 상기 제2컨테이너로 전환한 이후에, 기준 시간이 경과한 경우에 상기 제1컨테이너를 제거할 수 있다.
실시 예에 따라, 상기 전환하는 단계는, 상기 제1컨테이너에 상기 제1타입 API의 프로세스들의 실행에 대한 실행 제한 명령을 전달하는 단계를 포함할 수 있다.
실시 예에 따라, 상기 제1타입 API는, 프로세스 동기화(process synchronization)에 있어서 상기 제2타입의 API와 서로 다른 규칙을 가질 수 있다.
본 발명의 실시 예에 따른 가상화 서버는 동시에 실행되고 있는 제1타입 API(Application Program Interface)의 프로세스들의 개수를 모니터링하는 프로세스 모니터 및 모니터링된 상기 제1타입 API의 프로세스들의 개수에 기초하여, 상기 제1타입 API의 프로세스들을 실행시키고 있는 제1컨테이너를 제2타입 API의 프로세스들을 실행시키기 위한 제2컨테이너로 전환시킬지 여부를 결정하는 컨테이너 변경 결정 유닛을 포함할 수 있다.
본 발명의 실시 예에 따른 프로세서(processor)와 결합되어 가상화 서버의 동작 방법을 수행하기 위한 매체에 저장된 프로그램은 동시에 실행되고 있는 제1타입 API(Application Program Interface)의 프로세스들의 개수를 모니터링하는 단계, 모니터링된 상기 제1타입 API의 프로세스들의 개수에 기초하여, 상기 제1타입 API의 프로세스들을 실행시키고 있는 제1컨테이너를 제2타입 API의 프로세스들을 실행시키기 위한 제2컨테이너로 전환하는 단계 및 전환된 상기 제2컨테이너를 통해 상기 제2타입의 API 프로세스를 실행시키는 단계를 수행할 수 있다.
본 발명의 실시 예에 따른 방법과 장치들은 동시에 실행되고 있는 제1타입 API(Application Program Interface)의 프로세스들의 개수에 기초하여, 제1타입 API의 프로세스들을 실행시키고 있는 제1컨테이너를 제2타입 API의 프로세스들을 실행시키기 위한 제2컨테이너로 전환시킴으로써 서비스 운영에 있어서의 효율성이 향상될 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 서버 가상화 환경을 나타낼 수 있다.
도 2는 도 1에 도시된 가상화 서버의 일 실시 예에 따른 블록도이다.
도 3은 본 발명의 일 실시 예에 따른 가상화 서버의 동작 방법의 플로우차트이다.
본 발명의 기술적 사상은 다양한 변경을 가할 수 있고 여러 가지 실시 예를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 이를 상세히 설명하고자 한다. 그러나, 이는 본 발명의 기술적 사상을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 기술적 사상의 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 발명의 기술적 사상을 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 본 명세서의 설명 과정에서 이용되는 숫자(예를 들어, 제1, 제2 등)는 하나의 구성요소를 다른 구성요소와 구분하기 위한 식별기호에 불과하다.
또한, 본 명세서에서, 일 구성요소가 다른 구성요소와 "연결된다" 거나 "접속된다" 등으로 언급된 때에는, 상기 일 구성요소가 상기 다른 구성요소와 직접 연결되거나 또는 직접 접속될 수도 있지만, 특별히 반대되는 기재가 존재하지 않는 이상, 중간에 또 다른 구성요소를 매개하여 연결되거나 또는 접속될 수도 있다고 이해되어야 할 것이다.
또한, 본 명세서에 기재된 "~부", "~기", "~자", "~모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 프로세서(Processor), 마이크로 프로세서(Micro Processer), 마이크로 컨트롤러(Micro Controller), CPU(Central Processing Unit), GPU(Graphics Processing Unit), APU(Accelerate Processor Unit), DSP(Drive Signal Processor), ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array) 등과 같은 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있으며, 적어도 하나의 기능이나 동작의 처리에 필요한 데이터를 저장하는 메모리(memory)와 결합되는 형태로 구현될 수도 있다.
그리고 본 명세서에서의 구성부들에 대한 구분은 각 구성부가 담당하는 주기능 별로 구분한 것에 불과함을 명확히 하고자 한다. 즉, 이하에서 설명할 2개 이상의 구성부가 하나의 구성부로 합쳐지거나 또는 하나의 구성부가 보다 세분화된 기능별로 2개 이상으로 분화되어 구비될 수도 있다. 그리고 이하에서 설명할 구성부 각각은 자신이 담당하는 주기능 이외에도 다른 구성부가 담당하는 기능 중 일부 또는 전부의 기능을 추가적으로 수행할 수도 있으며, 구성부 각각이 담당하는 주기능 중 일부 기능이 다른 구성부에 의해 전담되어 수행될 수도 있음은 물론이다.
도 1은 본 발명의 일 실시 예에 따른 서버 가상화 환경을 나타낼 수 있다.
도 1을 참조하면, 서버 가상화 환경은 사용자 단말(100), 가상화 서버(300), 및 공유 스토리지(shared storage, 400)를 포함할 수 있다.
실시 예에 따라, 서버 가상화 환경은 VDI(Virtual Desktop Infrastructure), 서버리스(serverless) 컴퓨팅 플랫폼 등 다양한 용어로 칭해질 수 있다. 또한, 서버 가상화 환경은 완전 가상화, 반가상화, 또는 OS 수준 가상화 등의 다양한 가상화 수준으로 구현될 수 있다.
사용자 단말(100)은 가상화 서버(300)에서 생성 및 관리되는 컨테이너(예컨대, container#1~#3)를 통하여 API 실행 환경을 제공받을 수 있다.
가상화 서버(300)에서는 복수의 컨테이너들(예컨대, container#1~#3)이 생성 및 관리될 수 있다. 실시 예에 따라, 생성된 컨테이너(예컨대, container#1~#3)는 서로 다른 타입의 API(Application Program Interface)를 실행시킬 수 있다.
실시 예에 따라, 서로 다른 타입의 API는 프로세스 동기화(process synchronization)에 있어서 서로 다른 규칙을 가질 수 있다. 예컨대, 제1타입 API(예컨대, API A)와 제2타입 API(예컨대, API B)는 프로세스 동기화에 있어서 프로세스들 간에 우선순위를 적용하는 비율 등에 대해서 서로 다른 규칙을 가질 수 있다. 예컨대, 제2타입 API(예컨대, API B)는 제1타입 API(예컨대, API A)보다 프로세스 동기화에 있어서 프로세스들 간에 우선순위를 적용하는 비율이 더 낮을 수 있다.
다른 실시 예에 따라, 서로 다른 타입의 API는 동시 처리할 수 있는 프로세스 용량에 차이가 있을 수 있다. 예컨대, 제2타입 API(예컨대, API B)는 제1타입 API(예컨대, API A)보다 동시 처리할 수 있는 프로세스 용량이 더 클 수 있다.
또 다른 실시 예에 따라, 서로 다른 타입의 API는 데이터를 리드(read)/라이트(write)하는 위치(예컨대, 데이터베이스 또는 인-메모리 캐시(In-Memory cache))를 변경하는 기준이 서로 다를 수 있다. 예컨대, 제2타입 API(예컨대, API B)는 데이터를 리드(read)/라이트(write)하는 위치를 데이터 신뢰도가 상대적으로 높은 데이터베이스로부터 데이터 신뢰도가 상대적으로 낮은 인-메모리 캐시로 변경하는 기준(동시 실행되는 프로세스들의 개수)을 제2타입 API(예컨대, API B)의 기준보다 높은 기준 값으로 설정할 수 있다.
또 다른 실시 예에 따라, 서로 다른 타입의 API는 응답에 포함되는 데이터를 추출하는 범위와 추출하는 시기에 차이가 있을 수 있다. 예컨대, 제2타입 API(예컨대, API B)는 제1타입 API(예컨대, API A)에 비하여 상대적으로 더 높은 기준(동시 실행되는 프로세스들의 개수)에서 데이터의 일부를 추출하여 응답에 포함시킬 수 있다. 예컨대, 제2타입 API(예컨대, API B)는 동일한 기준(동시 실행되는 프로세스들의 개수)에서는 제1타입 API(예컨대, API A)에 비하여 상대적으로 데이터로부터 더 많은 범위를 추출하여 응답에 포함시킬 수 있다. 예컨대, 데이터의 추출 범위는 전체 내용 범위, 주요 내용 범위, 또는 내용 대체 등 다양한 수준으로 구분될 수 있다.
실시 예에 따라, 복수의 컨테이너들(예컨대, container#1~#3) 각각에 의해 동시에 실행될 수 있는 API 프로세스들의 개수는 서로 다르게 설정될 수 있다. 예컨대, 제1컨테이너(container#1)는 제1타입 API(API A)를 실행시킬 수 있으며, N개의 제1타입 API 프로세스들을 동시 실행시킬 수 있으며, 제2컨테이너(container#2)는 제2타입 API(API B)를 실행시킬 수 있으며, P개의 제2타입 API 프로세스들을 동시 실행시킬 수 있으며, 제3컨테이너(container#3)는 제3타입 API(API C)를 실행시킬 수 있으며, Q개의 제3타입 API 프로세스들을 동시 실행시킬 수 있다. 이 때, P는 N보다 크고, Q는 P보다 큰 값을 가질 수 있다.
실시 예에 따라, 가상화 서버(300)는 복수의 컨테이너들(예컨대, container#1~#3)의 자원, 파일 시스템, 네트워크 등을 구성하고, 복수의 컨테이너들(예컨대, container#1~#3)의 이미지를 관리하기 위한 도커(doker, 미도시)를 포함할 수 있다.
도 1에서는 설명의 편의를 위하여 가상화 서버(300)에서 생성된 컨테이너(예컨대, container#1~#3)와 컨테이너(예컨대, container#1~#3)에 의해서 실행되는 API 프로세스들을 위주로 도시하고 있으나, 컨테이너(예컨대, container#1~#3)를 모니터링하고, 생성 및 관리하기 위한 구성들이 더 포함될 수 있다. 이에 대해서는 도 2를 참조하여 후술하도록 한다.
공유 스토리지(400)는 가상화 서버(300)에서 컨테이너(예컨대, container#1~#3)에 의해 처리되는 자료 또는 컨테이너(예컨대, container#1~#3)의 생성, 전환, 및 관리에 사용되는 자료들을 저장할 수 있다.
가상화 서버(300)의 세부적인 구성 및 동작에 대해서는 도 2와 도 3을 참조하여 후술하도록 한다.
도 2는 도 1에 도시된 가상화 서버의 일 실시 예에 따른 블록도이다.
도 1과 도 2를 참조하면, 설명의 편의를 위하여 3개의 컨테이너들(예컨대, container#1~#3)을 함께 도시하고 있으나 3개의 컨테이너들(예컨대, container#1~#3)은 선택적으로 생성될 수 있고, 컨테이너들(예컨대, container#1~#3) 개수는 다양한 변경이 가능하다.
가상화 서버(300)는 컨테이너들(예컨대, container#1~#3)을 모니터링하고, 생성 및 관리하기 위한 처리부(310)를 더 포함할 수 있다.
처리부(310)는 프로세스 모니터(process monitor, 312), 컨테이너 변경 결정 유닛(container change decision unit, 314), 및 컨테이너 관리기(container manager, 316)를 포함할 수 있다.
실시 예에 따라, 처리부(310)는 프로세서의 일부 기능으로 구현될 수 있다.
프로세스 모니터(312)는 현재 가상화 서버(300)에서 생성된 컨테이너(예컨대, container#1)에 의해 실행되고 있는 API 프로세스들의 개수를 모니터링할 수 있다.
실시 예에 따라, 컨테이너(예컨대, container#1~#3)는 API 프로세스를 실행시키고 응답을 전달하기 위한 API 프로세스 제어기(API process controller)를 포함할 수 있다.
실시 예에 따라, 도 2에서는 컨테이너별로 서로 다른 타입의 API(API A, API B, API C)를 실행시키는 경우를 예시하고 있으나, 서로 다른 컨테이너에서 동일한 타입의 API를 실행시킬 수도 있다. 이 경우, 프로세스 모니터(312)는 복수의 컨테이너들을 통하여 동시에 실행되고 있는 하나의 동일한 타입의 API 프로세스들의 개수 전체를 모니터링할 수 있다.
실시 예에 따라, 프로세스 모니터(312)는 동시 실행되고 있는 동일한 타입의 API 프로세스들(예컨대, API A)의 개수, 상기 타입의 API 프로세스들의 타입 정보(예컨대, 제1타입(API A))), 및 상기 타입의 API 프로세스들을 실행시키고 있는 컨테이너 정보(예컨대, 제1컨테이너(container #1))를 수집할 수 있다.
컨테이너 변경 결정 유닛(314)은 프로세스 모니터(312)에 의해 모니터링된 동시에 실행되고 있는 제1타입 API(예컨대, API A)의 프로세스들의 개수에 기초하여, 제1타입 API(예컨대, API A)의 프로세스들을 실행시키고 있는 제1컨테이너(예컨대, Container #1)를 제2타입 API(예컨대, API B)의 프로세스들을 실행시키기 위한 제2컨테이너(예컨대, Container #2)로 전환시킬지 여부를 결정할 수 있다.
실시 예에 따라, 컨테이너 변경 결정 유닛(314)은 프로세스 모니터(312)에 의해 모니터링된 동시에 실행되고 있는 제1타입 API(예컨대, API A)의 프로세스들의 개수와 기준 개수를 비교하고, 제1타입 API(예컨대, API A)의 프로세스들의 개수가 기준 개수를 초과하는 경우에 제1컨테이너(예컨대, Container #1)를 제2컨테이너(예컨대, Container #2)로 전환하는 것으로 결정할 수 있다.
실시 예에 따라, 컨테이너 변경 결정 유닛(314)은 모니터링된 동시에 실행되고 있는 제1타입 API(예컨대, API A)의 프로세스들의 개수의 변화 추세에 따라 전환할 컨테이너를 결정할 수 있다. 예컨대, 변경 결정 유닛(314)은 모니터링된 제1타입 API(예컨대, API A)의 프로세스들의 개수의 변화 추세가 상대적으로 완연하게 증가하는 추세인 경우에는 제1컨테이너(예컨대, Container #1)를 제2컨테이너(예컨대, Container #2)로 전환시키는 것으로 결정하고, 모니터링된 제1타입 API(예컨대, API A)의 프로세스들의 개수의 변화 추세가 상대적으로 급격하게 증가하는 추세인 경우에는 제1컨테이너(예컨대, Container #1)를 제3컨테이너(예컨대, Container #3)로 전환시키는 것으로 결정할 수 있다.
실시 예에 따라, 컨테이너 변경 결정 유닛(314)은 전환 결정에 따른 전환 명령을 컨테이너 관리기(316) 측으로 전달할 수 있다.
컨테이너 관리기(316)는 컨테이너 변경 결정 유닛(314)으로부터 전달된 컨테이너 전환 명령에 따라, 현재 API 프로세스들을 실행시키고 있는 컨테이너(예컨대, 제1컨테이너(예컨대, Container #1))를 다른 컨테이너(예컨대, 제2컨테이너(예컨대, Container #2))로 전환시킬 수 있다.
실시 예에 따라, 전환할 새로운 컨테이너(예컨대, 제2컨테이너(예컨대, Container #2))가 존재하지 않는 경우, 컨테이너 관리기(316)는 컨테이너의 전환 전에 새로운 컨테이너(예컨대, Container #2))를 생성할 수 있다.
실시 예에 따라, 컨테이너 관리기(316)는 프로세스 모니터(312)에 의해 모니터링된 동시에 실행되고 있는 제1타입 API(예컨대, API A)의 프로세스들의 개수에 기초하여, 새로운 컨테이너(예컨대, Container #2))를 생성할 수 있다.
실시 예에 따라, 컨테이너 관리기(316)는 프로세스 모니터(312)에 의해 모니터링된 동시에 실행되고 있는 제1타입 API(예컨대, API A)의 프로세스들의 변화 추세에 따라 서로 다른 기준 개수를 적용하여 새로운 컨테이너(예컨대, Container #2))를 생성할 수 있다. 예컨대, 컨테이너 관리기(316)는 모니터링된 동시에 실행되고 있는 제1타입 API(예컨대, API A)의 프로세스들의 개수의 변화 추세가 상대적으로 급격하게 증가하는 추세일수록 상대적으로 적은 기준 개수를 적용하여 새로운 컨테이너(예컨대, Container #2))를 생성할 수 있다. 즉, 컨테이너 관리기(316)는 모니터링된 동시에 실행되고 있는 제1타입 API(예컨대, API A)의 프로세스들의 개수의 변화 추세가 상대적으로 급격하게 증가할수록 더 빠른 시점에 미리 새로운 컨테이너(예컨대, Container #2))를 생성할 수 있다.
실시 예에 따라, 컨테이너 관리기(316)에서 새로운 컨테이너(예컨대, Container #2))를 생성하는 기준이 되는 제1기준 개수는 컨테이너 관리기(316)에서 현재 API 프로세스들을 실행시키고 있는 컨테이너(예컨대, 제1컨테이너(예컨대, Container #1))를 다른 컨테이너(예컨대, 제2컨테이너(예컨대, Container #2))로 전환시키는 기준이 되는 제2기준 개수보다 적을 수 있다. 즉, 컨테이너 관리기(316)는 새로운 컨테이너로 전환하기 전에 새로운 컨테이너를 생성할 수 있다.
실시 예에 따라, 컨테이너 관리기(316)는 새로운 컨테이너(예컨대, 제2컨테이너(예컨대, Container #2))를 생성하거나, 현재 API 프로세스들을 실행시키고 있는 컨테이너(예컨대, 제1컨테이너(예컨대, Container #1))를 다른 컨테이너(예컨대, 제2컨테이너(예컨대, Container #2))로 전환시킬 때, 컨테이너의 이미지 정보를 사용할 수 있다.
컨테이너 관리기(316)는 현재 API 프로세스들을 실행시키고 있는 컨테이너(예컨대, 제1컨테이너(예컨대, Container #1))를 다른 컨테이너(예컨대, 제2컨테이너(예컨대, Container #2))로 전환한 이후에, 기존의 컨테이너(예컨대, 제1컨테이너(예컨대, Container #1))를 제거할 수 있다.
실시 예에 따라, 컨테이너 관리기(316)는 컨테이너 전환 이후, 전환된 컨테이너(예컨대, 제2컨테이너(예컨대, Container #2))에서 동시에 실행되고 있는 API 프로세스들의 개수(예컨대, API B 프로세스들의 개수)가 기준 개수를 초과하는 경우에 기존 컨테이너(예컨대, 제1컨테이너(예컨대, Container #1))를 제거할 수 있다.
다른 실시 예에 따라, 컨테이너 관리기(316)는 컨테이너 전환이 결정된 이후에, 기준 시간이 경과한 경우 기존 컨테이너(예컨대, 제1컨테이너(예컨대, Container #1))를 제거할 수 있다.
컨테이너 관리기(316)는 컨테이너 전환 이후에, 기존의 컨테이너(예컨대, 제1컨테이너(예컨대, Container #1))가 제거되기 이전에, 기존의 컨테이너(예컨대, 제1컨테이너(예컨대, Container #1))로 실행 제한 명령을 전달할 수 있다. 기존의 컨테이너(예컨대, 제1컨테이너(예컨대, Container #1)) 제거되기 이전이라도 상기 실행 제한 명령에 따라 API 프로세스들의 실행을 중단할 수 있다. 실시 예에 따라, 실행 제한 명령은 실행 제한 플래그 형태로 전달될 수 있다.
도 3은 본 발명의 일 실시 예에 따른 가상화 서버의 동작 방법의 플로우차트이다.
도 1 내지 도 3을 참조하면, 가상화 서버(300)는 현재 가상화 서버(300)에서 생성된 컨테이너(예컨대, container#1)에 의해 실행되고 있는 API 프로세스들의 개수를 모니터링할 수 있다(S310).
실시 예에 따라, 서로 다른 컨테이너에서 동일한 타입의 API를 실행시키는 경우, 프로세스 모니터(312)는 동시에 실행되고 있는 하나의 동일한 타입의 API 프로세스들의 개수 전체를 모니터링할 수 있다.
가상화 서버(300)는 S310 단계에서 모니터링된 동시에 실행되고 있는 제1타입 API(예컨대, API A)의 프로세스들의 개수에 기초하여, 제1타입 API(예컨대, API A)의 프로세스들을 실행시키고 있는 제1컨테이너(예컨대, Container #1)를 제2타입 API(예컨대, API B)의 프로세스들을 실행시키기 위한 제2컨테이너(예컨대, Container #2)로 전환시킬지 여부를 결정하고, 제1컨테이너(예컨대, Container #1)를 제2컨테이너(예컨대, Container #2)로 전환시킬 수 있다(S320).
실시 예에 따라, 가상화 서버(300)는 S310 단계에서 모니터링된 동시에 실행되고 있는 제1타입 API(예컨대, API A)의 프로세스들의 개수와 기준 개수를 비교하고, 제1타입 API(예컨대, API A)의 프로세스들의 개수가 기준 개수를 초과하는 경우에 제1컨테이너(예컨대, Container #1)를 제2컨테이너(예컨대, Container #2)로 전환하는 것으로 결정하고, 제1컨테이너(예컨대, Container #1)를 제2컨테이너(예컨대, Container #2)로 전환시킬 수 있다.
실시 예에 따라, 가상화 서버(300)는 S320 단계에서의 컨테이너 전환에 따라, 전환된 이후의 컨테이너(예컨대, Container #2)를 통하여 제2타입 API(예컨대, API B)의 프로세스들을 실행시킬 수 있다(S330).
실시 예에 따라, 가상화 서버(300)는 컨테이너의 전환 이전에, 전환을 위한 새로운 컨테이너(예컨대, Container #2))를 생성할 수 있다.
가상화 서버(300)는 S320 단계에서의 컨테이너 전환 이후에, 기존의 컨테이너(예컨대, 제1컨테이너(예컨대, Container #1))를 제거할 수 있다(S340).
실시 예에 따라, 가상화 서버(300)는 컨테이너 전환 이후, 전환된 컨테이너(예컨대, 제2컨테이너(예컨대, Container #2))에서 동시에 실행되고 있는 API 프로세스들의 개수(예컨대, API B 프로세스들의 개수)가 기준 개수를 초과하는 경우에 기존 컨테이너(예컨대, 제1컨테이너(예컨대, Container #1))를 제거할 수 있다.
다른 실시 예에 따라, 가상화 서버(300)는 컨테이너 전환이 결정된 이후에, 기준 시간이 경과한 경우 기존 컨테이너(예컨대, 제1컨테이너(예컨대, Container #1))를 제거할 수 있다.
본 발명의 실시 예에 따른 가상화 서버의 동작 방법은 프로그램 코드로 구현되어 메모리에 저장될 수 있으며, 메모리는 프로세서와 결합되어 본 발명의 실시 예에 따른 가상화 서버의 동작 방법을 수행 시킬 수 있다.
이상, 본 발명을 바람직한 실시 예를 들어 상세하게 설명하였으나, 본 발명은 상기 실시 예에 한정되지 않고, 본 발명의 기술적 사상 및 범위 내에서 당 분야에서 통상의 지식을 가진 자에 의하여 여러가지 변형 및 변경이 가능하다.
100 : 사용자 단말
300 : 가상화 서버
400 : 공유 스토리지

Claims (15)

  1. 제1컨테이너가 동시에 실행시키고 있는 제1타입 API(Application Program Interface)의 프로세스들의 개수를 모니터링하는 단계;
    모니터링된 상기 제1타입 API의 프로세스들의 개수에 기초하여, 제2타입 API의 프로세스들을 실행시키기 위한 제2컨테이너를 생성하는 단계;
    모니터링된 상기 제1타입 API의 프로세스들의 개수에 기초하여, 상기 제1컨테이너를 상기 제2컨테이너로 전환하는 단계; 및
    전환된 상기 제2컨테이너를 통해 상기 제2타입의 API 프로세스를 실행시키는 단계를 포함하며,
    상기 제2컨테이너를 생성하기 위한 기준이 되는 제1기준 개수가, 상기 제1컨테이너를 상기 제2컨테이너로 전환하기 위한 기준이 되는 제2기준 개수보다 적은, 가상화 서버의 동작 방법.
  2. 제1항에 있어서,
    상기 모니터링하는 단계는,
    적어도 하나 이상의 컨테이너에 의해 실행되고 있는 상기 제1타입 API의 프로세스들의 개수를 모니터링하는, 가상화 서버의 동작 방법.
  3. 제2항에 있어서,
    상기 모니터링하는 단계는,
    적어도 하나 이상의 컨테이너에 의해 실행되고 있는 상기 제1타입 API의 프로세스들의 개수, 상기 제1타입 API의 프로세스들의 타입 정보, 및 상기 제1타입 API의 프로세스들을 실행시키고 있는 컨테이너의 정보를 수집하는, 가상화 서버의 동작 방법.
  4. 삭제
  5. 제1항에 있어서,
    상기 전환하는 단계는,
    모니터링된 상기 제1타입 API의 프로세스들의 개수의 변화 추세에 따라 서로 다른 기준 개수를 적용하여 상기 제2컨테이너를 생성하는, 가상화 서버의 동작 방법.
  6. 제5항에 있어서,
    상기 전환하는 단계는,
    모니터링된 상기 제1타입 API의 프로세스들의 개수의 변화 추세가 상대적으로 급격하게 증가하는 추세일수록 상대적으로 적은 기준 개수를 적용하여 상기 제2컨테이너를 생성하는, 가상화 서버의 동작 방법.
  7. 삭제
  8. 제1항에 있어서,
    상기 전환하는 단계는,
    상기 제2컨테이너의 이미지 정보를 이용하여 상기 제1컨테이너를 상기 제2컨테이너로 전환하는, 가상화 서버의 동작 방법.
  9. 제8항에 있어서,
    상기 전환하는 단계는,
    상기 제1컨테이너를 상기 제2컨테이너로 전환한 이후에 상기 제1컨테이너를 제거하는 단계를 포함하는, 가상화 서버의 동작 방법.
  10. 제9항에 있어서,
    상기 제거하는 단계는,
    동시에 실행되고 있는 상기 제2타입 API의 프로세스들의 개수가 제3기준 개수를 초과하는 경우에 상기 제1컨테이너를 제거하는, 가상화 서버의 동작 방법.
  11. 제9항에 있어서,
    상기 제거하는 단계는,
    상기 제1컨테이너를 상기 제2컨테이너로 전환한 이후에, 기준 시간이 경과한 경우에 상기 제1컨테이너를 제거하는, 가상화 서버의 동작 방법.

  12. 제1항에 있어서,
    상기 전환하는 단계는,
    상기 제1컨테이너에 상기 제1타입 API의 프로세스들의 실행에 대한 실행 제한 명령을 전달하는 단계를 포함하는, 가상화 서버의 동작 방법.
  13. 제1항에 있어서,
    상기 제1타입 API는,
    프로세스 동기화(process synchronization)에 있어서 상기 제2타입의 API와 서로 다른 규칙을 가지는, 가상화 서버의 동작 방법.
  14. 제1컨테이너가 동시에 실행시키고 있는 제1타입 API(Application Program Interface)의 프로세스들의 개수를 모니터링하는 프로세스 모니터;
    모니터링된 상기 제1타입 API의 프로세스들의 개수에 기초하여, 제2타입 API의 프로세스들을 실행시키기 위한 제2컨테이너를 생성하는 컨테이너 관리기; 및
    모니터링된 상기 제1타입 API의 프로세스들의 개수에 기초하여, 상기 제1컨테이너를 상기 제2컨테이너로 전환시킬지 여부를 결정하는 컨테이너 변경 결정 유닛을 포함하며,
    상기 제2컨테이너를 생성하기 위한 기준이 되는 제1기준 개수가, 상기 제1컨테이너를 상기 제2컨테이너로 전환하기 위한 기준이 되는 제2기준 개수보다 적은, 가상화 서버.
  15. 프로세서(processor)와 결합되어 가상화 서버의 동작 방법을 수행하기 위한 매체에 저장된 프로그램으로서,
    제1컨테이너가 동시에 실행시키고 있는 제1타입 API(Application Program Interface)의 프로세스들의 개수를 모니터링하는 단계;
    모니터링된 상기 제1타입 API의 프로세스들의 개수에 기초하여, 제2타입 API의 프로세스들을 실행시키기 위한 제2컨테이너를 생성하는 단계;
    모니터링된 상기 제1타입 API의 프로세스들의 개수에 기초하여, 상기 제1컨테이너를 상기 제2컨테이너로 전환하는 단계; 및
    전환된 상기 제2컨테이너를 통해 상기 제2타입의 API 프로세스를 실행시키는 단계를 수행하며,
    상기 제2컨테이너를 생성하기 위한 기준이 되는 제1기준 개수가, 상기 제1컨테이너를 상기 제2컨테이너로 전환하기 위한 기준이 되는 제2기준 개수보다 적은, 프로그램.
KR1020200168629A 2020-12-04 2020-12-04 가상화 서버, 이의 동작 방법, 및 프로그램 KR102491987B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200168629A KR102491987B1 (ko) 2020-12-04 2020-12-04 가상화 서버, 이의 동작 방법, 및 프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200168629A KR102491987B1 (ko) 2020-12-04 2020-12-04 가상화 서버, 이의 동작 방법, 및 프로그램

Publications (2)

Publication Number Publication Date
KR20220079157A KR20220079157A (ko) 2022-06-13
KR102491987B1 true KR102491987B1 (ko) 2023-01-26

Family

ID=81984111

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200168629A KR102491987B1 (ko) 2020-12-04 2020-12-04 가상화 서버, 이의 동작 방법, 및 프로그램

Country Status (1)

Country Link
KR (1) KR102491987B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200097337A1 (en) * 2018-09-21 2020-03-26 Citrix Systems, Inc. Systems and methods for intercepting and enhancing saas application calls via embedded browser

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016196602A1 (en) * 2015-06-01 2016-12-08 Draios Inc. Implicit push data transfer
KR102093130B1 (ko) * 2018-06-11 2020-04-23 주식회사 티맥스에이앤씨 컨테이너 기반 클라우드 서버를 위한 통합관리 시스템
KR102576443B1 (ko) * 2018-10-26 2023-09-07 삼성에스디에스 주식회사 연산 장치 및 그 잡 스케줄링 방법
KR102650976B1 (ko) * 2018-11-26 2024-03-26 삼성전자주식회사 전자장치 및 그 제어방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200097337A1 (en) * 2018-09-21 2020-03-26 Citrix Systems, Inc. Systems and methods for intercepting and enhancing saas application calls via embedded browser

Also Published As

Publication number Publication date
KR20220079157A (ko) 2022-06-13

Similar Documents

Publication Publication Date Title
US9413683B2 (en) Managing resources in a distributed system using dynamic clusters
US9501562B2 (en) Identification of complementary data objects
US10348815B2 (en) Command process load balancing system
RU2571562C2 (ru) Способ, устройство и система для переноса ресурса
CN106648832B (zh) 提高虚拟机资源利用率的装置及方法
CN109828790B (zh) 一种基于申威异构众核处理器的数据处理方法和系统
US20190294796A1 (en) Resolving anomalies for network applications using code injection
CN113452774B (zh) 消息推送方法、装置、设备及存储介质
CN103995863B (zh) 一种重复数据删除的方法及装置
CN113014608A (zh) 一种流量分发控制方法、装置、电子设备及存储介质
KR102491987B1 (ko) 가상화 서버, 이의 동작 방법, 및 프로그램
CN112988377B (zh) 用于云服务的资源分配方法、系统和介质
CN113326150A (zh) 一种联机小批量消息处理方法和装置
JP5962493B2 (ja) プログラム、情報処理装置およびオブジェクト送信方法
WO2022199206A1 (zh) 用于虚拟机的内存共享方法及装置
JP2011070464A (ja) 計算機システム及び計算機システムの性能管理方法
CN104461382B (zh) 运行多个文件系统的文件服务器的内部写方法和服务器
CN114598731A (zh) 集群日志采集方法、装置、设备及存储介质
US11627085B2 (en) Non-transitory computer-readable recording medium, service management device, and service management method
CN106528577B (zh) 一种设置待清理文件的方法和装置
US20230385533A1 (en) Method and system for providing edit service of document
CN103959300A (zh) 反恶意程序系统及该系统中的数据处理方法
JP4353869B2 (ja) 並列ソートシステム、並列ソートサーバ、クライアント、並列ソート方法、プログラム、記録媒体
CN110262958B (zh) 测试用户的确定方法、装置、服务器和存储介质
CN116361110A (zh) 一种基于sidecar的GPU采集方法和装置

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant