KR101941274B1 - Method and apparatus for actuating an application without cessation - Google Patents

Method and apparatus for actuating an application without cessation Download PDF

Info

Publication number
KR101941274B1
KR101941274B1 KR1020180105917A KR20180105917A KR101941274B1 KR 101941274 B1 KR101941274 B1 KR 101941274B1 KR 1020180105917 A KR1020180105917 A KR 1020180105917A KR 20180105917 A KR20180105917 A KR 20180105917A KR 101941274 B1 KR101941274 B1 KR 101941274B1
Authority
KR
South Korea
Prior art keywords
application
target terminal
terminal
target
server
Prior art date
Application number
KR1020180105917A
Other languages
Korean (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 KR1020180105917A priority Critical patent/KR101941274B1/en
Application granted granted Critical
Publication of KR101941274B1 publication Critical patent/KR101941274B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Quality & Reliability (AREA)
  • Hardware Redundancy (AREA)

Abstract

The present invention relates to a system and method for changing an application for security while driving the same without interruption. The method for driving an application without interruption comprises: a step in which an agent terminal drives a first application, which is a first version for a specific application, in a first target terminal; a step in which the agent terminal receives a variation code related to the specific application from an application variation server; a step in which the agent terminal generates a second application, which is a second version for the specific application, in a second target terminal wherein the second application replaces a part code of the specific application with the variation code; and a step in which the agent terminal stops the first application in the first target terminal, and drives the second application in the second target terminal.

Description

중단없는 애플리케이션 구동 방법 및 장치 {METHOD AND APPARATUS FOR ACTUATING AN APPLICATION WITHOUT CESSATION}[0001] METHOD AND APPARATUS FOR ACTUATING AN APPLICATION WITHOUT CESSATION [0002]

본 발명은 해킹 시도로부터 애플리케이션을 보호하는 기술에 관한 것이다. 보다 구체적으로, 본 발명은 해킹으로부터 애플리케이션을 보호하기 위하여 애플리케이션의 일부 코드를 지속적으로 변경하면서도 애플리케이션을 중단없이 실행시키는 기술에 관한 것이다.The present invention relates to techniques for protecting applications from hacking attempts. More particularly, the present invention relates to a technique for continuously running an application while continuously changing some code of an application to protect the application from hacking.

스마트폰 등 첨단 기기가 점점 생활에서 중요한 역할을 수행하면서 사용자가 필요한 다양한 개인 정보를 첨단 기기에 저장하게 되었다. 또한, 다수의 기기를 제어하는 서버의 경우에도 다양한 공공 정보를 서버에 저장하게 되었다. 이러한 첨단 기기는 네트워크 상에 연결되어 정보를 주고받는 경우가 많다. 따라서, 스마트폰이 분실되거나 또는 해킹되거나 또는 서버가 해킹되는 경우에는, 치명적인 개인 정보 또는 공공 정보가 외부에 그대로 노출되는 위험성이 증대하고 있다. Advanced devices such as smart phones have played an important role in life, and users have stored various personal information in advanced devices. Also, in case of a server that controls a plurality of devices, various public information is stored in the server. These advanced devices are often connected to the network to exchange information. Therefore, when the smartphone is lost, hacked, or the server is hacked, the risk of exposure of fatal personal information or public information to the outside is increasing.

보안 기술의 발전과 함께 정보를 훔치려는 해킹 기술들 역시 발전하고 있다.Along with the development of security technologies, hacking techniques to steal information are also evolving.

해킹 기술에서 많이 사용되는 방법 중 하나가 역 공학 (Reverse engineering) 이다. Reverse engineering is one of the most used methods in hacking technology.

역 공학(Reverse Engineering) 은 애플리케이션을 개발하는 과정의 반대 과정으로 이해할 수 있다. 일반적으로 애플리케이션의 개발 과정은 소스 코드에서 컴파일(Compile) 및 패키징(Packaging)을 통해 설치파일을 생성하는 과정을 거친다. 위와 반대로, 역 공학은 설치 파일에서부터 패키징, 컴파일, 소스 코드로 진행하는 과정을 거쳐서 소스 코드를 확인하는 과정을 거친다. Reverse engineering can be understood as the reverse of the process of developing an application. Generally, the process of developing an application is through compilation and packaging from the source code to generate the installation files. On the contrary, reverse engineering is the process of checking the source code through installation files, packaging, compiling, and source code.

역 공학은 주로 개발 과정에서의 문제점을 찾거나 소스 코드가 미공개된 경우에 제품의 하자를 보수하기 위한 목적으로 시작된 기술이다. 하지만, 최근에는, 경쟁 제품의 핵심 기술을 도용하거나 아이디어를 차용하기 위한 목적으로 해킹을 위한 수단으로서 내부 시스템의 구조를 파악하기 위한 목적으로 광범위하게 활용되고 있다. Reverse engineering is a technique that is primarily aimed at finding defects in the development process or repairing defects in the product if the source code is undisclosed. However, in recent years, it has been used extensively for the purpose of grasping the structure of internal systems as a means of hacking for the purpose of stealing key technologies of competitive products or borrowing ideas.

역 공학은 리-패키징(Repackaging) 기술과 더불어 해커에 의해 악용되기 쉽다. 애플리케이션을 역 공학으로 소스 코드 수준까지 분석한 뒤 중요 코드를 수정하여 다시 컴파일 및 패키징할 수 있다. 이를 통하여 유사 애플리케이션을 만들어 배포하는 경우, 선의의 사용자로부터 개인 정보 및 공공 정보를 탈취하여 원래 애플리케이션이 의도하지 않은 행위를 유발할 수 있다. Reverse engineering is easily exploited by hackers, along with repackaging techniques. You can reverse-engineer your application to the source code level and then recompile and package critical code. When creating and distributing similar applications through this, it is possible for the original application to steal personal information and public information from a good user and cause unintended behavior of the original application.

이러한 역 공학등의 해킹 시도에 대한 보호 기술로서, 애플리케이션의 전체 코드 또는 일부 코드를 계속적으로 변경하는 방법이 제안되고 있다. 이전의 해킹 시도로 기존 애플리케이션 코드가 노출되더라도 주기적 또는 비주기적으로 애플리케이션 코드가 변경된 경우, 노출된 코드와는 다른 코드로 애플리케이션이 실행되기 때문에, 애플리케이션 기능을 안전하게 보호할 수 있다. As a protection against hacking attempts such as reverse engineering, a method of continuously changing the entire code of the application or a part of the code has been proposed. If an application code is changed periodically or aperiodically, even if the previous application code is exposed by a previous hacking attempt, the application function can be safeguarded because the application runs in a different code than the exposed code.

하지만, 이러한 변경 방식은 서버 또는 장치를 애플리케이션을 변경시 애플리케이션 서비스를 중단하고 애플리케이션을 재구동시켜야 하므로, 기능 중단이라는 부작용이 발생할 수 있다.However, such a change may cause a side effect of shutting down the application because the server or device needs to stop the application service and restart the application when the application is changed.

본 발명은, 애플리케이션 보안을 위해서 애플리케이션을 지속적으로 변경하면서도 중단없는 애플리케이션 실행을 위한 이중화 서버 구조를 제공할 수 있다. The present invention can provide a redundant server structure for continuous application execution while continuously changing applications for application security.

또한, 본 발명은, 애플리케이션 변경하면서 중단없는 애플리케이션 실행을 위해서 가상 공간을 활용한 단일 서버 구조를 제공할 수 있다.In addition, the present invention can provide a single server structure utilizing virtual space for application execution without interruption while changing applications.

본 발명의 중단없는 애플리케이션 구동 방법은 에이전트 단말이 특정 애플리케이션에 대한 제 1 버전인 제 1 애플리케이션을 제 1 타깃 단말에서 구동시키는 단계; 상기 에이전트 단말이 애플리케이션 변이 서버로부터 상기 특정 애플리케이션에 관련된 변이 코드를 수신하는 단계; 상기 에이전트 단말이 상기 특정 애플리케이션에 대한 제 2 버전인 제 2 애플리케이션을 제 2 타깃 단말에 생성하는 단계로써, 상기 제 2 애플리케이션은 상기 특정 애플리케이션의 일부 코드를 상기 변이 코드로 대체한 것인, 상기 생성 단계; 및 상기 에이전트 단말이 상기 제 1 타깃 단말에서 상기 제 1 애플리케이션을 중단시키고, 상기 제 2 타깃 단말에서 상기 제 2 애플리케이션을 구동시키는 단계를 포함한다. A method of running an uninterrupted application of the present invention includes: causing an agent terminal to run a first application at a first target terminal, the first application being a first version for a particular application; The agent terminal receiving a variation code associated with the specific application from an application variation server; Wherein the agent terminal generates a second application, a second version for the specific application, at a second target terminal, wherein the second application replaces some code of the specific application with the mutation code, step; And suspending the first application at the first target terminal and the second application at the second target terminal.

중단없는 애플리케이션 구동 방법은 상기 에이전트 단말이 상기 제 2 타깃 단말에서 상기 제 2 애플리케이션이 정상 구동하는 지를 테스트하도록 제어하는 단계를 더 포함하며, 정상 구동하는 경우에 한하여, 상기 제 2 애플리케이션을 구동시키는 단계를 진행한다. 한편, 상기 테스트 단계에서, 정상 구동되지 않는 경우, 상기 에이전트 단말은 상기 애플리케이션 변이 서버에 에러 정보를 송신하는 단계; 및 상기 에이전트 단말은 이력 정보에 변이 실패 정보를 추가하는 단계를 포함한다. Wherein the method further comprises controlling the agent terminal to test whether the second application is normally operating in the second target terminal, and when the agent terminal is in the normal operation, executing the second application . Meanwhile, in the testing step, if the normal operation is not performed, the agent terminal transmits error information to the application server. And the agent terminal includes adding transition failure information to the history information.

중단없는 애플리케이션 구동 방법은 상기 제 2 애플리케이션을 구동시키는 단계에서, 상기 에이전트 단말은 상기 제 1 타깃 단말은 액티브 모드에서 스탠바이 모드로 변경시키고, 상기 제 2 타깃 단말은 스탠바이 모드에서 액티브 모드로 변경시키며, 상기 변경은 동시에 이루어지는 것을 특징으로 한다.Wherein the agent terminal changes the first target terminal from the active mode to the standby mode and the second target terminal changes from the standby mode to the active mode in the step of driving the second application, And the change is made simultaneously.

중단없는 애플리케이션 구동 방법은 상기 제 1 애플리케이션과 상기 제 2 애플리케이션은 상기 특정 애플리케이션의 상이한 버전이며, 기능 동작은 동일하다. A method of running an uninterrupted application is such that the first application and the second application are different versions of the particular application and the functional operation is the same.

중단없는 애플리케이션 구동 방법은 상기 제 2 애플리케이션을 구동시키는 단계 이후, 상기 에이전트 단말이 상기 제 1 타깃 단말에 상기 제 1 애플리케이션의 일부 코드를 상기 변이 코드로 대체하여 상기 제 2 애플리케이션을 생성하는 단계; 상기 에이전트 단말이 상기 제 1 타깃 단말에서 상기 제 2 애플리케이션이 정상 구동하는 지를 테스트하도록 제어하는 단계; 및 정상 구동하는 경우에 한하여, 상기 에이전트 단말이 상기 제 2 타깃 단말에서 상기 제 2 애플리케이션을 중단시키고, 상기 제 1 타깃 단말에서 상기 제 2 애플리케이션을 구동시키는 단계를 더 포함한다. 여기에서, 상기 에이전트 단말이 상기 변이 코드 및 상기 생성된 제 2 애플리케이션과 관련된 정보를 이력 정보에 추가하는 단계를 더 포함하며, 상기 이력 정보는 상기 특정 애플리케이션에 대한 원본 정보 및 상기 제 1 애플리케이션 관련된 정보가 기저장된다. 또한, 중단없는 애플리케이션 구동 방법은 상기 에이전트 단말이 상기 제 2 애플리케이션 실행 에러를 확인하는 단계; 및 상기 에이전트 단말이 상기 이력 정보를 활용하여 상기 제 1 애플리케이션을 상기 제 1 타깃 단말에서 재구동시키는 단계를 더 포함한다. A method for operating an application without interruption includes the steps of: after the step of driving the second application, the agent terminal replaces the first code of the first application with the mutation code to generate the second application; Controlling the agent terminal to test whether the second application is operating normally in the first target terminal; And causing the agent terminal to stop the second application at the second target terminal and to start the second application at the first target terminal only when normal operation is performed. Wherein the agent terminal further comprises the step of adding the mutation code and information associated with the generated second application to the history information, wherein the history information includes source information for the particular application and the first application related information Is stored. In addition, a method of operating an application without interruption includes the steps of the agent terminal confirming the second application execution error; And causing the agent terminal to use the history information to restart the first application at the first target terminal.

중단없는 애플리케이션 구동 방법은 상기 제 2 애플리케이션을 구동시키는 단계 이후, 상기 에이전트 단말이 상기 애플리케이션 변이 서버로부터 상기 변이 코드와 상이한 제 2 변이 코드를 수신하는 단계; 상기 에이전트 단말이 상기 특정 애플리케이션에 대한 제 3 버전인 제 3 애플리케이션을 제 1 타깃 단말에 생성하는 단계로써, 상기 제 3 애플리케이션은 상기 특정 애플리케이션의 상기 일부 코드를 상기 제 2 변이 코드로 대체한 것인, 상기 생성 단계; 상기 에이전트 단말이 상기 제 2 타깃 단말에서 상기 제 2 애플리케이션을 중단시키고, 상기 제 1 타깃 단말에서 상기 제 3 애플리케이션을 구동시키는 단계를 더 포함한다. 여기에서, 중단없는 애플리케이션 구동 방법은 상기 에이전트 단말이 상기 제 1 타깃 단말에서 상기 제 3 애플리케이션이 정상 구동하는 지를 테스트하는 단계를 더 포함하며, 정상 구동하는 경우에 한하여, 상기 제 3 애플리케이션을 구동시키는 단계를 진행한다. A method of running an application without interruption includes: after the step of running the second application, the agent terminal receiving a second mutation code different from the mutation code from the application server; Wherein the agent terminal generates a third application, which is a third version for the specific application, at the first target terminal, wherein the third application replaces the partial code of the specific application with the second mutation code , The generating step; The agent terminal suspends the second application at the second target terminal and activates the third application at the first target terminal. Here, the non-interruptible application driving method further includes a step of the agent terminal testing whether the third application is normally running in the first target terminal, and only when the third application is running normally, Proceed to step.

본 발명의 다른 실시예에 따르면, 에이전트 프로그램이 설치된 단말기에 있어서, 상기 에이전트 프로그램은, 특정 애플리케이션에 대한 제 1 버전인 제 1 애플리케이션을 제 1 타깃 단말에서 구동시키고, 애플리케이션 변이 서버로부터 상기 특정 애플리케이션에 관련된 변이 코드를 수신하고, 상기 특정 애플리케이션에 대한 제 2 버전인 제 2 애플리케이션을 제 2 타깃 단말에 생성하고, 상기 제 2 타깃 단말에서 상기 제 2 애플리케이션이 정상 구동하는 지를 테스트하도록 제어하고, 정상 구동하는 경우에 한하여, 상기 제 1 타깃 단말에서 상기 제 1 애플리케이션을 중단시키고, 상기 제 2 타깃 단말에서 상기 제 2 애플리케이션을 구동시키도록 프로그래밍된 것을 특징으로 하며, 상기 제 2 애플리케이션은 상기 특정 애플리케이션의 일부 코드를 상기 변이 코드로 대체한 것이다. According to another embodiment of the present invention, there is provided a terminal equipped with an agent program, wherein the agent program executes a first application, which is a first version for a specific application, from a first target terminal, A second target terminal for generating a second application for the specific application in the second target terminal and controlling the second target terminal to test whether the second application is normally operated, The second application is programmed to stop the first application at the first target terminal and to run the second application at the second target terminal only if the first application is part of the specific application, The above code Code.

상기 단말기는 상기 제 1 애플리케이션과 상기 제 2 애플리케이션은 상기 특정 애플리케이션의 상이한 버전으로 기능 동작은 동일한 것을 특징으로 한다.Wherein the terminal is characterized in that the first application and the second application are different versions of the specific application and the functional operation is the same.

또한, 상기 단말기는 이력 정보를 저장하며, 상기 에이전트 프로그램은 상기 변이 코드 및 상기 제 2 애플리케이션과 관련된 정보를 상기 이력 정보에 추가하고, 상기 이력 정보는 상기 특정 애플리케이션에 대한 원본 정보 및 상기 제 1 애플리케이션이 기저장되어 있는 것을 특징으로 한다. The terminal also stores history information, and the agent program adds the mutation code and information related to the second application to the history information, and the history information includes source information for the specific application, And this period is stored.

본 발명의 또 다른 실시예에 따르면, 애플리케이션 구동 단말은 특정 애플리케이션에 대한 제 1 버전인 제 1 애플리케이션을 저장하는 저장부; 및 상기 제 1 애플리케이션을 포함한 애플리케이션의 동작을 제어하며, 상기 제 1 애플리케이션을 상기 저장부에서 구동시키는 에이전트부를 포함하며, 상기 에이전트부는, 애플리케이션 변이 서버로부터 상기 특정 애플리케이션에 관련된 변이 코드를 수신한 경우, 상기 특정 애플리케이션에 대한 제 2 버전인 제 2 애플리케이션을 상기 애플리케이션 구동 단말내 가상 공간에 생성하고, 상기 저장부에서 상기 제 1 애플리케이션을 중단시키고, 상기 가상 공간에서 상기 제 2 애플리케이션을 구동하도록 제어하며, 상기 제 2 애플리케이션은 상기 특정 애플리케이션의 일부 코드를 상기 변이 코드로 대체한 것이다.According to another embodiment of the present invention, an application-driven terminal comprises: a storage unit for storing a first application, which is a first version for a specific application; And an agent unit for controlling operations of the application including the first application and driving the first application in the storage unit, wherein when the mutation code relating to the specific application is received from the application mutation server, Generating a second application, which is a second version for the specific application, in the virtual space in the application-activated terminal, stopping the first application in the storage unit, and controlling the second application in the virtual space, The second application replaces some code of the specific application with the mutation code.

또한, 상기 에이전트부는, 상기 가상 공간에서 상기 제 2 애플리케이션이 정상 구동하는 지를 테스트하고, 정상 구동하는 경우에 한하여, 상기 제 2 애플리케이션을 구동시키도록 제어한다. Further, the agent unit tests whether the second application is normally operated in the virtual space, and performs control to drive the second application only when the second application is normally running.

또한, 상기 가상 공간은 가상 콘테이너 (virtual container) 이다.In addition, the virtual space is a virtual container.

상기 에이전트부는, 상기 가상 공간에 상기 제 2 애플리케이션을 구동시킨 후, 상기 저장부에 상기 제 1 애플리케이션의 일부 코드를 상기 변이 코드로 대체하여 상기 제 2 애플리케이션을 생성하고, 상기 저장부에서 상기 제 2 애플리케이션이 정상 구동하는 경우에 한하여, 상기 가상 공간에서 상기 제 2 애플리케이션을 중단시키고, 상기 저장부에서 상기 제 2 애플리케이션을 구동시키도록 제어한다. 여기에서, 애플리케이션 구동 단말은 상기 저장부에서 상기 제 2 애플리케이션을 구동시킨 후, 상기 가상 공간을 삭제하도록 제어한다. Wherein the agent unit generates the second application by replacing some code of the first application with the mutation code in the storage unit after driving the second application in the virtual space, The second application is stopped in the virtual space only when the application is normally running, and the storage unit controls to drive the second application. Here, the application driving terminal controls to delete the virtual space after driving the second application in the storage unit.

본 발명의 또 다른 실시예에 따르면, 중단없는 애플리케이션 구동 방법은 애플리케이션 구동 단말이 특정 애플리케이션에 대한 제 1 버전인 제 1 애플리케이션을 저장부에서 구동시키는 단계; 애플리케이션 변이 서버로부터 상기 특정 애플리케이션에 관련된 변이 코드를 수신하는 단계; 상기 특정 애플리케이션에 대한 제 2 버전인 제 2 애플리케이션을 가상 공간에 생성하는 단계로써, 상기 제 2 애플리케이션은 상기 특정 애플리케이션의 일부 코드를 상기 변이 코드로 대체한 것인, 상기 생성 단계; 상기 가상 공간에서 상기 제 2 애플리케이션이 정상 구동하는 지를 테스트하는 단계; 및 정상 구동하는 경우에 한하여, 상기 저장부에서 상기 제 1 애플리케이션을 중단시키고, 상기 가상 공간에서 상기 제 2 애플리케이션을 구동시키는 단계를 포함한다.According to another embodiment of the present invention, a method for running an application without interruption includes the steps of causing an application-driven terminal to execute a first application, which is a first version for a specific application, in a storage unit; Receiving a variation code associated with the specific application from an application variation server; Generating a second application, which is a second version for the specific application, in the virtual space, wherein the second application replaces a part of the code of the specific application with the mutation code; Testing whether the second application is operating normally in the virtual space; And stopping the first application in the storage unit and driving the second application in the virtual space only when normal driving is performed.

여기에서, 상기 제 1 애플리케이션과 상기 제 2 애플리케이션은 상기 특정 애플리케이션의 상이한 버전이며, 기능 동작은 동일하며, 상기 가상 공간은 가상 콘테이너 (virtual container) 이다.Here, the first application and the second application are different versions of the specific application, the functional operation is the same, and the virtual space is a virtual container.

본 발명의 적어도 하나의 실시 형태에 따르면, 서버 시스템 구조에서 구동되는 애플리케이션을 지속적으로 변경하여 보안을 유지하는 효과를 제공할 수 있다.According to at least one embodiment of the present invention, it is possible to provide an effect of continuously changing an application running in a server system structure to maintain security.

또한, 본 발명은 애플리케이션을 지속적으로 변경하면서도 변경 과정에서 실행이 중단되지 않아서, 연속적인 애플리케이션 실행을 보장하는 효과를 제공할 수 있다.Further, the present invention can provide an effect of guaranteeing continuous application execution because the application is continuously changed while the execution is not interrupted in the change process.

도 1은 이중화 구조에 따라 애플리케이션 변이 서버와 타깃 서버들간 시스템 구성도를 도시한 도면.
도 2는 이중화 구조에 따라 애플리케이션 적용 동작의 1 실시예를 도시한 도면.
도 3는 이중화 구조에 따라 애플리케이션 적용 동작의 2 실시예를 도시한 도면.
도 4은 이중화 구조에 따라 애플리케이션 적용 동작의 3 실시예를 도시한 도면.
도 5은 단일 구조에 따라 애플리케이션 변이 서버와 타깃 서버의 시스템 구성도를 도시한 도면.
도 6은 단일 구조에 관련된 가상 콘테이너 구조를 설명하는 도면.
도 7은 단일 구조에 따라 애플리케이션 적용 동작의 1 실시예를 도시한 도면.
도 8(a)는 단일 구조에 따라 애플리케이션 적용 동작의 2 실시예를 도시한 도면.
도 8(b)는 단일 구조에 따라 애플리케이션 적용 동작의 3 실시예를 도시한 도면.
도 9는 애플리케이션에 대한 변이 코드 적용의 예를 도시한 도면.
1 is a diagram showing a system configuration diagram between an application server and a target server according to a redundancy structure;
Figure 2 illustrates one embodiment of an application application operation in accordance with a redundancy structure;
Figure 3 illustrates two embodiments of an application application operation in accordance with a redundancy structure;
Figure 4 illustrates three embodiments of an application application operation in accordance with a redundancy structure;
5 illustrates a system configuration diagram of an application server and a target server according to a single structure;
6 is a view for explaining a virtual container structure related to a single structure;
Figure 7 illustrates one embodiment of an application application operation in accordance with a single structure;
Figure 8 (a) illustrates two embodiments of an application application operation in accordance with a single structure;
Figure 8 (b) illustrates three embodiments of an application application operation in accordance with a single architecture;
9 is a diagram showing an example of application of a variation code to an application;

이하, 본 발명과 관련된 이동 단말기에 대하여 도면을 참조하여 보다 상세하게 설명한다. 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다. Hereinafter, a mobile terminal related to the present invention will be described in detail with reference to the drawings. The suffix "module" and " part "for the components used in the following description are given or mixed in consideration of ease of specification, and do not have their own meaning or role.

본 명세서에서 설명되는 단말 또는 단말기는 서버, 휴대폰, 스마트 폰(smart phone), 노트북 컴퓨터(laptop computer), 디지털방송용 단말기, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 네비게이션 등이 포함될 수 있다. 그러나, 본 명세서에 기재된 실시형태에 따른 구성은 이동 단말기에만 적용 가능한 경우를 제외하면, 디지털 TV, 데스크탑 컴퓨터 등과 같은 고정 단말기에도 적용될 수도 있음을 본 기술분야의 당업자라면 쉽게 알 수 있을 것이다. 본 명세서에서는 설명의 편의를 위해서 '서버'로 설명하였으나, 이는 동일 기능을 가진 단말 또는 단말기로 표현될 수도 있다.The terminal or terminal described herein may include a server, a mobile phone, a smart phone, a laptop computer, a digital broadcasting terminal, a PDA (personal digital assistant), a portable multimedia player (PMP) have. However, it will be readily apparent to those skilled in the art that the configuration according to the embodiments described herein may be applied to a fixed terminal such as a digital TV, a desktop computer, or the like, except when applicable only to a mobile terminal. In the present specification, the term 'server' is used for the sake of convenience of description, but it may be expressed as a terminal or a terminal having the same function.

도 1은 본 발명의 이중화 구조에 따른 애플리케이션 변이 서버, 타깃 서버들간의 시스템 구성도이다.1 is a system configuration diagram between an application server and a target server according to the redundancy structure of the present invention.

본 발명은 애플리케이션의 중단없는 실행을 위하여 서버 이중화 구조를 활용할 수 있다. 본 발명에서 말하는 이중화 구조란 애플리케이션 실행 및 중단없는 동작을 위해서 2개의 서버를 사용하는 구조를 의미한다.The present invention can utilize a server redundancy structure for uninterrupted execution of an application. The redundant structure referred to in the present invention means a structure using two servers for application execution and uninterrupted operation.

도 1을 참고하면, 제 1 타깃 서버 (110), 제 2 타깃 서버 (120) 의 2개의 서버 구조를 지니고 있다. 클라이언트 단말 (160), 제 1 타깃 서버 (110), 제 2 타깃 서버 (120), 애플리케이션 변이 서버 (140), 에이전트부 (130) 및 이중화 장치(135)가 도시된다. Referring to FIG. 1, the first server 110 and the second target server 120 have two server structures. A client terminal 160, a first target server 110, a second target server 120, an application server 140, an agent unit 130 and a duplication device 135 are shown.

제 1 타깃 서버(110) 및 제 2 타깃 서버(120)는 애플리케이션을 저장하고 애플리케이션을 실행하는 장치이다. 타깃 서버 (110 또는 120) 은 고정형 또는 이동형 단말기일 수 있다. 제 1 타깃 서버 (110) 는 통신부(112), 제어부(114), 및 저장부 (116) 을 포함할 수 있다. 도면에는 도시되지 않으나, 필요에 따라서 사용자 입력부 및 출력부를 포함할 수도 있다. 제 2 타깃 서버 (120) 도 역시 통신부 (122), 제어부 (124), 및 저장부 (126) 를 포함할 수 있다.The first target server 110 and the second target server 120 are devices that store applications and execute applications. The target server 110 or 120 may be a fixed or mobile terminal. The first target server 110 may include a communication unit 112, a control unit 114, and a storage unit 116. Although not shown in the figure, it may include a user input portion and an output portion as necessary. The second target server 120 may also include a communication unit 122, a control unit 124, and a storage unit 126.

제 1 타깃 서버(110)와 제 2 타깃 서버(120) 은 처리 속도나 저장 용량등 성능면에서 동일할 수도 있지만, 어느 한 서버가 더 좋은 성능을 가지도록 설정될 수 있다. 예를 들어, 성능이 보다 우수한 제 1 타깃 서버 (110) 를 주 서버로 설정하고, 제 2 타깃 서버 (120) 를 보조 서버로 설정할 수 있다. 그에 따라, 애플리케이션의 주요 실행은 주 서버인 제 1 타깃 서버(110)에서 실행을 하되, 애플리케이션 변경등 이슈가 생길 경우에 한하여 보조 서버인 제 2 타깃 서버 (120)를 사용할 수도 있다. The first target server 110 and the second target server 120 may be identical in terms of performance such as processing speed and storage capacity, but may be set so that one server has better performance. For example, the first target server 110 having higher performance may be set as a main server, and the second target server 120 may be set as an auxiliary server. Accordingly, the main execution of the application is executed by the first target server 110 which is the main server, but only when the issue of the application change occurs, the second target server 120 which is an auxiliary server may be used.

도면에서는, 에이전트부 (130) 는 제 1 타깃 서버 (110) 에 포함된 것처럼 도시되었다. 하지만, 다른 설계에 따라서, 에이전트부 (130) 는 제 1 타깃 서버 (110) 및 제 2 타깃 서버 (120) 와는 별개의 독립적인 장치로 구성될 수도 있다. 기능적으로도 에이전트부 (130) 는 두개의 서버에서 운영되는 애플리케이션에 대한 변이 동작을 제어할 수 있어서, 제 1 타깃 서버 (110) 및 제 2 타깃 서버 (120) 과 기능면에서 독립적으로 동작할 수 있다. In the figure, the agent unit 130 is shown as being included in the first target server 110. However, according to another design, the agent unit 130 may be configured as an independent device separate from the first target server 110 and the second target server 120. [ Functionally, the agent unit 130 can control the mutual operation for the applications running on the two servers so that it can operate independently of the first target server 110 and the second target server 120 have.

이중화 장치 (135) 도 역시 도면에서는 제 1 타깃 서버 (110) 에 포함된 것처럼 도시되었지만, 이중화 장치 (135) 도 역시 제 1 타깃 서버 (110) 및 제 2 타깃 서버 (120) 와는 별개의 장치로 구성될 수도 있다.Although the duplication device 135 is also shown as being included in the first target server 110, the duplication device 135 is also a device separate from the first target server 110 and the second target server 120 .

애플리케이션 변이 서버 (140) 는 타깃 서버 (110) 에 설치된 애플리케이션을 관리하는 서버이다. 구체적으로, 애플리케이션의 일부 코드를 지속적으로 변이 코드로 대체하도록 관리하는 서버이다. 애플리케이션 변이 서버 (140) 는 통신부 (142), 제어부 (144) 및 저장부 (146) 를 포함할 수도 있다. The application variation server 140 is a server that manages an application installed in the target server 110. Specifically, it is a server that manages to replace some code of an application with a mutation code continuously. The application variation server 140 may include a communication unit 142, a control unit 144, and a storage unit 146. [

통신부 (112) 는 제 1 타깃 서버 (110) 과 외부 네트워크 사이 또는 타깃 단말 (110) 의 통신이나 이중화 장치 (135) 를 통한 클라이언트 단말 (160) 과의 통신, 애플리케이션 변이 서버 (140) 가 위치한 네트워크 사이의 통신을 가능하게 하는 하나 이상의 모듈을 포함할 수 있다. 통신부 (112) 는 에이전트부 (130) 로부터 변이 코드등 다양한 정보를 송수신할 수도 있다. 도면에는 미도시되었으나, 경우에 따라, 통신부 (112) 는 제 2 타깃 서버 (120) 의 통신부 (122) 와 직접 통신할 수도 있다.The communication unit 112 communicates with the first target server 110 and the external network or between the target terminal 110 and the client terminal 160 through the duplication unit 135, Lt; RTI ID = 0.0 > and / or < / RTI > The communication unit 112 may transmit and receive various information such as a mutual code from the agent unit 130. [ Although not shown in the figure, the communication unit 112 may directly communicate with the communication unit 122 of the second target server 120, as the case may be.

타깃 서버의 통신부 (112, 122) 는 네트워크를 통하여 애플리케이션 저장 서버등으로부터 애플리케이션을 다운로드받을 수도 있다. 선택적으로, 애플리케이션을 에이전트부 (130) 로부터 수신할 수도 있다. 또한, 통신부 (112 및 122) 는 애플리케이션 변이 서버 (130) 가 에이전트부 (130) 에 제공한 변이 코드등 다양한 정보를 수신할 수 있다. The communication units 112 and 122 of the target server may download the application from the application storage server or the like via the network. Optionally, an application may be received from the agent portion 130. The communication units 112 and 122 may receive various information such as a mutation code provided by the application server 130 to the agent unit 130. [

또한, 제 1 타깃 서버의 통신부 (112) 는 이중화 장치 (135) 를 통하여 클라이언트 단말 (160) 로부터 서비스 요청등 다양한 신호를 송수신할 수 있다. 제 1 타깃 서버 (110) 가 액티브 모드로써 애플리케이션이 동작 중인 경우, 이중화 장치(135)가 제 1 타깃 서버의 통신부 (112)에 서비스 요청을 전달할 수 있다. 서비스 요청에 대한 응답은 제 1 타깃 서버의 통신부 (112) 가 이중화 장치 (135) 를 통하지 않고 직접 클라이언트 단말 (160) 에 전달할 수 있다.The communication unit 112 of the first target server can transmit and receive various signals such as a service request from the client terminal 160 through the duplexer 135. When the first target server 110 is in the active mode and the application is running, the duplication device 135 may transmit the service request to the communication unit 112 of the first target server. The response to the service request may be transmitted directly to the client terminal 160 by the communication unit 112 of the first target server without going through the duplication unit 135. [

이중화 장치 (135) 는 클라이언트 단말 (160) 로부터의 서비스 요청 신호를 수신한다. 클라이언트 단말 (160) 은 제 1 타깃 서버 (110) 및 제 2 타깃 서버 (120) 전체 즉, 이중화 서버에 접속할 때, 공인 IP (public IP)로 접속하게 된다. 즉, 외부 네트워크를 통해서 클라이언트 단말 (160) 이 공인 IP로 이중화 서버 또는 서버 시스템에 접속할 때 이중화 장치 (135) 에 접속하게 된다. 공인 IP 를 통해서 이중화 서버에 접속 후 내부 네트워크 (제 1 타깃 서버, 제 2 타깃 서버) 사이에서는 내부 네트워크 주소를 이용하여 서로 접속한다. The duplexer 135 receives a service request signal from the client terminal 160. The client terminal 160 accesses the entirety of the first target server 110 and the second target server 120, that is, the redundant server, through a public IP. That is, when the client terminal 160 connects to the redundant server or the server system through the public IP through the external network, the client terminal 160 is connected to the redundant device 135. After connecting to the redundant server through public IP, the internal network (the first target server and the second target server) are connected to each other using the internal network address.

이중화 장치 (135) 가 클라이언트 단말 (160)로부터 접속되어 서비스 요청을 수신한 경우, 네트워크 요청자(TCP IP 프로토콜 구성 내역)에 따라 제 1 타깃 서버 또는 제 2 타깃 서버에 요청을 전달한다. 이중화 장치 (135) 는 서비스 요청을 수신한 경우, 제 1 타깃 서버와 제 2 타깃 서버 둘 중에 액티브 모드인, 즉, 애플리케이션이 실행 중인 서버에 서비스 요청을 전달한다. 한편, 이중화 장치의 예로써, 로드 밸런서, L4 스위치가 존재한다. When the duplication device 135 is connected to the client terminal 160 and receives the service request, the duplication device 135 delivers the request to the first target server or the second target server according to the network requestor (TCP IP protocol configuration details). When the duplication device 135 receives the service request, it transfers the service request to the first target server and the second target server in the active mode, that is, the server in which the application is running. On the other hand, as an example of the duplexer, there is a load balancer, L4 switch.

제어부(controller, 114, 124)는 타깃 서버 (110, 120) 의 전반적인 동작을 제어한다. 예를 들어, 제어부는 자체의 기능뿐 아니라, 통신부 (112, 122) 및 저장부 (116, 126) 의 다양한 기능을 제어할 수도 있다. 제어부 (114, 124) 는 타깃 서버 (110, 120) 에 설치된 애플리케이션을 수행할 수 있다.The controllers 114 and 124 control the overall operation of the target servers 110 and 120. For example, the control unit may control various functions of the communication units 112 and 122 and the storage units 116 and 126 in addition to the functions of the control unit itself. The control units 114 and 124 can execute applications installed in the target servers 110 and 120. [

제어부 (114, 124) 는 에이전트부 (130) 의 지시에 따라서 애플리케이션을 수신된 변이 코드를 적용하여 변경할 수 있다. 또한, 변경을 위하여 애플리케이션의 구동을 중지시킬 수도 있다.The control units 114 and 124 can change the application by applying the received mutation code according to an instruction from the agent unit 130. [ It is also possible to stop the application from running for a change.

제어부 (114, 124) 는 에이전트부 (140) 와 다른 에이전트 프로그램을 더 포함할 수 있다. 애플리케이션 변이 코드 대체등의 기능은 에이전트 프로그램을 통하여 수행할 수 있다. 에이전트 프로그램은 다수의 애플리케이션의 코드 대체와 관련된 기능을 수행할 수도 있다. 동적으로 애플리케이션의 코드 또는 모듈을 변경하고, 애플리케이션을 재구동(Re-loading) 시켜 실행 프로세스 교체가 일어나게 되는데, 애플리케이션에 따라서 실행 중단 후 재 구동 과정을 거치는 경우가 발생할 수 있거나 실행이 중단되지 아니하고 일부 구성 모듈만 재 구동이 가능한 경우가 있을 수도 있다. 이때 에이전트 프로그램은 백그라운드 서비스로 구동되는 것이 바람직하다. 사용자에게는 보이지 아니하며, 애플리케이션 구동에 자연스럽게 변형을 발생시키는 것이 서비스 관점에서 이상적이기 때문이다. The control units 114 and 124 may further include an agent program different from the agent unit 140. Application mutation code replacement functions can be performed through the agent program. The agent program may perform functions related to code substitution of multiple applications. A change of the application code or a module is dynamically performed and the application is re-loaded to cause the replacement of the execution process. Depending on the application, there may occur a case where the application is restarted after the execution is stopped, There may be cases where only the configuration module can be restarted. At this time, the agent program is preferably operated as a background service. This is because it is not visible to the user, and it is ideal from the service point of view to naturally cause the transformation to run in the application.

에이전트부 (140) 는 애플리케이션 변이 서버 (140) 로부터 변이 코드를 수신받고, 해당 변이 코드를 제 1 타깃 서버 (110) 또는 제 2 타깃 서버 (120) 에 전달할 수 있다. 에이전트부 (140) 는 현재 애플리케이션이 구동 중인 타깃 서버를 계속 확인한다. 예를 들어, 제 1 타깃 서버가 액티브 모드이고, 제 2 타깃 서버가 스탠바이 모드라는 상태 정보를 계속적으로 확인한다. 확인한 상태에 기초하여, 변이 코드를 타깃 서버들에 제공하고, 경우에 따라서는 애플리케이션 구동 지시, 중단 지시등을 내릴 수 있다.The agent unit 140 receives the mutation code from the application mutation server 140 and may transmit the mutation code to the first target server 110 or the second target server 120. [ The agent unit 140 continuously checks the target server on which the application is currently running. For example, the first target server is in the active mode and the second target server continuously checks the status information that it is the standby mode. Based on the confirmed state, the mutation code may be provided to the target servers, and in some cases, the application start instruction, the stop indication, and the like may be issued.

저장부 (116, 126) 는 제어부(114, 124)의 처리 및 제어를 위한 프로그램이 저장될 수도 있고, 입/출력되는 데이터들(예를 들어, 애플리케이션 코드 변이를 위한 변이 코드 등)의 저장을 위한 기능을 수행할 수도 있다.The storage units 116 and 126 may store programs for processing and controlling the control units 114 and 124 and store the input / output data (for example, mutation codes for application code mutation) For example.

제 1 타깃 서버 (110) 와 제 2 타깃 서버 (120) 는 기능적으로 유사하다. 다만, 선택적으로, 제 1 타깃 서버(110) 가 주 서버로써 에이전트부 (130) 를 추가적으로 포함할 수 있다.The first target server 110 and the second target server 120 are functionally similar. Alternatively, the first target server 110 may additionally include the agent unit 130 as a main server.

한편, 애플리케이션 변이 서버 (140) 는 타깃 서버와 유사한 구조를 가진다. 즉, 애플리케이션 변이 서버 (140) 는 통신부 (142), 제어부 (144) 및 저장부 (146) 을 가진다. 하지만, 타깃 서버와 변이 서버 (140) 의 기능은 일부 상이하다.On the other hand, the application server 140 has a structure similar to that of the target server. That is, the application server 140 has a communication unit 142, a control unit 144, and a storage unit 146. However, the functions of the target server and the variation server 140 are partially different.

애플리케이션 변이 서버 (140) 의 통신부 (142) 는 타깃 서버 또는 에이전트부 (130) 과 다양한 정보를 송수신한다. 예를 들어, 통신부 (142) 는 애플리케이션 변이 코드, 애플리케이션 인증 코드등을 에이전트부 (130) 에 송신하며, 그로부터 변이 가능 확인 신호등을 수신할 수 있다.The communication unit 142 of the application server 140 transmits / receives various information to / from the target server or the agent unit 130. For example, the communication unit 142 may transmit an application mutation code, an application authentication code, and the like to the agent unit 130 and receive a mutable confirmation signal therefrom.

제어부 (144) 는 애플리케이션 변이 서버 (140) 의 전반적인 동작을 제어한다. 애플리케이션 변이 서버 (140) 의 변이 코드 생성등 다양한 동작은 제어부 (144) 에 의해서 제어될 수 있다. 예를 들어, 제어부 (144) 는 사전 결정된 주기가 도달한 경우 또는 특정 이벤트 발생이 확인된 경우 애플리케이션에 대한 변이 코드를 생성할 수 있다. The control unit 144 controls the overall operation of the application transition server 140. Various operations such as generation of a mutation code of the application server 140 can be controlled by the control unit 144. [ For example, the control unit 144 may generate a mutation code for the application when a predetermined period has been reached, or when a specific event occurrence has been confirmed.

도면에 도시되지는 않았지만, 제어부 (144) 는 코드 관리부를 별도로 포함할 수 있다. 코드 관리부는 이러한 변이 코드와 관련된 기능을 수행할 수도 있다. 코드 관리부는 다수의 보호대상 애플리케이션을 관리할 수 있으며, 애플리케이션을 저장부 (146) 에 등록, 수정 및, 삭제하는 관리하는 것이 바람직하다. 한편, 관리 대상 애플리케이션에 접근할 수 있는 사용자 계정의 등록, 수정, 삭제를 관리하는 보안 기능도 필요에 따라 구현될 수 있다.Although not shown in the figure, the control unit 144 may separately include a code management unit. The code management unit may perform functions related to such mutation codes. The code management unit can manage a plurality of applications to be protected, and it is preferable to manage the applications to be registered, modified, and deleted in the storage unit 146. [ On the other hand, a security function for managing registration, modification, and deletion of a user account that can access the management target application can be implemented as needed.

시스템 관리 측면에서 관리 프로세스의 설정, 보안 정책 설정, 코드 랜덤화 (난독화)를 실시하는 스케줄 관리 등의 기능도 구현되어야 할 것이다. In terms of system management, functions such as management process setting, security policy setting, code randomization (obfuscation) and schedule management should be implemented.

스케줄에 따라 소프트웨어 자가 변이 시점이 되면, 에이전트에 명령하여 코드관리부의 저장소(Repository)에서 모듈 파일을 전송하여 파일 처리 프로세스를 거쳐 어플리케이션 변이를 처리한다. When the software becomes a self-mutation point according to the schedule, it commands the agent to transfer the module file from the repository of the code management unit, and processes the application variation through the file processing process.

이 때 파일 처리 프로세스에서 무결성 검증(Integrity Check)를 수행하여 네트워크 전송 간 위/변조 여부를 확인하는 과정을 구현하는 것이 바람직하다.At this time, it is desirable to implement a process of performing integrity check (integrity check) in the file processing process to check whether the network transmission is up / modulated.

코드 관리부를 통하여 애플리케이션에 대한 관리를 수행할 수 있다. 즉, 코드 관리부를 통하여 보호대상 어플리케이션의 주요 코드를 지정하고, 난독화 기법을 적용할 영역을 설정하고 관리할 수 있다. Management of the application can be performed through the code management unit. That is, the main code of the protection target application can be specified through the code management unit, and the area to which the obfuscation technique is applied can be set and managed.

저장부 (146) 는 제어부 (144) 의 제어에 의해서 애플리케이션에 대한 정보를 저장한다. 예를 들어, 저장부 (146) 는 애플리케이션 원본 코드를 저장하고 있으며, 다양한 변이 코드에 대한 정보, 변이 코드 이력 정보, 변이 코드가 적용된 기존 애플리케이션들 코드등을 저장할 수 있다. The storage unit 146 stores information about the application under the control of the control unit 144. [ For example, the storage unit 146 stores application source codes, and can store information on various mutation codes, mutation code history information, codes of existing applications to which mutation codes are applied, and the like.

여기에 설명되는 다양한 실시형태는 예를 들어, 소프트웨어, 하드웨어 또는 이들의 조합된 것을 이용하여 컴퓨터 또는 이와 유사한 장치로 읽을 수 있는 기록매체 내에서 구현될 수 있다.The various embodiments described herein may be embodied in a recording medium readable by a computer or similar device using, for example, software, hardware, or a combination thereof.

하드웨어적인 구현에 의하면, 여기에 설명되는 실시형태는 ASICs(application specific integrated circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays, 프로세서(processors), 제어기(controllers), 마이크로 컨트롤러(micro-controllers), 마이크로 프로세서(microprocessors), 기타 기능 수행을 위한 전기적인 유닛 중 적어도 하나를 이용하여 구현될 수 있다. 일부의 경우에 본 명세서에서 설명되는 실시형태들이 제어부 자체로 구현될 수 있다.In accordance with a hardware implementation, the embodiments described herein may be implemented as application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field programmable gate arrays May be implemented using at least one of a processor, controllers, micro-controllers, microprocessors, and other electronic units for performing other functions. In some cases, The embodiments to be described can be implemented by the control unit itself.

소프트웨어적인 구현에 의하면, 본 명세서에서 설명되는 절차 및 기능과 같은 실시형태들은 별도의 소프트웨어 모듈들로 구현될 수 있다. 상기 소프트웨어 모듈들 각각은 본 명세서에서 설명되는 하나 이상의 기능 및 작동을 수행할 수 있다. 적절한 프로그램 언어로 쓰여진 소프트웨어 어플리케이션으로 소프트웨어 코드가 구현될 수 있다. 상기 소프트웨어 코드는 메모리에 저장되고, 제어부에 의해 실행될 수 있다.According to a software implementation, embodiments such as the procedures and functions described herein may be implemented in separate software modules. Each of the software modules may perform one or more of the functions and operations described herein. Software code can be implemented in a software application written in a suitable programming language. The software code is stored in a memory and can be executed by the control unit.

도 2는 이중화 구조에 따라 애플리케이션 변경 동작의 1 실시예를 도시한 도면이다.2 is a diagram showing one embodiment of an application changing operation according to a redundancy structure.

본 실시예에는 크게 정상 과정 (A), 변환 과정 (B), 정상 과정 (C)로 구분될 수 있다. In this embodiment, it can be largely divided into a normal process (A), a conversion process (B), and a normal process (C).

정상 과정 (A) 는 애플리케이션 A (App A) 가 변이 코드가 적용되기 전, 즉, 변경되기 직전의 애플리케이션이 주 서버인 제 1 타깃 서버 (110) 에서 구동하는 상태이다. 주 서버인 제 1 타깃 서버 (110) 는 애플리케이션 App A 를 저장하고 있으며, 해당 애플리케이션을 정상적으로 구동시키고 있다(S202). 만약 클라이언트 단말 (160) 로부터 이중화 장치(135) 가 애플리케이션에 대한 서비스 요청(1)을 수신한 경우 (S204), 이중화 장치(135) 는 애플리케이션 App A가 제 1 타깃 서버 (110) 에서 구동 중인 것을 확인한 후 서비스 요청을 제 1 타깃 서버 (110) 에 전달한다 (S205). 제 1 타깃 서버 (110) 은 서비스 요청을 수신한 경우, 애플리케이션 App A를 통하여 해당 서비스에 대한 응답을 송신한다 (S206). The normal process (A) is a state in which the application A (App A) is running in the first target server 110 before the mutation code is applied, that is, the application immediately before the change is the main server. The first target server 110, which is a main server, stores the application App A and normally runs the application (S202). If the duplication device 135 receives a service request (1) for the application from the client terminal 160 (S204), the duplication device 135 determines that the application App A is being driven by the first target server 110 And transmits the service request to the first target server 110 (S205). When the first target server 110 receives the service request, the first target server 110 transmits a response to the service through the application App A (S206).

정상 과정 (A) 이후 변환 과정 (B) 이 적용된다. 변환 과정 (B) 는 애플리케이션의 일부 코드가 변이 코드로 대체되어 애플리케이션이 변경되는 과정을 나타낸다. 여기에서, 애플리케이션 App A' 는 애플리케이션 App A 의 일부 코드가 변이 코드로 변경된 애플리케이션을 나타낸다. App A' 와 App A 는 기능적으로는 동일하다. After the normal process (A), the conversion process (B) is applied. The conversion process (B) shows a process in which the application code is replaced with the mutation code to change the application. Here, the application App A 'represents an application in which some codes of the application App A have been changed to mutation codes. App A 'and App A are functionally identical.

애플리케이션 변이 서버 (140) 는 App A 에 대한 변이 코드를 생성한다 (S212). 애플리케이션 변이 서버는 주기적으로 또는 비주기적으로 애플리케이션 중 일부 코드에 대한 변이 코드를 계속적으로 생성한다. 애플리케이션의 보안을 위하여 변이 코드를 이용하여 애플리케이션을 변경하기 위한 것이다. 이러한 변이 코드는 에이전트부를 통하여 애플리케이션이 설치된 타깃 서버들에 송신하여, 해당 애플리케이션들의 일부 코드를 변이 코드로 대체한다.The application variation server 140 generates a variation code for App A (S212). The application variation server continuously generates mutation codes for some of the codes of the application periodically or aperiodically. This is for changing the application using the mutation code for security of the application. These mutation codes are transmitted to the target servers installed with the application through the agent unit, and replace some codes of the applications with mutation codes.

애플리케이션 변이 서버 (140) 는 에이전트부 (130) 에 변이 코드를 제공하며 (S214), 에이전트부 (130) 는 현재 스탠바이인 제 2 타깃 서버 (120) 에 해당 변이 코드를 제공하고, 변이 코드 적용을 지시한다 (S216). 제 2 타깃 서버 (120) 는 애플리케이션 App A 를 저장하고 있는 상태이다. 다만, 제 1 타깃 서버 (110) 과 달리 App A 를 구동시키지는 않고 있으며 스탠바이 모드이다. 에이전트부 (130) 로부터 지시를 수신한 경우, 제 2 타깃 서버 (120) 는 변이 코드를 적용하여 App A 를 App A'로 변경한다 (S220). 변경 후, App A' 를 구동하여 정상 동작 여부를 테스트한다(S222). 여기에서 App A' 구동은 테스트를 위한 내부적 구동이며, 전체 시스템 상에서 구동되는 것은 아니다. 정상 동작으로 확인된 경우, 제 2 타깃 서버 (120) 는 에이전트부 (130) 에 정상 동작 검증 신호를 송신한다 (S224)The application server 140 provides the server 130 with a code for the variation S214 and the agent 130 provides the code to the second target server 120 that is currently in standby, (S216). And the second target server 120 stores the application App A. However, unlike the first target server 110, App A is not driven and is in a standby mode. When receiving an instruction from the agent unit 130, the second target server 120 applies the mutation code to change App A to App A '(S220). After the change, the App A 'is driven to test whether or not the device operates normally (S222). Here, the App A 'drive is an internal drive for testing, not an entire system. If the normal operation is confirmed, the second target server 120 transmits a normal operation verification signal to the agent unit 130 (S224)

정상 구동 여부는, 설정 값을 확인하여 내부 네트워크에서 직접 제 2 타깃 서버 (120) 의 애플리케이션인 App A' (변이된 상태)로 접속을 시도하여 정상동작 여부를 검증한다. 예를 들어, 서비스 웹 페이지 URL을 접속하여 질의하는 형식으로 스탠바이 상태인 제 2 타깃 서버로 서비스 요청을 하고, 제대로 응답이 오는 지 (예를 들어, HTTP 404 에러가 나오지 않는 것)을 확인하여 스탠바이 상태인 제 2 타깃 서버의 애플리케이션 App A' 의 정상 동작 여부를 확인할 수 있다. 미리 일반적(generic) 프로그램 모듈을 작성하여 테스트 루틴이 전부 성공하면 정상동작으로 간주하도록 할 수도 있다. 이하, 다른 실시예에서의 정상 동작 검증 테스트 역시 동일한 방식으로 진행된다.Whether the normal operation is performed or not is confirmed by verifying the set value and verifying whether or not the normal operation is performed by attempting to access the application A '(mutated state) of the second target server 120 directly from the internal network. For example, a service request is made to a second target server in a standby state in a form of querying by accessing a service web page URL, and it is checked whether a proper response (for example, an HTTP 404 error does not occur) It is possible to confirm whether or not the application App A 'of the second target server in the normal state operates. If a generic program module is created in advance and all of the test routines succeed, it can be regarded as a normal operation. Hereinafter, the normal operation verification test in another embodiment is performed in the same manner.

에이전트부 (130) 는 신호를 대기하다가 성공 또는 실패 신호를 확인한다. 정상 동작 신호를 수신한 경우, 에이전트부 (130) 은 제 1 타깃 서버에는 App 구동 정지 지시를 송신하고 (S228), 제 2 타깃 서버에는 App 구동 지시를 송신한다 (S226). 결과적으로, 제 1 타깃 서버 (110) 에서 구동되던 App A 는 정지되고 (S230), 제 2 타깃 서버 (120) 에서 App A에서 변경된 App A' 가 성공적으로 구동된다 (S229). 이와 함께, 에이전트부 (130) 는 제 1 타깃 서버(110) 를 액티브에서 스탠바이 모드로 변경하고, 제 2 타깃 서버 (120)를 스탠바이에서 액티브 모드로 변경할 수 있다.The agent unit 130 waits for a signal and confirms a success or failure signal. When receiving the normal operation signal, the agent unit 130 transmits an App drive stop instruction to the first target server (S228) and transmits an App drive instruction to the second target server (S226). As a result, the application A that was driven by the first target server 110 is stopped (S230), and the application A 'changed from the application A by the second target server 120 is successfully activated (S229). Along with this, the agent unit 130 may change the first target server 110 from active to standby mode and change the second target server 120 from standby to active mode.

이때, 클라이언트 단말 (160) 로부터 이중화 장치 (135) 에 서비스 요청 (2) 이 수신된 경우 (S232), 이중화 장치 (135) 는 해당 요청을 제 2 타깃 서버 (120) 에 전달하며, 제 2 타깃 서버 (120) 는 해당 요청에 따라서 App A'를 통하여 서비스에 대한 응답을 클라이언트 단말에 응답한다 (S236).When the service request 2 is received from the client terminal 160 at the duplication device 135 at step S232, the duplication device 135 transfers the request to the second target server 120, The server 120 responds to the client terminal through the application A 'in response to the request (S236).

변환 과정 (B) 에 이어서 정상 과정 (C) 가 수행된다. 즉, 주 서버인 제 1 타깃 서버(110) 의 애플리케이션이 다시 구동될 수 있도록 과정이 수행된다. 에이전트부 (130) 는 제 1 타깃 서버(110)에 변이 코드를 제공하고, 변이 코드 적용을 지시한다 (S240). S240 에서 제 1 타깃 서버 (110) 가 지시를 받은 경우, 제 1 타깃 서버 (110) 는 App A 에 변이 코드를 적용하여, App A'로 변경하고 (S242), App A'를 구동시켜서 정상 구동 여부를 테스트한다 (S244). App A' 가 성공적으로 구동된 경우, 에이전트부 (130) 에 정상동작 검증 확인 신호를 송신하고 (S245), 에이전트부 (130) 는 제 2 타깃 서버 (120) 에 App 구동 정지 지시를 송신하고 (S246), 제 1 타깃 서버 (110) 에 App 구동 지시를 송신한다 (S248). 이에 따라, 제 2 타깃 서버 (120) 는 App A' 구동을 정지시키고 (S249), 제 1 타깃 서버 (110) 는 App A' 를 구동시킨다 (S250). 이와 함께, 제 1 타깃 서버 (110) 은 다시 액티브 모드가 되며, 제 2 타깃 서버 (120) 은 스탠바이 모드가 된다.Following the conversion process (B), the normal process (C) is performed. That is, the process is performed so that the application of the first target server 110, which is the main server, can be driven again. The agent unit 130 provides the mutation code to the first target server 110 and instructs the mutual code application (S240). In S240, when the first target server 110 receives an instruction, the first target server 110 applies a mutation code to App A, changes the state to App A '(S242), drives the App A' (S244). The agent unit 130 transmits a normal operation verification acknowledgment signal to the agent unit 130 in step S245 and transmits an App stop command to the second target server 120 S246), and transmits an App drive instruction to the first target server 110 (S248). Accordingly, the second target server 120 stops driving the App A '(S249), and the first target server 110 drives the App A' (S250). At the same time, the first target server 110 becomes active again, and the second target server 120 becomes a standby mode.

상기 과정을 통하여, 제 1 타깃 서버 (110) 의 애플리케이션은 App A'로 성공적으로 변경되며, 제 2 타깃 서버 (120) 의 애플리케이션은 다시 중지된다.Through the above process, the application of the first target server 110 is successfully changed to the application A ', and the application of the second target server 120 is stopped again.

이때, 클라이언트 단말 (160) 이 이중화 장치 (135) 에 서비스 요청(3)을 한 경우 (S252), 이중화 장치 (135) 는 애플리케이션이 실행 중인 제 1 타깃 서버 (110) 에 서비스 요청을 전달하고 (S254), 제 1 타깃 서버 (110) 는 변경된 App A' 를 활용하여 서비스에 응답한다 (S256).At this time, if the client terminal 160 makes a service request (3) to the duplication device 135 (S252), the duplication device 135 delivers a service request to the first target server 110 in which the application is running S254), the first target server 110 responds to the service using the changed App A '(S256).

본 실시예는 제 1 타깃 서버(110) 가 주 서버이고, 제 2 타깃 서버(120) 이 보조 서버인 경우에 기본적으로 적용된다. 일반적으로 주 서버가 보조 서버에 비하여 성능이 월등한 경우가 많으므로, 가능하면, 주 서버를 기본적으로 활용하되, 보조 서버는 애플리케이션 변환 과정등에 선택적으로 사용하게 할 수 있다.The present embodiment is basically applied when the first target server 110 is the main server and the second target server 120 is the auxiliary server. In general, the performance of the main server is superior to that of the auxiliary server. Therefore, if possible, the main server can be used basically, but the auxiliary server can be selectively used for the application conversion process and the like.

이와 같이, 이중화 구조를 사용시 무중단 전이가 된다. 이것은 failover라고도 불린다. 즉, 어느 한 서버가 중단된 경우 다른 서버로 서비스를 유지한다는 의미이다. 이를 구현하는 기술은 현재 벤더 별로 많은 솔류선이 존재하는 상태이며, 이것을 어떤 방식으로 구현할 지는 설정 파일을 확인하여야 한다. As described above, when using the redundant structure, the non-transient transition occurs. This is also called failover. In other words, if one server is interrupted, it means that it maintains service to another server. There are a lot of technologies that implement this technology in each vendor, and you should check the configuration file to see how to implement them.

일반적으로는, 외부에서 이중화 서버로 접속할 때는 네트워크 IP 를 단일하게 구성하며, 단일 IP를 통해서 이중화 서버 시스템의 이중화 장치 (135) 에 접속한 경우, 내부 네트워크, 즉 타깃 서버들 간에는 액티브, 스탠바이 모드별 내부 IP로 접속하여 전달할 수 있다. 이때, failover 가 발생할 경우 여전히 외부 IP 는 계속 유지되지만, 내부의 스탠바이로 변경된 서버의 IP만 단절되므로 복구될 때까지는 액티브로 변경된 서버 내부 IP로 접속하여 서비스를 유지할 수 있다.In general, when connecting from the outside to the redundant server, the network IP is unified, and when the redundant server 135 of the redundant server system is connected to the redundant server 135 through a single IP, It can be connected to internal IP for delivery. At this time, if the failover occurs, the external IP is still maintained, but only the IP of the server changed to the internal standby is disconnected. Therefore, the service can be maintained by accessing the internal IP of the changed server until the server is restored.

도 3는 이중화 구조에 따라 애플리케이션 변경 동작의 2 실시예를 도시한 도면이다.Figure 3 is a diagram illustrating two embodiments of an application change operation in accordance with a redundancy structure.

이중화 구조에 따른 제 2 실시예는 애플리케이션 변이에 에러가 발생할 경우의 동작에 관한 실시예이다.The second embodiment according to the redundancy structure is an embodiment relating to an operation when an error occurs in the application variation.

본 실시예는 도 2의 결과에서 다시 시작된다. 제 1 타깃 서버 (110) 는 변이 코드가 적용된 App A'가 구동되는 상태이다 (S302). 이때, 클라이언트 단말 (160) 로부터 서비스 요청을 이중화 장치 (135) 가 수신하고 (S304), 이를 제 1 타깃 서버 (110) 에 전달한 경우 (S306), App A' 구동시 에러가 발생할 수도 있다(S308). 에러가 발생한 경우, 제 1 타깃 서버 (110) 는 에이전트부 (130) 에 해당 서비스 요청을 전달하며, 에러 발생을 보고한다 (S310). 에이전트부 (130) 는 제 1 타깃 서버 (110) 에 App 구동 정지 명령을 송신하며 (S314), 이와 동시에 제 2 타깃 서버 (120) 에 서비스 요청과 함께 App 구동 지시를 송신한다 (S312).This embodiment resumes from the result of Fig. The first target server 110 is in a state in which App A 'to which the variation code is applied is driven (S302). At this time, when the duplication device 135 receives the service request from the client terminal 160 (S304) and transmits the service request to the first target server 110 (S306), an error may occur when driving the App A ' ). When an error occurs, the first target server 110 transmits the service request to the agent unit 130 and reports an error occurrence (S310). The agent unit 130 transmits an App driving stop instruction to the first target server 110 at step S314 and at the same time transmits an application driving instruction to the second target server 120 together with the service request at step S312.

제 2 타깃 서버 (120) 는 App A'로 변경된 이력이 존재하며, App A' 를 저장하고 있다. App 구동 지시에 따라서 App A'를 다시 구동시킨다 (S316). 이에 따라서, 에러가 발생한 제 1 타깃 서버 (110) 대신에 제 2 타깃 서버 (120) 의 App A' 로 애플리케이션을 구동시킬 수 있다. 제 2 타깃 서버 (120) 는 함께 전달된 요청에 응답하여, App A' 를 이용하여 클라이언트 단말 (160) 에 서비스 응답을 수행한다 (S318). 에러가 발생한 경우, 보다 안정적인 구동을 위해서 기존 App 으로 복구하도록 설계된다. 제 1 타깃 서버 (110) 는 변이 코드가 적용되기 전인 App A 로 복구한다 (S320). 에러와 같은 상황을 대비하기 위해서, 제 1 또는 제 2 타깃 서버 각각은 기존 정상적으로 실행되던 애플리케이션 데이터를 저장하고 있다. 선택적으로, 가장 최근에 구동 성공한 애플리케이션 데이터만을 저장할 수도 있다. 본 실시예처럼, App A' 구동에 에러가 발생할 경우를 대비하기 위해서 제 1 타깃 서버 (110) 및 제 2 타깃 서버 (120) 은 가장 최근에 정상적으로 구동되던 App A 에 대한 데이터는 저장한다. The second target server 120 has a history changed to App A 'and stores App A'. The application A 'is driven again in accordance with the application drive instruction (S316). Accordingly, instead of the first target server 110 in which an error has occurred, the application can be run as App A 'of the second target server 120. In response to the request transmitted together, the second target server 120 performs a service response to the client terminal 160 using App A '(S318). If an error occurs, it is designed to restore to an existing app for more stable operation. The first target server 110 restores to App A before the mutation code is applied (S320). In order to prepare for a situation such as an error, each of the first and second target servers stores application data that has been normally executed. Optionally, only the most recently run successful application data may be stored. As in the present embodiment, the first target server 110 and the second target server 120 store data on the AppA, which has been most recently operated normally, in preparation for the occurrence of an error in the operation of App A '.

제 1 타깃 서버 (110) 가 App A로 복구한 경우, 에이전트부 (130) 에 복구 완료 신호를 송신한다 (S322). 에이전트부 (130) 는 제 2 타깃 서버 (120) 에 App 구동 정지 지시를 전송하고 (S324), 제 1 타깃 서버 (110) 에 App 구동 지시를 전송한다 (S330). 그에 따라서, 제 1 타깃 서버 (110) 은 App A 가 구동되고 (S330), 제 2 타깃 서버 (120) 의 App A' 는 구동을 정지한다 (S328).When the first target server 110 has recovered to the APP A, it transmits a recovery completion signal to the agent unit 130 (S322). The agent unit 130 transmits an App driving stop instruction to the second target server 120 in step S324 and transmits an App driving instruction to the first target server 110 in step S330. Accordingly, the first target server 110 starts the application A (S330) and the application A 'of the second target server 120 stops the operation (S328).

이후, 클라이언트 단말 (160) 이 이중화 장치 (135) 를 통해서 서비스 요청을 한 경우 (S332, S334), 제 1 타깃 서버 (110) 는 원상 복구된 App A를 이용해서 서비스에 응답한다 (S336).Thereafter, when the client terminal 160 makes a service request through the duplication device 135 (S332, S334), the first target server 110 responds to the service using the restored application A (S336).

한편, 상기 설명에서는, S316 에서, 제 2 타깃 서버 (120) 가 변이 코드가 적용된 App A'를 구동시키는 것으로 설명되었다. 하지만, 선택적으로, 제 2 타깃 서버 (120) 는 변이 코드가 적용되기 전인 App A를 구동시킬 수 있다. 이는 이하에서 설명되듯이 제 1 타깃 서버 (110) 가 App A로 원복하는데, 제 2 타깃 서버 역시 동일한 App A 로 구동하는 것이 시스템 운영상 안정적일 수 있기 때문이다. 즉, 제 1 타깃 서버에서 에러가 난 App A' 를 제 2 타깃 서버에서 구동하는 대신에, 제 2 타깃 서버 역시 App A로 구동시킬 수도 있다. In the above description, it is described that the second target server 120 drives the App A 'to which the mutation code is applied in S316. Optionally, however, the second target server 120 may run App A before the mutation code is applied. This is because, as described below, the first target server 110 is rewritten by App A, and the second target server is also operated by the same App A, which is stable in system operation. That is, instead of driving the App A 'which has an error in the first target server on the second target server, the second target server may also be driven by App A.

상기 2 실시예에서는, 전체적으로 애플리케이션이 안정적으로 구동되도록 주서버인 제 1 타깃 서버에서 에러 발생시 기존 App 으로 복구하도록 설명하였다. 하지만, 선택적으로, 에러가 발생한 경우, 제 1 타깃 서버에서 기존 App 으로 복구하는 대신, 에러가 발생한 App A' 로 변환을 다시 시도할 수도 있다. 이 과정은 도 2에서 설명된 과정과 유사한 과정으로 진행될 수 있다. 만약 에러가 발생한 제 1 타깃 서버에 2~3 차례 변이 코드 제공 등 변환 과정을 통해서 동일한 에러가 발생한 경우, 에이전트부는 애플리케이션 변이 서버에 이를 전달하고, 애플리케이션 변이 서버는 이를 심각한 에러로 간주하고 관리자에게 경고 메시지를 전달할 수 있다.In the second embodiment, the first target server, which is a main server, restores the existing app when an error occurs so that the application can be stably driven as a whole. Optionally, however, if an error occurs, instead of restoring to the existing App in the first target server, it may try to convert it back to the App A 'where the error occurred. This process can be performed in a similar process to that described in FIG. If the same error occurs in the conversion process such as providing the mutation code 2-3 times to the first target server in which an error occurs, the agent unit transfers it to the application server, the application server regards this as a serious error, Message.

도 3에서 확인할 수 있듯이, 주 서버인 제 1 타깃 서버의 애플리케이션 구동에 에러가 발생한 경우, 보조 서버인 제 2 타깃 서버의 애플리케이션의 구동으로 유도하고, 이를 통하여, 일부 서버에서는 에러가 발생하더라도, 이중화 서버의 전체적 흐름에서는 애플리케이션 실행과 동작에 있어서 중단 없이 수행할 수 있게 된다.As shown in FIG. 3, when an error occurs in the application running of the first target server which is the main server, the application of the application of the second target server, which is the auxiliary server, is guided to drive, The overall flow of the server can be done without interruption in application execution and operation.

도 4는 이중화 구조에 따라 애플리케이션 변경 동작의 3 실시예를 도시한 도면이다.4 is a diagram showing three embodiments of an application changing operation according to a redundancy structure.

3 실시예는 1 실시예 또는 2 실시예와 달리, 제 1 타깃 서버와 제 2 타깃 서버가 모두 주 서버일 수 있다. 즉, 성능면에서 동일한 두 개의 서버일 수 있다.In the third embodiment, unlike the first embodiment or the second embodiment, the first target server and the second target server may both be the main server. That is, the two servers may be the same in terms of performance.

제 1 타깃 서버 (110) 는 App A 가 구동되는 상태이다 (S402). 이때, 제 2 타깃 서버 (120) 는 애플리케이션이 구동되지는 않는 상태이다. 따라서, 클라이언트 단말 (160) 로부터 이중화 장치 (135)에 서비스 요청이 온 경우 (S404), 이중화 장치 (135)는 제 1 타깃 서버 (110) 에 서비스 요청을 전달한다 (S402). 제 1 타깃 서버 (110) 는 애플리케이션인 App A 를 이용하여 서비스 응답을 수행한다 (S408).The first target server 110 is in a state in which App A is activated (S402). At this time, the second target server 120 is in a state in which the application is not operated. Accordingly, when the service request is sent from the client terminal 160 to the duplication device 135 (S404), the duplication device 135 delivers the service request to the first target server 110 (S402). The first target server 110 performs a service response using App A, which is an application (S408).

이후, 변이 코드 적용과 관련하여, 1기와 2기로 구분될 수 있다. 1기는 제 1 변이 코드가 적용된 App A' 가 제 2 타깃 서버 (120) 에서 구동되는 상태이며, 이때 제 1 타깃 서버 (110) 는 애플리케이션이 구동되지는 않는 상태이다. 2기는 제 1 변이 코드에 이어서 생성된 제 2 변이 코드가 적용된 App A'' 가 제 1 타깃 서버 (110) 에서 구동되는 상태이며, 이때, 제 2 타깃 서버 (120) 는 애플리케이션이 구동되지는 않는 상태이다.Thereafter, with respect to the application of the mutation code, it can be divided into a first stage and a second stage. In the first stage, App A 'to which the first transition code is applied is driven by the second target server 120, and the first target server 110 is in a state where the application is not driven. The second target server 120 is in a state in which the application A '' applied with the second mutation code generated following the first mutation code is driven by the first target server 110, State.

1기를 먼저 살펴보면, 애플리케이션 변이 서버 (140) 는 제 1 변이 코드를 생성하며 (S410), 해당 제 1 변이 코드를 에이전트부 (130) 에 제공한다 (S412). 에이전트부 (130) 는 현재 애플리케이션은 App A로 제 1 타깃 서버(110) 에서 구동중인 것을 확인한다. 제 1 변이 코드를 수신한 후, 에이전트부 (130) 은 현재 애플리케이션이 구동하지 않는 제 2 타깃 서버 (120) 에 제 1 변이 코드를 제공한다 (S414). 제 2 타깃 서버 (120) 는 기존 저장된 애플리케이션의 일부 코드를 제 1 변이 코드로 변경하여, 애플리케이션을 App A'로 변경한다 (S416). 정상 동작 여부에 대한 테스트한 후 (S418), 해당 결과를 에이전트부 (130) 에 결과를 전달하며 (S420), 에이전트부 (130) 는 결과를 저장한다. 정상 구동인 경우, 에이전트부 (130) 는 제 2 타깃 서버 (120) 에 애플리케이션 구동 지시를 송신하고 (S422), 이와 동시에 제 1 타깃 서버 (110) 에 애플리케이션 구동 정지 명령을 송신한다 (S424). 이에 따라서, 제 1 타깃 서버 (110) 에서는 기존 애플리케이션인 App A는 정지되고(S428), 제 2 타깃 서버 (120) 에서는 변경된 애플리케이션인 App A'가 구동된다 (S426). First, the application server 140 generates a first side code (S410) and provides the first side code to the agent unit 130 (S412). The agent unit 130 confirms that the current application is running in the first target server 110 with App A. After receiving the first mutation code, the agent unit 130 provides the first mutation code to the second target server 120 in which the current application does not operate (S414). The second target server 120 changes some code of the existing stored application to the first variation code, and changes the application to App A '(S416). After the test for normal operation (S418), the result is transmitted to the agent unit 130 (S420), and the agent unit 130 stores the result. In the case of normal driving, the agent unit 130 transmits an application driving instruction to the second target server 120 (S422), and simultaneously transmits an application driving stop command to the first target server 110 (S424). Accordingly, in the first target server 110, the existing application App A is stopped (S428), and the changed target application App A 'is activated in the second target server 120 (S426).

제 2 타깃 서버 (120) 에서 애플리케이션이 구동되는 상태이므로, 클라이언트 단말 (160) 이 서비스 요청을 이중화 장치 (135) 에 송신한 경우 (S430), 이중화 장치 (135) 는 제 2 타깃 서버 (120) 에 전달하고 (S432), 제 2 타깃 서버 (120) 는 서비스 응답을 송신한다 (S434).When the client terminal 160 transmits a service request to the duplication device 135 at step S430 because the application is running in the second target server 120, the duplication device 135 transfers the service request to the second target server 120, (S432), and the second target server 120 transmits a service response (S434).

3 실시예를 참조하면, 제 1 타깃 서버 (110) 에서 애플리케이션을 App A'로 변경하는 과정이 없는 점에서 1 실시예와 차이가 있다. 1 실시예에서는, 제 2 타깃 서버 (120) 가 보조 서버의 역할을 하고 제 1 타깃 서버는 주 서버의 역할을 하기 때문에, 제 2 타깃 서버 (120) 가 App A' 로 변경한 후, 제 1 타깃 서버 (110) 도 App A' 로 변경한 후, 제 1 타깃 서버 (110) 가 애플리케이션을 구동시키나, 3 실시예에서는, 이러한 과정이 없다.The third embodiment differs from the first embodiment in that there is no process of changing the application from the first target server 110 to App A '. In one embodiment, since the second target server 120 serves as an auxiliary server and the first target server serves as a main server, after the second target server 120 changes to App A ' After changing the target server 110 to App A ', the first target server 110 drives the application, but in the third embodiment, there is no such process.

2 기를 살펴보면, 1 기의 결과로 제 2 타깃 서버 (120) 의 애플리케이션인 App A' 만 구동되는 상태이며, 제 1 타깃 서버 (110) 는 제 1 변이 코드가 적용되지 않은 App A 만 저장된 상태이다.As a result of the first stage, only App A ', which is an application of the second target server 120, is being driven, and only the App A to which the first mutation code is not applied is stored in the first target server 110 .

일정 시간이 경과한 경우, 애플리케이션 변이 서버 (140) 는 제 2 변이 코드를 생성한다 (S440). 이후의 과정은 1 기의 과정과 유사하다. 즉, 2 기에서는, 제 2 타깃 서버 (120) 가 아닌 제 1 타깃 서버 (110) 에 제 2 변이 코드가 제공되며 (S444). 이를 통하여, 제 1 타깃 서버 (110) 은 애플리케이션을 App A'' 로 변경한다 (S446). 정상 동작 여부에 대한 테스트 후 (S448), 정상적으로 동작한 것이 확인된 경우, 에이전트부 (130) 는 제 1 타깃 서버 (110) 에 App 구동 지시를 전송하고 (S452), 제 2 타깃 서버 (120) 에 App 구동 정지를 전송한다 (S454). 따라서, 제 1 타깃 서버 (110) 의 App A'' 가 구동되며 (S460), 제 2 타깃 서버 (120) 의 App A' 는 구동이 정지된다 (S462).If the predetermined time has elapsed, the application server 140 generates a second variation code (S440). The subsequent process is similar to the first process. That is, in the second stage, a second side code is provided to the first target server 110 other than the second target server 120 (S444). Through this, the first target server 110 changes the application to App A '' (S446). The agent unit 130 transmits an App driving instruction to the first target server 110 in step S452 and the second target server 120 in step S452, (S454). Accordingly, App A '' of the first target server 110 is driven (S460) and the application A 'of the second target server 120 is stopped (S462).

1 기와 2 기의 과정이 반복되면서, 제 1 타깃 서버 (110) 및 제 2 타깃 서버 (120) 가 애플리케이션이 실행되는 서버가 반복적으로 바뀐다. 이러한 모든 변경 정보들은 에이전트부 (130) 에 저장된다. 이러한 과정을 통하여, 본 발명은 애플리케이션을 변이 코드를 이용하여 변경하면서도, 애플리케이션의 실행은 중지 없이 계속되도록 가능케 할 수 있다.As the first and second processes are repeated, the server in which the first target server 110 and the second target server 120 execute the application is repeatedly changed. All such change information is stored in the agent unit 130. Through this process, the present invention can enable the application to continue to run without interruption, while changing the application using the mutation code.

상기 도 2, 3, 4를 참조하여 어느 한 서버의 App 이 구동되는 경우, 다른 한 서버의 App 은 구동 정지되는 것으로 기본적으로 설명하였다. 다만, 선택적으로, 두 App 이 모두 정상 구동하도록 설계될 수도 있다. 각각의 서버의 App 이 모두 정상 동작되는 것을 전제시 두 App 모두가 구동될 수도 있다. 각각의 서버에서 구동되는 App A 와 App A' 는 기능 및 동작이 동일하고 코드만 일부 다르기 때문에 구동상 문제는 없을 수 있기 때문이다. 다만, 비정상 동작으로 판정시 원상 복구 과정은 필요하다.Referring to FIGS. 2, 3 and 4, when the App of one server is driven, the application of the other server is basically stopped. However, optionally, both apps may be designed to operate normally. Both apps may be running on the assumption that all the apps of each server are operating normally. App A 'and App A' running on each server have the same function and operation, and there is no running problem because only the code is different. However, when it is determined that the operation is abnormal, the restoration process is necessary.

도 5은 단일 구조에 따라 애플리케이션 변이 서버와 타깃 서버의 시스템 구성도를 도시한 도면이다.5 is a diagram showing a system configuration diagram of an application server and a target server according to a single structure.

단일 구조는 서버가 1개만 운영되는 구조로써, 이중화 구조와 달리 해당 서버가 중단되면 애플리케이션 서비스도 함께 중단된다.A single structure is a structure in which only one server is operated. Unlike the redundancy structure, when the corresponding server is interrupted, the application service is also interrupted.

본 발명의 다른 실시예들에 따르면, 단일 구조에 따른 타깃 서버를 활용할 수 있다. 상기 실시예들의 경우, 타깃 서버가 2개 이상인 경우를 설명하였으나, 이와 달리 타깃 서버가 1개로 구성된 단일 구조를 이용하여 애플리케이션 중단 없는 기술을 구현할 수 있다.According to other embodiments of the present invention, a target server according to a single structure may be utilized. In the case of the above embodiments, the case where two or more target servers are used has been described. Alternatively, a single structure having one target server may be used to implement a technology without application interruption.

도 5는 단일 구조에 따른 타깃 서버 (520) 와 애플리케이션 변이 서버 (530) 간의 시스템 구성도를 나타낸 도면이다.5 is a diagram showing a system configuration between a target server 520 and an application transition server 530 according to a single structure.

클라이언트 단말 (510) 은 타깃 서버 (520) 와 통신이 가능하며, 클라이언트 단말 (510) 이 애플리케이션 관련 서비스 요청을 한 경우, 타깃 서버 (520) 의 프록시 처리부 (522) 는 해당 서비스 요청을 수신한다. 프록시 처리부 (522) 는 도 1의 이중화 장치 (135) 와 유사한 기능을 수행할 수 있다. 애플리케이션 변이 서버 (530) 은 타깃 서버 (520) 의 에이전트부 (525) 와 통신이 가능하며, 변이 서버 (530) 가 애플리케이션에 대한 변이 코드를 생성하여 타깃 서버 (520) 에 송신하는 경우, 타깃 서버 (520) 의 에이전트부 (525) 가 이를 수신하여 처리한다.The client terminal 510 can communicate with the target server 520. When the client terminal 510 makes an application related service request, the proxy processing unit 522 of the target server 520 receives the service request. The proxy processing unit 522 can perform a function similar to the duplication apparatus 135 of FIG. The application mutation server 530 is capable of communicating with the agent unit 525 of the target server 520. When the mutation server 530 generates a mutation code for the application and transmits it to the target server 520, And the agent unit 525 of the server 520 receives and processes it.

타깃 서버 (520) 는 애플리케이션 변이 서버 (530) 로부터 변이 코드를 수신하여, 변이 코드를 이용하여 타깃 서버 (520) 에 설치된 애플리케이션의 일부 코드를 변경할 수 있다. 클라이언트 단말로부터 요청이 수신된 경우, 해당 애플리케이션을 이용해서 서비스를 수행하고, 해당 서비스 응답을 송신한다.The target server 520 may receive the mutation code from the application mutation server 530 and may use the mutation code to change some code of the application installed in the target server 520. [ When a request is received from the client terminal, the service is executed using the application, and the corresponding service response is transmitted.

타깃 서버 (520) 는 크게는 프록시 처리부 (522), 제어부 (542), 저장부 (526) 를 포함한다. 타깃 서버는 고정형 또는 이동형 단말기일 수 있다. The target server 520 largely includes a proxy processing unit 522, a control unit 542, and a storage unit 526. The target server may be a fixed or mobile terminal.

도면에서는, 에이전트부 (525) 는 제어부 (524) 에 포함된 것처럼 도시되었다. 하지만, 다른 설계에 따라서, 에이전트부는 제어부와 별개의 독립적인 장치로 구성될 수도 있다. In the drawing, the agent unit 525 is shown as being included in the control unit 524. [ However, according to another design, the agent unit may be configured as a separate device separate from the control unit.

프록시 처리부 (522) 는 타깃 서버 (520) 와 외부 네트워크 사이 또는 타깃 서버와 클라이언트 단말이 위치한 네트워크 사이의 통신을 가능하게 하는 하나 이상의 모듈을 포함할 수 있다. 프록시 처리부 (522) 는 클라이언트 단말 (510) 로부터 서비스 요청등 다양한 신호를 송수신할 수 있다. 프록시 처리부 (522) 는 클라이언트 단말로부터 서비스 요청이 온 경우, 해당 서비스 요청을 메인 공간의 애플리케이션에 전달할 것인지, 가상 공간의 애플리케이션에 전달할 것인지 판단한 후, 해당 요청을 전달할 수 있다. 따라서, 프록시 처리부 (522) 는 어떤 공간의 애플리케이션이 액티브인지 스탠바이인지를 확인하고 있다.The proxy processing unit 522 may include one or more modules that enable communication between the target server 520 and the external network or between the target server and the network in which the client terminal is located. The proxy processing unit 522 can transmit and receive various signals such as a service request from the client terminal 510. When the service request is transmitted from the client terminal, the proxy processing unit 522 may determine whether to transmit the service request to the application in the main space or the application in the virtual space, and then transmit the request. Therefore, the proxy processing unit 522 confirms which space application is active or standby.

제어부 (524) 는 타깃 서버의 전반적인 동작을 제어한다. 예를 들어, 제어부는 제어부 자체의 기능뿐 아니라, 프록시 처리부 (522) 및 저장부 (526) 의 다양한 기능을 제어할 수도 있다. 제어부 (524) 는 타깃 서버에 설치된 애플리케이션의 수행을 제어할 수 있다.The control unit 524 controls the overall operation of the target server. For example, the control unit may control various functions of the proxy processing unit 522 and the storage unit 526, as well as the functions of the control unit itself. The control unit 524 can control the execution of the application installed in the target server.

제어부 (524) 는 에이전트부 (525) 를 선택적으로 포함할 수 있다. 에이전트부 (525) 는 제어부와 별개로 구성할 수도 있으며, 또는 선택적으로 제어부에 포함된 구성일 수도 있다.The control unit 524 may optionally include an agent unit 525. The agent unit 525 may be configured separately from the control unit, or alternatively may be included in the control unit.

에이전트부 (525) 는 애플리케이션 변이 서버 (530) 과 통신할 수 있으며, 애플리케이션 변이 서버 (530) 가 애플리케이션에 대한 변이 코드를 생성한 경우, 해당 변이 코드를 수신하여, 애플리케이션을 변경하는 동작을 관할할 수 있다. 즉, 변이 코드에 대한 애플리케이션의 상태, 구동되는 애플리케이션의 위치 등을 확인하여 변이 코드를 통한 애플리케이션 변경 동작 전체적 동작을 관할한다. The agent unit 525 can communicate with the application server 530. When the application server 530 generates a dispatch code for the application, the agent unit 525 receives the dispatch code and controls the application . That is, it checks the state of the application with respect to the mutation code, the position of the driven application, and so on, and controls the overall operation of the application changing operation through the mutation code.

에이전트부 (525) 는 다수의 애플리케이션의 코드 대체와 관련된 기능을 수행할 수도 있다. 동적으로 애플리케이션의 코드 또는 모듈을 변경하고, 애플리케이션을 재구동(Re-loading) 시켜 실행 프로세스 교체가 일어나게 되는데, 애플리케이션에 따라서 실행 중단 후 재 구동 과정을 거치는 경우가 발생할 수 있거나 실행이 중단되지 아니하고 일부 구성 모듈만 재 구동이 가능한 경우가 있을 수도 있다. The agent unit 525 may perform functions related to code substitution of multiple applications. A change of the application code or a module is dynamically performed and the application is re-loaded to cause the replacement of the execution process. Depending on the application, there may be a case where the application is restarted after the execution is stopped or the execution is not interrupted There may be cases where only the configuration module can be restarted.

에이전트부 (525) 는 후술할 가상 콘테이너(virtual container)의 존재 여부, 해당 가상 콘테이너에 애플리케이션 구동 여부, 애플리케이션의 버전 여부등을 확인할 수 있다. 경우에 따라서, 에이전트부 (525) 는 가상 콘테이너가 부재한 경우, 가상 콘테이너를 설치하는 동작을 수행할 수도 있다. 또한, 에이전트부 (525) 는 애플리케이션 구동 지시, 중단 지시등을 내릴 수 있다.The agent unit 525 can check whether a virtual container exists, whether the application is driven in the corresponding virtual container, whether the application is a version, and the like, which will be described later. In some cases, the agent unit 525 may perform an operation of installing a virtual container when the virtual container is absent. Further, the agent unit 525 may issue an application driving instruction, a stop indication, and the like.

저장부 (526) 는 제어부의 처리 및 제어를 위한 프로그램이 저장될 수도 있고, 입/출력되는 데이터들(예를 들어, 애플리케이션 코드 변이를 위한 변이 코드 등)의 저장을 위한 기능을 수행할 수도 있다. 또한, 저장부 (526) 은 애플리케이션이 설치되어 있으며, 해당 애플리케이션은 저장부에서 구동될 수 있다. 가상 콘테이너 (527) 역시 저장부 (526) 에 포함될 수 있다. 가상 콘테이너 (527) 에 대한 삭제, 생성이 가능하다. 후술하듯이, 가상 콘테이너 (527) 에는 애플리케이션이 구동될 수 있다. 가상 콘테이너와 구별되는 개념으로 저장부 (526) 에는 메인 공간이 존재한다고 볼 수 있으며, 메인 공간에서 애플리케이션이 구동될 수 있다.The storage unit 526 may store a program for processing and controlling the control unit, and may perform a function for storing input / output data (for example, a variation code for application code variation) . In addition, an application is installed in the storage unit 526, and the application can be driven in the storage unit. The virtual container 527 may also be included in the storage unit 526. The virtual container 527 can be deleted and generated. As will be described later, the application can be driven in the virtual container 527. [ As a concept distinct from the virtual container, it can be seen that the main space exists in the storage unit 526, and the application can be driven in the main space.

도 6은 단일 구조에 관련된 가상 콘테이너 구조를 설명하기 위한 도면이다.6 is a view for explaining a virtual container structure related to a single structure.

도 6의 좌측에 도식화된 기존의 가상화 방식은 하이퍼바이저를 이용하여 OS를 가상화 시키는 것을 도시한다. 예를 들어, 윈도우 호스트 운영체제에 리눅스 운영체제(게스트 OS)를 가상화시켜 1개의 컴퓨터에 2개 이상의 운영체제를 돌릴 수 있다. 이 방식은 게스트 운영체제가 실제 CPU, 메모리를 점유하는 방식이기 때문에 무겁고 느려서 실제 운영환경에서는 사용할 수 없었다. The existing virtualization scheme schematized on the left side of FIG. 6 illustrates the virtualization of the OS using a hypervisor. For example, you can virtualize a Linux operating system (guest OS) on a Windows host operating system to run more than one operating system on a single computer. This method is heavy and slow because the guest operating system occupies the real CPU and memory, so it can not be used in the real operating environment.

이를 개선하기 위해 도 6의 우측에 도시된 콘테이너 기반의 도커 엔진을 이용한 새로운 방식이 도입할 수 있다. 즉, 운영체제를 가상화시키는 것이 아닌 프로세스를 격리시키는 것으로 같은 효과를 낼 수 있게 하는 방식이다. 격리된 프로세스 공간을 콘테이너라고 부른다. 쉽게 생각하면 콘테이너는 특정 프로세스가 구동하기 위해 필요한 컨텍스트 정보를 모아놓은 집합체라고 볼 수 있다. 이를 파일 형태로 저장한 것을 이미지라 부르며 서로 다른 호스트 운영체제에 이미지를 복제하여 동일한 실행을 보장할 수 있다. To improve this, a new method using the container-based dozer engine shown in the right side of FIG. 6 can be introduced. That is, isolating processes, rather than virtualizing the operating system, has the same effect. An isolated process space is called a container. Containers can be thought of as an aggregate of context information needed for a particular process to run. This is called an image, and images can be copied to different host operating systems to guarantee the same execution.

요약하면, 도커, 즉 콘테이너 가상화 방식은 1 개의 컴퓨터안에서 2 이상의 애플리케이션을 성능에 영향을 미치지 아니하고 독립적으로 격리된 환경에서 구동시키는 역할을 한다. 이는 외부에서 바라볼 때 2개 이상의 컴퓨터로 서버를 운영하는 것과 동일한 기능을 수행하는 것과 같다.In summary, a decker, or container virtualization, is one that drives two or more applications in an isolated environment independent of performance. This is equivalent to running the server on two or more computers from the outside.

본 발명과 관련하여 설명하면, 에이전트부 (525) 는 필요에 따라서 타깃 서버 (520) 내부에 가상 콘테이너를 생성할 수 있다. 이 경우, 상기 설명한 이중화 구조의 이중화 서버와 같이 물리적으로 2개의 서버를 사용하는 것과 같은 효과를 가져올 수 있다.Describing the present invention, the agent unit 525 can create a virtual container in the target server 520 as needed. In this case, the same effect as using two servers physically like the redundancy server having the redundancy structure described above can be obtained.

상기 이중화 구조와 유사한 방식으로 진행되나 가상 콘테이너의 인스턴스를 생성하고 삭제하는 과정이나 에이전트부에 의해서 타깃 애플리케이션을을 관리하는 부분, 프록시 처리부에 의해 통신 상의 중개자가 추가적으로 매개된다는 점이 차이가 발생한다. A difference occurs in the process of generating and deleting an instance of the virtual container or in the part managing the target application by the agent unit and the intermediary in the communication by the proxy processing unit are additionally mediated.

가상 콘테이너는 동적 생성, 삭제가 자유롭기 때문에 이의 확장도 가능하다. 즉, 설정을 유지시키면서 여러 서버 인스턴스를 생성하거나 줄일 수 있다. 애플리케이션을 여러개 복제하고 각각의 인스턴스를 계속 유지시키면서 임의적으로 클라이언트의 요청을 랜덤하게 분배할 수 있다. The virtual container is free to dynamically create and delete, and its extension is also possible. In other words, you can create or reduce multiple server instances while maintaining configuration. You can randomly distribute client requests randomly while replicating multiple applications and maintaining each instance.

도 7은 단일 구조에 따라 애플리케이션 적용 동작의 1 실시예를 도시한 도면이다.7 is a diagram illustrating one embodiment of an application application operation in accordance with a single architecture.

도 7을 참조하면, 타깃 서버 (520) 가 하나로 구성된 경우의 실시예를 설명한다. Referring to FIG. 7, an embodiment in which the target server 520 is composed of one will be described.

최초 클라이언트로부터 애플리케이션에 대한 서비스 요청을 수신한 경우, 변이 코드가 적용되지 않은 최초의 애플리케이션인 App A를 이용하여 응답하게 된다. 즉, 클라이언트 단말 (510) 이 애플리케이션에 대한 서비스 요청을 송신한 경우 (S702), 타깃 서버 (520) 의 프록시 처리부 (522) 는 해당 요청을 에이전트부(52)에 전달한다 (S704). 에이전트부 (525) 는 현재 App A가 구동되고 있는 상태임을 확인하고, App A 를 활용하여 서비스에 대한 응답을 수행한다 (S706). 서비스 응답은 프록시 처리부(522)를 통하여 클라이언트 단말에 송신된다 (S710). 이때, App A 는 가상 콘테이너가 아닌 메인 공간에서 구동되는 상태이다.When the service request for the application is received from the first client, it is responded using App A, which is the first application to which the mutation code is not applied. That is, when the client terminal 510 transmits a service request for the application (S702), the proxy processing unit 522 of the target server 520 delivers the request to the agent unit 52 (S704). The agent unit 525 confirms that the current application A is in a running state, and performs a response to the service using the application A (S706). The service response is transmitted to the client terminal through the proxy processing unit 522 (S710). At this time, App A is being driven in the main space, not in the virtual container.

이하, 애플리케이션에 대한 변경 과정을 수행하는 동작을 설명한다.Hereinafter, an operation of performing a change process for an application will be described.

애플리케이션 변이 서버 (530) 는 애플리케이션에 대한 변이 코드를 생성한다 (S712). 생성된 변이 코드는 에이전트부 (525) 에 제공된다 (S714). 에이전트부 (525) 는 변이 코드를 수신한 경우, 변이 코드와 함께 제공된 애플리케이션 정보, 변이 명령들을 함께 확인한다. 또한, 에이전트부 (525) 는 변이 코드와 관련된 애플리케이션이 설치된 공간도 함께 확인한다. 에이전트부 (525) 는 타깃 서버 (520) 에 가상 콘테이너가 존재하는 지를 확인한다 (S716). 가상 콘테이너의 존재 여부는 저장부 (526) 를 검색하여 확인할 수 있다.The application variation server 530 generates a variation code for the application (S712). The generated mutation code is provided to the agent unit 525 (S714). When receiving the mutation code, the agent unit 525 verifies the application information and mutation instructions provided together with the mutation code. The agent unit 525 also confirms the space in which the application related to the variation code is installed. The agent unit 525 confirms whether a virtual container exists in the target server 520 (S716). The presence or absence of the virtual container can be checked by searching the storage unit 526.

가상 콘테이너 (527) 가 존재하지 않는 경우, 에이전트부 (525) 는 가상 콘테이너를 생성한다 (S718). 이 경우, 가상 콘테이너에는 기존 애플리케이션인 App A가 함께 설치된다. If the virtual container 527 does not exist, the agent unit 525 creates a virtual container (S718). In this case, AppA, which is an existing application, is installed together in the virtual container.

상술한 바와 같이, 가상 콘테이너에 애플리케이션을 설치하여, 구동시킬 수 있다. 가상 콘테이너와 구별되는 공간으로 메인 공간이 있으며, 메인 공간에는 기본적으로 애플리케이션이 설치되어 있으며, 애플리케이션이 구동되고 있다.As described above, an application can be installed and driven in a virtual container. There is a main space in a space distinguished from a virtual container, and an application is basically installed in the main space, and an application is running.

가상 콘테이너가 기존에 존재했거나, 새로 설치한 경우, 에이전트부 (525) 는 가상 콘테이너에서 기존 애플리케이션인 App A를 App A'로 변경한다(S720). App A'는 수신된 변이 코드를 이용하여 App A가 변경된 애플리케이션이다. App A와 App A'는 기능상 동일하나, 보안을 위하여 변이 코드를 통하여 변경된 상태이다. App A와 App A'는 대부분의 코드는 동일하여, 변이 코드에 해당되는 일부 코드만 변경된 상태이다. In the case where the virtual container exists or newly installed, the agent unit 525 changes the existing application App A to the application A 'in the virtual container (S720). App A 'is an application in which App A is changed using the received mutation code. App A and App A 'are functionally the same, but have changed through mutation codes for security. App A and App A 'are the same as most of the codes, so only some codes corresponding to the mutation codes are changed.

가상 콘테이너에서 App A가 App A'로 변경된 경우, 에이전트부 (525) 는 App A'가 정상적으로 구동하는 지 테스트를 통하여 확인한다. 즉, 변경된 애플리케이션인 App A'가 실질적인 구동을 시작하기 전에 테스트 용도로 가상 콘테이너내에서 제대로 동작하는 지를 확인할 수 있다. 그에 따라서, 상기 테스트에서 App A'가 제대로 동작하는 경우에 한하여, 후속 과정을 진행한다. In a case where App A is changed to App A 'in the virtual container, the agent unit 525 confirms that the App A' is normally running. That is, it is possible to confirm that the changed application App A 'is operating properly in the virtual container for testing purposes before starting actual operation. Accordingly, only when App A 'is properly operated in the above test, a subsequent process is performed.

즉, 변이 코드를 적용하여 애플리케이션이 변경된 경우, 바로 실행하기 전에 애플리케이션을 시험적으로 구동하여 애플리케이션 동작의 안정성을 유도할 수 있다. 확인할 수 있듯이, 가상 콘테이너의 애플리케이션이 App A'로 변경된 후, App A'에 대한 테스트 구동이 동작하는 동안, 타깃 서버 (520) 전체에서 구동되는 애플리케이션은 메인 공간의 App A 이다. 따라서, App A'가 테스트를 통과한 경우에 한하여, 후속 작업을 수행함으로써, 애플리케이션의 중단없는 동작을 수행하면서도, 애플리케이션 변경 작업의 안정성을 기할 수 있다. 이때, 가상 공간의 App A'가 정상 구동되더라도 메인 공간의 App A도 구동될 수도 있다. 즉, 프록시 처리부에서 서비스 요청을 구동중인 가상 공간의 App A'에 전달하면 애플리케이션 동작은 진행되는 것이므로, 메인 공간의 App A가 반드시 중단될 필요는 없다.That is, when the application is changed by applying the mutation code, the application can be tentatively driven before it is executed to induce the stability of the application operation. As can be seen, while the application of the virtual container is changed to App A ', and the test drive for App A' is in operation, the application running in the entirety of the target server 520 is App A of the main space. Therefore, only when the application A 'passes the test, by performing the subsequent operation, the application change operation can be performed with stability while the application is performing uninterrupted operation. At this time, even if App A 'of the virtual space is normally operated, App A of the main space may be also driven. That is, when the proxy processing unit delivers the service request to the application A 'of the virtual space in operation, the application operation proceeds, so that the application A in the main space does not necessarily have to be stopped.

가상 콘테이너에 App A가 App A'로 변경된 경우, 가상 콘테이너에서는 App A'가 존재하고, 메인 공간에서는 App A가 존재하는 상태이다. When AppA is changed to AppA 'in the virtual container, AppA' is present in the virtual container and AppA is present in the main space.

에이전트부 (525) 는 App A' 의 정상 동작에 대한 테스트 검증이 성공한 경우 후속 과정으로 가상 콘테이너의 App A' 를 구동시키고, 메인 공간의 App A 는 중단시킨다. 이때 이를 통하여 변경된 애플리케이션인 App A'로 중단없이 변경되게 한다.When the test verification of the normal operation of App A 'is successful, the agent unit 525 drives App A' of the virtual container as a subsequent process and stops App A of the main space. At this time, the changed application, App A ', is changed without interruption.

프록시 처리부 (522) 및 에이전트부 (525) 는 Failover 기능을 담당하게 된다. 즉, 프록시 처리부 (522) 는 장치내 메인 공간 또는 가상 콘테이너의 애플리케이션 App A가 액티브상태인 경우 활성화 타깃앱 (unique) 으로 서비스 요청을 전달하고, 변이 과정(변이 코드 적용)에 돌입하게 되면 변이 과정이 진행됨에 따라 활성화 타깃앱이 변경되면, 서비스 요청을 변경된 타깃 앱으로 전달한다. 타깃 앱의 변경 주체는 에이전트부 (525) 가 된다. 즉, 활성화된 타깃 앱에 따라서 네트워크 전환을 하여 서비스 요청을 전달하는 주체는 프록시 처리부에서 진행하며, 애플리케이션의 변이 진행 정도에 따라서 타깃 앱을 변경하는 것은 에이전트부에서 진행한다. The proxy processing unit 522 and the agent unit 525 take charge of the failover function. That is, the proxy processing unit 522 delivers the service request to the active target application when the application App A of the in-device main space or the virtual container is in the active state. When the proxy processing unit 522 enters the mutation process (application of the mutation code) The target application is changed, the service request is transmitted to the changed target application. The change subject of the target application becomes the agent unit 525. [ That is, the proxy processing unit conducts the network switching according to the activated target application and delivers the service request, and the agent unit changes the target application according to the degree of progress of the application.

이후 과정은 도 8(a) 또는 도 8(b)를 참조하여 설명한다.The following process will be described with reference to Fig. 8 (a) or Fig. 8 (b).

도 8(a)는 단일 구조에 따라 애플리케이션 적용 동작의 2 실시예를 도시한 도면이다.Figure 8 (a) is a diagram illustrating two embodiments of an application application operation in accordance with a single architecture.

도 8(a)를 참조하면, 가상 콘테이너는 메인 공간의 애플리케이션이 변경되기 위한 임시적 스탠바이 서버 공간으로서 역할을 한다. 즉, 메인 공간의 애플리케이션이 변경되는 동안, 중단없는 구동을 위해서, 임시적으로 가상 콘테이너의 애플리케이션이 구동된다. Referring to FIG. 8 (a), the virtual container serves as a temporary standby server space for changing the application of the main space. That is, while the application in the main space is being changed, the application of the virtual container is temporarily activated for uninterrupted drive.

에이전트부 (525) 는 메인 공간의 App A를 변이 코드를 이용하여 App A'로 변경한다(S810). 변경한 후, 에이전트부 (525) 는 변경된 App A'가 정상적으로 구동하는 지를 확인한다 (S815). 메인 공간의 App A로 구동시키기 전에 정상적 구동 여부를 한번 더 테스트하는 과정이다. 정상적 구동이 확인된 후, 에이전트부 (525) 는 메인 공간의 App A' 를 구동시킴과 동시에 가상 콘테이너의 App A' 를 중단시킨다 (S830). 선택적 동작으로, 가상 콘테이너의 App A' 를 중단시킨 후, 에이전트부 (525) 는 가상 콘테이너를 제거할 수도 있다 (S830).The agent unit 525 changes App A of the main space to App A 'using the variation code (S810). After the change, the agent unit 525 confirms whether the changed App A 'is normally operated (S815). It is a process of testing once again whether it is running normally before driving it into App A of main space. After the normal operation is confirmed, the agent unit 525 drives the App A 'of the main space and stops the App A' of the virtual container (S830). As an optional operation, after suspending App A 'of the virtual container, the agent unit 525 may remove the virtual container (S830).

도 7 및 도 8(a)의 과정을 거쳐, 메인 공간의 애플리케이션인 App A는 변이 코드를 적용하여 App A'로 성공적으로 변경되어 구동될 수 있다.7 and 8 (a), App A, which is an application in the main space, can be successfully changed to App A 'by applying a mutation code.

도 8(b)는 단일 구조에 따라 애플리케이션 적용 동작의 3 실시예를 도시한 도면이다.Figure 8 (b) is a diagram illustrating three embodiments of application application operations in accordance with a single architecture.

도 8(b)를 참조하면, 가상 콘테이너는 메인 공간과 함께 계속 위치할 수 있다. 따라서, 가상 콘테이너는 메인 공간과 동등한 역할을 수행할 수 있다. 즉, 가상 콘테이너의 애플리케이션이 메인 공간의 애플리케이션이 변경된 후에 구동이 중단되지는 않는다. 1 과정에서 메인 공간의 애플리케이션이 변이 코드가 적용되어 변경되었다면, 2 과정에서는 가상 콘테이너의 애플리케이션이 변이 코드가 적용되어 변경되어 구동된다.Referring to Fig. 8 (b), the virtual container can continue to be positioned together with the main space. Therefore, the virtual container can perform an equivalent role to the main space. That is, the application of the virtual container is not stopped after the application of the main space is changed. If the application of the main space is changed by applying the mutation code in step 1, the application of the virtual container is changed and driven by applying the mutation code.

도 8(b) 는, 도 7의 S722에서 가상 콘테이너의 App A' 가 구동되고, 메인 공간의 App A 는 중단된 상태에서 시작된다. 이 경우, App A' 는 이후 변이 코드가 수신되기 전까지는 가상 콘테이너에서만 구동된다.8 (b), App A 'of the virtual container is started in S722 of FIG. 7, and App A of the main space is started in an interrupted state. In this case, App A 'is then driven only in the virtual container until a variation code is received.

애플리케이션 변이 서버 (530) 는 일정 시간이 지나면, 제 2 변이 코드를 생성한다 (S840). 생성된 제 2 변이 코드는 타깃 서버 (520) 의 에이전트부 (525) 에 제공된다 (S842).After a certain period of time, the application server 530 generates a second code (S840). The generated second variation code is provided to the agent unit 525 of the target server 520 (S842).

에이전트부 (525) 가 제 2 변이 코드를 수신한 경우, 에이전트부 (525) 는 제 2 변이 코드와 함께 제공된 애플리케이션 정보, 변이 명령들을 함께 확인한다. 또한, 에이전트부 (525) 는 변이 코드와 관련된 애플리케이션이 설치된 장소등도 함께 확인한다. 애플리케이션의 현재 버전인 App A' 는 가상 콘테이너에서 구동되고 있음을 확인한다. When the agent unit 525 receives the second variation code, the agent unit 525 confirms the application information and the variation instructions provided together with the second variation code. The agent unit 525 also confirms the place where the application related to the variation code is installed. App A ', the current version of the application, confirms that it is running in a virtual container.

에이전트부 (525) 는 메인 공간의 App A 를 제 2 변이 코드를 이용하여 App A'' 로 변경한다(S850). 즉, 메인 공간의 애플리케이션은 App A 에서 App A' 로 변경되는 과정은 없으며, App A 에서 App A'' 로 변경된다. 이러한 이력 정보등은 에이전트부 (525) 에 저장될 수 있다.The agent unit 525 changes App A of the main space to App A '' using the second code (S850). That is, the application in the main space is not changed from App A to App A ', and is changed from App A to App A' '. The history information and the like can be stored in the agent unit 525. [

메인 공간의 App A''에 대해서 정상 구동되는 지 확인한다 (S855). 정상 구동이 확인된 경우, 에이전트부 (525) 는 메인 공간의 App A'' 를 구동시키는 동시에 가상 콘테이너의 App A'는 구동 중단시킨다 (S860). It is confirmed whether the application A '' in the main space is normally operated (S855). If the normal operation is confirmed, the agent unit 525 drives the App A '' of the main space and deactivates the App A 'of the virtual container (S860).

구동되는 App A''는 다음 변경인 제 2 변이 코드가 제공되기 전까지 메인 공간에서만 구동될 수 있다.The driven App A " 'can only be driven in the main space until a second variation code, the next change, is provided.

도 9는 애플리케이션에 대한 변이 코드 적용의 예를 도시한 도면이다.9 is a diagram showing an example of application of a variation code to an application.

본 명세서에서, 애플리케이션 변이 서버에 의해서 변이 코드가 생성되고, 그 변이 코드에 애플리케이션은 지속적으로 변경되는 것으로 설명하였다. 이것은 애플리케이션 보안을 위한 것으로, 애플리케이션의 특정 일부 코드를 계속적으로 변이 코드를 이용하여 대체하는 방식이다. 이를 통하여 외부의 해킹등의 시도에 대해서 안정적으로 보호할 수 있다.In this specification, it has been described that a mutation code is generated by an application mutation server, and the application is continuously changed in the mutation code. This is for application security and is a way to continually replace some of the application's code with mutation code. Through this, it is possible to protect against attempts such as external hacking.

도 9 의 (a), (b), (c), (d) 각각은 하나의 애플리케이션을 의미하며, 기능적으로는 동일한 애플리케이션이다. 즉, (a)의 애플리케이션을 애플리케이션 원본 코드라고 가정하면, (b)는 애플리케이션의 일부 코드가 변이 코드로 대체된 경우이며, (c) 는 애플리케이션의 일부 코드가 다음 변이 코드로 한번 더 대체된 경우이며, (d) 는 애플리케이션의 일부 코드가 그 다음 변이 코드로 한번 더 대체된 경우이다.Each of FIGS. 9A, 9B, 9C, and 9D represents one application, which is functionally the same application. That is, supposing that the application of (a) is the application original code, (b) is a case where some code of the application is replaced with a mutation code, and (c) (D) is a case where some code of the application is replaced with the next code.

간단하게 도식화하면, A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P 각각은 애플리케이션을 구성하는 코드를 의미한다. 코드들의 조직인 (A,B,C,D),(E,F,G,H),(I,J,K,L),(M,N,O,P)는 각각이 기능단인 모듈을 나타낸다. 모듈의 예로, 인증 모듈, 통신 모듈, 입력 모듈등 애플리케이션에서 수행하는 기능단을 모듈로 설명할 수 있다. 모듈들의 합을 애플리케이션으로 볼 수 있다.In the simplest case, each of A, B, C, D, E, F, G, H, I, J, K, L, M, N, The modules of the codes (A, B, C, D), (E, F, G, H), (I, J, K, L) . An example of a module is a function module that can be implemented in an application, such as an authentication module, a communication module, and an input module. The sum of the modules can be viewed as an application.

본 발명은, 애플리케이션을 이루는 코드를 변이 코드로 대체하는 것을 전제로 설명된다. 편의를 위해서 설명하면, (a) 는 App A, (b) 는 App A', (c) 는 App A'', (d) 는 App A'''에 해당될 수 있다. 도 9을 참조하면, (a) 의 원본 애플리케이션 코드는 (b) 에서 A',B,C,D,E',F,G,H,I,J,K,L',M,N,O,P 로 변경된다. 즉, 원본 코드인 A, E, L 은 변이 코드인 A', E', L' 로 대체된다. (c) 에서는, 변이 코드인 A'', E'', L''로 대체된다. (d) 에서는, 변이 코드인 A''', E''', L''' 로 대체된다. 애플리케이션에 대한 기능은 그대로 유지하되 정기적으로 또는 비정기적으로 애플리케이션의 일부 코드가 변경되는 경우, 리버스 엔지니어링등으로 코드를 분석하더라도, 애플리케이션을 분석하는 것이 극히 어려워진다. The present invention is described on the assumption that the code constituting the application is replaced with a variation code. For convenience, (a) can be applied to App A, (b) to App A ', (c) to App A' 'and (d) to App A' ''. Referring to FIG. 9, the original application code of (a) is shown in (b) as A ', B, C, D, E', F, G, H, I, J, K, L ' , And P, respectively. That is, the original codes A, E, and L are replaced with the mutation codes A ', E', and L '. (c), the mutation codes A '', E '', and L '' are substituted. (d), the mutation codes A '' ', E' '', and L '' 'are substituted. Keeping the functionality of your application intact, but it is extremely difficult to analyze your application, even if you analyze code by reverse engineering, if some code in your application changes on a regular or irregular basis.

애플리케이션의 어떤 코드가 변이 코드로 적용될 지 여부는 애플리케이션 변이 서버가 사전에 결정한다. It is up to the application server to decide which code in the application should be applied as the mutation code.

모듈 측면에서 보면, (A,B,C,D), (E,F,G,H), (I,J,K,L) 은 변이 코드가 적용되는 모듈이나, (M,N,O,P) 은 변이 코드가 적용되지 않는 상태이다.In the module side, (A, B, C, D), (E, F, G, H) P) is a state in which the mutation code is not applied.

한편, 변이 코드인 A', A'', A''' 은 난독화 (랜덤화) 방식이 적용된다. On the other hand, the mutation codes A ', A' ', and A' '' are obfuscated (randomized).

본 발명은 애플리케이션 변이 서버로부터 변이 코드를 수신하는 것을 전제로 적용된다. 자세한 내용은 한국 특허 출원 (10-2017-0156035) 를 참조한다. 즉, 애플리케이션 변이 서버가 애플리케이션을 구성하는 일부 코드를 계속적으로 변경하고, 해당 변경된 일부 코드만 타깃 서버에 송신한다. 타깃 서버는 변경된 일부 코드를 이용하여 타깃 서버에 설치된 애플리케이션의 일부 코드를 변경한다.The present invention is applied on the assumption that a mutation code is received from an application mutation server. For details, refer to Korean Patent Application (10-2017-0156035). That is, the application server constantly changes some codes constituting the application, and transmits only the changed code to the target server. The target server changes some code of the application installed on the target server using the changed code.

110 제 1 타깃 서버
120 제 2 타깃 서버
130 에이전트부
140 애플리케이션 변이 서버
110 first target server
120 Second target server
130 agent section
140 Application Variant Server

Claims (20)

에이전트 단말이 특정 애플리케이션에 대한 제 1 버전인 제 1 애플리케이션을 제 1 타깃 단말에서 구동시키는 단계;
상기 에이전트 단말이 애플리케이션 변이 서버로부터 상기 특정 애플리케이션에 관련된 변이 코드를 수신하는 단계;
상기 에이전트 단말이 상기 변이 코드를 활용하여 상기 특정 애플리케이션에 대한 제 2 버전인 제 2 애플리케이션을 제 2 타깃 단말에 생성하는 단계;
상기 에이전트 단말이 상기 제 2 타깃 단말에서 상기 제 2 애플리케이션이 정상 구동하는 지에 대한 테스트 동작을 수행하는 단계; 및
테스트 동작시 정상 구동하는 경우에 한하여 상기 에이전트 단말이 상기 제 1 타깃 단말에서 상기 제 1 애플리케이션을 중단시키고, 상기 제 2 타깃 단말에서 상기 제 2 애플리케이션을 구동시키는 단계를 포함하며,
이중화 장치가 클라이언트 단말로부터 서비스 요청을 수신하는 단계; 및
서비스 요청 수신시 상기 이중화 장치가 상기 제 1 타깃 단말 및 상기 제 2 타깃 단말 중 상기 특정 애플리케이션이 구동 중인 단말에 상기 서비스 요청을 송신하는 단계를 더 포함하는,
중단없는 애플리케이션 구동 방법.
Operating an agent terminal at a first target terminal, the first application being a first version for a specific application;
The agent terminal receiving a variation code associated with the specific application from an application variation server;
The agent terminal using the mutation code to generate a second application, which is a second version for the specific application, to the second target terminal;
Performing a test operation to determine whether the agent terminal performs normal operation of the second application in the second target terminal; And
And stopping the first application at the first target terminal and the second application at the second target terminal only when the agent terminal performs normal operation during a test operation,
Receiving a service request from a client terminal; And
Further comprising the step of, when the service request is received, the duplicating device sending the service request to the terminal, the first target terminal and the second target terminal,
How to run the application without interruption.
제 1 항에 있어서,
상기 에이전트 단말이 상기 제 2 타깃 단말에서 상기 제 2 애플리케이션을 구동시킨 후 상기 제 1 타깃 단말에서 상기 변이 코드를 활용하여 상기 제 2 애플리케이션을 생성하는 단계;
상기 에이전트 단말이 상기 제 1 타깃 단말에서 상기 제 2 애플리케이션이 정상 구동하는 지에 대한 테스트 동작을 수행하는 단계; 및
상기 테스트 동작시 정상 구동하는 경우에 한하여 상기 에이전트 단말이 상기 제 2 타깃 단말에서 상기 제 2 애플리케이션을 중단시키고, 상기 제 1 타깃 단말에서 상기 제 2 애플리케이션을 구동시키는 단계를 더 포함하는,
중단없는 애플리케이션 구동 방법.
The method according to claim 1,
After the agent terminal drives the second application at the second target terminal, generating the second application using the mutation code at the first target terminal;
Performing a test operation to determine whether the agent terminal is normally operating the second application in the first target terminal; And
Further comprising: stopping the second application at the second target terminal and running the second application at the first target terminal only when the agent terminal performs normal operation during the test operation.
How to run the application without interruption.
제 2 항에 있어서,
상기 에이전트 단말은 상기 테스트 동작시 상기 특정 애플리케이션과 관련된 서비스 웹 페이지 URL을 접속하여 질의에 대한 응답으로 HTTP 404 에러가 회신되지 않은 경우 정상 구동으로 판단하는,
중단없는 애플리케이션 구동 방법.
3. The method of claim 2,
Wherein the agent terminal accesses a service web page URL related to the specific application in the test operation and determines that the application is in a normal operation when an HTTP 404 error is not returned in response to the query.
How to run the application without interruption.
제 2 항에 있어서,
상기 제 1 타깃 단말에서 상기 제 2 애플리케이션이 구동된 이후 상기 에이전트 단말이 상기 제 1 타깃 단말에서 상기 제 2 애플리케이션 구동 에러를 확인하는 단계; 및
상기 에이전트 단말이 상기 제 1 타깃 단말에서 상기 제 2 애플리케이션을 중단시키고 상기 제 2 타깃 단말에서 상기 제 2 애플리케이션을 구동시키는 단계를 더 포함하는,
중단없는 애플리케이션 구동 방법.
3. The method of claim 2,
Confirming the second application running error at the first target terminal by the agent terminal after the second application is started at the first target terminal; And
Further comprising the step of the agent terminal terminating the second application at the first target terminal and running the second application at the second target terminal.
How to run the application without interruption.
제 4 항에 있어서,
상기 에러에 대하여 상기 제 2 타깃 단말에서 상기 제 2 애플리케이션이 구동된 후, 상기 에이전트 단말이 상기 제 1 타깃 단말에서 상기 제 1 애플리케이션을 복구시키는 단계; 및
상기 에이전트 단말이 상기 제 1 타깃 단말에서 상기 제 1 애플리케이션의 복구를 확인한 경우 상기 제 2 타깃 단말에서 상기 제 애플리케이션을 중단시키고 상기 제 1 타깃 단말에서 상기 제 1 애플리케이션을 구동시키는 단계를 더 포함하는,
중단없는 애플리케이션 구동 방법.
5. The method of claim 4,
Causing the agent terminal to recover the first application at the first target terminal after the second application is run at the second target terminal for the error; And
Further comprising stopping the application at the second target terminal and running the first application at the first target terminal when the agent terminal confirms the recovery of the first application at the first target terminal,
How to run the application without interruption.
제 1 항에 있어서,
상기 이중화 장치는 상기 제 1 타깃 단말 및 상기 제 2 타깃 단말 중 어느 단말에서 상기 특정 애플리케이션이 구동되는 지의 정보를 확인하고 있으며,
상기 클라이언트 단말이 상기 서비스 요청을 공용 IP로 전송한 경우 상기 이중화 장치가 상기 서비스 요청을 수신하며,
상기 이중화 장치는 상기 서비스 요청을 상기 타깃 단말 중 상기 특정 애플리케이션이 구동 중인 타깃 단말에 상기 타깃 단말 각각에 대해서 설정된 시스템 내부 IP로 송신하는,
중단없는 애플리케이션 구동 방법.
The method according to claim 1,
Wherein the duplication device confirms information on which of the first target terminal and the second target terminal the specific application is running in,
When the client terminal transmits the service request as a public IP, the redundancy device receives the service request,
Wherein the redundancy device transmits the service request to a target terminal in which the specific application is running among the target terminals as a system internal IP set for each of the target terminals,
How to run the application without interruption.
제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
상기 제 1 애플리케이션과 상기 제 2 애플리케이션은 상기 특정 애플리케이션의 상이한 버전이며, 기능 동작은 동일한 것을 특징으로 하며,
상기 제 2 애플리케이션은 상기 특정 애플리케이션의 일부 코드를 상기 변이 코드로 대체한 것을 특징으로 하는,
중단없는 애플리케이션 구동 방법.
7. The method according to any one of claims 1 to 6,
Wherein the first application and the second application are different versions of the particular application and the functional operations are the same,
And the second application replaces some code of the specific application with the mutation code.
How to run the application without interruption.
제 7 항에 있어서,
상기 제 1 타깃 단말은 상기 특정 애플리케이션에 대한 주 서버이며,
상기 제 2 타깃 단말은 상기 특정 애플리케이션에 대한 보조 서버인,
중단없는 애플리케이션 구동 방법.
8. The method of claim 7,
The first target terminal is a main server for the specific application,
The second target terminal may be an auxiliary server for the specific application,
How to run the application without interruption.
특정 애플리케이션에 대한 변이 코드를 생성하는 애플리케이션 변이 서버;
상기 특정 애플리케이션에 대한 제 1 버전인 제 1 애플리케이션이 구동되는 제 1 타깃 단말;
제 2 타깃 단말; 및
상기 제 1 타깃 단말 및 상기 제 2 타깃 단말에서 상기 특정 애플리케이션의 구동 여부를 제어하는 에이전트 단말을 포함하며,
상기 에이전트 단말은,
상기 애플리케이션 변이 서버로부터 상기 변이 코드를 수신한 경우, 상기 변이 코드를 활용하여 상기 특정 애플리케이션에 대한 제 2 버전인 제 2 애플리케이션을 상기 제 2 타깃 단말에 생성하고,
상기 제 2 타깃 단말에서 상기 제 2 애플리케이션이 테스트 동작시 정상 구동하는 경우에 한하여 상기 제 1 타깃 단말에서 상기 제 1 애플리케이션을 중단시키고 상기 제 2 타깃 단말에서 상기 제 2 애플리케이션을 구동시키도록 제어하는,
중단없는 애플리케이션 구동 시스템.
An application variation server for generating a variation code for a specific application;
A first target terminal for running a first application, the first version for the specific application;
A second target terminal; And
And an agent terminal for controlling whether the specific application is driven in the first target terminal and the second target terminal,
The agent terminal,
When the mutation code is received from the application server, generating a second application, which is a second version for the specific application, to the second target terminal using the mutation code,
The second target terminal stops the first application at the first target terminal and controls the second target terminal to start the second application only when the second application performs normal operation in the test operation,
An uninterrupted application-driven system.
제 9 항에 있어서,
클라이언트 단말로부터 서비스 요청을 수신하는 이중화 장치를 더 포함하며,
상기 이중화 장치는,
상기 제 1 타깃 단말 및 상기 제 2 타깃 단말 중 어느 단말에서 상기 특정 애플리케이션이 구동 중인지의 정보를 확인하며,
상기 서비스 요청을 수신한 경우, 상기 특정 애플리케이션이 구동 중인 타깃 단말에 상기 서비스 요청을 송신하는,
중단없는 애플리케이션 구동 시스템.
10. The method of claim 9,
Further comprising a duplication device for receiving a service request from a client terminal,
The above-
The first target terminal and the second target terminal confirm information of the particular application being driven,
When receiving the service request, transmitting the service request to the target terminal in which the specific application is running,
An uninterrupted application-driven system.
제 10 항에 있어서,
상기 클라이언트 단말이 상기 서비스 요청을 상기 구동 시스템에 대한 공용 IP 로 전송한 경우, 상기 이중화 장치가 상기 서비스 요청을 수신하며,
상기 이중화 장치는 상기 타깃 단말 각각에 대해서 설정된 시스템 내부 IP로 상기 서비스 요청을 상기 타깃 단말에 송신하는,
중단없는 애플리케이션 구동 시스템.
11. The method of claim 10,
When the client terminal transmits the service request to the public IP for the drive system, the duplication device receives the service request,
Wherein the redundancy device transmits the service request to the target terminal in a system internal IP set for each of the target terminals,
An uninterrupted application-driven system.
제 9 항에 있어서,
상기 에이전트 단말은,
상기 제 2 타깃 단말에서 상기 제 2 애플리케이션을 구동시킨 후, 상기 제 1 타깃 단말에서 상기 변이 코드를 활용하여 상기 제 2 애플리케이션을 생성하며,
상기 제 1 타깃 단말에서 상기 제 2 애플리케이션이 테스트 동작시 정상 구동하는 경우에 한하여 상기 제 2 타깃 단말에서 상기 제 2 애플리케이션을 중단시키고 상기 제 1 타깃 단말에서 상기 제 2 애플리케이션을 구동시키도록 제어하는,
중단없는 애플리케이션 구동 시스템.
10. The method of claim 9,
The agent terminal,
Generating the second application by using the mutation code in the first target terminal after driving the second application in the second target terminal,
The second target terminal suspends the second application and controls the first target terminal to drive the second application only when the second application performs normal operation in the test operation,
An uninterrupted application-driven system.
제 12 항에 있어서,
상기 에이전트 단말은 상기 제 1 타깃 단말 또는 상기 제 2 타깃 단말에서 상기 제 2 애플리케이션이 정상 구동하는 지에 대한 상기 테스트 동작을 제어하며,
상기 테스트 동작시 상기 특정 애플리케이션과 관련된 서비스 웹 페이지 URL을 접속하여 질의에 대한 응답으로 HTTP 404 에러가 회신되지 않는 경우 정상 동작으로 판단하는,
중단없는 애플리케이션 구동 시스템.
13. The method of claim 12,
The agent terminal controls the test operation as to whether the second application is normally operated in the first target terminal or the second target terminal,
Wherein when the HTTP 404 error is not returned in response to the query by accessing the service web page URL related to the specific application in the test operation,
An uninterrupted application-driven system.
제 12 항에 있어서,
상기 에이전트 단말은,
상기 제 1 타깃 단말에서 상기 제 2 애플리케이션이 구동된 이후 상기 제 1 타깃 단말에서 상기 제 2 애플리케이션 구동 에러가 발생한 경우,
상기 제 1 타깃 단말에서 상기 제 2 애플리케이션을 중단시키고 상기 제 2 타깃 단말에서 상기 제 2 애플리케이션을 구동시키도록 제어하는,
중단없는 애플리케이션 구동 시스템.
13. The method of claim 12,
The agent terminal,
When the second application driving error occurs in the first target terminal after the second application is driven in the first target terminal,
The first target terminal stops the second application and controls the second target terminal to start the second application,
An uninterrupted application-driven system.
제 14 항에 있어서,
상기 에러 발생에 대하여 상기 제 2 타깃 단말에서 상기 제 2 애플리케이션이 구동된 이후에, 상기 에이전트 단말은 상기 제 1 타깃 단말에서 상기 제 1 애플리케이션을 복구시키고,
상기 에이전트 단말은 상기 제 1 타깃 단말에서 상기 제 1 애플리케이션의 복구를 확인한 경우 상기 제 2 타깃 단말에서 상기 제 2 애플리케이션을 중단시키고 상기 제 1 타깃 단말에서 상기 제 1 애플리케이션을 구동시키도록 제어하는,
중단없는 애플리케이션 구동 시스템.
15. The method of claim 14,
After the second application is activated in the second target terminal for the error occurrence, the agent terminal recovers the first application from the first target terminal,
Wherein the agent terminal controls the second target terminal to stop the second application and to drive the first application at the first target terminal when confirming the recovery of the first application at the first target terminal,
An uninterrupted application-driven system.
제 9 항 내지 제 15 항 중 어느 한 항에 있어서,
상기 제 1 애플리케이션과 상기 제 2 애플리케이션은 상기 특정 애플리케이션의 상이한 버전이며, 기능 동작은 동일한 것을 특징으로 하며,
상기 제 2 애플리케이션은 상기 특정 애플리케이션의 일부 코드를 상기 변이 코드로 대체한 것을 특징으로 하는,
중단없는 애플리케이션 구동 시스템.
16. The method according to any one of claims 9 to 15,
Wherein the first application and the second application are different versions of the particular application and the functional operations are the same,
And the second application replaces some code of the specific application with the mutation code.
An uninterrupted application-driven system.
제 14 항에 있어서,
상기 제 1 타깃 단말은 상기 특정 애플리케이션에 대한 주 서버이며,
상기 제 2 타깃 단말은 상기 특정 애플리케이션에 대한 보조 서버인,
중단없는 애플리케이션 구동 시스템.
15. The method of claim 14,
The first target terminal is a main server for the specific application,
The second target terminal may be an auxiliary server for the specific application,
An uninterrupted application-driven system.
삭제delete 삭제delete 삭제delete
KR1020180105917A 2018-09-05 2018-09-05 Method and apparatus for actuating an application without cessation KR101941274B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180105917A KR101941274B1 (en) 2018-09-05 2018-09-05 Method and apparatus for actuating an application without cessation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180105917A KR101941274B1 (en) 2018-09-05 2018-09-05 Method and apparatus for actuating an application without cessation

Publications (1)

Publication Number Publication Date
KR101941274B1 true KR101941274B1 (en) 2019-01-22

Family

ID=65287473

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180105917A KR101941274B1 (en) 2018-09-05 2018-09-05 Method and apparatus for actuating an application without cessation

Country Status (1)

Country Link
KR (1) KR101941274B1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120139174A (en) * 2011-06-17 2012-12-27 인크로스 주식회사 Real time update method of application of mobile terminal
JP2014106690A (en) * 2012-11-27 2014-06-09 Kddi Corp Terminal equipment, server, content distribution system, content distribution method and program
KR101885146B1 (en) * 2017-11-22 2018-08-03 (유)아홉 Method and apparatus for protecting an application

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120139174A (en) * 2011-06-17 2012-12-27 인크로스 주식회사 Real time update method of application of mobile terminal
KR101254208B1 (en) * 2011-06-17 2013-04-18 인크로스 주식회사 Real Time Update Method Of Application Of Mobile Terminal
JP2014106690A (en) * 2012-11-27 2014-06-09 Kddi Corp Terminal equipment, server, content distribution system, content distribution method and program
KR101885146B1 (en) * 2017-11-22 2018-08-03 (유)아홉 Method and apparatus for protecting an application

Similar Documents

Publication Publication Date Title
US11561865B2 (en) Systems and methods for host image transfer
AU2006297144B2 (en) Application of virtual servers to high availability and disaster recovery solutions
US8069218B1 (en) System, method and computer program product for process migration with planned minimized down-time
US8407518B2 (en) Using virtual machine cloning to create a backup virtual machine in a fault tolerant system
JP2014142957A (en) System and method for migrating one or more virtual machines
US11650891B2 (en) Preventing non-detectable data loss during site switchover
JP3933587B2 (en) Computer system, computer apparatus, and operating system transfer method
US11755364B2 (en) Transferral of process state and/or components in computing environments
US20200272708A1 (en) Computer system, computer apparatus, and license management method
KR101941274B1 (en) Method and apparatus for actuating an application without cessation
Distler et al. State transfer for hypervisor-based proactive recovery of heterogeneous replicated services
TWI778295B (en) Information handling system, power operation controller thereof and method of handling power requests during cluster operations
US20240028691A1 (en) Capability-restricted system control
JP4738175B2 (en) Server apparatus, server accommodation method, and server accommodation program
CN104573498A (en) Method and equipment capable of protecting operating system from Trojan and virus attack

Legal Events

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