KR102202121B1 - 피투피 클라우드 컴퓨팅 시스템 및 그 시스템에서 소스코드를 실행환경과 연결하고 실행하는 방법 - Google Patents

피투피 클라우드 컴퓨팅 시스템 및 그 시스템에서 소스코드를 실행환경과 연결하고 실행하는 방법 Download PDF

Info

Publication number
KR102202121B1
KR102202121B1 KR1020190105138A KR20190105138A KR102202121B1 KR 102202121 B1 KR102202121 B1 KR 102202121B1 KR 1020190105138 A KR1020190105138 A KR 1020190105138A KR 20190105138 A KR20190105138 A KR 20190105138A KR 102202121 B1 KR102202121 B1 KR 102202121B1
Authority
KR
South Korea
Prior art keywords
source code
node
execution
server
worker node
Prior art date
Application number
KR1020190105138A
Other languages
English (en)
Other versions
KR20200108228A (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 주식회사 커먼컴퓨터
Publication of KR20200108228A publication Critical patent/KR20200108228A/ko
Application granted granted Critical
Publication of KR102202121B1 publication Critical patent/KR102202121B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Abstract

본 개시는, 피투피 클라우드 컴퓨팅 시스템 상에서 소스코드를 실행환경과 연결하고 실행하는 방법을 제공한다. 이 방법은, 소스코드 저장소 시스템에 의해, 소스코드 저장소로부터 수신한 하나 이상의 소스코드를 실행환경에서 실행 가능하게 연동시키는 단계, 서버 노드에 의해, 클라이언트 장치로부터 상기 소스코드 저장소에 저장된 복수의 소스코드 중 적어도 하나의 소스코드의 실행 요청을 수신하는 단계, 상기 서버 노드에 의해, 상기 피투피 클라우드 컴퓨팅 시스템에 등록된 복수의 워커 노드들 중에서, 상기 요청에 해당하는 소스코드를 실행하기 위한 요구사항들을 만족시키는 워커 노드를 검색하는 단계, 상기 검색된 워커 노드에 의해, 상기 워커 노드 상에서 구축된 실행환경을 통하여 상기 소스코드를 실행하는 단계, 및 상기 워커 노드에 의해, 상기 소스코드의 실행 결과를 상기 클라이언트 장치에 출력하는 단계를 포함할 수 있다.

Description

피투피 클라우드 컴퓨팅 시스템 및 그 시스템에서 소스코드를 실행환경과 연결하고 실행하는 방법{P2P CLOUD COMPUTING SYSTEM AND METHOD FOR CONNECTING SOURCE CODE TO RUNNING ENVIRONMENT AND EXECUTING SOURCE CODE IN SAME}
본 개시는 피투피 클라우드 컴퓨팅 시스템과 그 시스템 상에서 소스코드를 실행 환경과 연결하고 및 해당 소스코드를 실행하는 방법에 관한 것으로, 보다 상세하게는, 피투피 클라우드 컴퓨팅 시스템에서 소스코드와 해당 소스코드 실행에 필요한 적절한 소프트웨어 및 하드웨어 실행환경을 검색하여 연결하고, 해당 소스코드를 연결된 실행 환경에서 실행시키는 방법에 관한 것이다.
일반적으로, 소스코드 호스팅 및 공유 기능을 제공하는 서비스(예를 들어, GitHub) 등을 통해 수많은 오픈소스 프로젝트들이 공유되고 있다. 또한, 이러한 서비스를 통해 개발자들은 이미 개발된 소스코드들을 처음부터 새로 개발할 필요 없이 새로운 가치를 만들어낼 수 있는 소스코드 개발에만 집중할 수 있게 되었다.
하지만, 한 해 수천 만 개 이상의 새로운 오픈소스 저장소가 생성되는 만큼, 각 오픈소스 프로젝트의 소스코드가 실행되는데 필요한 운영체제, 프로그래밍 언어, 라이브러리, 프레임웍 등과 같은 런타임 환경이 더욱 다양해지고 있다. 특히 머신러닝(machine learning) 관련 프로젝트의 경우, 그 소스코드 런타임환경과 잘 호환되도록 구성된 CPU, GPU, 메모리, 메인보드, 냉각장치, 전원장치 등의 다양한 조합에 따른 하드웨어 실행환경까지 고려해야 해야 한다. 이러한 이유들 때문에, 소스 코드의 개발 자체에 들이는 시간과 노력보다 이를 실행할 수 있게 하는 실행환경 구축에 더 많은 시간과 노력이 들어가는 문제가 발생한다.
또한, 사용자의 니즈에 따라 더 빠르게 소스코드의 실행 결과물을 획득하기 위해서 더 많은 연산자원을 투입해야 하는 경우가 있다. 그러나, 이러한 니즈는 영구적인 것이 아닌 일시적일 수 있기 때문에, 소스 코드 개발자 또는 소스 코드 이용자가 직접 실행환경을 마련하는 것은 이런 측면에서 자원 운용의 비효율적인 결과를 만들어낸다.
본 명세서에서 개시되는 실시예들은, 피투피 클라우드 컴퓨팅 시스템 상에서 소스코드를 실행하기 위해 실행환경과 연결함으로써, 최적의 실행환경을 갖춘 노드 탐색 방법과 그 노드에서 소스코드가 실행되는 방법을 제공하고자 한다.
본 개시의 일 실시예에 따른 피투피 클라우드 컴퓨팅 시스템 및 그 시스템에서 소스코드를 실행환경과 연결하고 실행하는 방법이 제공된다. 이 방법은, 소스코드 저장소 시스템에 의해, 소스코드 저장소로부터 수신한 하나 이상의 소스코드를 실행환경에서 실행 가능하게 연동시키는 단계; 서버 노드에 의해, 클라이언트 장치로부터 상기 소스코드 저장소에 저장된 복수의 소스코드 중 적어도 하나의 소스코드의 실행 요청을 수신하는 단계; 상기 서버 노드에 의해, 상기 피투피 클라우드 컴퓨팅 시스템에 등록된 복수의 워커 노드들 중에서, 상기 요청에 해당하는 소스코드를 실행하기 위한 요구사항들을 만족시키는 워커 노드를 검색하는 단계; 상기 검색된 워커 노드에 의해, 상기 워커 노드 상에서 구축된 실행환경을 통하여 상기 소스코드를 실행하는 단계; 및 상기 워커 노드에 의해, 상기 소스코드의 실행 결과를 상기 클라이언트 장치에 출력하는 단계를 포함할 수 있다.
본 개시의 다른 실시예에 따르면, 소스코드를 실행환경과 연결하고 실행할 수 있는 피투피 클라우드 컴퓨팅 시스템이 제공된다. 이 시스템은, 소스코드 저장소에 저장된 복수의 소스코드를 실행환경에서 실행 가능하게 연동시키는 소스코드 저장소 시스템; 및 클라이언트 장치로부터 상기 소스코드 저장소에 저장된 복수의 소스코드 중 적어도 하나의 소스코드의 실행 요청을 수신하는 경우, 상기 피투피 클라우드 컴퓨팅 시스템에 등록된 복수의 워커 노드들 중에서, 상기 요청에 해당하는 소스코드를 실행하기 위한 요구사항들을 만족시키는 워커 노드를 검색하여, 상기 검색된 워커 노드 상에서 구축된 실행환경을 통하여 상기 소스코드를 실행하도록 구성된 서버 노드를 포함할 수 있다.
본 개시의 다양한 실시예들에 따르면, 소스 코드의 개발자 또는 사용자가 직접 소스코드의 실행환경을 구성할 필요없이, 다양한 노드들로부터 제공되는 자원을 활용하여 소스코드를 실행하거나 그 실행 결과를 획득할 수 있다.
본 개시의 다양한 실시예들에 따르면, 소스 코드의 개발자 또는 사용자가 해당 소스코드를 실행하거나 수정하는데 필요한 실행환경을 더 효율적으로 탐색하고 사용할 수 있다.
본 개시의 다양한 실시예들에 따르면, 사용자에 의해 지불된 금액의 일부가 소스코드 작성자와 소스코드 실행환경 제공자 등에게 분배될 수 있다.
본 개시의 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급되지 않은 다른 효과들은 청구범위의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
본 개시의 실시예들은, 이하 설명하는 첨부 도면들을 참조하여 설명될 것이며, 여기서 유사한 참조 번호는 유사한 요소들을 나타내지만, 이에 한정되지는 않는다.
도 1은 본 개시의 일 실시예에 따른 소스코드가 실행되는 실행환경을 제공하는 노드 탐색과 그 노드에서 소스코드의 실행이 가능한 피투피 클라우드 컴퓨팅 시스템의 구성도이다.
도 2는 본 개시의 일 실시예에 따른 클라이언트 장치의 구성을 나타내는 블록도이다.
도 3은 본 개시의 일 실시예에 따른 서버 노드의 구성을 나타내는 블록도이다.
도 4는 본 개시의 일 실시예에 따른 트래커 서버의 구성을 나타내는 블록도이다.
도 5는 본 개시의 일 실시예에 따른 워커 노드의 구성을 나타내는 블록도이다.
도 6은 본 개시의 일 실시예에 따른 소스코드 저장 시스템의 구성을 나타내는 블록도이다.
도 7은 본 개시의 일 실시예에 따른 컨테이너 실행 환경의 구성을 나타내는 블록도이다.
도 8는 본 개시의 일 실시예에 따른 소스코드가 실행되는 실행환경을 제공하는 노드 탐색과 그 노드에서 소스코드의 실행이 가능한 피투피 클라우드 컴퓨팅 시스템의 일 예를 나타내는 블록도이다.
도 9는 본 개시의 일 실시예에 따른 피투피 클라우드 컴퓨팅 시스템 및 그 시스템에서 소스코드를 실행환경과 연결하고 실행하는 방법을 나타내는 순서도이다.
도 10은 본 개시의 다른 실시예에 따른 피투피 클라우드 컴퓨팅 시스템 및 그 시스템에서 소스코드를 실행환경과 연결하고 실행하는 방법을 나타내는 순서도이다.
도 11는 본 개시의 일 실시예에 따른 피투피 클라우드 컴퓨팅 시스템에서 소스코드를 실행하는 웹 브라우저의 화면을 나타내는 도면이다.
도 12은 본 개시의 일 실시예에 따른 피투피 클라우드 컴퓨팅 시스템에서 소스코드를 실행하는 웹브라우저가 소스코드 실행 결과 출력하는 화면을 나타내는 도면이다.
이하, 본 개시의 실시를 위한 구체적인 내용을 첨부된 도면을 참조하여 상세히 설명한다. 다만, 이하의 설명에서는 본 개시의 요지를 불필요하게 흐릴 우려가 있는 경우, 널리 알려진 기능이나 구성에 관한 구체적 설명은 생략하기로 한다.
첨부된 도면에서, 동일하거나 대응하는 구성요소에는 동일한 참조부호가 부여되어 있다. 또한, 이하의 실시예들의 설명에 있어서, 동일하거나 대응하는 구성요소를 중복하여 기술하는 것이 생략될 수 있다. 그러나 구성요소에 관한 기술이 생략되어도, 그러한 구성요소가 어떤 실시예에 포함되지 않는 것으로 의도되지는 않는다.
본 개시의 일 실시예에 따르면, 머신리소스(machine resource)(예를 들어, 컴퓨팅 장치, 메모리 또는 저장소 등)의 소유자가 자신의 머신리소스를 피투피(P2P) 클라우드 컴퓨팅 시스템(또는 피투피 클라우드)의 노드로 등록해서 임대함으로써, 사용자들로부터 해당 머신리소스의 사용 대가를 지불 받을 수 있다. 또한, 코드 저장소의 소유자가 자신의 코드 저장소를 피투피 클라우드에 등록해서 피투피 클라우드 상에서 바로 실행될 수 있도록 해서, 해당 소스코드의 활용성을 높일 수 있고, 사용자가 원하는 코드 저장소의 소스코드를 실행할 수 있는 피투피 클라우드 상의 노드를 찾아서 바로 실행해 볼 수 있으며, 그에 따른 비용을 지불할 수 있도록 하는 피투피 클라우드 플랫폼을 구축하는 방법 및 시스템이 제공된다.
본 개시의 다른 실시예에 따르면, 피투피 클라우드 컴퓨팅 시스템은 다음 기능 또는 구성요소들 중 어느 하나 또는 그 이상을 포함할 수 있다.
- 코드 저장소(code repository)의 소스코드의 실행을 위한 노드 검색 기능: 코드 저장소로 부터 해당 소스코드를 실행할 수 있는 피투피 클라우드 노드를 쉽게 찾을 수 있도록 하는 방법 및 장치
- 소스코드의 실행환경 구축 및 실행 기능: 사용자의 요청에 따라 검색된 피투피 클라우드 노드에서 소스코드 실행에 필요한 실행환경이 자동으로 구축되고 해당 소스코드(또는 노드에서 실행 가능하도록 변환된 코드)가 실행될 수 있도록 하는 방법 및 장치
- 코드 저장소의 등록(연동) 기능: 코드 저장소의 소유자가 본인의 코드 저장소를 피투피 클라우드에 쉽게 등록해서 해당 소스코드가 피투피 클라우드 상에서 실행될 수 있도록 연동하는 방법 및 장치
- 머신 리소스 등록 기능: 머신 리소스의 소유자가 본인이 소유한 머신들을 피투피 클라우드의 노드로 쉽게 등록할 수 있도록 하는 방법 및 장치
- 과금 기능: 머신 리소스 및 소스코드 사용과 관련된 보상이 자동적으로 이루어지도록 하는 방법 및 장치
본 개시에 있어서, "피투피 클라우드 컴퓨팅 시스템"은 네트워크 상에서 분산되어 설치된 복수의 컴퓨팅 장치들이 피투피(P2P) 통신 방식에 따라 상호 데이터를 전송 및 공유하는 클라우드 컴퓨팅 시스템을 지칭할 수 있다. 피투피 클라우드 컴퓨팅 시스템은, "피투피 클라우드", "피투피 클라우드 시스템" 등의 용어와 상호 대체적으로 사용될 수 있다. 또한, 피투피 클라우드 컴퓨팅 시스템을 구성하는 컴퓨팅 장치들 각각은 그 기능과 사용목적에 따라 "클라이언트 장치", "노드", "서버 노드", "워커 노드", "소스코드 저장 시스템", "컨테이너 실행 환경", "런타임 실행 환경" 등과 같이 다양하게 지칭될 수 있다. 일 실시예에서, 피투피 클라우드 컴퓨팅 시스템을 구성하는 장치들 또는 노드들의 적어도 일부는 블록체인을 구성할 수 있으나, 이에 한정되는 것은 아니며, 다양한 형태의 분산형 컴퓨팅 또는 데이터베이스 시스템, 중앙집중형 컴퓨팅 또는 데이터베이스 시스템, 또는 이들의 조합 중 어느 하나로 구성될 수도 있다. 상술한 피투피 클라우드 시스템의 다양한 실시예들의 기능 또는 구성요소들에 관하여, 이하 도면들을 참조하여 상세히 설명한다.
도 1은 본 개시의 일 실시예에 따른 소스코드가 실행되는 실행환경을 제공하는 노드의 탐색과 그 노드에서 소스코드의 실행이 가능한 피투피 클라우드 컴퓨팅 시스템의 구성도이다.
종래의 클라우드 컴퓨팅 시스템에서는, 소스코드와 해당 소스코드 실행에 필요한 적절한 소프트웨어 및 하드웨어 실행환경을 구성하기 위해, 소스코드의 사용자 본인이 해당 소스코드를 본인의 로컬 컴퓨터 또는 클라우드 컴퓨팅 시스템 상에 복제해야 한다. 이 경우, 소프트웨어 측면에서 해당 소스코드 및 소프트웨어 런타임 환경이 컨테이너(container)화(예를 들어, 도커) 되어 있다면 해당 실행환경을 한 번에 구축할 수 있다. 하지만, 하드웨어 측면에서, 사용자가 직접 소스코드 실행이 가능한 컴퓨터를 구축하거나, 퍼블릭 클라우드 컴퓨팅 시스템을 사용하는 경우에는 클라우드 컴퓨팅 서비스 업체에서 제공하는 실행환경 구축에 필요한 여러 구성 요소들 중 소스코드 실행에 적절한 것으로 예상되는 조합을 직접 구성해야 한다.
본 개시에 따른 도 1에 도시된 시스템(100)은, 상기 서술한 종래기술의 문제점을 극복하기 위해, 소스코드와 해당 소스코드 실행에 필요한 적절한 소프트웨어 및 하드웨어 실행환경을 자동적으로 연결하는 환경을 제공할 수 있다. 즉, 시스템(100)은, 사용자가 실행 요청한 소스코드가 실행될 수 있는 하드웨어에 대한 요건이 설정되면, 서버 시스템 및/또는 피투피 클라우드 시스템이 노드로 등록된 컴퓨터들 중 요건을 만족하는 최적의 컴퓨터를 탐색하여 해당 소스코드와 연결시킬 수 있다. 이와 같이 소스코드가 피투피 클라우드 시스템 상의 노드와 연결되는 절차를 "연동 절차"라고 지칭할 수 있으며, 이러한 환경을 제공하는 피투피 클라우드 시스템을 "연동 클라우드"라고 지칭할 수 있다. 또한, 컨테이너화 되어 존재하는 소스코드는 해당 컴퓨터에 다운로드 되어 바로 실행이 가능하므로, 사용자는 그 실행 결과를 용이하게 받아볼 수 있다.
피투피 클라우드 상에서 소스코드가 실행되는 실행환경을 갖춘 노드의 탐색과 그 노드에서 소스코드가 실행 가능한 시스템(100)은, 네트워크(110), 네트워크(110)를 통해 연결된 클라이언트 장치(120), 서버 노드(130), 워커 노드(140), 소스코드 저장 시스템(150), 컨테이너 실행 환경(160)을 포함할 수 있다.
클라이언트 장치(120)는, 네트워크(110)를 통해, 서버 노드(130)와 주기적으로 또는 비주기적으로(예를 들어, 실시간으로) 통신할 수 있다. 사용자는, 클라이언트 장치(120)를 통해 연동 클라우드에 접속한 뒤, 소스코드 저장 시스템(150)에 저장된 소스코드를 선택할 수 있다. 사용자가 클라이언트 장치(120)를 이용해서 소스코드를 선택하면, 서버 노드(130)는 사용자가 선택한 소스코드를 실행하기 위해서 필요한 조건을 만족시키는 워커 노드(140)를 검색할 수 있다. 소스코드를 실행할 수 있는 워커 노드(140)가 검색되면 해당 노드를 통해 소스코드의 실행을 진행하고, 사용자는 클라이언트 장치(120)를 통해 소스코드의 실행 결과를 확인할 수 있다.
도 1에 도시된 클라이언트 장치(120), 서버 노드(130), 워커 노드(140), 소스코드 저장 시스템(150), 컨테이너 실행 환경(160)은, 유선 및/또는 무선 통신이 가능한 임의의 컴퓨팅 장치, 저장 장치 또는 이들의 조합일 수 있다. 예를 들어, 클라이언트 장치(120)는, 이동통신 단말기, 무선통신 단말기, 스마트폰, 태블릿 PC, 데스크탑 PC, 랩톱 PC, 웨어러블 장치 등을 포함할 수 있다. 또한, 도 1에는 1개의 클라이언트 장치(120)가 네트워크(110)를 통해 서버 노드(130)와 통신하는 것으로 도시되어 있으나 이에 한정되지 않으며, 다른 수의 클라이언트 장치가 네트워크(110)를 통해 서버 노드(130)와 통신하도록 구성될 수도 있다. 네트워크(110)는, 설치 환경에 따라, 예를 들어, 이더넷(Ethernet), 유선 홈 네트워크(Power Line Communication), 전화선 통신 장치 및 RS-serial 통신 등의 유선 네트워크, 이동통신망, WLAN(Wireless LAN), Wi-Fi, Bluetooth 및 ZigBee 등과 같은 무선 네트워크 또는 그 조합으로 구성될 수 있다.
시스템(100)의 각 구성요소의 구성과 기능은, 도 2 내지 도 8를 참조하여 상세히 설명된다.
도 2는 본 개시의 일 실시예에 따른 클라이언트 장치(120)의 구성을 나타내는 블록도이다.
도 2에 도시된 바와 같이, 클라이언트 장치(120)는, 클라이언트(122)와 월렛(124)을 포함할 수 있다. 클라이언트(122)는, 사용자와 소스코드 관리자(예를 들어, 소스코드 저장소의 소유자 및 소스코드 소유자)에게 시스템(100)에서 실행할 수 있는 연동 클라우드의 연동 과정을 제공할 수 있다.
일 실시예에서, 클라이언트(122)는, 연동 클라우드를 통해 사용자 인증 기능, 웹기반 쉘 클라이언트(web-based shell client)의 제공, 웹 IDE(integrated development environment)와 파일 트리 탐색기(file tree explorer), 클라우드 작업 공간(예를 들어, pull/push/clone cloud workspace), 소스코드 실행의 처리(handle code execution), 계좌 잔액 확인 및 인출과 같은 기능을 제공할 수 있다.
월렛(124)은, 기본적으로 사용자 인증 및 과금을 위해서 키(key)들을 저장하고 이를 이용한 전자서명(key signing)기능을 제공할 수 있다. 예를 들어, 월렛(124)은, 크롬 확장 프로그램(Chrome Extension) 형태로 구현된 블록체인 기반의 월렛일 수 있다.
일 실시예에서, 월렛(124)은, 사용자가 클라이언트 장치(120)를 통해 선택한 소스코드의 실행을 위한 사용자 인터페이스(UI/UX)를 제공할 수 있으며, 사용자 및/또는 소스코드 관리자용 연동 클라우드 기능(예를 들어, 연동 과정)을 제공할 수 있다. 또한, 월렛(124)의 사용자 인증 기능을 기반으로, 클라이언트 장치(120)의 컴퓨터 자체를 노드로써 시스템(100)에 등록하여 다른 사용자가 원격으로 해당 컴퓨터에 접속 가능하도록 하고, 사용 기록에 따라 과금이 되도록 상태를 변경할 수 있다. 이때, 다른 사용자가 해당 컴퓨터로 접속하는 방법으로는, 해당 컴퓨터가 노드로써 시스템(100)에 등록될 때 사용된 월렛 주소 및/또는 이름을 사용하여 접속할 수 있다.
다른 실시예에서, 사용자는 클라이언트(122)에 의해 연동 과정을 거친 소스코드를 웹 사이트 또는 월렛(124)의 "실행(또는 연결)" 버튼 등과 같은 사용자 인터페이스를 통해 직접 실행(또는 접속)하거나, 배포(deploy)할 경우 생성되는 URL 및/또는 주소를 호출하여 소스코드를 실행할 수 있다. 이와 같이 소스코드의 실행이 처리되는 과정에서, 해당 소스코드의 실행에 필요한 조건 및 실행환경에 관한 정보(예를 들어, ain_config.json)에 따라 자동으로 적합한 노드(예를 들어, 워커 노드(140))에 접속되어 필요한 머신리소스 사용이 이루어질 수 있다.
도 3은 본 개시의 일 실시예에 따른 서버 노드(130)의 구성을 나타내는 블록도이다.
도 3에 도시된 바와 같이, 서버 노드(130)는, 크레딧 서버(131), 트래커 서버(132), 세션 서버(135), 관리자 서버(136), 상태 DB(137), 프록시 서버(138)를 포함할 수 있다. 크레딧 서버(131)는, 블록체인 기반의 스마트 컨트랙트와 상호 작용을 하면서 사용자들의 계좌 정보와 사용자들 사이에 거래되는 암호화폐(예를 들어, 토큰) 현황을 관리할 수 있다. 일 실시예에서, 크레딧 서버(131)는, 중앙 집중 제어 방식으로 동작할 수 있으나, 다른 실시예에서 분산 데이터베이스에 기초한 블록체인 기반 시스템으로 대체될 수 있다..
트래커 서버(132)는, 실행 프로토콜 (Execution Protocol) 상에서 클라이언트 장치(120)의 클라이언트(122) 및 월렛(124)과 노드(예를 들어, 워커 노드(140)의 실행 서버) 사이의 다리 역할(bridging)을 할 수 있다. 즉, 트래커 서버(132)는, 복수의 노드들을 관리하고, 과금(billing)과 관련된 정보를 모아 관리자 서버(136)에 전달하여 실제 과금이 이루어지도록 할 수 있다.
일 실시예에서, 트래커 서버(132)는, 중앙 집중 제어 방식으로 동작할 수 있으나, 다른 실시예에서 분산 데이터베이스에 기초한 블록체인 기반 시스템으로 대체될 수 있다.
세션 서버(135)는, 사용자가 생성한 실행 세션을 관리할 수 있다. 여기서, 사용자가 생성한 실행 세션이란, 클라이언트 장치(120)를 통해 사용자가 실행 요청한 소스 코드, 소스 코드 실행 환경 등을 포함하는 사용자 요청 작업과 관련된 모든 데이터를 포함할 수 있다.
관리자 서버(136)는, 과금과 노드 등록과 관련된 데이터베이스(예를 들어, 상태 DB(137))를 관리할 수 있다. 일 실시예에서, 관리자 서버(136)는, 트래커 서버(132)와 마찬가지로, 중앙 집중 제어 방식으로 동작할 수 있다. 다른 실시예에서, 관리자 서버(136)는, 분산 데이터베이스에 기초한 블록체인 기반 시스템으로 대체될 수 있다.
상태 DB(137)는, 사용자별 계좌의 잔액 현황 저장, 클라우드 작업 공간(예를 들어, 등록된 노드)의 데이터 관리, 사용자 성과금(bonus) 상태, 연동 과정의 상태를 확인할 수 있는 데이터 또는 정보를 제공할 수 있다. 상태 DB(137)에는, 플랫폼 참여자들(예를 들어, 사용자들, 코드 저장소 소유자들 또는 소스코드 작성자들, 노드 소유자들, 피투피 클라우드 시스템 운영자들)의 월렛 잔고와 머신 리소스의 사용에 따른 과금정보가 기록될 수 있다.
일 실시예에서, 상태 DB(137)는, 관리자 서버(136)에 의해 관리 및 운영될 수 있으나, 이에 한정되는 것은 아니며, 위에서 설명한 관리자 서버(136)의 예와 마찬가지로 분산 데이터베이스에 기초한 블록체인으로 대체될 수 있다.
프록시 서버(138)는, 클라이언트 장치(120)와 노드들 사이에 SSH(Secure Shell) 터널을 중계할 수 있다. 프록시 서버 중 일부는 프록시 서버에 요청된 내용들을 캐시를 이용하여 저장할 수 있다. 이와 같이 프록시 서버(138)에 의해 캐시에 저장된 정보를 요구하는 요청에 대해서는, 원격 서버에 접속하여 데이터를 가져올 필요가 없게 되어 전송 시간을 절약할 수 있고, 불필요한 외부 연결을 피할 수 있다.
도 4는 본 개시의 일 실시예에 따른 트래커 서버(132)의 구성을 나타내는 블록도이다.
도 4에 도시된 바와 같이, 트래커 서버(132)는, 수신 모듈(133)과 노드 검색 모듈(134)을 포함할 수 있다. 수신 모듈(133)은, 클라이언트 장치(120)로부터 소스코드 저장 시스템(150)에 저장된 소스코드 중 사용자가 선택한 소스코드의 실행 요청을 수신할 수 있다. 수신 모듈(133)은, 사용자가 선택한 소스코드의 실행 요청과 함께 사용자의 정보(예를 들어, 월렛 정보)를 추가로 수신할 수 있다.
일 실시예에서, 사용자는, 클라이언트 장치(120)를 이용하여 소스코드 저장소(152)에 저장된 복수의 소스코드 중 원하는 소스코드를 선택한 후 실행 요청 정보를 생성할 수 있다. 수신 모듈(133)은, 클라이언트 장치(120)를 통해 생성된 소스코드 실행 요청 정보를 수신할 수 있다.
노드 검색 모듈(134)은, 소스코드 실행 요청에 해당하는 소스코드를 실행하기 위해서 필요한 조건을 만족시키는 노드를 검색할 수 있다. 일 실시예에서, 노드 검색 모듈(134)은, 사용자가 선택한 소스코드를 실행할 수 있는 실행환경이 갖추어진 노드(예를 들어, 워커 노드(140))를 검색할 수 있다. 노드 검색 모듈(134)에 의해 검색된 노드 상에, 사용자가 선택한 소스코드의 실행 결과가 출력될 수 있다.
도 5는 본 개시의 일 실시예에 따른 워커 노드(140)의 구성을 나타내는 블록도이다.
도시된 바와 같이, 워커 노드(140)는, 실행 서버(142)와 하나 이상의 노드(144)를 포함할 수 있다. 실행 서버(142)는, 사용자가 선택한 소스코드의 실행 요청 작업을 수행하기 위해 소스코드를 복제. 하고, 노드 검색 모듈(134)에서 검색된 노드에 해당 소스코드가 실행되도록 노드를 관리할 수 있다. 또한, 실행 서버(142)는, 브라우저에서 클라우드 머신리소스에 대한 명령줄 엑세스를 제공하는쉘(Shell), 명령줄 인터페이스(CLI) 및 통합 개발 환경(IDE)등을 제공할 수 있다.
한편, 노드(144)는, 중앙 집중식 관리 시스템 대신에, 상호 연결된 노드들이 서로 간에 자원을 공유하는 P2P(peer-to-peer) 네트워크 시스템의 구조로 구성될 수 있다. 노드 검색 모듈(134)은, 복수의 노드(144)중에서 사용자가 선택한 소스코드가 실행될 수 있는 최적의 하드웨어 및 소프트웨어 실행환경을 갖춘 노드를 검색할 수 있다. 검색되어 연결된 노드는, 컨테이너화되어 존재하는 소스코드가 해당 노드에 다운로드되어 바로 실행될 수 있는 환경을 제공하며, 사용자는 그 노드로부터 소스코드의 실행 결과를 제공받을 수 있다.
도 6은 본 개시의 일 실시예에 따른 소스코드 저장 시스템(150)의 구성을 나타내는 블록도이다.
도시된 바와 같이, 소스코드 저장 시스템(150)은, 소스코드 저장소(152)와 소스코드 앱(154)을 포함할 수 있다. 소스코드 저장소(152)는, 사용자가 선택할 수 있는 다양한 오픈 소스코드가 저장된 저장소(예를 들어, GitHub)를 지칭할 수 있다. 사용자는 클라이언트 장치(120)를 이용하여 소스코드 저장 시스템(150)에 접속하여 실행하기 원하는 소스코드를 선택할 수 있다.
또한, 소스코드 앱(154)은, 예를 들어, 웹 서버로 구현될 수 있다. 소스코드 앱(154)은, 클라이언트(122)에게 소스코드 저장소(152)에 대한 접근 권한을 부여하고, 소스코드 저장소(152)의 상태 변화에 따른 적절한 대응을 실행할 수 있다.
또한, 소스코드 앱(154)은 소스코드 저장소(152)로부터 수신한 소스코드를 연동 클라우드에서 실행 가능하게 연동시킬 수 있다. 소스코드의 연동 절차는, 이하 도 8을 참조하여 좀 더 상세히 설명한다.
도 7은 본 개시의 일 실시예에 따른 컨테이너 실행 환경(160)의 구성을 나타내는 블록도이다.
도시된 바와 같이, 컨테이너 실행 환경(160)은, 컨테이너 이미지 빌더(container image builder)(162)와 컨테이너 저장소 (164)를 포함할 수 있다. 예를 들어, 소스코드 저장소(152)에 컨테이너 파일(예를 들어, 도커 파일(Docker file))이 추가되는 경우, 소스코드 앱(154)을 통해 컨테이너 이미지 빌더(예를 들어, 도커 이미지 빌더(Docker image builder))(162)가 컨테이너 이미지를 생성하여 컨테이너 저장소(예를 들어, 도커 허브(Docker Hub))(164)에 저장할 수 있다.
도 8은 본 개시의 일 실시예에 따른 소스코드가 실행되는 실행환경을 제공하는 노드 탐색과 그 노드에서 소스코드의 실행이 가능한 피투피 클라우드 컴퓨팅 시스템의 일 예를 나타내는 블록도이다. 위에서 도 1 내지 도 7을 참조하여 설명된 시스템과 구성요소들은, 예를 들어, 도 8과 같은 시스템을 구성할 수 있다. 이하에서는 도 8을 참조하여, 시스템(100)의 전반적인 기능 및 절차에 대해서 좀 더 상세히 설명한다.
연동 절차
"연동"은, 소스코드 앱(154)이 소스코드 저장소(152)로부터 수신한 소스코드를 연동 클라우드에서 실행 가능하게 연동시키는 과정을 포함할 수 있다. 따라서, "연동"은 소스코드 저장소(152)의 소스코드를 실행하기 용이한 형태로 변환하는 과정(즉, integration, listing, dockerizing 등을 포함하는 과정)과, 추후 변경(update)된 소스코드를 도커 이미지(docker image)로 반영하는 과정(즉, synchronizing)을 의미할 수 있다. 또한, 사용자가 클라이언트 장치(120)의 웹 브라우저를 통해 소스코드 저장소(152)에 접근하면, 월렛(124)은, 해당 저장소가 연동된 저장소인지를 판단할 수 있다. 이때, 월렛(124)이 해당 저장소를 연동되지 않은 저장소라고 판단하면, 월렛(124)은 해당 저장소에 대한 연동 요청 수를 표시할 수 있고, 사용자가 원할 경우 연동 요청 수에 1을 더할 수 있다. 여기서, "연동 요청 수"는, 저장소의 소유자에게 전송되어 연동을 독려할 수 있는데, 이러한 연동 요청 수의 통보는 실시간으로 진행되는 것이 아닌, 일정 주기로 진행되어 사용자에 대한 방해를 최소화할 수 있다(예를 들어, 2주 간격의 이메일 통보나 발행의 방식). 연동 요청 수의 통보를 통해 저장소의 소유자는, 소스코드 앱(154)의 접근을 허용할 수 있다. 반면, 월렛(124)이 해당 저장소가 이미 연동되었다고 판단하면, 월렛(124)은 연동 클라우드에 대한 링크를 제공하거나 저장소의 사용량 통계와 같은 정보를 제공할 수 있다.
소스코드 앱(154)이 저장소의 구성 파일(예를 들어, "ain_config.json")을 확인할 경우, 구성 파일이 유효한 상태이면 소스코드 앱(154)이 그 상태를 자동으로 감지하여 연동 클라우드에 해당 저장소를 리스팅할 수 있다. 반대로, 구성 파일이 유효하지 않은 상태이면, 소스코드 앱(154)을 이용하여 저장소의 소유자에게 해당 구성 파일이 유효하지 않음을 알릴 수 있다.
소스코드 저장소(152)에 존재하는 구성 파일이 업데이트된 경우(예를 들어, GPU 또는 메모리 요구사항의 변경), 소스코드 앱(154)에서도 자동적으로 이 상태를 감지하여 적절히 처리할 수 있다.
소스코드 저장소(152)가 리스팅되었을 경우(즉 연동 되었을 경우), 이것은 저장소의 소유자 및 사용자(예를 들어, 연동 요청 수를 증가시킨 사용자)에게 통지될 수 있다.
소스코드가 변경되지 않은 상태로 실행이 되지 않을 경우, 소스코드의 소유자는 해당 사실을 확인할 수 있다.
소스코드 저장소(152)의 소유자가 자신의 저장소를 연동 하고자 한다면, 소스코드 앱(154)은 구성 파일 또는 "AIN.md" 파일에 대한 템플릿을 제공할 수 있다. 여기서 "AIN.md"는 연동 클라우드를 통해 해당 저장소를 접속할 경우 기본적으로 표시되는 마크다운(markdown) 텍스트 파일을 지칭할 수 있다. 일반적으로, "AIN.md"는 연동 클라우드를 통해 해당 저장소 내 소스코드를 어떻게 사용할 수 있는지 등에 대한 설명을 포함할 수 있다.
월렛의 요구사항과 기능
월렛(124)은, 사용자 계정에 대한 요구사항을 만족시킬 수 있다. 구체적으로, 월렛(124)은, 사용자 계정에 있어서는, 연동 기능의 현재 상태(예를 들어, 연동에 대한 요청, 통지의 전송 등)를 트래킹 할 수 있다. 한편, 월렛의 주소(예를 들어, public key)는 연동 클라우드에 저장되어, 소스코드와 실행환경의 매핑에 사용될 수 있는 반면, 개인키(secret 또는 private key)는 월렛(124)에는 저장되지만 연동 클라우드에는 저장되지 않는다. 사용자는, 본인의 계정에 로그인한 후에 개인 키 등과 같은 로그인 정보를 월렛(124)으로부터 획득할 수 있다.
월렛(124)의 인증 기능으로서, 노드와의 인증된 연결, 지갑 인증을 통해 노드에 SSH 터널링 등이 포함될 수 있다. 또한, 월렛(124)의 다른 기능으로는, 지갑의 주소를 생성, 삭제, 및 입수, 설치 또는 월렛 주소에 대한 암호, ERC20 토큰의 추가 및 삭제, 거래 서명, 거래 내역 등이 포함될 수 있다.
월렛(124)의 연동 클라우드 기능은, 암호화폐의 계좌 관리(잔고 확인, 입금 및 출금), 클라우드 작업 공간 관리(작업 공간의 생성 등), 소스코드의 실행 관리(사용 가능한 실행 서버 리스트, 실행 통계 등)를 포함할 수 있다.
또한, 월렛(124)의 연동 기능은, 연동 클라우드 상에 리스팅 여부의 확인, 연동 요청 수의 확인, 연동 클라우드로의 링크 등을 포함할 수 있다.
한편, 실행 서버(142)는, 관리자 서버(136)에 실행서버가 등록되는 것을 지원하며, 제3자의 실행 서버가 관리자 서버에 등록되는 것을 지원할 수 있다.
연동을 위한 소스코드 저장소의 구성 절차
연동을 위한 소스코드 저장소(152)의 구성 절차는 다음과 같이 실행될 수 있다. 먼저 소스코드 저장소가 지정되면(예를 들어, "github.com/foo/bar"), 컨테이너 파일(예를 들어, 도커 파일)이 추가되어 컨테이너 이미지(예를 들어, 도커 이미지)가 생성될 수 있다. 생성된 컨테이너 이미지는, 컨테이너 저장소(164)에 게시될 수 있다(예를 들어"foo/bar:1.0.0").
다음으로, 소스코드 연동 구성이 진행된다. 이 단계에서는, 새롭게 생성된 컨테이너 이미지(예를 들어, 도커 이미지)로 연동 구성 파일(예를 들어, "ain_config.json")을 업데이트할 수 있다. 또한, 연동 구성 파일에는, 소스코드 저장소 코드를 실행하기 위한 요구사항들(예를 들어, GPU, 메모리)이 추가된다. 소스코드 소유자가 소스코드 실행에 따른 비용 지불을 원할 경우, 연동 구성 파일에는 그 지불 조건을 명시될 수 있다. 예를 들어, 연동 구성 파일에는, 소스코드 실행에 시간당 특정 금액의 암호화폐 또는 사용자의 총 지불비용의 3%에 해당하는 비용이 지불되어야 함을 명시할 수 있다. 이러한 연동을 위한 소스코드 저장소의 구성에 있어서, 저장소 소유자가 아닌 다른 사용자에 의한 풀 요청이 이루어진 경우, 풀 요청((pull request)이 승인 완료될 때까지, 이 정보는 클라우드(예를 들어, 클라우드 서비스)에 일시적으로 저장될 수 있다.
실행 서버 설정 절차
실행 서버(142)의 설정 절차는 다음과 같이 실행될 수 있다. 먼저, 실행 서버 구성 파일(예를 들어, "server_config.json")이 설정될 수 있다. 기본적으로, 이 구성 파일은, 런타임 환경에 대한 정보(예를 들어, GPU가 사용 가능한지 여부, 메모리가 사용 가능한지 여부)를 포함할 수 있다. 지정 모드(dedicated mode)에서는, 실행 서버 구성 파일이 소스코드 저장소의 주소(예를 들어, "github.com/foo/bar")를 포함하고 있을 수 있다. 또한, 실행 서버 구성 파일은 실행 서버가 통신해야 할 관리자 서버를 포함할 수 있다.
다음으로, 실행 서버(142) 등록이 실행될 수 있다. 실행 서버(142)가 동작을 시작하면, 관리자 서버(136)와의 통신을 수행하여 요구되는 인증을 실행할 수 있다. 또한, 실행 서버의 구성 정보(예를 들어, 런타임 환경, 지정된 소스코드 저장소의 주소 등)가 관리자 서버(136)와 공유된다.
작업 실행 절차
작업 실행 절차는, 소스코드 저장소(152)로부터 실행 서버(142)로의 매핑으로 개시될 수 있다. 이 단계에서, 클라이언트(122)가 관리자 서버(136)로 적합한 실행 서버에 대해 문의할 수 있는데, 여기서 클라이언트(122)는 구성 파일(예를 들어, "ain_config.json")에서 요구사항들(예를 들어, GPU 요구사항, 메모리 요구사항)을 발견하여 전송할 수 있다. 이에 응답하여, 관리자 서버(136)는 적합한 실행 서버 리스트를 제공할 수 있다. 또한, 사용자는, 관리자 서버(136)로부터 제공된 실행 서버 리스트를 참조하여, 작업(또는 소스코드의 실행)을 실행하기 위한 실행 서버를 선택할 수 있다.
다음으로, 작업 실행을 위해서, 클라이언트(122)가 실행할 소스코드와 사용할 컨테이너 이미지 주소를 관리자 서버(136)에 전송하고, 관리자 서버(136)는 지정된 실행 서버를 호출하여 작업을 실행할 수 있다. 실행 서버(142)는, 컨테이너 이미지가 호스트 시스템에서 사용할 수 없는 경우, 지정된 컨테이너 이미지를 불러올 수 있다. 또한, 실행 서버(142)는, 컨테이너 환경에서 작업을 실행할 수 있다.
구성 파일
소스코드 연동 구성 파일은 요구사항, 실행, 빌링의 3 부분으로 구성된다.
연동 구성파일의 요구사항 부분은, GPU의 필요 여부, 코드 실행에 필요한 메모리 양을 포함할 수 있다.
또한, 연동 구성파일의 실행 부분은, 컨테이너 이미지의 이름(예를 들어, "foo/bar:1.0.0"), 실행 가능 코드 목록, 기본 실행 매개 변수 등을 포함할 수 있다.
또한, 연동 구성파일의 빌링 부분은, 실행 서버를 사용자에게 제공하여 얻은 수익 중에서 소스코드 소유자 또는 작성자가 청구하는 금액, 지갑의 주소 등을 포함할 수 있다.
한편, 실행 서버 구성 파일은, 서버ID, 관리자 서버, 런타임 환경, 빌링, 지정 모드(선택사항)의 5 부분을 포함할 수 있다.
실행 서버 구성파일의 서버 ID 부분은, 예를 들어, 서버 이름, 서버 식별에 사용할 고유 서버 ID(시스템 운영자가 발행함), 청구에 사용되는 서버의 공급자 ID를 포함할 수 있다.
실행 서버 구성파일의 관리자 서버 부분은, 통신해야 할 관리자 서버의 주소를 포함할 수 있다.
실행 서버 구성파일의 런타임 환경 부분은, 예를 들어, GPU 모델명, GPU 메모리, CPU 메모리 등을 포함할 수 있다.
또한, 실행 서버 구성파일의 빌링 부분은, 예를 들어, 청구 요율, 지갑 주소를 포함할 수 있다.
실행 서버 구성파일의 지정 모드(선택사항) 부분은, 이 서버가 지정된 소스코드 저장소 이름(즉, 주소)를 포함할 수 있다.
유지 보수 기능
실행 서버(142)는, 상태 점검을 위한 URL 경로(예를 들어, "/healthy")를 제공할 수 있다. 관리자 서버(136)는, 등록된 실행 서버들의 상태 점검을 주기적으로 실행할 수 있다. 또한, 관리자 서버(136)는, 클라이언트(122)의 요청에 응답하여 비정상적인 상태의 실행 서버들을 통보할 수 있다.
시스템(100)을 유지 보수하기 위해서, 소스코드 저장소(152)의 소유자(또는 시스템 운영자)는, 필요에 따라 컨테이너 파일을 업데이트하고 최신의 컨테이너 이미지를 게시할 수 있다. 또한, 연동 구성 파일(예를 들어, "ain_config.json")이 업데이트될 수 있다.
일 실시예에서, 시스템 운영자는, 실행 서버 코드를 개발 및/또는 게시하고, 관리자 서버와 클라이언트를 관리할 수 있다. 실행 서버 공급자(또는 시스템 운영자)는, 실행 서버가 항상 동작되도록 유지하고, 실행 서버와 실행 서버 구성 파일(예를 들어, "server_config.json")을 최신의 상태로 유지시킬 수 있다.
도 9는 본 개시의 일 실시예에 따른 피투피 클라우드 컴퓨팅 시스템 및 그 시스템에서 소스코드를 실행환경과 연결하고 실행하는 방법을 나타내는 순서도이다. 피투피 클라우드 컴퓨팅 시스템 및 그 시스템에서 소스코드를 실행환경과 연결하고 실행하는 방법은, 소스코드 저장소 시스템에 의해, 소스코드 저장소로부터 수신한 하나 이상의 소스코드를 실행환경에서 실행 가능하게 연동하는 단계(S910)로 개시될 수 있다. "연동"은, 소스코드 앱(154)이 소스코드 저장소(152)로부터 수신한 소스코드를 연동 클라우드에서 실행 가능하게 연동시키는 과정을 포함할 수 있다. 사용자가 클라이언트 장치(120)의 웹 브라우저를 통해 소스코드 저장소(152)에 접근하면, 월렛(124)은, 해당 저장소가 연동된 저장소인지를 판단할 수 있다. 이때, 월렛(124)이 해당 저장소를 연동되지 않은 저장소라고 판단하면, 월렛(124)은 해당 저장소에 대한 연동 요청 수를 표시할 수 있고, 사용자가 원할 경우 연동 요청 수에 1을 더할 수 있다. 여기서, "연동 요청 수"는, 저장소의 소유자에게 전송되어 연동를 독려할 수 있는데, 이러한 연동 요청 수의 통보는 비개입적인 방식(not-disruption way)으로 진행될 수 있다(예를 들어, 2주 간격의 이메일 통보나 발행의 방식). 연동 요청 수의 통보를 통해 저장소의 소유자는, 소스코드 앱(154)의 접근을 허용할 수 있다. 반면, 월렛(124)이 해당 저장소가 이미 연동되었다고 판단하면, 월렛(124)은 연동 클라우드에 대한 링크를 제공하거나 저장소의 사용량 통계와 같은 정보를 제공할 수 있다.
연동 과정이 완료되면, 서버 노드에 의해, 클라이언트 장치로부터 소스코드 저장소에 저장된 복수의 소스코드 중 적어도 하나의 소스코드의 실행 요청을 수신할 수 있다(S920). 소스코드의 실행 요청을 수신하고 나면, 서버 노드에 의해, 피투피 클라우드 컴퓨팅 시스템에 등록된 복수의 워커 노드들 중에서, 요청에 해당하는 소스코드를 실행하기 위한 요구사항들을 만족시키는 워커 노드를 검색할 수 있다(S930). 노드 검색 모듈(134)은, 사용자가 선택한 소스코드를 실행할 수 있는 실행환경이 갖추어진 워커 노드(예를 들어, 워커 노드(140))를 검색할 수 있다. 노드 검색 모듈(134)을 통해 검색된 워커 노드에 의해, 워커 노드 상에서 구축된 실행환경을 통하여 소스코드를 실행할 수 있다(S940). 워커 노드는, 컨테이너화 되어 존재하는 소스코드가 해당 워커 노드에 다운로드 되어 바로 실행될 수 있는 환경을 제공하며, 사용자는 해당 워커노드로부터 소스코드의 실행 결과를 제공받아 소스코드의 실행 결과를 클라이언트 장치에 출력할 수 있다(S950).
도 10은 본 개시의 다른 실시예에 따른 피투피 클라우드 컴퓨팅 시스템 및 그 시스템에서 소스코드를 실행환경과 연결하고 실행하는 방법을 나타내는 순서도이다. 피투피 클라우드 컴퓨팅 시스템 및 그 시스템에서 소스코드를 실행환경과 연결하고 실행하는 방법은, 소스코드 저장소에 저장된 복수의 소스코드를 실행환경에서 실행 가능하게 연동하는 단계(S1010)로 개시될 수 있다. 연동가 완료되면, 클라이언트 장치로부터 소스코드 저장소에 저장된 복수의 소스코드 중 적어도 하나의 소스코드의 실행 요청을 수신하는 경우, 피투피 클라우드 컴퓨팅 시스템에 등록된 복수의 워커 노드들 중에서, 요청에 해당하는 소스코드를 실행하기 위한 요구사항들을 만족시키는 워커 노드를 검색하여, 검색된 워커 노드 상에서 구축된 실행환경을 통하여 소스코드를 실행할 수 있다(S1020).
도 11는 본 개시의 일 실시예에 따른 피투피 클라우드 컴퓨팅 시스템에서 소스코드를 실행하는 웹 브라우저의 화면을 나타내는 도면이다.
도시된 바와 같이, 사용자가 웹 브라우저(클라이언트)를 통해 연동클라우드에 접속한 뒤, 소스코드 저장소에 리스팅된 소스코드들 중에서 사용하길 원하는 소스코드를 검색하면, 검색어와 관련된 소스코드가 소스코드 탐색 영역(1110)에 출력될 수 있다. 또한, 사용자가 소스코드 탐색 영역(1110)에 출력된 소스코드들 중 특정 소스코드를 선택하면, 사용자 계정 창(1112)을 통해 선택된 소스코드 및 암호화폐 잔고 등의 상태와 관련된 정보를 확인할 수 있다. 이때 사용자 계정 창(1120)은, 월렛(124)의 역할을 수행하거나 월렛(124)과 연결될 수 있다. 선택된 소스코드와 관련된 정보에는, 해당 소스코드의 신뢰도, 인기도, 리뷰와 같은 평가 정보를 포함하거나, 소스코드 실행에 활용 가능한 노드 수, 노드 사용 요금과 같은 소스코드 실행환경에 대한 정보를 포함할 수 있다. 그 후, 연결 버튼(예를 들어, "Instant Run")을 클릭하면 선택된 소스코드 실행이 가능한 노드를 검색하고, 해당 노드에서 소스코드를 실행한 결과를 출력할 수 있다.
또한, 소스코드를 배포하는 버튼(예를 들어, "Deploy")를 클릭하여 생성되는 URL이나 주소를 호출하여, 자동으로 매칭된 적합한 실행서버(142)에서 필요한 리소스가 사용된 실행 결과를 받아볼 수 있다.
도 12은 본 개시의 일 실시예에 따른 피투피 클라우드 컴퓨팅 시스템에서 소스코드를 실행하는 웹브라우저가 소스코드 실행 결과 출력하는 화면을 나타내는 도면이다.
도시된 바와 같이, 소스코드 편집 영역(1210)에는 사용자가 직접 실행 버튼을 클릭하여 실행되거나, 함수나 API 호출 등의 방법을 통해 실행될 소스코드가 출력될 수 있다. 이때, 사용자는, 소스코드 편집 영역(1210)에 표시된 소스코드를 편집할 수 있다. 한편, 로그창(1240)에는, 실행되는 소스코드의 상태 정보, 소스코드가 실행되는 노드, 관리자 서버, 실행 서버와 클라이언트의 상태 정보(예를 들어, 실행 오류 여부, 통신 원활 여부)에 대한 로그 정보를 출력할 수 있다. 또한, 상태창(1220)에는 소스코드 실행 노드의 상태(예를 들어, 접속 가능 여부)와 접속 시간, 사용자 계정, 연결 상태 등을 확인할 수 있다. 또한, 결과 출력 창(1230)에는 소스코드 실행에 대한 결과가 출력될 수 있다.
상술한 피투피 클라우드 컴퓨팅 시스템에서 소스코드를 실행환경과 연결하고 실행하는 방법은, 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수도 있다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의해 판독될 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 상기 실시예들을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 개시의 방법, 동작 또는 기법들은 다양한 수단에 의해 구현될 수도 있다. 예를 들어, 이러한 기법들은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수도 있다. 본원의 개시와 연계하여 설명된 다양한 예시적인 논리적 블록들, 모듈들, 회로들, 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양자의 조합들로 구현될 수도 있음을 당업자들은 이해할 것이다. 하드웨어 및 소프트웨어의 이러한 상호 대체를 명확하게 설명하기 위해, 다양한 예시적인 구성요소들, 블록들, 모듈들, 회로들, 및 단계들이 그들의 기능적 관점에서 일반적으로 위에서 설명되었다. 그러한 기능이 하드웨어로서 구현되는지 또는 소프트웨어로서 구현되는 지의 여부는, 특정 애플리케이션 및 전체 시스템에 부과되는 설계 요구사항들에 따라 달라진다. 당업자들은 각각의 특정 애플리케이션을 위해 다양한 방식들로 설명된 기능을 구현할 수도 있으나, 그러한 구현들은 본 개시의 범위로부터 벗어나게 하는 것으로 해석되어서는 안된다.
하드웨어 구현에서, 기법들을 수행하는 데 이용되는 프로세싱 유닛들은, 하나 이상의 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), 자기 또는 광학 데이터 스토리지 디바이스 등과 같은 컴퓨터 판독가능 매체 상에 저장된 명령들로서 구현될 수도 있다. 명령들은 하나 이상의 프로세서들에 의해 실행 가능할 수도 있고, 프로세서(들)로 하여금 본 개시에 설명된 기능의 특정 양태들을 수행하게 할 수도 있다.
소프트웨어로 구현되는 경우, 상기 기법들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독 가능한 매체 상에 저장되거나 또는 컴퓨터 판독 가능한 매체를 통해 전송될 수도 있다. 컴퓨터 판독가능 매체들은 한 장소에서 다른 장소로 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하여 컴퓨터 저장 매체들 및 통신 매체들 양자를 포함한다. 저장 매체들은 컴퓨터에 의해 액세스될 수 있는 임의의 이용 가능한 매체들일 수도 있다. 비제한적인 예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스들, 또는 소망의 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 이송 또는 저장하기 위해 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체로 적절히 칭해진다.
예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 사용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 전송되면, 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 매체의 정의 내에 포함된다. 본원에서 사용된 디스크 (disk) 와 디스크 (disc)는, CD, 레이저 디스크, 광 디스크, DVD (digital versatile disc), 플로피디스크, 및 블루레이 디스크를 포함하며, 여기서 디스크들 (disks) 은 보통 자기적으로 데이터를 재생하고, 반면 디스크들 (discs) 은 레이저를 이용하여 광학적으로 데이터를 재생한다. 위의 조합들도 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
소프트웨어 모듈은, RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 이동식 디스크, CD-ROM, 또는 공지된 임의의 다른 형태의 저장 매체 내에 상주할 수도 있다. 예시적인 저장 매체는, 프로세가 저장 매체로부터 정보를 판독하거나 저장 매체에 정보를 기록할 수 있도록, 프로세서에 연결될 수 있다. 대안으로, 저장 매체는 프로세서에 통합될 수도 있다. 프로세서와 저장 매체는 ASIC 내에 존재할 수도 있다. ASIC은 유저 단말 내에 존재할 수도 있다. 대안으로, 프로세서와 저장 매체는 유저 단말에서 개별 구성요소들로서 존재할 수도 있다.
이상 설명된 실시예들이 하나 이상의 독립형 컴퓨터 시스템에서 현재 개시된 주제의 양태들을 활용하는 것으로 기술되었으나, 본 개시는 이에 한정되지 않고, 네트워크나 분산 컴퓨팅 환경과 같은 임의의 컴퓨팅 환경과 연계하여 구현될 수도 있다. 또 나아가, 본 개시에서 주제의 양상들은 복수의 프로세싱 칩들이나 장치들에서 구현될 수도 있고, 스토리지는 복수의 장치들에 걸쳐 유사하게 영향을 받게 될 수도 있다. 이러한 장치들은 PC들, 네트워크 서버들, 및 휴대용 장치들을 포함할 수도 있다.
본 명세서에서는 본 개시가 일부 실시예들과 관련하여 설명되었지만, 본 개시의 발명이 속하는 기술분야의 통상의 기술자가 이해할 수 있는 본 개시의 범위를 벗어나지 않는 범위에서 다양한 변형 및 변경이 이루어질 수 있다. 또한, 그러한 변형 및 변경은 본 명세서에 첨부된 특허청구의 범위 내에 속하는 것으로 생각되어야 한다.
110: 네트워크 120: 클라이언트 장치
122: 클라이언트 124: 월렛
130: 서버 노드 131: 크레딧 서버
132: 트래커 서버 133: 수신 모듈
134: 노드 검색 모듈 135: 세션 서버
136: 관리자 서버 137: 상태 DB
138: 프록시 서버 140: 워커 노드
142: 실행 서버 144: 복수의 노드
150: 소스코드 저장 시스템 152: 소스코드 저장소
154: 소스코드 앱 160: 컨테이너 실행 환경
162: 컨테이너 이미지 빌더 164: 컨테이너 저장소

Claims (10)

  1. 피투피 클라우드 컴퓨팅 시스템 상에서 소스코드를 실행환경과 연결하고 실행하는 방법에 있어서,
    소스코드 저장소 시스템에 의해, 소스코드 저장소로부터 수신한 하나 이상의 소스코드를 실행환경에서 실행 가능하게 연동시키는 단계;
    서버 노드에 의해, 클라이언트 장치로부터 상기 소스코드 저장소에 저장된 복수의 소스코드 중 적어도 하나의 소스코드의 실행 요청을 수신하는 단계;
    상기 서버 노드에 의해, 상기 피투피 클라우드 컴퓨팅 시스템에 등록된 복수의 워커 노드들 중에서, 상기 요청에 해당하는 소스코드를 실행하기 위한 요구사항들을 만족시키는 워커 노드를 검색하는 단계;
    상기 검색된 워커 노드에 의해, 상기 워커 노드 상에서 구축된 실행환경을 통하여 상기 소스코드를 실행하는 단계; 및
    상기 워커 노드에 의해, 상기 소스코드의 실행 결과를 상기 클라이언트 장치에 출력하는 단계를 포함하고
    상기 검색된 워커 노드는, 컨테이너화되어 존재하는 소스코드가 상기 검색된 워커 노드에 다운로드되어 실행될 수 있는 환경을 제공하는, 방법.
  2. 제1항에 있어서,
    상기 서버 노드에 의해, 상기 소스코드의 실행에 따른 상기 검색된 워커 노드의 머신 리소스의 사용 비용을 상기 클라이언트 장치의 사용자에게 과금하는 단계; 및
    상기 서버 노드에 의해, 상기 클라이언트 장치의 사용자가 지불한 상기 사용 비용을 상기 검색된 워커 노드의 소유자 및 상기 소스코드의 소유자 또는 작성자에게 전송하는 단계를 더 포함하는, 방법.
  3. 제1항에 있어서,
    상기 서버 노드에 의해, 머신 리소스의 소유자가 상기 머신 리소스를 상기 피투피 클라우드 컴퓨팅 시스템에 워커 노드로 등록하기 위한 요청을 수신하면, 상기 머신 리소스를 워커 노드로 등록하는 단계를 더 포함하는, 방법.
  4. 제1항에 있어서,
    상기 소스코드 저장소 시스템에 의해, 상기 소스코드 저장소로부터 수신한 하나 이상의 소스코드를 실행환경에서 실행 가능하게 연동시키는 단계는,
    상기 클라이언트 장치의 월렛에 의해, 상기 클라이언트 장치가 상기 소스코드 저장소에 접근하면, 상기 소스코드 저장소가 연동되었는지 여부를 판단하는 단계;
    상기 월렛에 의해, 상기 소스코드 저장소가 연동되지 않은 경우, 상기 소스코드 저장소에 대한 연동 요청 수를 증가하는 단계; 및
    상기 연동 요청 수의 증가에 응답하여, 상기 소스코드 저장소에 대응하는 구성 파일을 업데이트하고, 상기 소스코드 저장소에 대응하는 컨테이너 이미지를 생성하여 컨테이너 실행환경에 게시하는 단계를 포함하는, 방법.
  5. 컴퓨팅 장치의 하나 이상의 프로세서에 의해 실행되도록 구성되는 하나 이상의 프로그램을 저장하는 컴퓨터 판독가능 저장매체로서,
    상기 하나 이상의 프로그램은, 제1항 내지 제4항 중 어느 한 항의 방법을 수행하기 위한 명령어들을 포함하는, 컴퓨터 판독가능 저장매체.
  6. 소스코드를 실행환경과 연결하고 실행할 수 있는 피투피 클라우드 컴퓨팅 시스템에 있어서,
    소스코드 저장소에 저장된 복수의 소스코드를 실행환경에서 실행 가능하게 연동시키는 소스코드 저장소 시스템; 및
    클라이언트 장치로부터 상기 소스코드 저장소에 저장된 복수의 소스코드 중 적어도 하나의 소스코드의 실행 요청을 수신하는 경우, 상기 피투피 클라우드 컴퓨팅 시스템에 등록된 복수의 워커 노드들 중에서, 상기 요청에 해당하는 소스코드를 실행하기 위한 요구사항들을 만족시키는 워커 노드를 검색하여, 상기 검색된 워커 노드 상에서 구축된 실행환경을 통하여 상기 소스코드를 실행하도록 구성된 서버 노드를 포함하고,
    상기 검색된 워커 노드는, 컨테이너화되어 존재하는 소스코드가 상기 검색된 워커 노드에 다운로드되어 실행될 수 있는 환경을 제공하는, 시스템.
  7. 제6항에 있어서,
    상기 소스코드 저장소 시스템에 의해 상기 소스코드 저장소의 소스코드가 지정되면, 상기 소스코드에 대응하는 컨테이너 이미지를 생성하여 컨테이너 저장소에 게시하는 컨테이너 실행 환경을 더 포함하는, 시스템.
  8. 제7항에 있어서,
    상기 소스코드 저장소 시스템은,
    상기 클라이언트 장치가 상기 소스코드 저장소에 접근할 때, 상기 소스코드 저장소가 연동되지 않은 경우, 상기 소스코드 저장소에 대응하는 구성 파일을 업데이트하고, 상기 소스코드 저장소에 대응하는 컨테이너 이미지를 생성하여 상기 컨테이너 실행환경에 게시하는, 시스템.
  9. 제6항에 있어서,
    상기 서버 노드는, 상기 소스코드의 실행에 따른 상기 검색된 워커 노드의 머신 리소스의 사용 비용을 상기 클라이언트 장치의 사용자에게 과금하며, 상기 클라이언트 장치의 사용자가 지불한 상기 사용 비용을 상기 검색된 워커 노드의 소유자 및 상기 소스코드의 소유자 또는 작성자에게 전송하는, 시스템.
  10. 제6항에 있어서,
    상기 서버 노드는, 머신 리소스의 소유자가 상기 머신 리소스를 상기 피투피 클라우드 컴퓨팅 시스템에 워커 노드로 등록하기 위한 요청을 수신하면, 상기 머신 리소스를 워커 노드로 등록하는, 시스템.

KR1020190105138A 2019-03-06 2019-08-27 피투피 클라우드 컴퓨팅 시스템 및 그 시스템에서 소스코드를 실행환경과 연결하고 실행하는 방법 KR102202121B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20190025984 2019-03-06
KR1020190025984 2019-03-06

Publications (2)

Publication Number Publication Date
KR20200108228A KR20200108228A (ko) 2020-09-17
KR102202121B1 true KR102202121B1 (ko) 2021-01-13

Family

ID=72707238

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190105138A KR102202121B1 (ko) 2019-03-06 2019-08-27 피투피 클라우드 컴퓨팅 시스템 및 그 시스템에서 소스코드를 실행환경과 연결하고 실행하는 방법

Country Status (1)

Country Link
KR (1) KR102202121B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102462866B1 (ko) * 2020-11-25 2022-11-07 주식회사 커먼컴퓨터 코드 저장소와 연동하여 원클릭 배포 서비스를 제공하는 방법 및 시스템
US11789660B1 (en) * 2022-04-12 2023-10-17 Netapp, Inc. Distributed control plane tracking object ownership changes within a distributed storage architecture
US11775204B1 (en) 2022-04-12 2023-10-03 Netapp, Inc. Distributed control plane for facilitating communication between a container orchestration platform and a distributed storage architecture

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8863082B2 (en) * 2011-09-07 2014-10-14 Microsoft Corporation Transformational context-aware data source management
KR101545146B1 (ko) * 2013-11-28 2015-08-20 한국과학기술정보연구원 클라우드 스토리지 기반 작업 수행 시스템 및 방법

Also Published As

Publication number Publication date
KR20200108228A (ko) 2020-09-17

Similar Documents

Publication Publication Date Title
USRE49722E1 (en) Cloud-based hub for facilitating distribution and consumption of application programming interfaces
US11321337B2 (en) Crowdsourcing data into a data lake
KR102202121B1 (ko) 피투피 클라우드 컴퓨팅 시스템 및 그 시스템에서 소스코드를 실행환경과 연결하고 실행하는 방법
US20190392536A1 (en) Method and System for Creating and Managing a Smart Contract on a Distributed Ledger
JP7097958B2 (ja) 自動ユニバーサルコネクタパッケージを使用してクラウドアプリケーションをクラウドサービスブローカプラットフォームに統合するためのシステムおよび方法
US7949569B2 (en) Distributed device information management system as a distributed information repository system
US9367371B2 (en) Widget framework, real-time service orchestration, and real-time resource aggregation
US20160055140A1 (en) Peer to peer spreadsheet processing
CN102804202B (zh) 内容网格搜索
US11750679B1 (en) Systems and methods for it management of distributed computing resources on a peer-to-peer network
CN106134230A (zh) 用于移动信息设备上的远程内容和配置控制的管理域
KR102124499B1 (ko) 클라우드 서비스 기반의 어플리케이션 서비스 제공 방법, 장치 및 컴퓨터-판독가능 매체
Dalle Vacche Mastering Zabbix
CN108027828A (zh) 与无状态同步节点的托管文件同步
CN110750243A (zh) 项目代码开发方法和系统
JP2023544518A (ja) オペレーティングシステムを公開するためのブロックチェーンベースのシステムおよび方法
Turnbull et al. Pro Puppet
US11693824B2 (en) Computer-readable recording medium recording communication program, communication method, and communication device
Zanon Building Serverless Web Applications
JP7073394B2 (ja) クラウドサービス仲介システムの統合コネクタを生成して分散する技術
Ajzele et al. Magento 2 Developer's Guide: Harness the power of Magento 2 to extend and customize your online store
Westfall Set up and manage your virtual private server
Bhat et al. Network service orchestration in heterogeneous 5G networks using an open marketplace
Pandya et al. Hands-on infrastructure as code with puppet
Muñoz Exam Ref AZ-204 Developing Solutions for Microsoft Azure

Legal Events

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