KR20240009187A - 인스턴스 관리 방법 및 이를 위한 전자 장치 - Google Patents

인스턴스 관리 방법 및 이를 위한 전자 장치 Download PDF

Info

Publication number
KR20240009187A
KR20240009187A KR1020220086347A KR20220086347A KR20240009187A KR 20240009187 A KR20240009187 A KR 20240009187A KR 1020220086347 A KR1020220086347 A KR 1020220086347A KR 20220086347 A KR20220086347 A KR 20220086347A KR 20240009187 A KR20240009187 A KR 20240009187A
Authority
KR
South Korea
Prior art keywords
instance
information
task
management server
creation request
Prior art date
Application number
KR1020220086347A
Other languages
English (en)
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 KR1020220086347A priority Critical patent/KR20240009187A/ko
Priority to PCT/KR2022/010600 priority patent/WO2024014600A1/ko
Publication of KR20240009187A publication Critical patent/KR20240009187A/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
    • 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
    • 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]
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/5072Grid computing
    • 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/5083Techniques for rebalancing the load in a distributed system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation
    • H04L47/783Distributed allocation of resources, e.g. bandwidth brokers
    • 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/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/45587Isolation or security of 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/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 개시에 따르면, 메인 서버가 태스크 대기열의 상태 및 기존에 생성된 인스턴스의 상태를 모니터링하여 인스턴스 관리 서버에 인스턴스 생성 요청을 전송하는 단계, 상기 인스턴스 관리 서버가 상기 인스턴스 생성 요청에 대응하여 인스턴스 생성을 위한 제1 설정 정보를 획득하는 단계, 상기 인스턴스 관리 서버가 상기 제1 설정 정보를 기반으로 인스턴스를 생성하는 단계, 상기 메인 서버가 상기 인스턴스로부터 노드 생성 요청을 수신하는 단계 및 상기 메인 서버가 생성된 노드를 통해 상기 태스크 대기열의 태스크를 상기 인스턴스에 할당하는 단계를 포함하되, 상기 인스턴스 관리 서버에 상기 인스턴스 생성 요청을 전송할지 여부는 상기 태스크 대기열의 태스크 관련 정보, 상기 인스턴스 관리 서버의 인스턴스 상태 정보 및 현재 시각 정보 중 적어도 하나를 기반으로 결정되는 인스턴스 관리 방법 및 이를 위한 전자 장치가 개시된다.

Description

