KR20200078945A - 복수의 컴파일 주체를 이용한 코딩 시스템의 효율을 높이는 방법 및 장치 - Google Patents
복수의 컴파일 주체를 이용한 코딩 시스템의 효율을 높이는 방법 및 장치 Download PDFInfo
- Publication number
- KR20200078945A KR20200078945A KR1020180168322A KR20180168322A KR20200078945A KR 20200078945 A KR20200078945 A KR 20200078945A KR 1020180168322 A KR1020180168322 A KR 1020180168322A KR 20180168322 A KR20180168322 A KR 20180168322A KR 20200078945 A KR20200078945 A KR 20200078945A
- Authority
- KR
- South Korea
- Prior art keywords
- server
- build
- source code
- compilation
- user terminal
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
본 발명의 일 실시예에 따른, 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법에 있어서, (a) 플랫폼 서버가 사용자 단말로 컴퓨터 언어 프로그래밍을 위한 사용자 인터페이스를 제공하고, 사용자 단말로부터 단말식별정보 및 사용자가 입력한 소스코드를 수신하는 단계; (b) 플랫폼 서버가 사용자 단말로부터 컴파일 명령을 수신하면, 단말식별정보, 소스코드 및 컴파일 명령 정보를 빌드 서버로 전달하는 단계; (c) 빌드 서버는 단말식별정보에 대응하는 가상머신을 생성하고, 가상머신을 통해 소스코드에 대한 컴파일을 수행하여 결과물을 생성하는 단계; 및 (d) 플랫폼 서버는 빌드 서버로부터 결과물을 수신하여, 사용자 단말로 전달하는 단계;를 포함한다.
Description
본 발명은 서버는 복수의 사용자 단말을 통해 수신하는 복수의 소스코드를 효율적으로 코딩(coding)하기 위한 발명에 관한 것이다.
코딩(coding)이란 컴퓨터 프로그래밍의 다른 뜻으로, C언어, 자바, 파이선 등의 컴퓨터 언어로 프로그램을 만드는 것을 뜻한다. 최근 코딩 교육을 통해 논리력, 창의력, 문제해결력을 키울 수 있다는 부분에서 유치원생이나 초등학생들도 퍼즐이나 블록맞추기 등의 게임방식을 이용해 컴퓨터 프로그래밍 원리를 배우게 된다.
최근 코딩에 대한 중요도가 높아짐에 따라 우리나라에서도 2018년부터 전국 초중고교에서 소프트웨어 교육(코딩 교육)을 의무화하고 있는 상황이다.
하지만, 동시다발적으로 수행하는 코딩을 원격으로 관리하는 시스템이 제대로 갖추어지지 않은 상황이다. 특히 원격으로 복수의 사용자가 생성한 소스코드를 컴파일하여 결과물을 처리하는 과정에 대해서 서버가 이를 처리하는 경우 부하가 발생하여 처리속도가 지연되는 문제가 발생할 수 있다.
그와 동시에, 근래에 제작되는 소프트웨어의 경우 구성하고 있는 소스코드의 규모와 그 복잡도가 커지고 있다. 그렇기에, 서비스를 배포하기 위한 빌드를 수행하는 과정에서 필요한 시간이 길어지고 있는 상황인 것이다.
따라서, 종래의 경우 사용자의 단말을 통해 컴파일과정을 수행하고, 그에 대한 결과물을 수신하는 방식으로 서버의 부하를 피하고 있으나, 이는 사용자 단말에 별도의 프로그래밍용 어플리케이션을 필요로 하고, 대규모 작업을 집중적으로 관리함에 있어서도 효율적이지 못한 방법이다.
또한, 서버나 단말이 단독으로 수행하는 컴파일 작업에서 벗어나 클라우드 상에서 해당 나누어 수행할 수 있는 환경의 필요성이 대두되는 상황이다.
본 발명은 전술한 문제점을 해결하기 위하여, 사용자는 자신의 단말에 별도의 프로그램을 사용하지 않고, 외부 서버를 통해 코딩작업을 수행하며, 외부 서버는 복수로 진행될 수 있는 컴파일 작업의 주체를 분산시켜 코딩에 필요한 시간효율을 높이는 것을 목적으로 한다.
상기한 기술적 과제를 달성하기 위한 기술적 수단으로서 본 발명의 일 실시예에 따른, 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법에 있어서, (a) 플랫폼 서버가 사용자 단말로 컴퓨터 언어 프로그래밍을 위한 사용자 인터페이스를 제공하고, 사용자 단말로부터 단말식별정보 및 사용자가 입력한 소스코드를 수신하는 단계; (b) 플랫폼 서버가 사용자 단말로부터 컴파일 명령을 수신하면, 단말식별정보, 소스코드 및 컴파일 명령 정보를 빌드 서버로 전달하는 단계; (c) 빌드 서버는 단말식별정보에 대응하는 가상머신을 생성하고, 가상머신을 통해 소스코드에 대한 컴파일을 수행하여 결과물을 생성하는 단계; 및 (d) 플랫폼 서버는 빌드 서버로부터 결과물을 수신하여, 사용자 단말로 전달하는 단계;를 포함할 수 있다.
또한, 다른 일 실시예로, 컴파일 주체 분산을 통한 코딩 효율을 높이는 시스템에 있어서, 사용자 단말로부터 단말식별정보 및 소스코드를 수신하여, 빌드 서버로 전달하고, 빌드 서버로부터 결과물을 수신하여 사용자 단말로 제공하는 플랫폼 서버; 및 가상머신을 생성하여 플랫폼 서버로부터 수신한 단말식별정보 및 소스코드를 컴파일하여 결과물을 생성하고, 결과물을 플랫폼 서버로 전달하는 빌드 서버;를 포함하되, 플랫폼 서버는 빌드 서버로부터 결과물을 수신하여, 사용자 단말로 전달하는 시스템.
전술한 본 발명의 과제 해결 수단에 의하면, 사용자는 자신의 단말에 별도의 프로그램을 사용하지 않고, 외부 서버를 통해 코딩작업을 수행하며, 외부 서버는 복수로 진행될 수 있는 컴파일 작업의 주체를 분산시켜 코딩에 필요한 시간효율을 높일 수 있다.
본 발명에 따라, 사용자는 자신의 단말에 별도의 프로그램을 설치하지 않더라도 서버가 웹브라우저를 통해 제공하는 인터페이스를 통해 소스코드 및 컴파일 작업을 수행할 수 있다.
또한, 관리자도 서버로 수신되는 복수의 소스코드를 손쉽게 확인하거나 관리할 수 있고, 많은 양의 소스코드를 동시에 컴파일 하더라도 하나의 서버가 갖는 부하를 줄일 수 있는 강점이 있다.
도 1은 본 발명의 일 실시예에 따른, 컴파일 주체 분산을 통한 코딩 효율을 높이는 시스템의 구성을 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른, 플랫폼 서버의 구성을 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른, 빌드 서버의 구성을 나타낸 도면이다.
도 4는 본 발명의 일 실시예에 따른, 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법을 나타낸 동작 흐름도이다.
도 5는 본 발명의 일 실시예에 따른, 플랫폼 서버가 빌드 서버를 선택하는 과정을 나타낸 동작 흐름도이다.
도 2는 본 발명의 일 실시예에 따른, 플랫폼 서버의 구성을 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른, 빌드 서버의 구성을 나타낸 도면이다.
도 4는 본 발명의 일 실시예에 따른, 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법을 나타낸 동작 흐름도이다.
도 5는 본 발명의 일 실시예에 따른, 플랫폼 서버가 빌드 서버를 선택하는 과정을 나타낸 동작 흐름도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미하며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
이하의 실시예는 본 발명의 이해를 돕기 위한 상세한 설명이며, 본 발명의 권리 범위를 제한하는 것이 아니다. 따라서 본 발명과 동일한 기능을 수행하는 동일 범위의 발명 역시 본 발명의 권리 범위에 속할 것이다.
도 1은 본 발명의 일 실시예에 따른, 컴파일 주체 분산을 통한 코딩 효율을 높이는 시스템(1)의 구성을 나타낸 도면이다.
도 1을 참조하면, 컴파일 주체 분산을 통한 코딩 효율을 높이는 시스템(1)은 플랫폼 서버(100), 빌드 서버(200) 및 사용자 단말(300)를 포함할 수 있다. 또한, 빌드 서버(201 및 202)와 사용자 단말(301 및 302)는 복수로 구비될 수 있고, 이를 통신망이 상호 연결하게 된다.
본 발명의 일 실시예에 따라, 플랫폼 서버(100)는 복수의 사용자 단말(301 및 302)로부터 단말식별정보, 소스코드 및 컴파일 명령을 수신한다. 또한, 플랫폼 서버(100)는 수신된 단말식별정보, 소스코드 및 컴파일 명령을 복수의 빌드 서버(201 및 202) 중 어느 하나를 선택하여 전달한다.
이후, 빌드 서버(200)는 단말식별정보에 대응하는 가상머신을 구축하고, 소스코드를 컴파일하여 결과물을 생성하게 되는데, 결과물은 플랫폼 서버(100)를 거쳐 사용자 단말(300)로 회신될 수 있다.
이때, 플랫폼 서버(100)와 빌드 서버(200) 사이에는 큐(queue)와 로드밸런서의 역할을 수행하는 서버가 추가되어 빌드 서버(200)의 자원을 모니터링하여 큐잉을 진행할 수도 있다.
여기서, 단말식별자는 복수의 사용자 단말(301 및 302)를 구분하기 위해 사용자 단말(300)마다 고유하게 부여되거나, 제작 당시에 생성된 식별정보를 뜻하는데 예컨대, IP, 맥어드레스 등이 사용될 수 있다.
추가 실시예로, 컴파일 주체 분산을 통한 코딩 효율을 높이는 시스템(1)을 사용하는 사용자의 고유 아이디(ID)나, 사용자 혹은 플랫폼 서버(100)가 지정한 사용자 단말(300)의 정보를 단말식별자로 사용할 수도 있다.
또한, 소스코드는 프로그래밍을 위한 사용자가 생성하는 코딩 정보로서, 이를 컴파일하여 결과물을 생성하게 된다.
가상머신은 빌드 서버(200)의 프로세서에 의해 기 설정된 처리용량을 갖도록 임시로 생성되는 객체를 뜻하는데, 하나의 빌드 서버(200)가 복수의 단말식별정보 및 소스코드를 수신하면 그에 대응하는 복수의 가상머신을 생성하여 컴파일을 수행하게 된다.
이때, 일반적으로는 기 설정된 처리용량을 가지는 가상머신을 자동으로 생성하게 되지만, 빌드 서버(200)가 현재 처리중인 용량의 상황이나, 사용자의 의도에 따라 그 용량은 동적으로 변경될 수도 있다.
컴파일 명령은 사용자 단말(300)로부터 생성되어 수신한 소스코드의 컴파일 작업을 수행하도록 지시하는 명령으로, 사용자 인터페이스를 통해 플랫폼 서버(100)로 전달할 수 있다.
플랫폼 서버(100)는 사용자 단말(300)로 사용자 인터페이스를 제공하고, 그에 대한 단말식별정보, 소스코드 및 컴파일 명령을 수신하여 빌드 서버(200)로 전달하고, 빌드 서버(200)로부터 결과물을 수신하여 사용자 단말(300)로 전달하게 된다.
빌드 서버(200)는 가상머신을 생성하여 플랫폼 서버(100)로부터 수신한 개인식별정보 및 소스코드를 컴파일하여 결과물을 생성하고, 결과물을 플랫폼 서버(100)로 전달하게 된다.
사용자 단말(300)은 사용자가 작성하는 소스코드를 플랫폼 서버(100)로 전달하고, 그에 대한 결과물을 수신하여 사용자에게 표시하는 단말이 될 수 있다.
이때, 소스코드는 사용자 단말(300)이 플랫폼 서버(100)로부터 컴퓨터 언어 프로그래밍을 위한 사용자 인터페이스를 수신하여 생성하게 되는데, 사용자 인터페이스는 사용자 단말(300)이 보유한 어플리케이션을 통해 구현되거나, 웹 브라우저 기반으로 제공될 수도 있다.
그 외에도, 어플리케이션 배포 서버로부터 다운로드되어 사용자 단말(300)에 설치된 어플리케이션이 사용될 수 있다.
사용자 단말(300)은 유무선 통신 환경에서 단말 어플리케이션을 이용할 수 있는 통신 단말기를 의미한다. 여기서 사용자 단말(300)은 플랫폼 서버(200)로부터 비정형 텍스트 및 이미지로 구성된 사용자 인터페이스를 수신 후 이를 바탕으로 단말식별정보, 소스코드 및 컴파일 명령을 제공하고, 그에 대한 결과물을 수신할 수 있는 디바이스일 수 있다. 도 1에서는 사용자 단말(300)이 휴대용 단말기의 일종인 스마트폰(smart phone)으로 도시되었지만, 본 발명의 사상은 이에 제한되지 아니하며, 상술한 바와 같이 단말 어플리케이션을 탑재할 수 있는 단말에 대해서 제한 없이 차용될 수 있다.
이를 더욱 상세히 설명하면, 사용자 단말(300)은 핸드헬드 컴퓨팅 디바이스(예를 들면, PDA, 이메일 클라이언트 등), 퍼스널 컴퓨터(Personal computer), 또는 다른 종류의 컴퓨팅 또는 커뮤니케이션 플랫폼의 임의의 형태를 포함할 수 있으나, 본 발명이 이에 한정되는 것은 아니다.
한편, 통신망은 플랫폼 서버(100), 빌드 서버(200) 및 사용자 단말(300)들을 연결하는 역할을 수행한다. 즉, 통신망은 사용자 단말(300)과 플랫폼 서버(100) 혹은 플랫폼 서버(100)와 빌드 서버(200)에 접속한 후 데이터를 송수신할 수 있도록 접속 경로를 제공하는 통신망을 의미한다. 통신망은 예컨대 LANs(Local Area Networks), WANs(Wide Area Networks), MANs(Metropolitan Area Networks), ISDNs(Integrated Service Digital Networks) 등의 유선 네트워크나, 무선 LANs, CDMA, 블루투스, 위성 통신 등의 무선 네트워크를 망라할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
도 2는 본 발명의 일 실시예에 따른, 플랫폼 서버의 구성을 나타낸 도면이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 서버(100)는 통신 모듈(110), 메모리(120), 프로세서(130) 및 데이터베이스(140)를 포함한다.
상세히, 통신 모듈(110)은 통신망과 연동하여 플랫폼 서버(100), 빌드 서버(200) 및 사용자 단말(300) 간의 송수신 신호를 패킷 데이터 형태로 제공하는 데 필요한 통신 인터페이스를 제공한다. 나아가, 통신 모듈(110)은 빌드 서버(200) 및 사용자 단말(300)로부터 데이터 요청을 수신하고, 이에 대한 응답으로서 데이터를 송신하는 역할을 수행할 수 있다.
여기서, 통신 모듈(110)은 다른 네트워크 장치와 유무선 연결을 통해 제어 신호 또는 데이터 신호와 같은 신호를 송수신하기 위해 필요한 하드웨어 및 소프트웨어를 포함하는 장치일 수 있다.
메모리(120)는 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법을 수행하기 위한 프로그램이 기록된다.
특히, 사용자 인터페이스를 사용자 단말(300)로 제공하여, 단말식별정보, 소스코드 및 컴파일 명령을 수신하고, 이를 컴파일 할 수 있는 빌드 서버(200)를 검색 후 전달하게 된다. 또한 빌드 서버(200)가 생성한 결과물을 사용자 단말(300)로 전달하는 방법을 수행하기 위한 프로그램이 기록 되는 것이다.
또한, 프로세서(130)가 처리하는 데이터를 일시적 또는 영구적으로 저장하는 기능을 수행한다. 여기서, 메모리(120)는 자기 저장 매체(magnetic storage media) 또는 플래시 저장 매체(flash storage media)를 포함할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
프로세서(130)는 일종의 중앙처리장치로서 컴파일 주체 분산을 통한 코딩 효율을 높이는 전체 과정을 제어한다. 프로세서(130)가 수행하는 각 단계에 대해서는 도 3을 참조하여 후술하기로 한다.
여기서, 프로세서(130)는 프로세서(processor)와 같이 데이터를 처리할 수 있는 모든 종류의 장치를 포함할 수 있다. 여기서, '프로세서(processor)'는, 예를 들어 프로그램 내에 포함된 코드 또는 명령으로 표현된 기능을 수행하기 위해 물리적으로 구조화된 회로를 갖는, 하드웨어에 내장된 데이터 처리 장치를 의미할 수 있다. 이와 같이 하드웨어에 내장된 데이터 처리 장치의 일 예로써, 마이크로프로세서(microprocessor), 중앙처리장치(central processing unit: CPU), 프로세서 코어(processor core), 멀티프로세서(multiprocessor), ASIC(application-specific integrated circuit), FPGA(field programmable gate array) 등의 처리 장치를 망라할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
데이터베이스(140)는 사용자 단말(300)로부터 수신된 단말식별정보 및 소스코드가 저장될 수 있으며, 필요에 따라 빌더 서버(200)가 생성한 결과물이 더 저장될 수 있다.
비록 도 2에는 도시하지 아니하였으나, 단말식별정보, 소스코드 및 결과물은 데이터베이스(140)와 물리적 또는 개념적으로 분리된 데이터베이스(미도시)에 저장될 수 있다.
도 3은 본 발명의 일 실시예에 따른, 빌드 서버의 구성을 나타낸 도면이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 빌드 서버(200)는 통신 모듈(210), 메모리(220) 및 프로세서(230)를 포함한다.
통신 모듈(210), 메모리(220) 및 프로세서(230)에 대하여, 도 2를 참조하여 상술한 통신 모듈(110), 메모리(120) 및 프로세서(130)에 대한 설명과 중복되는 설명은 생략하기로 한다.
상세히, 통신 모듈(210)은 통신망과 연동하여 플랫폼 서버(100)와 빌드 서버(200) 간의 송수신 신호를 패킷 데이터 형태로 제공하는 데 필요한 통신 인터페이스를 제공한다. 나아가, 통신 모듈(210)은 플랫폼 서버(100)로 데이터 요청을 송신하고, 이에 대한 응답으로 데이터를 수신하는 역할을 수행할 수 있다.
메모리(220)는 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법을 수행하기 위한 프로그램이 기록된다.
또한, 프로세서(230)가 처리하는 데이터를 일시적 또는 영구적으로 저장하는 기능을 수행할 수 있는데, 가상머신을 생성하여 컴파일을 수행하기 위해 메모리(220)가 사용될 수도 있다.
이 때, 메모리(120) 및 메모리(220)에 기록되는 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법을 수행하기 위한 프로그램은 상이한 것일 수 있다.
프로세서(230)는 일종의 중앙처리장치로서 컴파일 주체 분산을 통한 코딩 효율을 높이는 과정을 제어한다. 이때, 빌드 서버(200)의 프로세서(230)는 플랫폼 서버(100)의 프로세서(130)와 다르게, 수신한 단말식별정보에 기초하여 가상머신을 생성하고, 가상머신을 통해 소스코드를 컴파일하여 결과물을 생성하게 된다.
도 4는 본 발명의 일 실시예에 따른, 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법을 나타낸 동작 흐름도이다.
도 4를 참조하면, 플랫폼 서버(100)가 사용자 단말(300)로 컴퓨터 언어 프로그래밍을 위한 사용자 인터페이스를 제공하고, 사용자 단말(300)로부터 단말식별정보 및 사용자가 입력한 소스코드를 수신한다(S410).
이때, 플랫폼 서버(100)는 앞서 설명한바와 같이, 사용자 단말(300)로 사용자 인터페이스는 사용자 단말(300)에 설치되어 있는 어플리케이션을 활용할 수 있지만, 해당 사용자 단말(300)이 웹사이트에 접속하여 소스코드를 생성할 수 있도록 인터넷 익스플로러(internet explorer), 크롬(chrome) 등과 같은 웹브라우저 상으로 지원될 수 있다.
또한, 플랫폼 서버(100)는 복수의 사용자 단말(301 및 302)로부터 수신되는 복수의 단말식별자 및 소스코드를 동시에 처리하게 된다.
플랫폼 서버(100)가 사용자 단말(300)로부터 컴파일 명령을 수신하면, 단일식별정보, 소스코드 및 컴파일 명령 정보를 빌드 서버(200)로 전달한다(S420).
이후, 빌드 서버(200)는 단말식별정보에 대응하는 가상머신을 생성하고, 가상머신을 통해 소스코드에 대한 컴파일을 수행하여 결과물을 생성한다(S430).
이때, 단계(S420) 및 단계(S430)에서 수행되는 과정은 후술할 도 5를 참조하여 상세하게 설명하도록 한다.
플랫폼 서버(100)는 빌드 서버(200)로부터 결과물을 수신하여 사용자 단말(300)로 전달한다(S440).
플랫폼 서버(100)가 결과물을 수신하면 빌드 서버(200)는 결과물을 생성한 가상머신을 삭제하여 빌드 서버(200)의 부하를 낮추게 된다.
하지만, 단계(S440) 이후 플랫폼 서버(100)는 사용자 단말(300)로부터 결과물에 대응하는 소스코드의 수정사항과 그에 대한 컴파일 명령을 추가로 수신하게 되면, 단계(S430) 내지 단계(S440)를 반복하여 수행하게 된다.
예를 들어 설명하면, 결과물을 수신한 사용자가 원하는 결과가 나오지 않았거나, 결과물에 대한 수정이 필요하다고 느끼면 사용자 인터페이스를 통해 기 작성된 소스코드를 불러와 수정 후 새롭게 컴파일을 수행할 수도 있는 것이다.
그 외에도 사용자 단말(301)은 결과물 및 소스코드를 플랫폼 서버(100)를 통해 다른 사용자 단말(302)과 공유하는 기능을 더 포함할 수 있다. 이를 통해, 본인의 소스코드와 그에 대한 결과물을 알리거나, 반대로 타인이 생성한 결과물과 그에 대한 소스코드를 참고할 수 있게 되는 것이다.
도 5는 본 발명의 일 실시예에 따른, 플랫폼 서버가 빌드 서버를 선택하는 과정을 나타낸 동작 흐름도이다.
도 5를 참조하면, 사용자 단말(300)로부터 단말식별정보, 소스코드 및 컴파일 명령을 수신한 플랫폼 서버(100)는 복수의 빌드 서버(201 및 202)로부터 빌드 서버(200)에 관한 정보를 수신한다(S510).
앞서 서술한 바와 같이, 빌드 서버(200)는 최대 처리할 수 있는 데이터의 용량이 한정되어 있다. 따라서, 플랫폼 서버(100)로부터 수신된 복수의 소스코드에 대한 연속 혹은 동시다발적인 컴파일 처리가 요청되는 경우, 이를 처리하기 위해 복수의 빌드 서버(200)를 필요로 한다. 따라서, 본 발명에서는 빌드 서버(200)가 복수로 구비되고, 빌드 서버(200) 내에서도 가상머신을 나누어 컴파일을 동시에 수행하게 되는 것이다.
단계(S510)의 결과에 기초하여 최소 부하용량을 갖는 빌드 서버(200)로 사용자 단말(300)의 단말식별정보 및 소스코드를 전달한다(S520).
이때, 복수의 빌드 서버(201) 중 어느 하나가 생성할 수 있는 최대의 가상머신이 생성된 이후 단말식별정보 및 소스코드를 추가로 수신하면, 단말식별정보 및 소스코드를 다른 빌드 서버(202)로 전달하게 되는 것이다.
이때, 단계(S520) 이전에 빌드 서버(200)가 처리할 수 있는 처리용량을 사전에 체크하고, 가상머신 구동을 위한 처리용량을 빌드 서버(200) 혹은 사용자가 임의로 조절할 수도 있다.
마지막으로 빌드 서버(200)는 단말식별정보에 대응하는 가상머신을 생성 후 컴파일을 수행한다(S530).
단계(S530) 이후, 플랫폼 서버(100)가 사용자 단말(300)로부터 컴파일 종료 신호 혹은 플랫폼 서버(100)에 대한 접속 해제 신호를 수신하기 전까지 빌드 서버(200)는 가상머신을 통해 사용자 단말(300)의 결과물을 저장할 수 있다.
또한, 컴파일 종료 신호 혹은 플랫폼 서버(100)에 대한 접속 해제 신호를 수신하는 경우, 빌드 서버(200)는 가상머신을 삭제하는 작업이 추가될 수 있다.
그 외에도, 사용자가 동일한 코드를 짧은 시간 이내에 여러 번 컴파일하게 되는 경우, 해당하는 가상머신을 삭제하지 않고 그대로 재사용하여 처리 시간을 단축할 수도 있다.
또한, 추가 실시예로서, 맵/리듀스와 같은 컨셉으로, 사용자의 요청에 따라 1개 혹은 그 이상의 개수의 빌드 서버에서 빌드를 실행하여 효율성을 개선하는 방식도 구현될 수 있다.
본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다.
본 발명의 방법 및 시스템은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
1: 컴파일 주체 분산을 통한 코딩 효율을 높이는 시스템
100: 플랫폼 서버
200(201, 202): 빌드 서버
300(301, 302): 사용자 단말
100: 플랫폼 서버
200(201, 202): 빌드 서버
300(301, 302): 사용자 단말
Claims (12)
- 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법에 있어서,
(a) 플랫폼 서버가 사용자 단말로 컴퓨터 언어 프로그래밍을 위한 사용자 인터페이스를 제공하고, 상기 사용자 단말로부터 단말식별정보 및 사용자가 입력한 소스코드를 수신하는 단계;
(b) 상기 플랫폼 서버가 상기 사용자 단말로부터 컴파일 명령을 수신하면, 상기 단말식별정보, 소스코드 및 컴파일 명령 정보를 빌드 서버로 전달하는 단계;
(c) 상기 빌드 서버는 상기 단말식별정보에 대응하는 가상머신을 생성하고, 상기 가상머신을 통해 상기 소스코드에 대한 컴파일을 수행하여 결과물을 생성하는 단계; 및
(d) 상기 플랫폼 서버는 상기 빌드 서버로부터 결과물을 수신하여, 상기 사용자 단말로 전달하는 단계;
를 포함하는 것인, 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법. - 제 1 항에 있어서,
상기 가상머신은 상기 빌드 서버의 프로세서에 의해 기 설정된 처리용량을 갖도록 임시로 생성되는 객체인 것인, 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법. - 제 1 항에 있어서,
상기 사용자 단말이 수신하는 사용자 인터페이스는 상기 사용자 단말이 보유한 어플리케이션을 통해 구현되거나, 상기 웹 브라우저 기반으로 제공되는 것인, 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법. - 제 1 항에 있어서,
상기 빌드 서버는 적어도 하나 이상으로 구비되고,
상기 (b) 단계는
(b-1) 상기 플랫폼 서버는 복수의 상기 빌드 서버 중 상기 소스코드를 컴파일 할 수 있는 상기 빌드 서버를 검색하는 단계; 및
(b-2) 상기 컴파일이 가능한 상기 빌드 서버가 검색되면, 상기 빌드 서버로 상기 단말식별정보 및 소스코드를 전달하는 단계;
를 포함하는 것인, 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법. - 제 1 항에 있어서,
상기 (c) 단계는
복수 개의 상기 단말식별정보 및 소스코드를 상기 플랫폼 서버로부터 수신하면, 상기 빌드 서버는 복수 개의 상기 단말식별정보에 대응하는 개수의 상기 가상머신을 생성하고, 상기 소스코드를 각각의 상기 가상머신에 대응시켜 컴파일을 수행하는 것인, 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법. - 제 4 항에 있어서,
상기 (b-2) 단계는,
상기 빌드 서버가 생성할 수 있는 최대의 상기 가상머신이 생성된 이후 상기 단말식별정보 및 소스코드를 추가로 수신하면, 상기 단말식별정보 및 소스코드를 다른 상기 빌드 서버로 전달하는 단계;를 포함하는 것인, 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법. - 제 6 항에 있어서,
상기 플랫폼 서버가 복수의 상기 빌드 서버로부터 각 상기 빌드서버의 부하용량에 관한 정보를 수신하는 단계; 및
상기 플랫폼 서버가 최소 부하용량을 갖는 상기 빌드 서버로 상기 사용자 단말의 단말식별정보 및 소스코드, 컴파일 명령 정보를 전달하는 단계를 포함하는 것인, 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법. - 제 1 항에 있어서,
상기 (c) 단계 이후
상기 플랫폼 서버가 상기 결과물을 수신하면, 상기 빌드 서버는 상기 결과물을 생성한 상기 가상머신을 삭제하는 것인, 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법. - 제 1 항에 있어서,
상기 플랫폼 서버가 상기 사용자 단말로부터 컴파일 종료 신호 혹은 상기 플랫폼 서버에 대한 접속 해제 신호를 수신하기 전까지 상기 가상머신을 통해 상기 사용자 단말의 결과물을 저장하고, 상기 컴파일 종료 신호 혹은 상기 플랫폼 서버에 대한 접속 해제 신호를 수신하는 경우, 상기 가상머신을 삭제하는 것인, 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법. - 제 1 항에 있어서,
상기 (d) 단계 이후
상기 플랫폼 서버는 상기 사용자 단말로부터 상기 결과물에 대응하는 상기 소스코드의 수정사항과 그에 대한 컴파일 명령을 수신하면, 상기 (c) 단계 내지 (d) 단계를 반복 수행하는 것인, 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법. - 제 10 항에 있어서,
상기 사용자 단말은 상기 결과물 및 소스코드를 상기 플랫폼 서버를 통해 다른 상기 사용자 단말과 공유하는 기능을 더 포함하는 것인, 컴파일 주체 분산을 통한 코딩 효율을 높이는 방법. - 컴파일 주체 분산을 통한 코딩 효율을 높이는 시스템에 있어서,
사용자 단말로부터 단말식별정보 및 소스코드를 수신하여, 빌드 서버로 전달하고, 상기 빌드 서버로부터 결과물을 수신하여 사용자 단말로 제공하는 플랫폼 서버; 및
가상머신을 생성하여 상기 플랫폼 서버로부터 수신한 상기 단말식별정보 및 소스코드를 컴파일하여 결과물을 생성하고, 상기 결과물을 상기 플랫폼 서버로 전달하는 상기 빌드 서버;를 포함하되,
상기 플랫폼 서버는 상기 빌드 서버로부터 결과물을 수신하여, 상기 사용자 단말로 전달하는 것인, 컴파일 주체 분산을 통한 코딩 효율을 높이는 시스템.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180168322A KR102131000B1 (ko) | 2018-12-24 | 2018-12-24 | 복수의 컴파일 주체를 이용한 코딩 시스템의 효율을 높이는 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180168322A KR102131000B1 (ko) | 2018-12-24 | 2018-12-24 | 복수의 컴파일 주체를 이용한 코딩 시스템의 효율을 높이는 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200078945A true KR20200078945A (ko) | 2020-07-02 |
KR102131000B1 KR102131000B1 (ko) | 2020-08-05 |
Family
ID=71599760
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180168322A KR102131000B1 (ko) | 2018-12-24 | 2018-12-24 | 복수의 컴파일 주체를 이용한 코딩 시스템의 효율을 높이는 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102131000B1 (ko) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100768959B1 (ko) * | 1998-11-05 | 2007-10-23 | 비이에이 시스템즈 인코포레이티드 | 분산 처리 시스템의 스마트 스터브 또는 엔터프라이즈 java™ 빈 |
KR20140121101A (ko) * | 2013-04-05 | 2014-10-15 | 케이티하이텔 주식회사 | 분산빌드를 위한 디스패쳐 및 디스패쳐를 이용한 클라우드 빌드 시스템 및 그 방법 |
KR20150063514A (ko) * | 2012-09-29 | 2015-06-09 | 지티이 코포레이션 | 애플리케이션의 개발, 컴파일링 및 디버그 방법과 장치 |
KR20170078459A (ko) * | 2015-12-29 | 2017-07-07 | 주식회사 아이디어피스 | 사용자 프로그램 작성 지원 IoT 플랫폼 및 이를 이용한 IoT 기기 제어용 프로그램 개발 방법 |
KR20180124618A (ko) * | 2017-05-12 | 2018-11-21 | 주식회사 엑씽크 | 휴대용 단말기 카드섹션 소프트웨어 개발 시스템 |
-
2018
- 2018-12-24 KR KR1020180168322A patent/KR102131000B1/ko active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100768959B1 (ko) * | 1998-11-05 | 2007-10-23 | 비이에이 시스템즈 인코포레이티드 | 분산 처리 시스템의 스마트 스터브 또는 엔터프라이즈 java™ 빈 |
KR20150063514A (ko) * | 2012-09-29 | 2015-06-09 | 지티이 코포레이션 | 애플리케이션의 개발, 컴파일링 및 디버그 방법과 장치 |
KR20140121101A (ko) * | 2013-04-05 | 2014-10-15 | 케이티하이텔 주식회사 | 분산빌드를 위한 디스패쳐 및 디스패쳐를 이용한 클라우드 빌드 시스템 및 그 방법 |
KR20170078459A (ko) * | 2015-12-29 | 2017-07-07 | 주식회사 아이디어피스 | 사용자 프로그램 작성 지원 IoT 플랫폼 및 이를 이용한 IoT 기기 제어용 프로그램 개발 방법 |
KR20180124618A (ko) * | 2017-05-12 | 2018-11-21 | 주식회사 엑씽크 | 휴대용 단말기 카드섹션 소프트웨어 개발 시스템 |
Also Published As
Publication number | Publication date |
---|---|
KR102131000B1 (ko) | 2020-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3011442B1 (en) | Method and apparatus for customized software development kit (sdk) generation | |
US10853108B2 (en) | Method and apparatus for code virtualization and remote process call generation | |
US10977076B2 (en) | Method and apparatus for processing a heterogeneous cluster-oriented task | |
CN104598513B (zh) | 一种基于网页框架的数据流控制方法和系统 | |
US20190102237A1 (en) | Recommending applications based on call requests between applications | |
KR102652384B1 (ko) | 메신저 봇을 이용하여 IoT 기기를 제어하기 위한 방법, 시스템, 및 비-일시적인 컴퓨터 판독가능한 기록 매체 | |
CN113064583B (zh) | 多级页面路由跳转方法、装置、计算机设备及存储介质 | |
CN108287894B (zh) | 数据处理方法、装置、计算设备及存储介质 | |
CN105426165A (zh) | 一种脚本工具的处理方法及装置 | |
KR20210105378A (ko) | 프로그래밍 플랫폼의 사용자 코드 작동 방법 및 플랫폼, 노드, 기기, 매체 | |
CN112328301A (zh) | 维护运行环境一致性的方法、装置、存储介质及电子设备 | |
CN110781505A (zh) | 系统构建方法及装置、检索方法及装置、介质和设备 | |
CN112445489A (zh) | 编译系统、电子设备及可读介质 | |
CN112565225B (zh) | 用于数据发送的方法、装置、电子设备及可读存储介质 | |
CN112486492A (zh) | 页面生成方法、装置、存储介质及电子设备 | |
KR102131000B1 (ko) | 복수의 컴파일 주체를 이용한 코딩 시스템의 효율을 높이는 방법 및 장치 | |
CN105681291A (zh) | 一种实现多客户端统一认证方法及系统 | |
CN115202907A (zh) | 一种应用程序接口的运行方法、系统、计算机设备及介质 | |
CN110609707A (zh) | 在线数据处理系统生成方法、装置及设备 | |
CN106570143B (zh) | 一种发送响应对象的方法和装置 | |
JP7329662B1 (ja) | 計算資源の効率的な制御及び使用のためのシステム、方法、プログラム及び情報処理装置 | |
KR102361534B1 (ko) | 컴파일러를 이용한 난독화 방법 및 시스템 | |
CN118778977A (zh) | 模板交接方法、装置、电子设备及计算机可读存储介质 | |
CN118512768A (zh) | 人工智能对象的控制方法、装置、设备、存储介质及产品 | |
CN118113820A (zh) | 一种问答系统的配置方法、装置、程序、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |