KR20220072946A - 코드 저장소와 연동하여 원클릭 배포 서비스를 제공하는 방법 및 시스템 - Google Patents

코드 저장소와 연동하여 원클릭 배포 서비스를 제공하는 방법 및 시스템 Download PDF

Info

Publication number
KR20220072946A
KR20220072946A KR1020200160253A KR20200160253A KR20220072946A KR 20220072946 A KR20220072946 A KR 20220072946A KR 1020200160253 A KR1020200160253 A KR 1020200160253A KR 20200160253 A KR20200160253 A KR 20200160253A KR 20220072946 A KR20220072946 A KR 20220072946A
Authority
KR
South Korea
Prior art keywords
job
information
worker nodes
manager node
result
Prior art date
Application number
KR1020200160253A
Other languages
English (en)
Other versions
KR102462866B1 (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 KR1020200160253A priority Critical patent/KR102462866B1/ko
Priority to US17/406,843 priority patent/US20220164240A1/en
Publication of KR20220072946A publication Critical patent/KR20220072946A/ko
Application granted granted Critical
Publication of KR102462866B1 publication Critical patent/KR102462866B1/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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • G06F8/355Round-trip engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • 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
    • 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
    • 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
    • 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/5044Allocation 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 hardware capabilities
    • 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/5055Allocation 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 software capabilities, i.e. software resources associated or available to the machine
    • 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/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0207Discounts or incentives, e.g. coupons or rebates
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Abstract

본 개시는 코드 저장소와 연동하여 원클릭 배포 서비스를 제공하는 방법에 관한 것이다. 원클릭 배포 서비스 제공 방법은, 서비스 플랫폼에 의해, 사용자 클라이언트에 의해 선택된 코드 저장소에 포함된 소스코드에 대한 정보를 관리자 노드로 전송하는 단계, 관리자 노드에 의해, 하나 이상의 작업자 노드로 소스코드와 연관된 작업을 할당하고, 하나 이상의 작업자 노드로부터 작업의 작업 결과에 대한 정보를 수신하는 단계, 서비스 플랫폼에 의해, 관리자 노드로부터 작업 결과에 대한 정보를 수신하는 단계 및 서비스 플랫폼에 의해, 작업 결과에 대한 정보를 사용자 클라이언트로 전송하여, 사용자 클라이언트가 작업 결과를 실행할 수 있는 사용자 인터페이스를 출력하도록 하는 단계를 포함한다.

Description

코드 저장소와 연동하여 원클릭 배포 서비스를 제공하는 방법 및 시스템{METHOD AND SYSTEM FOR PROVIDING ONE-CLICK DISTRIBUTION SERVICE IN LINKAGE WITH CODE REPOSITORY}
본 개시는 코드 저장소와 연동하여 원클릭 배포 서비스를 제공하는 방법 및 시스템에 관한 것으로, 구체적으로, 코드 저장소에 포함된 소스코드의 실행 및/또는 배포 작업을 하나 이상의 작업자 노드에 할당하여 작업을 수행하도록 하는 방법 및 시스템을 제공하는 것이다.
일반적으로, 소스코드 호스팅 및 공유 기능을 제공하는 서비스(예를 들어, GitHub)를 통해 수많은 오픈소스 프로젝트들이 공유되고 있다. 또한, 이러한 서비스를 통해 개발자들은 이미 개발된 소스코드들을 처음부터 새로 개발할 필요 없이 기존 소스코드에 기반하여 새로운 가치를 만들어낼 수 있는 개발 업무에만 집중할 수 있게 되었다.
그러나, 한 해 수천 만 개 이상의 새로운 오픈소스 저장소가 생성되는 만큼, 각 오픈소스 프로젝트의 소스코드가 실행되는데 필요한 운영체제, 프로그래밍 언어, 라이브러리, 프레임웍 등과 같은 런타임 환경이 더욱 다양해지고 있다. 특히 인공지능(artificial intelligence) 또는 머신러닝(machine learning) 관련 프로젝트의 경우, 그 소스코드 런타임환경과 잘 호환되도록 구성된 CPU, GPU, 메모리, 메인보드, 냉각장치, 전원장치 등의 다양한 조합에 따른 하드웨어 실행환경까지 고려해야 해야 한다.
이러한 이유들 때문에, 소스코드 개발자 또는 소스코드 이용자가 소스 코드의 개발 자체에 들이는 시간과 노력보다 이를 실행할 수 있게 하는 실행환경 구축에 더 많은 시간과 노력을 소모해야 한다. 또한, 소스코드 개발자 또는 소스코드 이용자가 직접 실행환경을 마련하여 머신러닝 작업을 실행하는 것은 많은 비용을 필요로 한다.
본 개시는 상기와 같은 문제점을 해결하기 위한 코드 저장소와 연동하여 원클릭 배포 서비스를 제공하는 방법, 기록 매체에 저장된 컴퓨터 프로그램 및 장치(시스템)를 제공한다.
본 개시는 방법, 시스템 또는 명령어들을 저장하는 컴퓨터 판독가능 저장 매체, 컴퓨터 프로그램을 포함한 다양한 방식으로 구현될 수 있다.
본 개시의 일 실시예에 따르면, 코드 저장소와 연동하여 원클릭 배포 서비스를 제공하는 방법은, 서비스 플랫폼에 의해, 사용자 클라이언트에 의해 선택된 코드 저장소에 포함된 소스코드에 대한 정보를 관리자 노드로 전송하는 단계, 관리자 노드에 의해, 하나 이상의 작업자 노드로 소스코드와 연관된 작업을 할당하고, 하나 이상의 작업자 노드로부터 작업의 작업 결과에 대한 정보를 수신하는 단계, 서비스 플랫폼에 의해, 관리자 노드로부터 작업 결과에 대한 정보를 수신하는 단계 및 서비스 플랫폼에 의해, 작업 결과에 대한 정보를 사용자 클라이언트로 전송하여, 사용자 클라이언트가 작업 결과를 실행할 수 있는 사용자 인터페이스를 출력하도록 하는 단계를 포함한다.
일 실시예에 따르면, 서비스 플랫폼에 의해, 사용자 클라이언트에 의해 선택된 코드 저장소에 포함된 소스코드에 대한 정보를 관리자 노드로 전송하는 단계는, 서비스 플랫폼에 의해, 사용자 클라이언트에 의해 선택된 코드 저장소에 포함된 소스코드를 분석하여, 소스코드와 연관된 작업을 실행하기 위하여 필요한 컴퓨팅 리소스 정보를 산출하는 단계 및 서비스 플랫폼에 의해, 산출된 컴퓨팅 리소스 정보를 관리자 노드로 전송하는 단계를 포함하고, 관리자 노드에 의해, 하나 이상의 작업자 노드로 소스코드와 연관된 작업을 할당하고, 하나 이상의 작업자 노드로부터 작업의 작업 결과에 대한 정보를 수신하는 단계는, 관리자 노드에 의해, 컴퓨팅 리소스 정보를 충족하는 하나 이상의 작업자 노드로 작업을 할당하고, 하나 이상의 작업자 노드로부터 작업의 작업 결과에 대한 정보를 수신하는 단계를 포함한다.
일 실시예에 따르면, 컴퓨팅 리소스 정보는, 작업을 실행하기 위해 필요한 프로세서의 사양, 그래픽 프로세싱의 지원 여부, 저장 용량 중 적어도 하나에 대한 정보를 포함한다.
일 실시예에 따르면, 관리자 노드에 의해, 컴퓨팅 리소스 정보를 충족하는 하나 이상의 작업자 노드로 작업을 할당하고, 하나 이상의 작업자 노드로부터 작업의 작업 결과에 대한 정보를 수신하는 단계는, 관리자 노드에 의해, 컴퓨팅 리소스 정보를 충족하는 복수의 작업자 노드를 결정하는 단계, 관리자 노드에 의해, 복수의 작업자 노드 각각의 통신 지연, 작업 수행 비용 및 신뢰도 중 적어도 하나를 기초로, 복수의 작업자 노드 중 하나 이상의 작업자 노드로 작업을 할당하는 단계 및 관리자 노드에 의해, 하나 이상의 작업자 노드로부터 작업의 작업 결과에 대한 정보를 수신하는 단계를 포함한다.
일 실시예에 따르면, 관리자 노드에 의해, 컴퓨팅 리소스 정보를 충족하는 하나 이상의 작업자 노드로 작업을 할당하고, 하나 이상의 작업자 노드로부터 작업의 작업 결과에 대한 정보를 수신하는 단계는, 하나 이상의 작업자 노드에 의해, 컨테이너 기반의 런타임 실행 환경에서 할당된 작업을 수행하고, 작업의 작업 결과에 대한 정보를 관리자 노드에 제공하는 단계를 포함한다.
일 실시예에 따르면, 관리자 노드에 의해, 작업 결과에 대한 정보를 기초로 하나 이상의 작업자 노드의 신뢰도를 업데이트하는 단계를 더 포함한다.
일 실시예에 따르면, 관리자 노드에 의해, 사용자 클라이언트로부터 수신된 작업에 대한 보상을 예치하는 단계 및 블록체인에 의해, 예치된 보상에 대한 정보를 기록하는 단계를 더 포함한다.
일 실시예에 따르면, 관리자 노드에 의해, 작업 결과에 대한 정보를 기초로 예치된 보상 중 적어도 일부의 보상을 하나 이상의 작업자 노드에게 제공하는 단계 및 블록체인에 의해, 하나 이상의 작업자 노드에게 제공된 적어도 일부의 보상에 대한 정보를 기록하는 단계를 더 포함한다.
일 실시예에 따르면, 서비스 플랫폼에 의해, 작업 결과에 대한 정보를 사용자 클라이언트로 전송하여, 사용자 클라이언트가 작업 결과를 실행할 수 있는 사용자 인터페이스를 출력하도록 하는 단계는, 서비스 플랫폼에 의해, 작업 결과를 실행할 수 있는 API(Application Programming Interface)에 대한 정보를 사용자 클라이언트로 전송하여, API와 연관된 사용자 인터페이스를 출력하도록 하는 단계를 포함한다.
본 개시의 일 실시예에 따른 원클릭 배포 서비스 제공 방법을 컴퓨터에서 실행하기위해 컴퓨터 판독 가능한 기록 매체에 저장된 컴퓨터 프로그램이 제공된다.
본 개시의 일 실시예에 따른 원클릭 배포 시스템은, 서비스 플랫폼, 관리자 노드 및 하나 이상의 작업자 노드를 포함하고, 서비스 플랫폼은, 사용자 클라이언트에 의해 선택된 코드 저장소에 포함된 소스코드를 분석하여, 소스코드에 대한 정보를 관리자 노드로 전송하고, 관리자 노드는, 하나 이상의 작업자 노드로 소스코드와 연관된 작업을 할당하고, 하나 이상의 작업자 노드로부터 작업의 작업 결과에 대한 정보를 수신하고, 서비스 플랫폼은, 관리자 노드로부터 작업 결과에 대한 정보를 수신하고, 작업 결과에 대한 정보를 사용자 클라이언트로 전송하여, 사용자 클라이언트가 작업 결과를 실행할 수 있는 사용자 인터페이스를 출력하도록 한다.
본 개시의 다양한 실시예에서, 사용자는 머신러닝 작업 운용 비용을 기존 중앙화된 클라우드 대비 최대 2배 절감할 수 있으며, 머신러닝 작업 관련 소스코드 개발환경의 구축시간도 약 50% 이상 절감할 수 있다. 또한, 사용자는 머신러닝 작업이 특정한 중앙화된 클라우드에 락인(lock-in)되는 것을 피할 수 있다.
본 개시의 다양한 실시예에서, 사용자는 원클릭 배포 시스템에 코드 저장소의 링크 주소를 입력하는 것만으로도 해당 코드 저장소에 저장된 소스코드를 실행 및/또는 배포할 수 있고, 작업 결과를 실행 및/또는 이용할 수 있다.
본 개시의 다양한 실시예에서, 하이브리드 컴퓨팅 시스템의 관리자 노드는 클라이언트 또는 서비스 플랫폼으로부터의 작업 요청을 처리하기 위한 최적의 작업자 노드를 결정하기 위해, 다양한 요소들을 고려할 수 있다. 다양한 요소들에 따라 결정된 작업자 노드의 신뢰도는 결국 클라이언트가 자신의 요청을 처리할 노드를 선택함에 있어서 중요한 요소가 되며, 신뢰도가 낮은 작업자 노드는 작업을 정상적으로 할당받지 못하게 된다. 이에 따라 시스템 내에서 각 자원 제공자 노드 또는 작업자 노드들은 자신의 신뢰도 향상을 위해 작업을 수행하도록 유도할 수 있다.
본 개시의 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급되지 않은 다른 효과들은 청구범위의 기재로부터 본 개시에 속하는 기술 분야에서 통상의 지식을 가진 자(이하, '통상의 기술자'라 함)에게 명확하게 이해될 수 있을 것이다.
본 개시의 실시예들은, 이하 설명하는 첨부 도면들을 참조하여 설명될 것이며, 여기서 유사한 참조번호는 유사한 요소들을 나타내지만, 이에 한정되지는 않는다.
도 1은 본 개시의 일 실시예에 따른 서비스 플랫폼, 관리자 노드. 작업자 노드, 블록체인 및 중앙화/상용 클라우드가 원클릭 배포 서비스를 제공하는 예시를 나타내는 도면이다.
도 2는 본 개시의 일 실시예에 따른 코드 저장소와 연동하여 원클릭 배포 서비스를 제공하기 위하여, 원클릭 배포 시스템이 복수의 사용자 클라이언트과 통신 가능하도록 연결된 구성을 나타내는 개요도이다.
도 3은 본 개시의 일 실시예에 따른 서비스 플랫폼의 내부 구성을 나타내는 블록도이다.
도 4는 본 개시의 일 실시예에 따른 관리자 노드가 작업을 할당하고 작업자 노드가 작업을 수행하도록 구성된 예시를 나타내는 도면이다.
도 5는 본 개시의 일 실시예에 따른 원클릭 배포 서비스 제공 방법을 나타내는 흐름도이다.
도 6은 본 개시의 일 실시예에 따른 원클릭 실행 버튼을 제공하는 사용자 인터페이스의 예시를 나타내는 도면이다.
도 7은 본 개시의 일 실시예에 따른 API 목록을 제공하는 사용자 인터페이스의 예시를 나타내는 도면이다.
도 8은 본 개시의 일 실시예에 따른 원클릭 배포 서비스 제공 방법을 나타내는 흐름도이다.
이하, 본 개시의 실시를 위한 구체적인 내용을 첨부된 도면을 참조하여 상세히 설명한다. 다만, 이하의 설명에서는 본 개시의 요지를 불필요하게 흐릴 우려가 있는 경우, 널리 알려진 기능이나 구성에 관한 구체적 설명은 생략하기로 한다.
첨부된 도면에서, 동일하거나 대응하는 구성요소에는 동일한 참조부호가 부여되어 있다. 또한, 이하의 실시예들의 설명에 있어서, 동일하거나 대응되는 구성요소를 중복하여 기술하는 것이 생략될 수 있다. 그러나, 구성요소에 관한 기술이 생략되어도, 그러한 구성요소가 어떤 실시예에 포함되지 않는 것으로 의도되지는 않는다.
본 개시에서 사용되는 용어에 대해 간략히 설명하고, 개시된 실시예에 대해 구체적으로 설명하기로 한다. 본 명세서에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 관련 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 개시에서, 단수의 표현은 문맥상 명백하게 단수인 것으로 특정하지 않는 한, 복수의 표현을 포함한다. 또한, 복수의 표현은 문맥상 명백하게 복수인 것으로 특정하지 않는 한, 단수의 표현을 포함한다.
본 개시에서, 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다.
개시된 실시예의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 개시는 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 개시가 완전하도록 하고, 본 개시가 통상의 기술자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것일 뿐이다.
본 개시에서, '시스템'은 서버 장치와 클라우드 장치 중 적어도 하나의 장치를 포함할 수 있으나, 이에 한정되는 것은 아니다. 예를 들어, 시스템은 하나 이상의 서버 장치로 구성될 수 있다. 다른 예로서, 시스템은 하나 이상의 클라우드 장치로 구성될 수 있다. 또 다른 예로서, 시스템은 서버 장치와 클라우드 장치가 함께 구성되어 동작될 수 있다.
본 개시에서, '코드 저장소'는 다양한 개발자들이 개발 또는 생성한 하나 이상의 소스코드 및/또는 파일을 저장, 업데이트, 공유 또는 관리하도록 구성된 저장소를 포함할 수 있다. 대안적으로, '코드 저장소'는 코드 저장소에 포함된 하나 이상의 소스코드 및/또는 파일 자체를 지칭할 수 있다.
본 개시에서, '사용자 클라이언트'는 원클릭 배포 시스템과 통신하는 사용자 단말 등의 컴퓨팅 장치 및/또는 시스템을 지칭할 수 있다. 대안적으로, '사용자 클라이언트'는 원클릭 배포 시스템과 통신하는 사용자 단말 등의 컴퓨팅 장치 및/또는 시스템을 사용하는 사용자 자체를 지칭할 수 있다.
본 개시에서, '작업'은 코드 저장소에 포함된 소스코드의 실행 및 배포하는 작업을 포함할 수 있다. 예를 들어, 코드 저장소가 인공 지능 또는 기계 학습 모델에 대한 소스코드를 포함하는 경우, '작업'은 기계 학습 모델의 생성, 업데이트 및/또는 생성된 기계 학습 모델의 배포 작업을 포함할 수 있다. 본 개시에서, '작업 결과' 및/또는 '작업 결과에 대한 정보'는 요청한 작업에 대한 성공 또는 실패 여부, 소스코드 실행 결과물을 포함할 수 있다. 예를 들어, 작업 결과는, 소스코드 배포 및/또는 실행 작업에 대한 성공 또는 실패 여부, 학습 및/또는 배포된 기계 학습 모델 자체를 포함할 수 있다.
본 개시에서, '코드 저장소에 포함된 소스코드에 대한 정보'는 코드 저장소에 포함된 소스코드 그 자체, 해당 소스코드의 생성/수정 정보 및/또는 해당 소스코드를 실행하기 위한 정보 등을 포함할 수 있다. 예를 들어, 코드 저장소에 포함된 소스코드에 대한 정보는 소스코드와 연관된 작업을 실행하기 위하여 필요한 컴퓨팅 리소스 정보를 포함할 수 있다.
도 1은 본 개시의 일 실시예에 따른 서비스 플랫폼(110), 관리자 노드(120). 작업자 노드(130_1, 130_2, 130_3), 블록체인(140) 및 중앙화/상용 클라우드(150)가 원클릭 배포 서비스를 제공하는 예시를 나타내는 도면이다. 원클릭 배포 서비스를 제공하기 위해, 원클릭 배포 시스템은 서비스 플랫폼(110), 하이브리드 컴퓨팅 시스템, 블록체인(140)을 포함할 수 있다. 서비스 플랫폼(110)은 코드 저장소의 링크 주소(예를 들면, 사용자 또는 클라이언트로부터 수신한 URL 주소 등)를 기반으로, 코드 저장소에 포함된 소스코드를 배포하기 위해 필요한 사양을 추출하고 정제하여, 하이브리드 컴퓨팅 시스템으로 전송하는 MLaaS(Machine Learning as a Service) 플랫폼을 포함할 수 있다. 하이브리드 컴퓨팅 시스템은, 서비스 플랫폼(110)으로부터 수신한 코드 저장소에 대한 작업 요청에 응답하여, 코드 저장소에 포함된 소스코드의 실행 및/또는 배포 작업을 수행할 수 있다. 일 실시예에서, 하이브리드 컴퓨팅 시스템은, 관리자 노드(120), 복수의 작업자 노드(130) 및 중앙화/상용 클라우드(150)를 포함할 수 있다. 여기서, 작업자 노드(130)는 소스코드의 실행에 필요한 프로세서, 저장소 등을 포함하는 컴퓨팅 리소스를 제공하는 리소스(또는 자원) 제공자 노드를 지칭할 수 있다. 관리자 노드(120)는 블록체인(140)을 통해 사용자 클라이언트(미도시)와 작업자 노드(130) 간의 거래(transaction) 내역을 저장 및 관리함으로써 사용자 클라이언트와 작업자 노드(130) 사이의 안전 거래를 보장하기 위한 에스크로(escrow) 서비스를 제공할 수 있다.
서비스 플랫폼(110)은 사용자 클라이언트에 의해 선택된 코드 저장소(예를 들면, 사용자 클라이언트로부터 수신한 링크 주소와 연관된 코드 저장소)에 포함된 소스코드에 대한 정보를 관리자 노드(120)로 전송할 수 있다. 일 실시예에서, 서비스 플랫폼(110)은 사용자 클라이언트에 의해 선택된 코드 저장소에 포함된 소스코드를 분석하여, 소스코드와 연관된 작업을 실행하기 위하여 필요한 컴퓨팅 리소스 정보를 산출할 수 있다. 여기서, 컴퓨팅 리소스 정보는, 소스코드와 연관된 작업을 실행하기 위해 필요한 프로세서의 사양, 그래픽 프로세싱의 지원 여부, 저장 용량 등을 포함할 수 있다. 이 후, 서비스 플랫폼(110)은 소스코드에 대한 작업 요청 및 산출한 컴퓨팅 리소스 정보를 관리자 노드(120)로 전송할 수 있다. 예를 들어, 서비스 플랫폼(110)은 산출한 컴퓨팅 리소스 정보를 작업 요청을 위한 명세에 맞는 형태로 정제하여, 관리자 노드(120)에 제공할 수 있다.
관리자 노드(120)는 서비스 플랫폼(110)의 작업 요청에 따라, 복수의 작업자 노드(130_1, 130_2, 130_3) 중 하나 이상의 작업자 노드로 소스코드에 대한 작업을 할당할 수 있다. 일 실시예에서, 관리자 노드(120)는 서비스 플랫폼(110)으로부터 수신한 컴퓨팅 리소스 정보를 충족하는 하나 이상의 작업자 노드로 작업을 할당할 수 있다. 예를 들어, 관리자 노드(120)는 서비스 플랫폼(110)으로부터 수신한 컴퓨팅 리소스 정보를 충족하는 복수의 작업자 노드를 결정하고, 복수의 작업자 노드 각각의 통신 지연, 작업 수행 비용 및 신뢰도 등에 기초하여, 복수의 작업자 노드 중 하나 이상의 작업자 노드로 작업을 할당할 수 있다. 다른 실시예에서, 관리자 노드(120)는 서비스 플랫폼(110)으로부터 수신한 소스코드에 대한 정보에 기초하여, 소스코드와 연관된 작업을 실행하기 위하여 필요한 컴퓨팅 리소스 정보를 산출하고, 산출된 컴퓨팅 리소스 정보를 충족하는 하나 이상의 작업자 노드로 작업을 할당할 수 있다. 다른 실시예에서, 관리자 노드(120)는 작업 요청을 중앙화/상용 클라우드(150)로 리다이렉션(redirection)할 수 있다. 예를 들어, 하이브리드 컴퓨팅 시스템 내에 존재하는 여분의 작업자 노드가 존재하지 않는 경우, 관리자 노드(120)는 요청된 작업을 중앙화/상용 클라우드(150)로 이관하여 처리하도록 할 수 있다. 또 다른 실시예에서, 관리자 노드(120)는 사용자 클라이언트의 선택에 따라 복수의 작업자 노드(130_1, 130_2, 130_3) 중 하나 이상의 작업자 노드로 소스코드에 대한 작업을 할당할 수 있다. 한편, 일 실시예에서 작업자 노드(130_1, 130_2, 130_3)가 관리자 노드(120)로부터 할당된 작업을 수행할 수 없는 경우, 관리자 노드(120)는 다른 작업자 노드로 다시 해당 작업을 할당할 수 있다.
작업자 노드(130_1, 130_2, 130_3)는 관리자 노드(120)로부터 할당된 작업을 수행할 수 있다. 예를 들어, 작업자 노드(130_1, 130_2, 130_3)는 컨테이너 기반의 런타임 실행 환경에서 할당된 작업을 수행할 수 있다. 이 후, 작업자 노드(130_1, 130_2, 130_3)는 수행한 작업의 작업 결과에 대한 정보를 관리자 노드(120)로 전송할 수 있다. 관리자 노드(120)는 수신한 작업 결과에 대한 정보를 서비스 플랫폼(110)에 제공하고, 서비스 플랫폼(110)은 작업 결과에 대한 정보를 사용자 클라이언트에 제공할 수 있다. 예를 들어, 관리자 노드(120)는 수신한 작업 결과에 대한 정보 중 일부를 서비스 플랫폼(110)에 제공하고, 서비스 플랫폼(110)은 수신한 작업 결과에 대한 정보 중 일부를 사용자 클라이언트에 제공할 수 있다. 일 실시예에서, 서비스 플랫폼(110)은 관리자 노드(120)로부터 제공받은 작업 결과에 대한 정보를 사용자 클라이언트로 전송하여, 사용자 클라이언트가 작업 결과를 확인 또는 실행할 수 있는 사용자 인터페이스를 출력하도록 할 수 있다.
일 실시예에서, 관리자 노드(120)는 작업자 노드(130_1, 130_2, 130_3)의 활동 내역에 기초하여 작업자 노드(130_1, 130_2, 130_3)의 신뢰도를 결정하거나, 작업 결과에 대한 정보에 기초하여 작업자 노드(130_1, 130_2, 130_3)의 신뢰도를 업데이트할 수 있다. 예를 들어, 관리자 노드(120)는, 요청된 작업을 잘 처리한 작업자 노드의 신뢰도 수치가 상승하도록 업데이트하는 반면, 작업 수행에 있어서 문제가 발생한 작업자 노드의 신뢰도 수치는 하락하도록 업데이트할 수 있다. 일 실시예에서, 작업자 노드(130_1, 130_2, 130_3)는 정상적으로 동작하고 있음을 알리기 위한 메시지를 주기적으로 관리자 노드(120)로 전송할 수 있다. 이 경우, 관리자 노드(120)는 메시지를 일정 기간 이상 전송하지 않는 작업자 노드(130_1, 130_2, 130_3)의 신뢰도 수치가 하락하도록 업데이트할 수 있다. 작업자 노드(130_1, 130_2, 130_3)의 신뢰도는 사용자 클라이언트 및 관리자 노드(120)가 작업을 할당할 작업자 노드를 선택하는 데 있어서 고려될 수 있고, 신뢰도가 낮은 작업자 노드(130_1, 130_2, 130_3)는 작업을 할당 받지 못하게 될 수 있다. 따라서, 작업자 노드(130_1, 130_2, 130_3)는 신뢰도를 향상 또는 유지하기 위해 할당된 작업을 잘 처리하거나, 정상적으로 동작하고 있음을 알리기 위한 메시지를 주기적으로 전송할 수 있다.
일 실시예에서, 블록체인(140)은 사용자 클라이언트와 작업자 노드(130_1, 130_2, 130_3) 간의 상호작용에서 발생하는 모든 거래를 진행하고, 거래에 대한 내역들은 기록할 수 있다. 여기서, 사용자 클라이언트와 작업자 노드(130_1, 130_2, 130_3) 간의 거래는, 사용자 클라이언트와 하이브리드 컴퓨팅 시스템의 관리자 노드(120) 간의 1차 거래 및 관리자 노드(120)와 작업자 노드(130_1, 130_2, 130_3) 간의 2차 거래를 포함할 수 있다. 1차 거래에서 사용자 클라이언트는 요청한 작업에 대한 보상을 임시로 관리자 노드(120)에게 예치하고, 관리자 노드(120)는 예치금을 확인한 후에 작업자 노드(130_1, 130_2, 130_3)에 작업을 할당할 수 있다. 2차 거래에서 관리자 노드(120)는 작업자 노드(130_1, 130_2, 130_3)로부터 수신한 작업 결과에 대한 정보를 기초로 작업 결과를 검수하고, 검수 결과에 따라 예치된 보상을 처리할 수 있다. 예를 들어, 작업 결과가 미리 설정한 기준 이상에 해당하는 경우, 관리자 노드(120)는 1차 거래에서 예치된 보상을 작업자 노드(130_1, 130_2, 130_3)에 전달할 수 있다. 반면, 작업 결과가 미리 설정한 기준에 미달하는 경우, 관리자 노드(120)는 예치된 요금을 사용자 클라이언트로 환불 처리할 수 있다. 대안적으로, 작업 결과가 기준에 일부 미달하는 경우, 관리자 노드(120)는 예치된 보상의 일부를 작업자 노드(130_1, 130_2, 130_3)에 제공하고, 나머지 일부를 사용자 클라이언트로 환불 처리할 수 있다. 블록체인(140)은 이러한 1차 거래 및 2차 거래의 내역을 기록 및 저장하고 투명하게 관리할 수 있으며, 기록 및 저장된 거래 내역은 관리자 노드(120)에 의해 복원될 수 있다.
도 1에서는 원클릭 배포 서비스를 제공하기 위해, 서비스 플랫폼(110), 관리자 노드(120), 작업자 노드(130_1, 130_2, 130_3), 블록체인(140) 및 중앙화/상용 클라우드(150)가 연결된 구성을 도시하고 있으나, 이에 한정되지 않는다. 예를 들어, 일부 구성 요소가 생략되거나 다른 구성 요소가 더 추가될 수 있다. 또한, 도 1에서는 3개의 작업자 노드(130_1, 130_2, 130_3)가 관리자 노드(120)와 통신하는 것으로 도시되어 있으나, 이에 한정되지 않으며, 상이한 수의 작업자 노드(130_1, 130_2, 130_3)가 관리자 노드(120)와 통신하도록 구성될 수도 있다.
도 2는 본 개시의 일 실시예에 따른 코드 저장소와 연동하여 원클릭 배포 서비스를 제공하기 위하여, 원클릭 배포 시스템(230)이 복수의 사용자 클라이언트(210_1, 210_2, 210_3)과 통신 가능하도록 연결된 구성을 나타내는 개요도이다. 원클릭 배포 시스템(230)은 원클릭 배포 서비스를 제공할 수 있는 시스템(들)을 포함할 수 있다. 일 실시예에서, 원클릭 배포 시스템(230)은 원클릭 배포 서비스와 관련된 컴퓨터 실행 가능한 프로그램(예를 들어, 다운로드 가능한 어플리케이션) 및 데이터를 저장, 제공 및 실행할 수 있는 하나 이상의 서버 장치 및/또는 데이터베이스, 또는 클라우드 컴퓨팅 서비스 기반의 하나 이상의 분산 컴퓨팅 장치 및/또는 분산 데이터베이스를 포함할 수 있다. 예를 들어, 원클릭 배포 시스템(230)은 원클릭 배포 서비스를 제공하기 위한 별도의 시스템(예를 들어, 서버, 컴퓨팅 장치 등)들을 포함할 수 있다.
원클릭 배포 시스템(230)에 의해 제공되는 원클릭 배포 서비스는 복수의 사용자 클라이언트(210_1, 210_2, 210_3)의 각각에 설치된 원클릭 배포 서비스를 위한 어플리케이션 등을 통해 사용자에게 제공될 수 있다. 대안적으로, 사용자 클라이언트(210_1, 210_2, 210_3)는 내부에 저장된 원클릭 배포 서비스 프로그램/알고리즘을 이용하여 소스코드 분석, 컴퓨팅 리소스 정보 산출 등의 작업을 처리할 수 있다. 이 경우, 사용자 클라이언트(210_1, 210_2, 210_3)은 원클릭 배포 시스템(230)과 통신하지 않고 소스코드 분석, 컴퓨팅 리소스 정보 산출 등의 작업을 직접 처리할 수 있다.
복수의 사용자 클라이언트(210_1, 210_2, 210_3)는 네트워크(220)를 통해 원클릭 배포 시스템(230)과 통신할 수 있다. 네트워크(220)는 복수의 사용자 클라이언트(210_1, 210_2, 210_3)와 원클릭 배포 시스템(230) 사이의 통신이 가능하도록 구성될 수 있다. 네트워크(220)는 설치 환경에 따라, 예를 들어, 이더넷(Ethernet), 유선 홈 네트워크(Power Line Communication), 전화선 통신 장치 및 RS-serial 통신 등의 유선 네트워크, 이동통신망, WLAN(Wireless LAN), Wi-Fi, Bluetooth 및 ZigBee 등과 같은 무선 네트워크 또는 그 조합으로 구성될 수 있다. 통신 방식은 제한되지 않으며, 네트워크(220)가 포함할 수 있는 통신망(일례로, 이동통신망, 유선 인터넷, 무선 인터넷, 방송망, 위성망 등)을 활용하는 통신 방식뿐 아니라 사용자 클라이언트(210_1, 210_2, 210_3) 사이의 근거리 무선 통신 역시 포함될 수 있다.
도 2에서 사용자 클라이언트(210_1, 210_2, 210_3)의 예로서 PC 단말이 도시되었으나, 이에 한정되지 않으며, 사용자 클라이언트(210_1, 210_2, 210_3)는 유선 및/또는 무선 통신이 가능한 임의의 컴퓨팅 장치일 수 있다. 예를 들어, 사용자 클라이언트는, 스마트폰, 휴대폰, 컴퓨터, 노트북, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 태블릿 PC 등을 포함할 수 있다. 또한, 도 2에는 3개의 사용자 클라이언트(210_1, 210_2, 210_3)가 네트워크(220)를 통해 원클릭 배포 시스템(230)과 통신하는 것으로 도시되어 있으나, 이에 한정되지 않으며, 상이한 수의 사용자 클라이언트가 네트워크(220)를 통해 원클릭 배포 시스템(230)과 통신하도록 구성될 수도 있다.
일 실시예에서, 원클릭 배포 시스템(230)은 사용자 클라이언트(210_1, 210_2, 210_3)에서 동작하는 원클릭 배포 서비스를 위한 어플리케이션 등을 통해 사용자 클라이언트(210_1, 210_2, 210_3)로부터 데이터(예를 들어, 코드 저장소의 링크 주소, 코드 저장소에 포함된 소스코드 등)를 수신할 수 있다. 또한, 원클릭 배포 시스템(230)은 작업 결과에 대한 정보를 사용자 클라이언트(210_1, 210_2, 210_3)로 전송하여, 사용자 클라이언트(210_1, 210_2, 210_3)가 작업 결과를 실행할 수 있는 사용자 인터페이스를 출력하도록 할 수 있다. 사용자 클라이언트(210_1, 210_2, 210_3)는 원클릭 배포 시스템(230)을 이용하여 머신러닝 작업을 운용하는 경우, 운용 비용을 절감할 수 있고, 머신러닝 개발환경 구축시간을 절감할 수 있다.
도 3은 본 개시의 일 실시예에 따른 서비스 플랫폼(110)의 내부 구성을 나타내는 블록도이다. 원클릭 배포 시스템(도 2의 230)의 서비스 플랫폼(110)은 통신부(310), 컴퓨터 리소스 정보 산출부(320) 및 사용자 인터페이스 출력부(330)를 포함할 수 있다. 통신부(310)는 서비스 플랫폼(110)이 사용자 클라이언트 및/또는 관리자 노드와 통신하도록 구성될 수 있다. 일 실시예에서, 통신부(310)는 사용자 클라이언트로부터 코드 저장소에 대한 정보(예를 들어, 코드 저장소 URL 주소, 코드 저장소에 포함된 파일, 소스코드에 대한 정보 등)를 수신할 수 있다.
컴퓨터 리소스 정보 산출부(320)는 통신부(310)를 통해 수신한 코드 저장소에 대한 정보에 기초하여, 코드 저장소에 포함된 소스코드를 분석하고 소스코드와 연관된 작업을 실행하기 위해 필요한 컴퓨팅 리소스 정보를 산출할 수 있다. 여기서, 컴퓨팅 리소스 정보는, 작업을 실행하기 위해 필요한 프로세서의 사양, 그래픽 프로세싱의 지원 여부, 저장 용량 중 적어도 하나에 대한 정보를 포함할 수 있다. 일 실시예에서, 컴퓨터 리소스 정보 산출부(320)는 소스코드의 실행에서 사용되는 파일을 기초로 소스코드를 분석하고, 소스코드를 실행 및/또는 배포하기 위한 필요 사양을 추출할 수 있다.
예를 들어, 도커(Docker)를 이용하는 코드 저장소의 경우, 컴퓨터 리소스 정보 산출부(320)는 'Dockerfile' 또는 'docker-compose.yml'라는 파일명을 가진 구성 파일을 분석하여, 코드 저장소의 소스코드의 실행에 필요한 OS(operating system), 프레임워크, 실행 명령어, 포트 번호들을 추출할 수 있다. 대안적으로, 코드 저장소에 'Node.js'를 사용하는 프로젝트가 포함된 경우, 컴퓨터 리소스 정보 산출부(320)는 'package.json'파일의 존재 여부와 파일 분석 정보를 통해, 코드 저장소의 소스코드의 실행에 필요한 OS, 프레임워크, 실행 명령어, 포트 번호들을 추출할 수 있다. 대안적으로, 코드 저장소에 'Python'을 이용하는 프로젝트가 포함된 경우, 컴퓨터 리소스 정보 산출부(320)는 'requirements.txt'파일을 통해, 코드 저장소의 소스코드의 실행에 필요한 OS, 프레임워크, 실행 명령어, 포트 번호들을 추출할 수 있다.
서비스 플랫폼(110)은 컴퓨터 리소스 정보 산출부(320)에서 산출한 컴퓨팅 리소스 정보를 작업 요청을 위한 명세에 맞는 형태로 정제하여, 통신부(310)를 통해 하이브리드 컴퓨팅 시스템에 제공할 수 있다. 이 후, 통신부(310)는 관리자 노드로부터 작업 결과에 대한 정보를 수신할 수 있다. 사용자 인터페이스 출력부(330)는 수신한 작업 결과에 대한 정보(예를 들면, 소스코드 실행 및/또는 배포 성공 여부 등)를 통신부(310)를 사용자 클라이언트로 제공하고, 사용자 클라이언트가 작업 결과를 실행할 수 있는 사용자 인터페이스를 출력하도록 할 수 있다. 예를 들어, 사용자 인터페이스 출력부(330)는 사용자 클라이언트가 작업 결과를 실행할 수 있는 버튼을 포함하는 사용자 인터페이스를 출력하도록 요청할 수 있다.
도 4는 본 개시의 일 실시예에 따른 관리자 노드(410)가 작업을 할당하고 작업자 노드(420)가 작업을 수행하도록 구성된 예시를 나타내는 도면이다. 관리자 노드(410)는 서비스 플랫폼으로부터 수신한 컴퓨팅 리소스 정보(예를 들어, CPU 사양, GPU 지원 여부 및 사양, 메모리 및 디스크 여유공간 등)를 충족하는 하나 이상의 작업자 노드(또는 자원 제공자)(420)로 작업을 할당할 수 있다. 대안적으로 또는 추가적으로, 관리자 노드(410)는 복수의 작업자 노드 각각의 통신 지연, 작업 수행 비용 및 신뢰도 중 적어도 하나를 기초로, 복수의 작업자 노드 중 하나 이상의 작업자 노드(420)로 작업을 할당할 수 있다.
하나 이상의 작업자 노드(420)는 할당된 작업을 수행할 수 있다. 일 실시예에서, 작업자 노드(420)는 컨테이너 기반의 런타임 실행 환경에서 할당된 작업을 수행할 수 있다. 즉, 작업자 노드(420)는 오프체인 상태의 보안 런타임 환경을 가지고, 이를 통해 관리자 노드(410)로부터 할당 받은 작업을 시작 및 실행할 수 있다. 예를 들어, 작업자 노드(420)는, 할당 받은 작업의 실행을 위해, 쿠버네티스(Kubernetes 또는 K8s) 기반의 클러스터를 관리할 수 있다. 대안적으로, 작업자 노드(420)는 경량화 목적으로 단순 도커(Docker)를 기반으로 클러스터를 관리할 수 있다. 작업자 노드(420)는 할당 받은 작업이 쿠버네티스 기반으로 실행 가능한 경우 kubectl 명령을 사용할 수 있다. 대안적으로, 작업자 노드(420)는 할당 받은 작업이 도커 기반으로 실행 가능한 경우, 도커 명령(Docker Command)을 수행할 수 있다. 도시된 바와 같이, 작업자 노드(420)가 관리자 노드(410)로부터 할당 받은 작업이 쿠버네티스 기반인 경우 쿠버네티스 API(Application Programming Interface) 서버와 통신하고, 도커 기반인 경우 도커 데몬과 통신할 수 있다. 여기서, 쿠버네티스 API 서버는 하나 이상의 파드(pod)를 포함하고, 각각의 파드는 하나 이상의 컨테이너를 포함할 수 있다.
작업자 노드(420)는 수행한 작업의 작업 결과에 대한 정보를 관리자 노드(410)에 제공할 수 있다. 일 실시예에서, 관리자 노드(410)는 작업 결과에 대한 정보를 기초로 작업을 수행한 작업자 노드(420)의 신뢰도를 업데이트할 수 있다. 일 실시예에서, 관리자 노드(410)는 작업 결과에 대한 정보를 기초로 예치된 보상 중 적어도 일부의 보상을 하나 이상의 작업자 노드(420)에게 제공할 수 있다. 이 경우, 관리자 노드(410)는 작업자 노드(420)에게 제공된 적어도 일부의 보상에 대한 정보를 블록체인에 기록할 수 있다.
일 실시예에서, 관리자 노드(410)는 아래 표 1과 같은 API를 통해 서비스 플랫폼(미도시)으로부터 작업 요청을 수신할 수 있다. 또한, 관리자 노드(410)는 아래 표 2와 같은 API를 통해 작업자 노드(420)로부터 작업 결과를 전달받고 처리할 수 있다.
API 이름 기능 설명
createResource Resource 생성 요청Parameters
- hardwareSpec: object
- containerImage: string
- (opt) clusterName: string
- (opt) clusterAddress: string
Response
- resourceId: string
- endpoint: string
deleteResource 생성된 resource에 대한 삭제 요청Parameters
- resourceId: string
Response
- resultCode
getResourceStatus Resource의 상태 정보 요청Parameters
- resourceId: string
Response
- status
setResourceConfig Resource 환경변수 업데이트 요청Parameters
- {[key]: value}
Response
- resultCode
API 이름 기능 설명
register 하이브리드 컴퓨팅 시스템에 작업자 노드 등록
Parameters
- clusterOptions: object
Response
- resultCode
listenJob 작업의 종류 별로 실행될 callback function의 정의 등록
Parameters
- {[requestType]: callbackFunction}
response 처리된 작업 결과 등록Parameters
- requestId: string
- responsePayload: object
updateClusterInfo 관리하는 클러스터의 정보 업데이트
Parameters
- clusterOptions: object
도 5는 본 개시의 일 실시예에 따른 원클릭 배포 서비스 제공 방법(500)을 나타내는 흐름도이다. 일 실시예에서, 원클릭 배포 서비스 제공 방법(500)은 원클릭 배포 시스템(예를 들어, 원클릭 배포 시스템의 적어도 하나의 구성)에 의해 수행될 수 있다. 도시된 바와 같이, 원클릭 배포 서비스 제공 방법(500)은 서비스 플랫폼에 의해, 사용자 클라이언트에 의해 선택된 코드 저장소에 포함된 소스코드를 분석하여, 소스코드와 연관된 작업을 실행하기 위하여 필요한 컴퓨팅 리소스 정보를 산출하고(S510), 산출된 컴퓨팅 리소스 정보를 관리자 노드로 전송함(S520)으로써 개시될 수 있다. 여기서, 컴퓨팅 리소스 정보는, 작업을 실행하기 위해 필요한 프로세서의 사양, 그래픽 프로세싱의 지원 여부, 저장 용량 중 적어도 하나에 대한 정보를 포함할 수 있다.
그 후, 관리자 노드에 의해, 컴퓨팅 리소스 정보를 충족하는 하나 이상의 작업자 노드로 작업을 할당하고, 하나 이상의 작업자 노드로부터 작업의 작업 결과에 대한 정보를 수신할 수 있다(S530). 일 실시예에서, 관리자 노드에 의해, 컴퓨팅 리소스 정보를 충족하는 복수의 작업자 노드를 결정하고, 복수의 작업자 노드 각각의 통신 지연, 작업 수행 비용 및 신뢰도 중 적어도 하나를 기초로 복수의 작업자 노드 중 하나 이상의 작업자 노드로 작업을 할당하고, 하나 이상의 작업자 노드로부터 작업의 작업 결과에 대한 정보를 수신할 수 있다. 일 실시예에서, 하나 이상의 작업자 노드에 의해, 컨테이너 기반의 런타임 실행 환경에서 할당된 작업을 수행하고, 작업의 작업 결과에 대한 정보를 관리자 노드에 제공할 수 있다.
그 후, 서비스 플랫폼에 의해, 관리자 노드로부터 작업 결과에 대한 정보를 수신하고(S540), 작업 결과에 대한 정보를 사용자 클라이언트로 전송하여, 사용자 클라이언트가 작업 결과를 실행할 수 있는 사용자 인터페이스를 출력하도록 할 수 있다(S550). 일 실시예에서, 하나 이상의 작업자 노드에 의해, 컨테이너 기반의 런타임 실행 환경에서 할당된 작업을 수행하고, 작업의 작업 결과에 대한 정보를 관리자 노드에 제공할 수 있다.
일 실시예에서, 관리자 노드에 의해, 작업 결과에 대한 정보를 기초로 하나 이상의 작업자 노드의 신뢰도를 업데이트할 수 있다. 일 실시예에서, 관리자 노드에 의해 사용자 클라이언트로부터 수신된 작업에 대한 보상을 예치하고, 블록체인에 의해 예치된 보상에 대한 정보를 기록할 수 있다. 일 실시예에서, 관리자 노드에 의해, 작업 결과에 대한 정보를 기초로 예치된 보상 중 적어도 일부의 보상을 하나 이상의 작업자 노드에게 제공하고, 블록체인에 의해 하나 이상의 작업자 노드에게 제공된 적어도 일부의 보상에 대한 정보를 기록할 수 있다.
도 6은 본 개시의 일 실시예에 따른 원클릭 실행 버튼(610)을 제공하는 사용자 인터페이스(600)의 예시를 나타내는 도면이다. 서비스 플랫폼은 관리자 노드(즉, 하이브리드 컴퓨팅 시스템)로부터 수신한 작업 결과에 대한 정보를 사용자 클라이언트로 전송하여, 사용자 클라이언트가 작업 결과를 실행할 수 있는 사용자 인터페이스(600)를 출력하도록 할 수 있다. 일 실시예에서, 서비스 플랫폼은 하이브리드 컴퓨팅 시스템으로부터 작업 결과가 수신되면, 사용자 클라이언트에 작업 결과에 대한 버튼(610) 생성을 요청할 수 있다. 여기서, 작업 결과에 대한 버튼(610)은, 코드 저장소에 Pull Request(신규 작업물 반영 요청)라는 형식으로 배포된 결과를 실행할 수 있는 버튼일 수 있다. 사용자 클라이언트는 이러한 요청에 대한 응답으로, 작업 결과에 대한 버튼(610)을 포함하는 사용자 인터페이스(600)를 출력할 수 있다. 사용자 클라이언트는 출력된 실행 버튼(610)에 대한 사용자 입력에 응답하여, 코드 저장소에서 바로 배포된 소스코드를 실행할 수 있다.
예를 들어, 사용자 클라이언트가 선택 및/또는 제공한 코드 저장소 또는 소스코드(예를 들면, 사용자 클라이언트가 선택 및/또는 제공한 링크 주소와 연관된 코드 저장소 또는 소스코드)에 인공지능 기반의 얼굴 인식 모델에 대한 소스코드가 포함된 경우, 서비스 플랫폼은 하이브리드 컴퓨팅 시스템으로부터 학습 및 배포된 얼굴 인식 모델에 대한 정보를 수신할 수 있다. 서비스 플랫폼은, 수신한 정보를 사용자 클라이언트로 전송하여, 사용자가 학습 및 배포된 얼굴 인식 모델을 실행할 수 있는 사용자 인터페이스(600)를 출력하도록 할 수 있다. 도시된 바와 같이, 작업 결과를 실행할 수 있는 사용자 인터페이스(600)는, 작업 결과를 실행할 수 있는 API 명칭 'FACE_RECOG_API', API에 대한 설명 'API Service for recognizing faces in images', API 문서(API Document) 등의 정보 및/또는 작업 결과 실행 버튼(610)을 포함할 수 있다.
도 7은 본 개시의 일 실시예에 따른 API 목록을 제공하는 사용자 인터페이스(700)의 예시를 나타내는 도면이다. 일 실시예에서, 서비스 플랫폼은 사용자 클라이언트로부터 수신한 코드 저장소에 포함된 파일, 소스코드 및/또는 관리자 노드로부터 수신한 작업 결과에 대한 정보를 분석하여, 코드 저장소의 배포로 생성되는 하나 이상의 API(application programming interface)를 추출할 수 있다. 여기서, 추출되는 하나 이상의 API는 코드 저장소에 대한 작업 결과를 실행할 수 있는 API를 포함할 수 있다. 예를 들어, 서비스 플랫폼은 코드 저장소에 포함된 'swagger.yaml' 파일 등 API에 관한 정보가 정의된 파일 및/또는 코드들을 분석하여, 사용 가능한 API의 목록을 추출할 수 있다.
서비스 플랫폼은 작업 결과를 실행할 수 있는 하나 이상의 API에 대한 정보를 사용자 클라이언트로 전송하여, API와 연관된 사용자 인터페이스(700)를 출력할 수 있다. 일 실시예에서, 서비스 플랫폼은 추출된 API의 목록을 사용자 클라이언트로 전송하여, API의 목록을 포함하는 사용자 인터페이스(700)를 출력하도록 할 수 있다. 예를 들어, 사용자 클라이언트는 저장소 단위, 프로젝트 단위, 카테고리 단위 등으로 분류된 복수의 API를 포함하는 사용자 인터페이스(700)를 출력할 수 있다.
사용자는 사용자 클라이언트에 출력된 사용자 인터페이스(700)를 통해, 하나 이상의 API를 검색, 선택, 실행 및/또는 사용할 수 있다. 예를 들어, 사용자 인터페이스(700)는 복수의 API 중 적어도 하나의 API를 검색하기 위한 검색 바(bar)를 포함하고, 사용자는 검색 바에 검색어를 입력함으로써 입력된 검색어와 연관된 하나 이상의 API를 검색할 수 있다. 대안적으로 또는 추가적으로, 사용자는 사용자 인터페이스(700)를 통해 표시된 복수의 API 중 적어도 하나의 API에 대한 사용자 입력을 통해 해당 API를 실행 및/또는 사용할 수 있다.
도 8은 본 개시의 일 실시예에 따른 원클릭 배포 서비스 제공 방법(800)을 나타내는 흐름도이다. 사용자(또는 사용자 클라이언트)는 코드 저장소에 대한 정보를 서비스 플랫폼에 제공할 수 있다(S812). 여기서, 코드 저장소에 대한 정보는, 코드 저장소의 링크 주소 (예를 들면, URL 주소), 코드 저장소에 포함된 파일 및/또는 소스코드 또는 그 링크 주소를 포함할 수 있다. 서비스 플랫폼은 코드 저장소에 포함된 파일 및/또는 소스코드를 분석하여, 소스코드와 연관된 작업을 실행하기 위해 필요한 컴퓨팅 리소스 정보를 산출하고(S814), 산출한 컴퓨팅 리소스 정보를 관리자 노드로 전송할 수 있다(S816). 관리자 노드는 수신한 컴퓨팅 리소스 정보를 충족하는 하나 이상의 작업자 노드를 결정할 수 있다(S818). 사용자는 요청한 작업에 대한 보상을 관리자 노드에 예치할 수 있다. 관리자 노드는 예치된 보상에 대한 정보 즉, 보상 예치 내역을 블록체인에 저장 및 기록할 수 있고(S820), 블록체인으로부터 저장 및 기록된 보상 예치 내역을 확인할 수 있다(S822). 보상 예치 완료 후, 관리자 노드는 단계(S818)에서 결정한 하나 이상의 작업자 노드에 작업을 할당할 수 있다(S824). 작업자 노드는 할당된 작업을 수행하고(S826), 작업 결과에 대한 정보를 관리자 노드에 제공할 수 있다(S828).
관리자 노드는 작업자 노드로부터 수신한 작업 결과에 대한 정보에 기초하여, 예치된 보상을 처리할 수 있다. 예를 들어, 관리자 노드는 작업 결과에 대한 정보를 기초로 작업 결과에 대한 검증을 수행하고, 작업 결과가 미리 설정된 기준 이상에 해당하는 경우, 예치된 보상을 작업자 노드에 전달할 수 있다. 반면, 작업 결과가 미리 설정된 기준에 미달하는 경우, 관리자 노드는 예치된 보상을 사용자(또는 사용자 클라이언트)에게 환불 처리할 수 있다. 대안적으로, 작업 결과가 미리 설정된 기준에 일부 미달하는 경우, 관리자 노드는 예치된 보상의 일부를 작업자 노드에 제공하고, 나머지 일부를 사용자(또는 사용자 클라이언트)에게 환불 처리할 수 있다. 관리자 노드는 이러한 보상 처리에 대한 내역을 블록체인에 저장 및 기록할 수 있고(S830), 블록체인으로부터 저장 및 기록된 보상 처리 내역을 확인할 수 있다(S832). 보상 처리 후, 관리자 노드는 작업자 노드로부터 수신한 작업 결과에 대한 정보를 서비스 플랫폼에 제공할 수 있다(S834). 서비스 플랫폼은 수신된 작업 결과에 대한 정보에 기초하여, 사용자 클라이언트에 실행 버튼을 생성하도록 할 수 있다(S836).
상술한 원클릭 배포 서비스 제공 방법은 컴퓨터에서 실행하기 위해 컴퓨터 판독 가능한 기록 매체에 저장된 컴퓨터 프로그램으로 제공될 수 있다. 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수개 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD 와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 애플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.
본 개시의 방법, 동작 또는 기법들은 다양한 수단에 의해 구현될 수도 있다. 예를 들어, 이러한 기법들은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수도 있다. 본원의 개시와 연계하여 설명된 다양한 예시적인 논리적 블록들, 모듈들, 회로들, 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양자의 조합들로 구현될 수도 있음을 통상의 기술자들은 이해할 것이다. 하드웨어 및 소프트웨어의 이러한 상호 대체를 명확하게 설명하기 위해, 다양한 예시적인 구성요소들, 블록들, 모듈들, 회로들, 및 단계들이 그들의 기능적 관점에서 일반적으로 위에서 설명되었다. 그러한 기능이 하드웨어로서 구현되는지 또는 소프트웨어로서 구현되는지의 여부는, 특정 애플리케이션 및 전체 시스템에 부과되는 설계 요구사항들에 따라 달라진다. 통상의 기술자들은 각각의 특정 애플리케이션을 위해 다양한 방식들로 설명된 기능을 구현할 수도 있으나, 그러한 구현들은 본 개시의 범위로부터 벗어나게 하는 것으로 해석되어서는 안된다.
하드웨어 구현에서, 기법들을 수행하는 데 이용되는 프로세싱 유닛들은, 하나 이상의 ASIC들, DSP들, 디지털 신호 프로세싱 디바이스들(digital signal processing devices; DSPD들), 프로그램가능 논리 디바이스들(programmable logic devices; PLD들), 필드 프로그램가능 게이트 어레이들(field programmable gate arrays; FPGA들), 프로세서들, 제어기들, 마이크로제어기들, 마이크로프로세서들, 전자 디바이스들, 본 개시에 설명된 기능들을 수행하도록 설계된 다른 전자 유닛들, 컴퓨터, 또는 이들의 조합 내에서 구현될 수도 있다.
따라서, 본 개시와 연계하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 및 회로들은 범용 프로세서, DSP, ASIC, FPGA나 다른 프로그램 가능 논리 디바이스, 이산 게이트나 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본원에 설명된 기능들을 수행하도록 설계된 것들의 임의의 조합으로 구현되거나 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합, 예를 들면, DSP와 마이크로프로세서, 복수의 마이크로프로세서들, DSP 코어와 연계한 하나 이상의 마이크로프로세서들, 또는 임의의 다른 구성의 조합으로서 구현될 수도 있다.
펌웨어 및/또는 소프트웨어 구현에 있어서, 기법들은 랜덤 액세스 메모리(random access memory; RAM), 판독 전용 메모리(read-only memory; ROM), 비휘발성 RAM(non-volatile random access memory; NVRAM), PROM(programmable read-only memory), EPROM(erasable programmable read-only memory), EEPROM(electrically erasable PROM), 플래시 메모리, 컴팩트 디스크(compact disc; CD), 자기 또는 광학 데이터 스토리지 디바이스 등과 같은 컴퓨터 판독가능 매체 상에 저장된 명령들로서 구현될 수도 있다. 명령들은 하나 이상의 프로세서들에 의해 실행 가능할 수도 있고, 프로세서(들)로 하여금 본 개시에 설명된 기능의 특정 양태들을 수행하게 할 수도 있다.
본 개시의 앞선 설명은 통상의 기술자들이 본 개시를 행하거나 이용하는 것을 가능하게 하기 위해 제공된다. 본 개시의 다양한 수정예들이 통상의 기술자들에게 쉽게 자명할 것이고, 본원에 정의된 일반적인 원리들은 본 개시의 취지 또는 범위를 벗어나지 않으면서 다양한 변형예들에 적용될 수도 있다. 따라서, 본 개시는 본원에 설명된 예들에 제한되도록 의도된 것이 아니고, 본원에 개시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위가 부여되도록 의도된다.
비록 예시적인 구현예들이 하나 이상의 독립형 컴퓨터 시스템의 맥락에서 현재 개시된 주제의 양태들을 활용하는 것을 언급할 수도 있으나, 본 주제는 그렇게 제한되지 않고, 오히려 네트워크나 분산 컴퓨팅 환경과 같은 임의의 컴퓨팅 환경과 연계하여 구현될 수도 있다. 또 나아가, 현재 개시된 주제의 양상들은 복수의 프로세싱 칩들이나 디바이스들에서 또는 그들에 걸쳐 구현될 수도 있고, 스토리지는 복수의 디바이스들에 걸쳐 유사하게 영향을 받게 될 수도 있다. 이러한 디바이스들은 PC들, 네트워크 서버들, 및 핸드헬드 디바이스들을 포함할 수도 있다.
본 명세서에서는 본 개시가 일부 실시예들과 관련하여 설명되었지만, 본 발명이 속하는 기술분야의 통상의 기술자가 이해할 수 있는 본 개시의 범위를 벗어나지 않는 범위에서 다양한 변형 및 변경이 이루어질 수 있다는 점을 알아야 할 것이다. 또한, 그러한 변형 및 변경은 본 명세서에서 첨부된 특허청구의 범위 내에 속하는 것으로 생각되어야 한다.
110: 서비스 플랫폼
120: 관리자 노드
130_1, 130_2, 130_3: 작업자 노드
140: 블록체인
150: 중앙화/상용 클라우드

Claims (11)

  1. 코드 저장소와 연동하여 원클릭 배포 서비스를 제공하는 방법에 있어서,
    서비스 플랫폼에 의해, 사용자 클라이언트에 의해 선택된 코드 저장소에 포함된 소스코드에 대한 정보를 관리자 노드로 전송하는 단계;
    상기 관리자 노드에 의해, 하나 이상의 작업자 노드로 상기 소스코드와 연관된 작업을 할당하고, 상기 하나 이상의 작업자 노드로부터 상기 작업의 작업 결과에 대한 정보를 수신하는 단계;
    상기 서비스 플랫폼에 의해, 상기 관리자 노드로부터 상기 작업 결과에 대한 정보를 수신하는 단계; 및
    상기 서비스 플랫폼에 의해, 상기 작업 결과에 대한 정보를 상기 사용자 클라이언트로 전송하여, 상기 사용자 클라이언트가 상기 작업 결과를 실행할 수 있는 사용자 인터페이스를 출력하도록 하는 단계
    를 포함하는, 원클릭 배포 서비스 제공 방법.
  2. 제1항에 있어서,
    상기 서비스 플랫폼에 의해, 사용자 클라이언트에 의해 선택된 코드 저장소에 포함된 소스코드에 대한 정보를 관리자 노드로 전송하는 단계는,
    상기 서비스 플랫폼에 의해, 상기 사용자 클라이언트에 의해 선택된 코드 저장소에 포함된 소스코드를 분석하여, 상기 소스코드와 연관된 작업을 실행하기 위하여 필요한 컴퓨팅 리소스 정보를 산출하는 단계; 및
    상기 서비스 플랫폼에 의해, 상기 산출된 컴퓨팅 리소스 정보를 관리자 노드로 전송하는 단계를 포함하고,
    상기 관리자 노드에 의해, 하나 이상의 작업자 노드로 상기 소스코드와 연관된 작업을 할당하고, 상기 하나 이상의 작업자 노드로부터 상기 작업의 작업 결과에 대한 정보를 수신하는 단계는,
    상기 관리자 노드에 의해, 상기 컴퓨팅 리소스 정보를 충족하는 하나 이상의 작업자 노드로 상기 작업을 할당하고, 상기 하나 이상의 작업자 노드로부터 상기 작업의 작업 결과에 대한 정보를 수신하는 단계
    를 포함하는, 원클릭 배포 서비스 제공 방법.
  3. 제2항에 있어서,
    상기 컴퓨팅 리소스 정보는, 상기 작업을 실행하기 위해 필요한 프로세서의 사양, 그래픽 프로세싱의 지원 여부, 저장 용량 중 적어도 하나에 대한 정보를 포함하는, 원클릭 배포 서비스 제공 방법.
  4. 제2항에 있어서,
    상기 관리자 노드에 의해, 상기 컴퓨팅 리소스 정보를 충족하는 하나 이상의 작업자 노드로 상기 작업을 할당하고, 상기 하나 이상의 작업자 노드로부터 상기 작업의 작업 결과에 대한 정보를 수신하는 단계는,
    상기 관리자 노드에 의해, 상기 컴퓨팅 리소스 정보를 충족하는 복수의 작업자 노드를 결정하는 단계;
    상기 관리자 노드에 의해, 상기 복수의 작업자 노드 각각의 통신 지연, 작업 수행 비용 및 신뢰도 중 적어도 하나를 기초로, 상기 복수의 작업자 노드 중 하나 이상의 작업자 노드로 상기 작업을 할당하는 단계; 및
    상기 관리자 노드에 의해, 상기 하나 이상의 작업자 노드로부터 상기 작업의 작업 결과에 대한 정보를 수신하는 단계
    를 포함하는, 원클릭 배포 서비스 제공 방법.
  5. 제1항에 있어서,
    상기 관리자 노드에 의해, 상기 하나 이상의 작업자 노드로 상기 소스코드와 연관된 작업을 할당하고, 상기 하나 이상의 작업자 노드로부터 상기 작업의 작업 결과에 대한 정보를 수신하는 단계는,
    상기 하나 이상의 작업자 노드에 의해, 컨테이너 기반의 런타임 실행 환경에서 상기 할당된 작업을 수행하고, 상기 작업의 작업 결과에 대한 정보를 상기 관리자 노드에 제공하는 단계를 포함하는, 원클릭 배포 서비스 제공 방법.
  6. 제1항에 있어서
    상기 관리자 노드에 의해, 상기 작업 결과에 대한 정보를 기초로 상기 하나 이상의 작업자 노드의 신뢰도를 업데이트하는 단계를 더 포함하는, 원클릭 배포 서비스 제공 방법.
  7. 제1항에 있어서,
    상기 관리자 노드에 의해, 상기 사용자 클라이언트로부터 수신된 상기 작업에 대한 보상을 예치하는 단계; 및
    블록체인에 의해, 상기 예치된 보상에 대한 정보를 기록하는 단계를 더 포함하는, 원클릭 배포 서비스 제공 방법.
  8. 제7항에 있어서,
    상기 관리자 노드에 의해, 상기 작업 결과에 대한 정보를 기초로 상기 예치된 보상 중 적어도 일부의 보상을 상기 하나 이상의 작업자 노드에게 제공하는 단계; 및
    상기 블록체인에 의해, 상기 하나 이상의 작업자 노드에게 제공된 적어도 일부의 보상에 대한 정보를 기록하는 단계를 더 포함하는, 원클릭 배포 서비스 제공 방법.
  9. 제1항에 있어서,
    상기 서비스 플랫폼에 의해, 상기 작업 결과에 대한 정보를 상기 사용자 클라이언트로 전송하여, 상기 사용자 클라이언트가 상기 작업 결과를 실행할 수 있는 사용자 인터페이스를 출력하도록 하는 단계는,
    상기 서비스 플랫폼에 의해, 상기 작업 결과를 실행할 수 있는 API(Application Programming Interface)에 대한 정보를 상기 사용자 클라이언트로 전송하여, 상기 API와 연관된 사용자 인터페이스를 출력하도록 하는 단계를 포함하는, 원클릭 배포 서비스 제공 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 따른 원클릭 배포 서비스 제공 방법을 컴퓨터에서 실행하기 위해 컴퓨터 판독 가능한 기록 매체에 저장된 컴퓨터 프로그램.
  11. 원클릭 배포 시스템에 있어서,
    상기 원클릭 배포 시스템은,
    서비스 플랫폼, 관리자 노드 및 하나 이상의 작업자 노드를 포함하고,
    상기 서비스 플랫폼은, 사용자 클라이언트에 의해 선택된 코드 저장소에 포함된 소스코드에 대한 정보를 관리자 노드로 전송하고,
    상기 관리자 노드는, 상기 하나 이상의 작업자 노드로 상기 소스코드와 연관된 작업을 할당하고, 상기 하나 이상의 작업자 노드로부터 상기 작업의 작업 결과에 대한 정보를 수신하고,
    상기 서비스 플랫폼은, 상기 관리자 노드로부터 상기 작업 결과에 대한 정보를 수신하고, 상기 작업 결과에 대한 정보를 상기 사용자 클라이언트로 전송하여, 상기 사용자 클라이언트가 상기 작업 결과를 실행할 수 있는 사용자 인터페이스를 출력하도록 하는, 원클릭 배포 시스템.
KR1020200160253A 2020-11-25 2020-11-25 코드 저장소와 연동하여 원클릭 배포 서비스를 제공하는 방법 및 시스템 KR102462866B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200160253A KR102462866B1 (ko) 2020-11-25 2020-11-25 코드 저장소와 연동하여 원클릭 배포 서비스를 제공하는 방법 및 시스템
US17/406,843 US20220164240A1 (en) 2020-11-25 2021-08-19 Method and system for providing one-click distribution service in linkage with code repository

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200160253A KR102462866B1 (ko) 2020-11-25 2020-11-25 코드 저장소와 연동하여 원클릭 배포 서비스를 제공하는 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20220072946A true KR20220072946A (ko) 2022-06-03
KR102462866B1 KR102462866B1 (ko) 2022-11-07

Family

ID=81658294

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200160253A KR102462866B1 (ko) 2020-11-25 2020-11-25 코드 저장소와 연동하여 원클릭 배포 서비스를 제공하는 방법 및 시스템

Country Status (2)

Country Link
US (1) US20220164240A1 (ko)
KR (1) KR102462866B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230166230A (ko) * 2022-05-30 2023-12-07 엔키노주식회사 인공지능 클라우드 플랫폼 서비스 시스템 및 그 방법
US20240070234A1 (en) * 2022-08-29 2024-02-29 Black Atom Technologies, Inc. Blockchain Encoding System

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130088512A (ko) * 2012-01-31 2013-08-08 한국전자통신연구원 클러스터 컴퓨팅 환경에서의 자원 관리 장치 및 방법
JP2018109878A (ja) * 2017-01-05 2018-07-12 株式会社日立製作所 分散コンピューティングシステム
KR20200092507A (ko) * 2019-01-14 2020-08-04 (주) 익투스지노믹스 다양한 클라우드에 적용 가능한 대용량 데이터 처리용 분산 처리 시스템의 설치시스템 및 설치방법과 그 분산 처리 시스템
KR20200093089A (ko) * 2019-01-04 2020-08-05 주식회사 커먼컴퓨터 블록체인 기반의 작업 요청 및 결과물의 거래 방법 및 시스템
KR20200108228A (ko) * 2019-03-06 2020-09-17 주식회사 커먼컴퓨터 피투피 클라우드 컴퓨팅 시스템 및 그 시스템에서 소스코드를 실행환경과 연결하고 실행하는 방법

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8612980B2 (en) * 2003-12-04 2013-12-17 The Mathworks, Inc. Distribution of job in a portable format in distributed computing environments
US7502745B1 (en) * 2004-07-21 2009-03-10 The Mathworks, Inc. Interfaces to a job manager in distributed computing environments
US7509244B1 (en) * 2004-12-22 2009-03-24 The Mathworks, Inc. Distributed model compilation
US20190102695A1 (en) * 2017-09-29 2019-04-04 Coupa Software Incorporated Generating machine learning systems using slave server computers
US20210241182A1 (en) * 2020-02-05 2021-08-05 Capital One Services, Llc Method and system for building a machine learning model

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130088512A (ko) * 2012-01-31 2013-08-08 한국전자통신연구원 클러스터 컴퓨팅 환경에서의 자원 관리 장치 및 방법
JP2018109878A (ja) * 2017-01-05 2018-07-12 株式会社日立製作所 分散コンピューティングシステム
KR20200093089A (ko) * 2019-01-04 2020-08-05 주식회사 커먼컴퓨터 블록체인 기반의 작업 요청 및 결과물의 거래 방법 및 시스템
KR20200092507A (ko) * 2019-01-14 2020-08-04 (주) 익투스지노믹스 다양한 클라우드에 적용 가능한 대용량 데이터 처리용 분산 처리 시스템의 설치시스템 및 설치방법과 그 분산 처리 시스템
KR20200108228A (ko) * 2019-03-06 2020-09-17 주식회사 커먼컴퓨터 피투피 클라우드 컴퓨팅 시스템 및 그 시스템에서 소스코드를 실행환경과 연결하고 실행하는 방법

Also Published As

Publication number Publication date
KR102462866B1 (ko) 2022-11-07
US20220164240A1 (en) 2022-05-26

Similar Documents

Publication Publication Date Title
Bonawitz et al. Towards federated learning at scale: System design
US10601900B2 (en) Supporting distributed ledgers in a micro-services environment
KR102121159B1 (ko) 이벤트-구동 블록체인 워크플로우 프로세싱
US10256984B2 (en) Measuring resource consumption in a multi-tenant platform-as-a-service (PAAS) system
US20130283267A1 (en) Virtual machine construction
CN103841134A (zh) 基于api发送、接收信息的方法、装置及系统
US11137732B2 (en) Flow engine for building automated flows within a cloud based developmental platform
US10621651B2 (en) Automatic recharge system and method, and server
KR102462866B1 (ko) 코드 저장소와 연동하여 원클릭 배포 서비스를 제공하는 방법 및 시스템
US9910821B2 (en) Data processing method, distributed processing system, and program
KR20180105051A (ko) 모바일 애플리케이션 활동 검출기
Du et al. Scientific workflows in IoT environments: a data placement strategy based on heterogeneous edge-cloud computing
JP2020024646A (ja) リソース予約管理装置、リソース予約管理方法およびリソース予約管理プログラム
CN113010561B (zh) 基于超级账本的数据获取方法、装置、计算机系统
CN112182089B (zh) 基于数据仓库模型的报表生成方法、装置和设备
CN111831567B (zh) 应用的测试环境配置方法、装置、系统和介质
CN114006815A (zh) 云平台节点的自动化部署方法、装置、节点及存储介质
CN113472638B (zh) 边缘网关控制方法及系统、装置、电子设备、存储介质
Moreno-Vozmediano et al. Latency and resource consumption analysis for serverless edge analytics
CN114968505A (zh) 任务处理系统、方法、装置、设备、存储介质及程序产品
CN115686813A (zh) 一种资源调度方法、装置、电子设备和存储介质
Sanches Distributed computing in a cloud of mobile phones
CN113110921B (zh) 区块链系统的运行方法、装置、设备和存储介质
US11893369B2 (en) Determining a distributed system topology from a single application deployment
CN113031960B (zh) 代码编译方法、装置、服务器及存储介质

Legal Events

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