인스턴스 관리 방법 및 이를 위한 전자 장치{INSTANCE MANAGING METHOD AND ELECTRONIC DEVICE FOR THE SAME}
본 개시는 자동으로 관련 정보를 모니터링하여 인스턴스 관리 서버에 인스턴스의 생성 또는 삭제를 요청하도록 구성되는 인스턴스 관리 방법 및 이를 위한 전자 장치에 관한 것이다.
클라우드(cloud) 서비스의 출현으로 인해, 사용자가 필요한 소프트웨어를 자신의 컴퓨터에 설치하지 않고도 인터넷 접속을 통해 언제든 사용할 수 있고, 동시에 각종 IT 기기로 데이터를 손쉽게 공유할 수 있는 시대가 도래하였다. 사용자는 자신의 사용 목적에 따라 적합한 인스턴스의 유형 및 세부적인 설정 정보를 선택하여 인스턴스의 생성을 클라우드 서버에 요청할 수 있고, 선택된 설정 정보에 기초하여 생성된 인스턴스를 사용할 수 있다. 또한, 사용자는 인스턴스를 사용한 시간에 따라 비용을 지불함으로써 클라우드 서비스를 이용할 수 있다.
한편, 어플리케이션의 개발에 있어 상술한 클라우드 서비스를 활용하여 어플리케이션의 지속적 통합 및 배포(continuous integration and continuous delivery(or deployment); CI/CD) 과정이 수행된다. 지속적 통합(CI) 과정은 소스 코드의 변경 사항들을 지속적으로 빌드(build), 테스트(test) 및 병합(merge)하는 것을 의미하고, 지속적 배포(CD) 과정은 지속적 통합(CI) 과정을 통해 준비된 어플리케이션을 자동으로 테스트 환경 또는 프로덕션 환경에 배포하는 것을 의미한다.
클라우드 서비스를 활용하여 지속적 통합 및 배포(CI/CD) 과정을 수행함에 있어서, 인스턴스를 생성하고 빌드 환경을 업데이트하며 어플리케이션을 배포하는 세부적인 과정들을 매뉴얼하게 조정해야하는 문제가 있다.
관련하여, KR 10-2020-0057669 A 건, KR 10-2235029 B1 건 등의 선행문헌들을 참조할 수 있다.
본 개시는 자동으로 관련 정보를 모니터링하여 인스턴스 관리 서버에 인스턴스의 생성 또는 삭제를 요청하도록 구성되는 인스턴스 관리 방법 및 이를 위한 전자 장치를 제공하는 것을 목적으로 한다.
보다 구체적으로, 본 개시는 태스크가 많을 때에는 인스턴스를 생성하여 태스크가 태스크 대기열에 쌓이는 것을 방지하고, 태스크가 적을 때에는 인스턴스를 삭제하는 방법으로, 서버 자원의 효율적 사용을 가능케 하는 인스턴스 관리 방법을 제공하는 것을 목적으로 한다.
본 개시에 의해 이루고자 하는 기술적 과제는 상술한 기술적 과제들로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
개시되는 일 실시 예에 따른 인스턴스 관리 방법은 메인 서버가 태스크 대기열의 상태 및 기존에 생성된 인스턴스의 상태를 모니터링하여 인스턴스 관리 서버에 인스턴스 생성 요청을 전송하는 단계, 상기 인스턴스 관리 서버가 상기 인스턴스 생성 요청에 대응하여 인스턴스 생성을 위한 제1 설정 정보를 획득하는 단계, 상기 인스턴스 관리 서버가 상기 제1 설정 정보를 기반으로 인스턴스를 생성하는 단계, 상기 메인 서버가 상기 인스턴스로부터 노드 생성 요청을 수신하는 단계 및 상기 메인 서버가 생성된 노드를 통해 상기 태스크 대기열의 태스크를 상기 인스턴스에 할당하는 단계를 포함하되, 상기 인스턴스 관리 서버에 상기 인스턴스 생성 요청을 전송할지 여부는 상기 태스크 대기열의 태스크 관련 정보, 상기 인스턴스 관리 서버의 인스턴스 상태 정보 및 현재 시각 정보 중 적어도 하나를 기반으로 결정될 수 있다.
상기 태스크가 완료된 이후, 상기 메인 서버가 상기 인스턴스로부터 노드 삭제 요청을 수신하는 단계를 더 포함할 수 있다.
상기 메인 서버가 상기 태스크 대기열의 상태 및 상기 기존에 생성된 인스턴스의 상태를 모니터링하여 상기 인스턴스 관리 서버에 인스턴스 삭제 요청을 전송하는 단계를 더 포함할 수 있다.
상기 인스턴스 생성 요청은 생성할 인스턴스의 개수 정보를 포함할 수 있다.
상기 인스턴스 생성 요청에 대응하여 상기 인스턴스 관리 서버는 복수의 인스턴스들을 생성할 수 있다.
상기 인스턴스 관리 서버는 미리 결정된 최대 개수 이하의 인스턴스들을 포함할 수 있다.
상기 인스턴스 관리 서버가 상기 인스턴스를 생성하는 단계 및 상기 메인 서버가 상기 인스턴스로부터 상기 노드 생성 요청을 수신하는 단계 사이에, 상기 인스턴스가 제2 설정 정보를 획득하는 단계를 더 포함하되, 상기 제2 설정 정보는 태스크 수행을 위한 실행 파일 정보 및 상기 메인 서버와 상기 인스턴스 관리 서버의 연결을 위한 인증 정보를 포함할 수 있다.
상기 태스크 관련 정보는 태스크 개수 정보, 태스크의 대기 시간 정보 및 상기 태스크의 업무량 정보 중 적어도 하나를 포함할 수 있다.
상기 인스턴스 관리 서버에 상기 인스턴스 생성 요청을 전송할지 여부가 상기 태스크 개수 정보를 기반으로 결정되는 경우, 상기 메인 서버는 상기 태스크 대기열의 태스크 개수가 기준 값 이상인 경우에 상기 인스턴스 생성 요청을 전송할 수 있다.
상기 인스턴스 관리 서버에 상기 인스턴스 생성 요청을 전송할지 여부가 상기 태스크의 대기 시간 정보를 기반으로 결정되는 경우, 상기 메인 서버는 상기 태스크 대기열의 태스크 중 대기 시간이 가장 오래된 태스크의 대기 시간이 기준 값 이상인 경우에 상기 인스턴스 생성 요청을 전송할 수 있다.
상기 인스턴스 관리 서버에 상기 인스턴스 생성 요청을 전송할지 여부가 상기 태스크의 업무량 정보를 기반으로 결정되는 경우, 상기 메인 서버는 태스크 수행의 예상 소요 시간이 기준 값 이상인 경우에 상기 인스턴스 생성 요청을 전송할 수 있다.
상기 인스턴스 관리 서버에 상기 인스턴스 생성 요청을 전송할지 여부가 상기 현재 시각 정보를 기반으로 결정되는 경우, 상기 메인 서버는 현재 시각이 기준 시각을 지나면 상기 태스크 대기열의 상태와 무관하게 상기 인스턴스 생성 요청을 전송할 수 있다.
상기 현재 시각 정보는 요일 정보 및 날짜 정보를 포함하고, 상기 인스턴스 관리 서버에 상기 인스턴스 생성 요청을 전송할지 여부는 상기 요일 정보 및 상기 날짜 정보 중 적어도 하나를 기반으로 결정될 수 있다.
상기 인스턴스 상태 정보는 기존에 생성된 인스턴스에서 수행되고 있는 태스크의 예상 소요 시간 정보를 포함할 수 있다.
상기 메인 서버는 상기 태스크 대기열의 상태를 주기적으로 모니터링하되, 모니터링의 주기는 상기 태스크 대기열의 상기 태스크 관련 정보, 상기 인스턴스 관리 서버의 상기 인스턴스 상태 정보 및 상기 현재 시각 정보 중 적어도 하나를 기반으로 결정될 수 있다.
상기 인스턴스 관리 서버의 상기 인스턴스가 할당된 태스크를 수행하는 단계를 더 포함할 수 있다.
상기 메인 서버가 작업자 단말로부터 태스크 수행 요청을 수신하는 단계, 및 상기 인스턴스 관리 서버가 태스크 수행 결과 정보를 상기 메인 서버 및 상기 작업자 단말에 제공하는 단계를 더 포함할 수 있다.
개시되는 일 실시 예에 따른, 메인 서버 및 인스턴스 관리 서버를 통해 인스턴스를 관리하는 전자 장치는 적어도 하나의 명령어를 저장하는 메모리, 및 상기 적어도 하나의 명령어에 기초하여, 상기 메인 서버가 태스크 대기열의 상태 및 기존에 생성된 인스턴스의 상태를 모니터링하여 상기 인스턴스 관리 서버에 인스턴스 생성 요청을 전송하고, 상기 인스턴스 관리 서버가 상기 인스턴스 생성 요청에 대응하여 인스턴스 생성을 위한 제1 설정 정보를 획득하고, 상기 인스턴스 관리 서버가 상기 제1 설정 정보를 기반으로 인스턴스를 생성하고, 상기 메인 서버가 상기 인스턴스로부터 노드 생성 요청을 수신하고, 상기 메인 서버가 생성된 노드를 통해 상기 태스크 대기열의 태스크를 상기 인스턴스에 할당하는 프로세서를 포함하되, 상기 인스턴스 관리 서버에 상기 인스턴스 생성 요청을 전송할지 여부는 상기 태스크 대기열의 태스크 관련 정보, 상기 인스턴스 관리 서버의 인스턴스 상태 정보 및 현재 시각 정보 중 적어도 하나를 기반으로 결정될 수 있다.
기타 실시 예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 개시에 따르면, 자동으로 관련 정보를 모니터링하여 인스턴스 관리 서버에 인스턴스의 생성 또는 삭제를 요청함에 따라 서버의 자원을 효율적으로 사용할 수 있다.
또한, 본 개시에 따르면, 인스턴스 관리 서버에 인스턴스 생성 요청을 전송할지 여부를 결정하는 규칙이 현재 상황 및 예견되는 상황에 따라 유연하게 변경될 수 있고, 이에 따라 서버의 자원을 효율적으로 사용할 수 있다.
발명의 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 청구범위의 기재로부터 당해 기술 분야의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 개시의 실시 예들에 따른 인스턴스 관리 방법이 구현되는 전자 장치를 설명하기 위한 개념도이다.
도 2는 본 개시의 실시 예들에 따른 전자 장치 및 작업자 단말을 설명하기 위한 개략적인 블록도이다.
도 3 내지 도 5는 본 개시의 실시 예들에 따른 인스턴스 관리 방법을 설명하기 위한 흐름도들이다.
도 6은 본 개시의 실시 예들에 따른 인스턴스 관리 방법에 따라 모니터링되는 메인 서버의 태스크 대기열을 표시하는 페이지를 설명하기 위한 도면이다.
도 7은 본 개시의 실시 예들에 따른 인스턴스 관리 방법에 따라 수행되고 있는 어느 하나의 태스크의 수행 결과 정보를 표시하는 페이지를 설명하기 위한 도면이다.
도 8은 본 개시의 실시 예들에 따른 인스턴스 관리 방법에 따라 수행된 태스크들의 수행 결과 정보를 표시하는 페이지를 설명하기 위한 도면이다.
실시 예들에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 “...부”, “...모듈” 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
명세서 전체에서 기재된 “a, b, 및 c 중 적어도 하나”의 표현은, ‘a 단독’, ‘b 단독’, ‘c 단독’, ‘a 및 b’, ‘a 및 c’, ‘b 및 c’, 또는 ‘a,b,c 모두’를 포괄할 수 있다.
이하에서 언급되는 "단말"은 네트워크를 통해 서버나 타 단말에 접속할 수 있는 컴퓨터나 휴대용 단말로 구현될 수 있다. 여기서, 컴퓨터는 예를 들어, 웹 브라우저(WEB Browser)가 탑재된 노트북, 데스크톱(desktop), 랩톱(laptop) 등을 포함하고, 휴대용 단말은 예를 들어, 휴대성과 이동성이 보장되는 무선 통신 장치로서, IMT(International Mobile Telecommunication), CDMA(Code Division Multiple Access), W-CDMA(W-Code Division Multiple Access), LTE(Long Term Evolution) 등의 통신 기반 단말, 스마트폰, 태블릿 PC 등과 같은 모든 종류의 핸드헬드(Handheld) 기반의 무선 통신 장치를 포함할 수 있다.
아래에서는 첨부한 도면을 참고하여 본 개시의 실시 예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
이하, 본 개시의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
실시 예를 설명함에 있어서 본 개시가 속하는 기술 분야에 익히 알려져 있고 본 개시와 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 개시의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
마찬가지 이유로 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시되었다. 또한, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 각 도면에서 동일한 또는 대응하는 구성요소에는 동일한 참조 번호를 부여하였다.
본 개시의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 개시는 이하의 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 개시가 완전하도록 하고, 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 개시는 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 명령어들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 명령어들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 명령어들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 명령어들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장된 명령어들은 흐름도 블록(들)에서 설명된 기능을 수행하는 명령어 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 명령어들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 명령어들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 명령어들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
도 1은 본 개시의 실시 예들에 따른 인스턴스 관리 방법이 구현되는 전자 장치를 설명하기 위한 개념도이다.
도 1을 참조하면, 본 개시의 실시 예들에 따른 인스턴스 관리 방법은 다양한 종류의 장치들에 구현될 수 있다. 예를 들어, 본 개시의 실시 예들에 따른 인스턴스 관리 방법은 전자 장치(100)에 구현될 수 있다. 달리 말해, 전자 장치(100)는 구현된 인스턴스 관리 방법을 기반으로, 본 개시의 다양한 실시 예들에 따른 동작을 수행할 수 있다. 한편, 본 개시의 실시 예들에 따른 인스턴스 관리 방법은, 도 1에 도시된 바에 국한되지 않고, 다양한 전자 장치 또는 서버에 구현될 수도 있다.
다양한 실시 예들에 따른 전자 장치(100)는, 전자 장치(100)와 연동되는 적어도 하나의 작업자 단말(130)과 유선 또는 무선 통신을 수행하며, 대단위의 저장 용량을 갖는 메모리를 포함하는 장치일 수 있다. 예를 들어, 전자 장치(100)는 전자 장치(100)와 연동되는 적어도 하나의 작업자 단말(130)과 연결된 클라우드 장치(cloud device)일 수 있다.
다양한 실시 예들에 따른 전자 장치(100)와 연동되는 적어도 하나의 작업자 단말(130)은, 데스크탑 피시, 태블릿 피시, 모바일 단말 등 작업자에 의해 이용될 수 있는 장치일 수 있다. 이외에도 유사한 기능을 수행하는 다른 전자 장치들이 전자 장치(100)와 연동되는 적어도 하나의 작업자 단말(130)로 이용될 수 있다.
본 개시의 실시 예들에 따른 동작을 위한 다양한 모듈들이 제공될 수 있다. 모듈들은 인스턴스 관리 방법이 구현되는(또는, 물리적 장치에 포함되는) 물리적 장치(예를 들어, 전자 장치(100))가 지정된 동작을 수행할 수 있도록 구현된 컴퓨터 코드 내지는 하나 이상의 명령어일 수 있다. 다시 말하면, 인스턴스 관리 방법이 구현되는 물리적 장치는 복수 개의 모듈들을 컴퓨터 코드 형태로 메모리에 저장하고, 메모리에 저장된 복수 개의 모듈들이 실행되는 경우 복수 개의 모듈들은 물리적 장치가 복수 개의 모듈들에 대응하는 지정된 동작들을 수행하도록 할 수 있다.
전자 장치(100)는 메인 서버(110) 및 인스턴스 관리 서버(120)를 포함할 수 있다. 메인 서버(110) 및 인스턴스 관리 서버(120)는 본 개시의 실시 예들에 따른 인스턴스 관리 방법을 위한 동작들을 수행할 수 있다. 다만, 본 개시는 전자 장치(100)가 메인 서버(110) 및 인스턴스 관리 서버(120)를 포함하는 것에 제한되지 않고, 메인 서버(110) 및 인스턴스 관리 서버(120)는 각각 물리적 또는 논리적으로 분리된 서버일 수 있으며, 이때 메인 서버(110) 및 인스턴스 관리 서버(120)는 네트워크를 통해 서로 연결될 수 있다.
도 2는 본 개시의 실시 예들에 따른 전자 장치 및 작업자 단말을 설명하기 위한 개략적인 블록도이다.
도 2를 참조하면, 전자 장치(100) 및 전자 장치(100)와 연동되는 적어도 하나의 작업자 단말(130) 각각은 통신부(210), 메모리(220) 및 프로세서(230)를 포함할 수 있다. 실시 예들에 따르면, 전자 장치(100)에 포함된 메인 서버(110) 및 인스턴스 관리 서버(120) 각각이 통신부(210), 메모리(220) 및 프로세서(230)에 대응되는 구성들을 포함할 수도 있다.
실시 예들에 따르면, 전자 장치(100) 및 전자 장치(100)와 연동되는 적어도 하나의 작업자 단말(130) 각각은 입력부 및 출력부를 더 포함할 수도 있다. 입력부 및 출력부 각각은 사용자 입력을 받거나 또는 사용자에게 정보를 출력하는 각종 인터페이스나 연결 포트 등일 수 있다.
입력부는 입력 모듈을 포함할 수 있고, 입력 모듈은 사용자로부터 사용자 입력을 수신한다. 사용자 입력은 키 입력, 터치 입력, 음성 입력을 비롯한 다양한 형태로 이루어질 수 있다. 이러한 사용자 입력을 받을 수 있는 입력 모듈의 예로는 전통적인 형태의 키패드나 키보드, 마우스는 물론, 사용자의 터치를 감지하는 터치 센서, 음성 신호를 입력받는 마이크, 영상 인식을 통해 제스처 등을 인식하는 카메라, 사용자 접근을 감지하는 조도 센서나 적외선 센서 중 적어도 하나를 포함하는 근접 센서, 가속도 센서나 자이로 센서 등을 통해 사용자 동작을 인식하는 모션 센서 및 그 외의 다양한 형태의 사용자 입력을 감지하거나 입력받는 다양한 형태의 입력 수단이 있으며, 본 개시의 실시 예에 따른 입력 모듈은 위에 나열한 장치 중 적어도 하나를 포함할 수 있다. 여기서, 터치 센서는 디스플레이 패널에 부착되는 터치 패널이나 터치 필름을 통해 터치를 감지하는 압전식 또는 정전식 터치 센서, 광학적인 방식에 의해 터치를 감지하는 광학식 터치 센서 등으로 구현될 수 있다. 이외에도 입력 모듈은 자체적으로 사용자 입력을 감지하는 장치 대신 사용자 입력을 입력받는 외부의 입력 장치를 연결시키는 입력 인터페이스(USB 포트, PS/2 포트 등)의 형태로 구현될 수도 있다.
한편, 출력부는 출력 모듈을 포함할 수 있고, 출력 모듈은 각종 정보를 출력할 수 있다. 출력 모듈은 영상을 출력하는 디스플레이, 소리를 출력하는 스피커, 진동을 발생시키는 햅틱 장치 및 그 외의 다양한 형태의 출력 수단 중 적어도 하나를 포함할 수 있다. 이외에도 출력 모듈은 상술한 개별 출력 수단을 연결시키는 포트 타입의 출력 인터페이스의 형태로 구현될 수도 있다. 예를 들어, 디스플레이 형태의 출력 모듈은 텍스트, 정지 영상, 동영상을 디스플레이 할 수 있다. 디스플레이는 액정 디스플레이(LCD; Liquid Crystal Display), 발광 다이오드(LED; light emitting diode) 디스플레이, 유기 발광 다이오드(OLED; Organic Light Emitting Diode) 디스플레이, 평판 디스플레이(FPD; Flat Panel Display), 투명 디스플레이(transparent display), 곡면 디스플레이(Curved Display), 플렉시블 디스플레이(flexible display), 3차원 디스플레이(3D display), 홀로그래픽 디스플레이(holographic display), 프로젝터 및 그 외의 영상 출력 기능을 수행할 수 있는 다양한 형태의 장치 중 적어도 하나를 포함할 수 있다. 이러한 디스플레이는 입력 모듈의 터치 센서와 일체로 구성된 터치 디스플레이의 형태일 수도 있다.
통신부(210)는 다른 장치와 통신할 수 있다. 따라서, 전자 장치(100) 및 전자 장치(100)와 연동되는 적어도 하나의 작업자 단말(130) 각각은 통신부(210)를 통해 다른 장치와 정보를 송수신할 수 있다. 예를 들어, 전자 장치(100) 및 전자 장치(100)와 연동되는 적어도 하나의 작업자 단말(130) 각각은 통신부(210)를 이용해 상호 간 통신을 수행하거나, 기타 다른 장치와 통신을 수행할 수 있다.
여기서, 통신, 즉 데이터의 송수신은 유선 또는 무선으로 이루어질 수 있다. 이를 위해 통신부(210)는 LAN(Local Area Network)를 통해 인터넷 등에 접속하는 유선 통신 모듈, 이동 통신 기지국을 거쳐 이동 통신 네트워크에 접속하여 데이터를 송수신하는 이동 통신 모듈, 와이파이(Wi-Fi) 같은 WLAN(Wireless Local Area Network) 계열의 통신 방식이나 블루투스(Bluetooth), 직비(Zigbee)와 같은 WPAN(Wireless Personal Area Network) 계열의 통신 방식을 이용하는 근거리 통신 모듈, GPS(Global Positioning System)과 같은 GNSS(Global Navigation Satellite System)을 이용하는 위성 통신 모듈 또는 이들의 조합으로 구성될 수 있다.
메모리(220)는 각종 정보를 저장할 수 있다. 메모리(220)는 데이터를 임시적으로 또는 반영구적으로 저장할 수 있다. 예를 들어, 전자 장치(100)의 메모리(220)에는 전자 장치(100)를 구동하기 위한 운용 프로그램(OS; Operating System), 웹 사이트를 호스팅하기 위한 데이터나 점자 생성을 위한 프로그램 내지는 어플리케이션(예를 들어, 웹 어플리케이션)에 관한 데이터 등이 저장될 수 있다. 또, 메모리(220)는 상술한 바와 같이 모듈들을 컴퓨터 코드 형태로 저장할 수 있다.
메모리(220)의 예로는 하드 디스크(HDD; Hard Disk Drive), SSD(Solid State Drive), 플래쉬 메모리(flash memory), 롬(ROM; Read-Only Memory), 램(RAM; Random Access Memory) 등이 있을 수 있다. 이러한 메모리(220)는 내장 타입 또는 탈부착 가능한 타입으로 제공될 수 있다.
프로세서(230)는 전자 장치(100) 및 전자 장치(100)와 연동되는 적어도 하나의 작업자 단말(130) 각각의 전반적인 동작을 제어한다. 이를 위해 프로세서(230)는 각종 정보의 연산 및 처리를 수행하고 전자 장치(100)의 구성요소들의 동작을 제어할 수 있다. 예를 들어, 프로세서(230)는 페이지 정보 제공을 위한 프로그램 내지 어플리케이션을 실행시킬 수 있을 것이다. 프로세서(230)는 하드웨어, 소프트웨어 또는 이들의 조합에 따라 컴퓨터나 이와 유사한 장치로 구현될 수 있다. 하드웨어적으로 프로세서(230)는 전기적인 신호를 처리하여 제어 기능을 수행하는 전자 회로 형태로 구현될 수 있으며, 소프트웨어적으로는 하드웨어적인 프로세서(230)를 구동시키는 프로그램 형태로 구현될 수 있다. 한편, 이하의 설명에서 특별한 언급이 없는 경우에는 전자 장치(100) 및 전자 장치(100)와 연동되는 적어도 하나의 작업자 단말(130)의 동작은 프로세서(230)의 제어에 의해 수행되는 것으로 해석될 수 있다. 즉, 본 개시의 실시 예들에 따른 인스턴스 관리 방법에 구현되는 모듈들이 실행되는 경우, 모듈들은 프로세서(230)가 전자 장치(100) 및 전자 장치(100)와 연동되는 적어도 하나의 작업자 단말(130)이 인스턴스 관리 방법의 단계들을 수행하도록 제어하는 것으로 해석될 수 있다.
요약하면, 다양한 실시 예들은 다양한 수단을 통해 구현될 수 있다. 예를 들어, 다양한 실시 예들은 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다.
하드웨어에 의한 구현의 경우, 다양한 실시 예들에 따른 방법은 하나 또는 그 이상의 ASICs(application specific integrated circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays), 프로세서, 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
펌웨어나 소프트웨어에 의한 구현의 경우, 다양한 실시 예들에 따른 방법은 이하에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차 또는 함수 등의 형태로 구현될 수 있다. 예를 들어, 소프트웨어 코드는 메모리에 저장되어 프로세서에 의해 구동될 수 있다. 메모리는 프로세서 내부 또는 외부에 위치할 수 있으며, 이미 공지된 다양한 수단에 의해 프로세서와 데이터를 주고받을 수 있다.
이하에서 상술한 기술적 사상에 기반하여 다양한 실시 예들에 대해 보다 상세히 설명한다. 이하에서 설명되는 다양한 실시 예들에 대해서는 앞서 설명한 내용들이 적용될 수 있다. 예를 들어, 이하에서 설명되는 다양한 실시 예들에서 정의되지 않은 동작, 기능, 용어 등은 앞서 설명한 내용들에 기반하여 수행되고 설명될 수 있다.
이하에서, 전자 장치(100)가 인스턴스 관리 방법의 단계들을 수행함을 전제로 다양한 실시 예들에 대하여 설명하며, 다양한 실시 예들에 따르면, 전자 장치(100)는 인스턴스 관리 방법의 단계들과 관련된 정보를 전자 장치(100)와 연동되는 적어도 하나의 작업자 단말(130)과 송수신할 수 있다.
도 3은 본 개시의 실시 예들에 따른 인스턴스 관리 방법을 설명하기 위한 흐름도이다.
도 3을 참조하면, 단계 S301에서, 전자 장치(100)의 메인 서버(110)는 작업자 단말(130)로부터 태스크(task) 수행 요청을 수신할 수 있다. 본 개시에서, 태스크는 소스 코드의 변경 사항들을 지속적으로 빌드(build), 테스트(test) 및 병합(merge)하는 지속적 통합(CI) 과정 또는 그의 적어도 일부 과정일 수 있다. 전자 장치(100)는 언어의 조합 또는 소스 코드 레포지토리에 대한 지속적 통합(CI) 과정 또는 그의 적어도 일부 과정을 수행하기 위해, 예를 들어, 젠킨스(Jenkins) 툴을 이용할 수 있다. 작업자 단말(130)을 이용하는 작업자가 소스 코드를 변경하는 경우 전자 장치(100)는 메인 서버(110)의 재시작(restart) 없이 이를 자동으로 확인하여 테스트를 생성할 수 있고, 작업자 단말(130)로부터 테스트를 포함하는 태스크에 대한 수행 요청을 수신할 수 있다. 예를 들어, 전자 장치(100)는 소스 코드의 변경 여부를 브랜치(branch) 단위로 확인할 수 있다. 실시 예들에 따르면, 한 번의 소스 코드의 변경이 하나의 태스크 수행 요청과 대응될 수도 있고, 여러 번의 소스 코드의 변경이 하나의 태스크 수행 요청과 대응될 수도 있다.
단계 S302에서, 전자 장치(100)의 메인 서버(110)는 수신한 태스크 수행 요청에 대응하는 태스크를 태스크 대기열(queue)에 할당할 수 있고, 주기적으로 태스크 대기열의 상태를 모니터링할 수 있다.
단계 S302는 태스크 대기열의 태스크 관련 정보를 모니터링하는 단계를 포함할 수 있다. 태스크 대기열의 태스크 관련 정보는 태스크 개수 정보, 태스크의 대기 시간 정보 및 태스크의 업무량 정보 중 적어도 하나를 포함할 수 있다. 예를 들어, 태스크 대기열에 복수의 태스크들이 대기 중인 경우, 태스크의 대기 시간 정보는 태스크 대기열의 태스크들 중 대기 시간이 가장 오래된 태스크의 대기 시간을 의미할 수 있다. 예를 들어, 태스크의 업무량 정보는 태스크 수행의 예상 소요 시간 정보를 의미할 수 있다. 태스크 업무량 정보는 변경된 소스 코드의 용량 정보 및 과거에 수행한 태스크 중 유사한 것의 소요 시간 정보(즉, 히스토리 정보) 중 적어도 하나를 기반으로 메인 서버(110)에 의해 확인될 수 있다. 예를 들어, 어느 태스크의 이전 버전의 태스크가 수행된 적이 있는 경우 이전 버전의 태스크의 소요 시간 정보 및 현재 수행하고자 하는 태스크의 변경 사항 정보(즉, 커밋 횟수 정보)를 기반으로 태스크 수행의 예상 소요 시간 정보가 예측될 수 있다.
실시 예들에 따르면, 이미 생성된 인스턴스가 있는 경우에 단계 S302는 인스턴스 관리 서버(120)의 인스턴스 상태 정보를 모니터링하는 단계를 더 포함할 수 있다. 인스턴스 관리 서버(120)의 인스턴스 상태 정보는 인스턴스에서 수행되고 있는 태스크의 예상 소요 시간 정보를 포함할 수 있다.
예를 들어, 태스크 대기열의 상태를 모니터링하는 주기는 태스크 대기열의 태스크 관련 정보, 인스턴스 관리 서버(120)의 인스턴스 상태 정보 및 현재 시각 정보 중 적어도 하나를 기반으로 결정될 수 있다.
단계 S303에서, 전자 장치(100)의 메인 서버(110)는 태스크 대기열의 상태를 모니터링한 결과를 기반으로 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송할 수 있다. 메인 서버(110)가 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송할지 여부는 메인 서버(110)의 태스크 대기열의 태스크 관련 정보 및 현재 시각 정보 중 적어도 하나를 기반으로 결정될 수 있다. 단계 S303의 인스턴스 생성 요청은 생성할 인스턴스의 개수 정보를 포함할 수 있다.
일 실시 예에 따르면, 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송할지 여부가 태스크 관련 정보 중 태스크 개수 정보를 기반으로 결정되는 경우, 메인 서버(110)는 태스크 대기열의 태스크 개수가 기준 값 이상인 경우에 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송할 수 있다. 예를 들어, 인스턴스 생성 요청을 전송할지 여부를 결정하는 태스크 개수의 기준 값은 현재 시각 정보 및 현재 인스턴스의 개수 정보에 따라 달라질 수 있다.
다른 일 실시 예에 따르면, 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송할지 여부가 태스크 관련 정보 중 태스크의 대기 시간 정보를 기반으로 결정되는 경우, 메인 서버(110)는 태스크 대기열의 태스크 중 대기 시간이 가장 오래된 태스크의 대기 시간이 기준 값 이상인 경우에 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송할 수 있다. 예를 들어, 인스턴스 생성 요청을 전송할지 여부를 결정하는 태스크의 대기 시간의 기준 값은 현재 시각 정보 및 현재 인스턴스의 개수 정보에 따라 달라질 수 있다.
또 다른 일 실시 예에 따르면, 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송할지 여부가 태스크 관련 정보 중 태스크 업무량 정보를 기반으로 결정되는 경우, 태스크 수행의 예상 소요 시간이 기준 값 이상인 경우에 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송할 수 있다. 예를 들어, 인스턴스 생성 요청을 전송할지 여부를 결정하는 태스크 수행의 예상 소요 시간의 기준 값은 현재 시각 정보 및 현재 인스턴스의 개수 정보에 따라 달라질 수 있다.
또 다른 일 실시 예에 따르면, 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송할지 여부가 현재 시각 정보를 기반으로 결정되는 경우, 메인 서버(110)는 현재 시각이 기준 시각을 지나면 태스크 대기열의 상태와 무관하게 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송할 수 있다. 예를 들어, 메인 서버(110)는 현재 시각이 작업자의 업무 시작 시각을 지나면 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송할 수 있다. 다만, 이는 예시적인 것일 뿐 본 개시는 이에 제한되지 않는다.
현재 시각 정보는 요일 정보 및 날짜 정보를 포함할 수 있다. 즉, 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송할지 여부는 현재 시각 정보에 더하여 요일 정보 및 날짜 정보 중 적어도 하나를 기반으로 결정될 수 있다. 예를 들어, 메인 서버(110)는 해당하는 요일이 토요일이나 일요일이 아니고 해당하는 날짜가 공휴일이 아닌 경우 작업자의 업무 시작 시각을 지나면 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송할 수 있다.
또 다른 일 실시 예에 따르면, 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송할지 여부는 인스턴스 관리 서버(120)의 인스턴스 상태 정보를 기반으로 결정될 수 있다. 이때, 메인 서버(110)는 인스턴스에서 수행되고 있는 태스크의 예상 소요 시간이 기준 값 이상인 경우에 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송할 수 있다.
본 개시에 따르면, 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송할지 여부를 결정하는 규칙이 현재 상황 및 예견되는 상황에 따라 유연하게 변경될 수 있고, 이에 따라 서버의 자원을 효율적으로 사용할 수 있다.
한편, 본 개시의 실시 예들에 따른 인스턴스 관리 방법은, 단계 S302에서 전자 장치(100)의 메인 서버(110)가 태스크 대기열의 상태 및 인스턴스 관리 서버(120)의 인스턴스의 상태를 모니터링한 결과를 기반으로 인스턴스 삭제 요청을 전송하는 단계를 포함할 수 있다. 다시 말하면, 태스크 대기열의 상태 및 인스턴스 관리 서버(120)의 인스턴스의 상태에 따라, 전자 장치(100)의 메인 서버(110)는 인스턴스 관리 서버(120)에 단계 S303의 인스턴스 생성 요청 대신 인스턴스 삭제 요청을 전송할 수 있다.
단계 S304에서, 전자 장치(100)의 인스턴스 관리 서버(120)는 설정 정보 저장 서버(150)에 인스턴스 생성을 위한 제1 설정 정보를 요청할 수 있다. 제1 설정 정보 요청은 단계 S303의 인스턴스 생성 요청과 대응할 수 있다. 인스턴스 생성 요청에 의해 복수의 인스턴스들을 생성하려는 경우, 단계 S304에서 복수의 인스턴스들 각각에 대응하는 제1 설정 정보를 요청할 수 있다. 단계 S305에서, 전자 장치(100)의 인스턴스 관리 서버(120)는 설정 정보 저장 서버(150)로부터 제1 설정 정보를 획득할 수 있다. 설정 정보 저장 서버(150)는 전자 장치(100)와 유선 또는 무선 통신을 수행하며, 메모리를 포함하는 다양한 전자 장치일 수 있다.
설정 정보 저장 서버(150)는 메인 서버(110) 및 인스턴스 관리 서버(120)와 별도로 구비된 것으로 도시 및 설명하였으나 본 개시는 이에 제한되지 않으며, 설정 정보 저장 서버(150)는 전자 장치(100) 내에 구현되며, 메인 서버(110) 및 인스턴스 관리 서버(120)와 논리적으로 구별되는 서버일 수 있다. 또한, 실시 예들에 따르면, 작업자는 작업자 단말(130)을 통해 인스턴스와 관련된 설정 정보를 설정 정보 저장 서버(150)에 저장할 수 있다. 이때 설정 정보는 각 태스크를 수행하는 인스턴스의 성격에 따라 인스턴스를 생성하기 위한 설정 값 정보를 포함할 수 있으며, 인스턴스 관리 서버(120)는 이와 같은 설정 정보를 기반으로 태스크에 대응하는 인스턴스를 생성하고, 태스크 수행을 마친 인스턴스를 삭제할 수 있다.
단계 S306에서, 전자 장치(100)의 인스턴스 관리 서버(120)는 제1 설정 정보를 기반으로 인스턴스를 생성할 수 있다. 예를 들어, 하나의 인스턴스 생성 요청에 대응하여 전자 장치(100)의 인스턴스 관리 서버(120)는 복수의 인스턴스들을 생성할 수도 있다. 이때, 단계 S303의 인스턴스 생성 요청과 대응하는 생성할 인스턴스의 개수 정보는 2 이상일 수 있다.
한편, 전자 장치(100)의 인스턴스 관리 서버(120)는, 예를 들어, 미리 결정된 최대 개수 이하의 인스턴스들을 포함할 수 있다. 전자 장치(100)의 인스턴스 관리 서버(120)의 인스턴스들의 개수가 미리 결정된 최대 개수인 경우 단계 S303의 인스턴스 생성 요청에도 불구하고 인스턴스를 생성하지 않을 수도 있다.
단계 S307에서, 전자 장치(100)의 인스턴스 관리 서버(120)는 설정 정보 저장 서버(150)에 제2 설정 정보를 요청할 수 있다. 제2 설정 정보는 태스크 수행을 위한 실행 파일 정보 및 메인 서버(110)와 인스턴스 관리 서버(120)의 연결을 위한 인증 정보를 포함할 수 있다. 제2 설정 정보 요청은 단계 S306의 인스턴스 생성과 대응할 수 있다. 단계 S306에서 복수의 인스턴스들이 생성되는 경우, 단계 S307에서 복수의 인스턴스들 각각에 대응하는 제2 설정 정보를 요청할 수 있다. 단계 S308에서, 전자 장치(100)의 인스턴스 관리 서버(120)는 설정 정보 저장 서버(150)로부터 제2 설정 정보를 획득할 수 있다.
설정 정보 저장 서버(150)는, 예를 들어, 복수의 메모리들을 포함할 수 있다. 제1 설정 정보 및 제2 설정 정보는 설정 정보 저장 서버(150)의 서로 다른 메모리에 저장될 수 있다. 제2 설정 정보의 실행 파일 정보 및 인증 정보는 설정 정보 저장 서버(150)의 서로 다른 메모리에 저장될 수 있다.
단계 S309에서, 전자 장치(100)의 메인 서버(110)는 인스턴스 관리 서버(120)에 생성된 인스턴스로부터 노드(node) 생성 요청을 수신할 수 있다. 단계 S310에서, 전자 장치(100)의 메인 서버(110)는 단계 S309의 노드 생성 요청에 대응하여 노드를 생성할 수 있다. 인스턴스 관리 서버(120)의 인스턴스는 노드를 통해 메인 서버(110)와 연결될 수 있다. 노드를 통한 메인 서버(110)와 인스턴스 관리 서버(120)의 인스턴스의 연결을 위해 제2 설정 정보 중 인증 정보가 이용될 수 있다.
단계 S311에서, 전자 장치(100)의 메인 서버(110)는 생성된 노드를 통해 태스크 대기열의 태스크를 인스턴스 관리 서버(120)의 인스턴스에 할당할 수 있다. 예를 들어, 전자 장치(100)의 메인 서버(110)는 하나의 인스턴스에 복수의 태스크들을 할당할 수 있다. 하나의 인스턴스에 할당할 태스크의 개수는 태스크 대기열의 태스크 관련 정보를 기반으로 결정될 수 있다. 인스턴스에 할당된 태스크는, 예를 들어, 복수의 서브 태스크들을 포함할 수 있다. 서브 태스크는 지속적 통합(CI) 과정의 일부 과정일 수 있다.
단계 S312에서, 인스턴스 관리 서버(120)의 인스턴스는 할당된 태스크를 수행할 수 있다. 다시 말하면, 인스턴스 관리 서버(120)의 인스턴스는 소스 코드의 변경 사항들을 지속적으로 빌드, 테스트 및 병합하는 지속적 통합(CI) 과정 또는 그의 적어도 일부 과정을 수행할 수 있다.
단계 S313에서, 전자 장치(100)의 인스턴스 관리 서버(120)는 메인 서버(110) 및 작업자 단말(130)에 태스크 수행 결과 정보를 제공할 수 있다. 태스크 수행 결과 정보는 본 개시의 실시 예들에 따른 인스턴스 관리 방법에 따라 수행된 복수의 태스크들 각각에 대한 정보를 포함할 수 있다. 다시 말하면, 태스크 수행 결과 정보는 복수의 태스크들에 대한 정보의 리스트를 포함할 수 있다. 수행된 복수의 태스크들 각각에 대한 정보는, 예를 들어, 소요 시간 정보, 테스트 성공률 정보 및 소스 코드의 업데이트 횟수 정보 중 적어도 하나를 포함할 수 있다.
실시 예들에 따르면, 전자 장치(100)의 인스턴스 관리 서버(120)는 인스턴스가 할당된 태스크를 수행하는 중에 메인 서버(110) 및 작업자 단말(130)에 태스크 수행 결과 정보를 실시간으로 제공할 수 있다. 이때, 태스크 수행 결과 정보는, 예를 들어, 현재 수행 중인 서브 태스크에 대한 정보 및 태스크의 진행률 정보를 포함할 수 있다.
도 4는 본 개시의 실시 예들에 따른 인스턴스 관리 방법을 설명하기 위한 흐름도이다. 이하에서, 설명의 편의를 위하여, 도 3을 참조하여 설명한 것과 실질적으로 동일한 사항에 대한 설명을 생략하고 차이점에 대하여 상세히 설명한다.
도 4를 참조하면, 단계 S312의 태스크 수행이 완료된 이후, 단계 S401에서, 전자 장치(100)의 메인 서버(110)는 인스턴스 관리 서버(120)의 인스턴스로부터 노드 삭제 요청을 수신할 수 있다. 단계 S402에서, 전자 장치(100)의 메인 서버(110)는 단계 S401의 노드 삭제 요청에 대응하여 노드를 삭제할 수 있다.
이후, 단계 S403에서 전자 장치(100)의 메인 서버(110)는 태스크 대기열의 상태 및 인스턴스 관리 서버(120)의 인스턴스의 상태를 모니터링한 결과를 기반으로 인스턴스 관리 서버(120)에 인스턴스 삭제 요청을 전송할 수 있다. 예를 들어, 태스크 대기열에 대기 중인 태스크가 없거나 인스턴스에 수행 중인 태스크가 없는 경우에, 전자 장치(100)의 메인 서버(110)는 인스턴스 관리 서버(120)에 인스턴스 삭제 요청을 전송할 수 있다.
도 5는 본 개시의 실시 예들에 따른 인스턴스 관리 방법을 설명하기 위한 흐름도이다.
도 4 및 도 5를 참조하면, 단계 S302에서 태스크 대기열의 상태를 모니터링한 결과를 기반으로, 단계 S510에서, 인스턴스 생성이 필요한지 여부를 판단할 수 있다. 다시 말하면, 단계 S510에서, 메인 서버(110)가 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송할지 여부가 결정될 수 있다. 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송할지 여부는, 단계 S303을 참조하여 설명한 바와 같이 메인 서버(110)의 태스크 대기열의 태스크 관련 정보, 인스턴스 관리 서버(120)의 인스턴스 상태 정보 및 현재 시각 정보 중 적어도 하나를 기반으로 결정될 수 있다. 인스턴스 생성이 필요한 경우, 단계 S303에서 메인 서버(110)가 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송할 수 있다. 메인 서버(110)가 인스턴스 관리 서버(120)에 인스턴스 생성 요청을 전송한 이후에는 도 4를 참조하여 설명한 단계 S304 내지 단계 S313이 진행될 수 있다.
한편, 인스턴스 생성이 필요하지 않은 경우, 단계 S520에서, 인스턴스 삭제가 필요한지 여부를 판단할 수 있다. 다시 말하면, 단계 S520에서, 메인 서버(110)가 인스턴스 관리 서버(120)에 인스턴스 삭제 요청을 전송할지 여부가 결정될 수 있다. 인스턴스 관리 서버(120)에 인스턴스 삭제 요청을 전송할지 여부는 태스크 대기열의 상태 및 인스턴스 관리 서버(120)의 인스턴스의 상태 중 적어도 하나를 기반으로 결정될 수 있다. 예를 들어, 수행 중인 태스크 없이 대기 중인 인스턴스가 많은 경우 인스턴스 삭제가 필요하다고 판단할 수 있다. 인스턴스 삭제가 필요한 경우, 단계 S403에서 메인 서버(110)가 인스턴스 관리 서버(120)에 인스턴스 삭제 요청을 전송할 수 있다. 한편, 인스턴스 삭제가 필요하지 않은 경우, 단계 S302에서 다음 주기에 메인 서버(110)가 태스크 대기열의 상태를 모니터링할 수 있다.
도 6은 본 개시의 실시 예들에 따른 인스턴스 관리 방법에 따라 모니터링되는 메인 서버의 태스크 대기열을 표시하는 페이지를 설명하기 위한 도면이다.
도 6을 참조하면, 작업자 단말 상에 메인 서버의 태스크 대기열을 표시하는 제1 페이지(600)가 도시된다. 제1 페이지(600)는 태스크 대기열을 표시하는 제1 영역(601) 및 각 인스턴스에서 진행 중인 태스크의 상태 정보를 표시하는 제2 영역(602)을 포함할 수 있다. 제2 영역(602)에 표시된 태스크의 상태 정보는 각 인스턴스가 할당된 태스크를 수행하는 중에 작업자 단말에 실시간으로 제공하는 정보일 수 있다.
제1 페이지(600)의 제1 영역(601)에는 대기 중인 적어도 하나의 태스크를 포함하는 태스크 대기열이 표시될 수 있다. 태스크 대기열의 태스크는 이후 어느 하나의 인스턴스에 할당될 수 있다. 제1 페이지(600)의 제1 영역(601)은, 예를 들어, 대기 중인 태스크의 명칭 정보 및 명칭 정보의 일 측의 'X' 아이콘을 포함할 수 있다. 예를 들어, 'X' 아이콘에 대한 입력에 대응하여 대기 중인 태스크는 태스크 대기열에서 삭제될 수 있다.
제1 페이지(600)의 제2 영역(602)에는 각 인스턴스에서 진행 중인 태스크의 상태 정보가 표시될 수 있다. 제1 페이지(600)의 제2 영역(602)은, 예를 들어, 제1 인스턴스(610) 및 제2 인스턴스(620) 각각에 대한 정보를 포함할 수 있다.
제1 인스턴스(610)에 대한 정보는, 예를 들어, 제1 인스턴스(610)의 명칭 정보(611)(예를 들어, 'agent 10.211.207.101_2025'), 진행 중인 태스크의 명칭 정보(612)(예를 들어, 'rc_pr_check_abtest_PR-5003'), 소스 코드의 업데이트 횟수 정보(613)(예를 들어, '#27'), 서브 태스크 정보(614)(예를 들어, 'Analysis') 및 태스크 진행률 정보(615)를 포함할 수 있다. 태스크는 복수의 서브 태스크들을 포함할 수 있고, 서브 태스크 정보(614)는 태스크 중 현재 진행 중인 서브 태스크의 종류에 대한 정보이다. 태스크 진행률 정보(615)는 막대 그래프 형식으로 표시될 수 있다. 제1 페이지(600)의 제2 영역(602)은, 예를 들어, 서브 태스크 정보(614)의 일 측의 'X' 아이콘을 더 포함할 수 있다. 예를 들어, 'X' 아이콘에 대한 입력에 대응하여 진행 중인 태스크가 중단되거나 인스턴스에서 삭제될 수 있다.
한편, 제2 인스턴스(620)에 대한 정보는, 예를 들어, 제2 인스턴스(620)의 명칭 정보(621)(예를 들어, 'agent 10.211.207.122_2023')를 포함할 수 있다. 제2 인스턴스(620)는 현재 진행 중인 태스크 없이 대기 중인 인스턴스일 수 있다.
실시 예들에 따르면, 각 인스턴스는 복수의 태스크들을 수행할 수도 있다. 이때, 하나의 인스턴스에 할당된 복수의 태스크들은 순차적으로 또는 동시에 수행될 수 있다.
도 7은 본 개시의 실시 예들에 따른 인스턴스 관리 방법에 따라 수행되고 있는 어느 하나의 태스크의 수행 결과 정보를 표시하는 페이지를 설명하기 위한 도면이다.
도 7을 참조하면, 작업자 단말 상에 어느 하나의 태스크의 수행 결과 정보를 표시하는 제2 페이지(700)가 도시된다. 제2 페이지(700)에 표시된 수행 결과 정보는, 예를 들어, 도 6을 참조하여 설명한 제1 인스턴스(610)에서 진행 중인 태스크에 대한 것일 수 있다. 제2 페이지(700)는 제1 페이지(600)의 제1 인스턴스(610)에 대한 정보 중 어느 하나에 대응하는 입력에 따라 작업자 단말 상에 표시될 수 있다.
제2 페이지(700)는 태스크에 포함된 서브 태스크들을 표시하는 제1 영역(710), 현재 수행 중인 태스크의 수행 결과 정보를 표시하는 제2 영역(720) 및 과거에 수행한 태스크의 수행 결과 정보를 표시하는 제3 영역(730)을 포함할 수 있다.
제2 페이지(700)의 제1 영역(710)에 표시된 서브 태스크들은, 예를 들어, 체크아웃, 클린 빌드, 제1 빌드 QA(quality assurance), 제1 업로드 QA, 자동화 테스트 QA, 제2 빌드 QA, 제2 업로드 QA 및 클린일 수 있다. 예를 들어, 제1 빌드 QA 및 제1 업로드 QA는 제1 어플리케이션을 위한 서브 태스크일 수 있고, 제2 빌드 QA 및 제2 업로드 QA는 제1 어플리케이션과 다른 제2 어플리케이션을 위한 서브 태스크일 수 있다. 다만, 이는 예시적인 것일 뿐 본 개시는 이에 제한되지 않으며, 제2 페이지(700)의 제1 영역(710)에 표시되는 서브 태스크들 중 일부가 생략될 수도 있고, 표시되지 않은 서브 태스크가 추가될 수도 있다.
제2 페이지(700)의 제2 영역(720)은 현재 수행 중인 태스크의 수행 결과 정보를 표시할 수 있다. 제2 영역(720)에 표시된 현재 수행 중인 태스크의 수행 결과 정보는, 예를 들어, 태스크 수행 시각 정보(721)(예를 들어, 'Jun 21 16:16'), 커밋 횟수 정보(722)(예를 들어, '25 commits'), 소스 코드의 업데이트 횟수 정보(723)(예를 들어, '#27'), 태스크 진행률 정보(724), 제1 서브 태스크 정보(725) 및 제2 서브 태스크 정보(726)를 포함할 수 있다. 태스크 진행률 정보(724)는 막대 그래프 형식으로 표시될 수 있다. 태스크 진행률 정보(724)는, 예를 들어, 남은 소요 시간 정보(예를 들어, '4min 16s')를 포함할 수 있고, 남은 소요 시간 정보는 막대 그래프 위에 표시될 수 있다. 제1 서브 태스크 정보(725)는 진행이 완료된 서브 태스크에 대한 정보일 수 있다. 예를 들어, 제1 서브 태스크 정보(725)는 진행이 완료된 서브 태스크의 소요 시간 정보(예를 들어, 빌드 QA의 경우 '8min 48s')를 포함할 수 있다. 제2 서브 태스크 정보(726)는 진행 중인 서브 태스크에 대한 정보일 수 있고, 막대 그래프 형식으로 표시될 수 있다.
제2 페이지(700)의 제3 영역(730)은 과거에 수행한(즉, 수행이 완료된) 태스크의 수행 결과 정보를 표시할 수 있다. 제3 영역(730)에 표시된 과거에 수행한 태스크의 수행 결과 정보는, 제2 영역(720)에 표시된 수행 결과 정보와 달리, 태스크 진행률 정보(724)를 포함하지 않을 수 있다.
도 8은 본 개시의 실시 예들에 따른 인스턴스 관리 방법에 따라 수행된 태스크들의 수행 결과 정보를 표시하는 페이지를 설명하기 위한 도면이다.
도 8을 참조하면, 작업자 단말 상에 태스크들의 수행 결과 정보를 표시하는 제3 페이지(800)가 도시된다. 제3 페이지(800)에 표시된 수행 결과 정보는, 예를 들어, 도 7을 참조하여 설명한 제3 영역(730)에 표시된 과거에 수행한 태스크의 수행 결과 정보를 포함할 수 있다. 다만, 도 7의 제2 페이지(700)의 제3 영역(730)은 어느 하나의 태스크가 과거에 수행된 히스토리를 표시하는 반면, 도 8의 제3 페이지(800)는 수행이 완료된 다양한 태스크들에 대한 수행 결과 정보 및 수행 중인 태스크 또한 표시하는 점에서 차이가 있다. 실시 예들에 따르면, 제3 페이지(800)는 도 6을 참조하여 설명한 제1 페이지(600)와 동시에 작업자 단말 상에 표시될 수도 있다. 이때, 작업자는 제1 페이지(600) 및 제3 페이지(800)를 통해 대기 중인 태스크, 수행 중인 태스크 및 완료된 태스크를 동시에 확인할 수 있다.
제3 페이지(800)는 태스크들 각각의 제1 상태 정보(810), 제2 상태 정보(820), 명칭 정보(830), 제1 히스토리 정보(840), 제2 히스토리 정보(850) 및 제3 히스토리 정보(860)를 포함할 수 있다. 실시 예들에 따르면, 태스크들 각각의 정보들 중 어느 하나에 대응하는 입력에 따라 작업자 단말 상에 대응하는 태스크에 포함된 서브 태스크에 대한 정보가 표시될 수도 있다.
제1 상태 정보(810)는 태스크에 포함된 서브 태스크가 1개인지 2개 이상인지에 따라 서로 다른 아이콘으로 표시될 수 있다. 예를 들어, 제1 상태 정보(810)는 서브 태스크가 1개인 경우 원형 아이콘으로 표시될 수 있고, 서브 태스크가 2개 이상인 경우 책 모양 아이콘 또는 폴더 모양 아이콘으로 표시될 수 있다. 또한, 제1 상태 정보(810)는 태스크가 1개의 서브 태스크만을 포함하는 경우에 서브 태스크의 실행 여부 및 성공 여부에 따라 서로 다른 아이콘으로 표시될 수 있다. 예를 들어, 제1 상태 정보(810)는 태스크가 실행되지 않은 1개의 서브 태스크를 포함하는 경우 내부에 '??' 기호가 있는 원형 아이콘으로 표시될 수 있고, 태스크가 성공적으로 실행된 1개의 서브 태스크를 포함하는 경우 내부에 체크 기호가 있는 원형 아이콘으로 표시될 수 있으며, 태스크가 실행되었으나 성공적이지 않은 1개의 서브 태스크를 포함하는 경우 내부에 'X' 기호가 있는 원형 아이콘으로 표시될 수 있다.
제2 상태 정보(820)는 태스크의 성공률 정보에 대한 것일 수 있고, 태스크의 성공률 정보에 따라 서로 다른 날씨 아이콘(예를 들어, '해', '비', '폭우' 등)으로 표시될 수 있다.
제1 히스토리 정보(840)는 어느 하나의 태스크가 마지막으로 성공적으로 수행된 시점으로부터의 시간 정보 및 소스 코드의 업데이트 횟수 정보를 포함할 수 있고, 제2 히스토리 정보(850)는 어느 하나의 태스크가 마지막으로 실패한(즉, 성공률이 0%인) 시점으로부터의 시간 정보를 포함할 수 있으며, 제3 히스토리 정보(860)는 어느 하나의 태스크가 마지막으로 수행되었을 때의 지속 시간 정보를 포함할 수 있다.
한편, 본 명세서와 도면에는 본 개시의 바람직한 실시 예에 대하여 개시하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 개시의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 개시의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예 외에도 본 개시의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
상술한 실시 예들에 따른 전자 장치 또는 단말은, 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 설정 정보 저장 서버와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 프로세서 상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령어들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-Access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD; Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler), 파이썬(Python) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시 예는 전자적인 환경 설정, 신호 처리 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. “매커니즘”, “요소”, “수단”, “구성”과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상술한 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
상술한 실시 예들은 일 예시일 뿐 후술하는 청구항들의 범위 내에서 다른 실시 예들이 구현될 수 있다.

Claims (19)

  1. 메인 서버 및 인스턴스 관리 서버를 포함하는 전자 장치에서 인스턴스(instance)를 관리하는 방법에 있어서,
    상기 메인 서버가 태스크 대기열(queue)의 상태 및 기존에 생성된 인스턴스의 상태를 모니터링하여 상기 인스턴스 관리 서버에 인스턴스 생성 요청을 전송하는 단계;
    상기 인스턴스 관리 서버가 상기 인스턴스 생성 요청에 대응하여 인스턴스 생성을 위한 제1 설정 정보를 획득하는 단계;
    상기 인스턴스 관리 서버가 상기 제1 설정 정보를 기반으로 인스턴스를 생성하는 단계;
    상기 메인 서버가 상기 인스턴스로부터 노드 생성 요청을 수신하는 단계; 및
    상기 메인 서버가 생성된 노드를 통해 상기 태스크 대기열의 태스크를 상기 인스턴스에 할당하는 단계를 포함하되,
    상기 인스턴스 관리 서버에 상기 인스턴스 생성 요청을 전송할지 여부는 상기 태스크 대기열의 태스크 관련 정보, 상기 인스턴스 관리 서버의 인스턴스 상태 정보 및 현재 시각 정보 중 적어도 하나를 기반으로 결정되는,
    인스턴스 관리 방법.
  2. 제1항에 있어서,
    상기 태스크가 완료된 이후, 상기 메인 서버가 상기 인스턴스로부터 노드 삭제 요청을 수신하는 단계를 더 포함하는,
    인스턴스 관리 방법.
  3. 제1항에 있어서,
    상기 메인 서버가 상기 태스크 대기열의 상태 및 상기 기존에 생성된 인스턴스의 상태를 모니터링하여 상기 인스턴스 관리 서버에 인스턴스 삭제 요청을 전송하는 단계를 더 포함하는,
    인스턴스 관리 방법.
  4. 제1항에 있어서,
    상기 인스턴스 생성 요청은 생성할 인스턴스의 개수 정보를 포함하는,
    인스턴스 관리 방법.
  5. 제1항에 있어서,
    상기 인스턴스 생성 요청에 대응하여 상기 인스턴스 관리 서버는 복수의 인스턴스들을 생성하는,
    인스턴스 관리 방법.
  6. 제1항에 있어서,
    상기 인스턴스 관리 서버는 미리 결정된 최대 개수 이하의 인스턴스들을 포함하는,
    인스턴스 관리 방법.
  7. 제1항에 있어서,
    상기 인스턴스 관리 서버가 상기 인스턴스를 생성하는 단계 및 상기 메인 서버가 상기 인스턴스로부터 상기 노드 생성 요청을 수신하는 단계 사이에, 상기 인스턴스가 제2 설정 정보를 획득하는 단계를 더 포함하되,
    상기 제2 설정 정보는 태스크 수행을 위한 실행 파일 정보 및 상기 메인 서버와 상기 인스턴스 관리 서버의 연결을 위한 인증 정보를 포함하는,
    인스턴스 관리 방법.
  8. 제1항에 있어서,
    상기 태스크 관련 정보는 태스크 개수 정보, 태스크의 대기 시간 정보 및 상기 태스크의 업무량 정보 중 적어도 하나를 포함하는,
    인스턴스 관리 방법.
  9. 제8항에 있어서,
    상기 인스턴스 관리 서버에 상기 인스턴스 생성 요청을 전송할지 여부가 상기 태스크 개수 정보를 기반으로 결정되는 경우, 상기 메인 서버는 상기 태스크 대기열의 태스크 개수가 기준 값 이상인 경우에 상기 인스턴스 생성 요청을 전송하는,
    인스턴스 관리 방법.
  10. 제8항에 있어서,
    상기 인스턴스 관리 서버에 상기 인스턴스 생성 요청을 전송할지 여부가 상기 태스크의 대기 시간 정보를 기반으로 결정되는 경우, 상기 메인 서버는 상기 태스크 대기열의 태스크 중 대기 시간이 가장 오래된 태스크의 대기 시간이 기준 값 이상인 경우에 상기 인스턴스 생성 요청을 전송하는,
    인스턴스 관리 방법.
  11. 제8항에 있어서,
    상기 인스턴스 관리 서버에 상기 인스턴스 생성 요청을 전송할지 여부가 상기 태스크의 업무량 정보를 기반으로 결정되는 경우, 상기 메인 서버는 태스크 수행의 예상 소요 시간이 기준 값 이상인 경우에 상기 인스턴스 생성 요청을 전송하는,
    인스턴스 관리 방법.
  12. 제1항에 있어서,
    상기 인스턴스 관리 서버에 상기 인스턴스 생성 요청을 전송할지 여부가 상기 현재 시각 정보를 기반으로 결정되는 경우, 상기 메인 서버는 현재 시각이 기준 시각을 지나면 상기 태스크 대기열의 상태와 무관하게 상기 인스턴스 생성 요청을 전송하는,
    인스턴스 관리 방법.
  13. 제1항에 있어서,
    상기 현재 시각 정보는 요일 정보 및 날짜 정보를 포함하고,
    상기 인스턴스 관리 서버에 상기 인스턴스 생성 요청을 전송할지 여부는 상기 요일 정보 및 상기 날짜 정보 중 적어도 하나를 기반으로 결정되는,
    인스턴스 관리 방법.
  14. 제1항에 있어서,
    상기 인스턴스 상태 정보는 기존에 생성된 인스턴스에서 수행되고 있는 태스크의 예상 소요 시간 정보를 포함하는,
    인스턴스 관리 방법.
  15. 제1항에 있어서,
    상기 메인 서버는 상기 태스크 대기열의 상태를 주기적으로 모니터링하되,
    모니터링의 주기는 상기 태스크 대기열의 상기 태스크 관련 정보, 상기 인스턴스 관리 서버의 상기 인스턴스 상태 정보 및 상기 현재 시각 정보 중 적어도 하나를 기반으로 결정되는,
    인스턴스 관리 방법.
  16. 제1항에 있어서,
    상기 인스턴스 관리 서버의 상기 인스턴스가 할당된 태스크를 수행하는 단계를 더 포함하는,
    인스턴스 관리 방법.
  17. 제16항에 있어서,
    상기 메인 서버가 작업자 단말로부터 태스크 수행 요청을 수신하는 단계; 및
    상기 인스턴스 관리 서버가 태스크 수행 결과 정보를 상기 메인 서버 및 상기 작업자 단말에 제공하는 단계를 더 포함하는,
    인스턴스 관리 방법.
  18. 제1항 내지 제17항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 비일시적 저장 매체.
  19. 메인 서버 및 인스턴스 관리 서버를 통해 인스턴스를 관리하는 전자 장치에 있어서,
    적어도 하나의 명령어를 저장하는 메모리; 및
    상기 적어도 하나의 명령어에 기초하여, 상기 메인 서버가 태스크 대기열의 상태 및 기존에 생성된 인스턴스의 상태를 모니터링하여 상기 인스턴스 관리 서버에 인스턴스 생성 요청을 전송하고, 상기 인스턴스 관리 서버가 상기 인스턴스 생성 요청에 대응하여 인스턴스 생성을 위한 제1 설정 정보를 획득하고, 상기 인스턴스 관리 서버가 상기 제1 설정 정보를 기반으로 인스턴스를 생성하고, 상기 메인 서버가 상기 인스턴스로부터 노드 생성 요청을 수신하고, 상기 메인 서버가 생성된 노드를 통해 상기 태스크 대기열의 태스크를 상기 인스턴스에 할당하는 프로세서를 포함하되,
    상기 인스턴스 관리 서버에 상기 인스턴스 생성 요청을 전송할지 여부는 상기 태스크 대기열의 태스크 관련 정보, 상기 인스턴스 관리 서버의 인스턴스 상태 정보 및 현재 시각 정보 중 적어도 하나를 기반으로 결정되는,
    전자 장치.
KR1020220086347A 2022-07-13 2022-07-13 인스턴스 관리 방법 및 이를 위한 전자 장치 KR20240009187A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220086347A KR20240009187A (ko) 2022-07-13 2022-07-13 인스턴스 관리 방법 및 이를 위한 전자 장치
PCT/KR2022/010600 WO2024014600A1 (ko) 2022-07-13 2022-07-20 인스턴스 관리 방법 및 이를 위한 전자 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220086347A KR20240009187A (ko) 2022-07-13 2022-07-13 인스턴스 관리 방법 및 이를 위한 전자 장치

Publications (1)

Publication Number Publication Date
KR20240009187A true KR20240009187A (ko) 2024-01-22

Family

ID=89536963

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220086347A KR20240009187A (ko) 2022-07-13 2022-07-13 인스턴스 관리 방법 및 이를 위한 전자 장치

Country Status (2)

Country Link
KR (1) KR20240009187A (ko)
WO (1) WO2024014600A1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100807355B1 (ko) * 2007-07-04 2008-02-28 주식회사 넷츠 업무 프로세스 관리 방법 및 시스템
US8225146B2 (en) * 2009-09-01 2012-07-17 Lsi Corporation Method for implementing continuous data protection utilizing allocate-on-write snapshots
KR101287448B1 (ko) * 2011-10-27 2013-07-18 삼성에스디에스 주식회사 퍼지 제어 기반 가상 머신 스케일링 시스템 및 방법
US9292352B2 (en) * 2012-08-10 2016-03-22 Adobe Systems Incorporated Systems and methods for cloud management
KR102081364B1 (ko) * 2019-11-27 2020-02-25 (주)비디오몬스터 클라우드 기반 가변형 분산 렌더링 시스템 및 방법

Also Published As

Publication number Publication date
WO2024014600A1 (ko) 2024-01-18

Similar Documents

Publication Publication Date Title
US11275484B2 (en) Method of controlling device having plurality of operating systems installed therein, and the device
RU2677595C2 (ru) Способ и аппаратура для отображения интерфейса приложения и электронное устройство
ES2659038T3 (es) Interfaz de configuración para un controlador multimedia programable
US20150205498A1 (en) Automatic wallpaper image changer for a computing device
JP6944805B2 (ja) 機器間アプリケーション連動方法およびシステム
US8260321B1 (en) Systems and methods for event attendance notification
EP2739097B1 (en) A mobile telecommunication device in a cellular-digital wireless telecommunication system and a method for operating thereof
AU2015249047A1 (en) Method and electronic device for configuring screen
CN105786593A (zh) 用于重启上下文相关的应用集的方法和系统
WO2015072622A1 (ko) 캘린더 내 일정 입력을 위한 사용자 계획 표시 제어 장치 및 방법
KR20110090651A (ko) 휴대용 단말기에서 사용자 적응형 애플리케이션 생성 방법 및 장치
US11252019B2 (en) Methods, apparatuses and systems for cloud-based disaster recovery
US10958720B2 (en) Methods, apparatuses and systems for cloud based disaster recovery
US20210160335A1 (en) Contextually-based presence status
EP2808799A1 (en) Equipment management device, equipment management method, program and equipment management system
GB2603597A (en) Optimizing device update scheduling
CN107153495B (zh) 一种建立网元间业务链路的方法和装置
US20140195951A1 (en) Method for managing schedule and electronic device thereof
CN106462369B (zh) 用于管理多个实例的方法、系统和介质
US11150860B1 (en) Dynamic virtual workspace with contextual control of input/output (I/O) devices
JP2018200687A (ja) メッセンジャーを利用した勤怠管理方法、コンピュータプログラムおよびシステム
KR20240009187A (ko) 인스턴스 관리 방법 및 이를 위한 전자 장치
US11178221B2 (en) Methods, apparatuses and systems for cloud-based disaster recovery
US20200192763A1 (en) Methods, apparatuses and systems for cloud-based disaster recovery
TW202420082A (zh) 實例管理方法及用於其之電子裝置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal