KR101909420B1 - Device and method for constructing monolithic application as microservice based unit - Google Patents

Device and method for constructing monolithic application as microservice based unit Download PDF

Info

Publication number
KR101909420B1
KR101909420B1 KR1020180044276A KR20180044276A KR101909420B1 KR 101909420 B1 KR101909420 B1 KR 101909420B1 KR 1020180044276 A KR1020180044276 A KR 1020180044276A KR 20180044276 A KR20180044276 A KR 20180044276A KR 101909420 B1 KR101909420 B1 KR 101909420B1
Authority
KR
South Korea
Prior art keywords
micro
menu
menus
class
layer
Prior art date
Application number
KR1020180044276A
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 KR1020180044276A priority Critical patent/KR101909420B1/en
Application granted granted Critical
Publication of KR101909420B1 publication Critical patent/KR101909420B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

The present invention relates to a device for configuring a monolithic application in a microservice unit and a method thereof. According to the present invention, the device for configuring a monolithic application in a microservice unit comprises: a layering unit for classifying a menu included in an application into a plurality of layers and layering the same; a graph generating unit for generating a graph by connecting each of the menus to a vertex and another menu to an edge; and configuring a microserver for the application by calculating a degree of similarity of change between the menus in the graph according to a commit and removing the line between the menus whose calculated weights are equal to or less than a threshold value.

Description

모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치 및 방법{DEVICE AND METHOD FOR CONSTRUCTING MONOLITHIC APPLICATION AS MICROSERVICE BASED UNIT}BACKGROUND OF THE INVENTION 1. Field of the Invention [0001] The present invention relates to a device and a method for configuring a monolithic application as a micro-

본 발명은 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치 및 방법에 관한 것이다.The present invention relates to an apparatus and method for constructing a monolithic application in a micro-service unit.

종래 기술에서의 모놀리식 애플리케이션은 규모가 커질수록 내부 구조가 복잡해지는 경향이 있다. 그래서, 종래 기술에서의 모놀리식 애플리케이션의 규모가 커지면, 코드 변경, 재사용성 및 배포가 어려워진다는 문제점이 있다. 예를 들어, 종래 기술에서는 하나의 기능을 업데이트 및 배포하기 위해 전체 시스템의 구조를 이해하고 다시 시스템을 재배포 해야 하는 번거로움이 있다.Monolithic applications in the prior art tend to be more complex as the scale increases. Thus, when the size of a monolithic application in the prior art increases, there is a problem that code change, reusability, and distribution become difficult. For example, in the prior art, there is a need to understand the structure of the entire system in order to update and distribute one function, and re-distribute the system again.

이러한 문제점을 해결하기 위해, 마이크로서비스 개념이 도입되고 있다. 마이크로서비스는 독립적으로 동작 가능한 작은 규모의 서비스를 의미한다. 마이크로서비스는 다른 마이크로서비스의 내부 구조를 알지 못해도 독립적인 업데이트가 가능하므로, 기존 모놀리식 애플리케이션 보다 확장성이 매우 높고 빠른 개발 및 배포가 가능하다는 장점이 있다. 하지만, 종래 기술에서, 모놀리식 애플리케이션을 마이크로서비스로 구성하는 기술은 아직 개발되지 않고 있는 실정이다.To solve these problems, the concept of microservice has been introduced. Micro-service means a small-scale service that can operate independently. MicroService has the advantage of being able to update and deploy more rapidly than existing monolithic applications because it can update independently without knowing the internal structure of other micro services. However, in the prior art, a technology for constructing a monolithic application as a micro-service has not been developed yet.

따라서, 마이크로서비스의 장점을 통해, 모놀리식 애플리케이션을 보다 확장성을 높이고 개발에 따른 배포를 빠르게 할 수 있도록 하는 기술이 필요하다.Thus, with the advantages of micro-services, there is a need for technologies that enable monolithic applications to be more scalable and faster to deploy.

본 발명은 상기와 같은 문제점을 해결하기 위하여 안출된 것으로서, 클래스 정보와 개발 변경 기록을 분석하여 모놀리식 애플리케이션을 마이크로서비스 단위로 구성할 수 있는 것을 목적으로 한다.SUMMARY OF THE INVENTION The present invention is conceived to solve the above problems, and it is an object of the present invention to construct a monolithic application by micro service unit by analyzing class information and development change record.

상기의 목적을 이루기 위한 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치는, 애플리케이션에 포함되는 메뉴를, 복수의 레이어로 분류하여 계층화 하는 계층화부, 상기 메뉴 각각을 정점(vertex)으로, 다른 메뉴를 선(edge)으로 연결하여 그래프를 생성하는 그래프 생성부, 및 변경명령(commit)에 따라, 상기 그래프 내의 메뉴 간의 변경 유사도를 가중치로 산출하고, 산출된 상기 가중치가 임계치 이하인 메뉴 간의 상기 선을 제거하여, 상기 애플리케이션에 대해 마이크로서비스를 구성하는 구성부를 포함할 수 있다.According to an aspect of the present invention, there is provided an apparatus for configuring a monolithic application in units of micro-services, the apparatus comprising: a layering unit for classifying menus included in an application into a plurality of layers and layering the menus; And calculating a similarity degree of change between the menus in the graph according to a commit command and calculating the degree of similarity between the menus in which the calculated weight value is equal to or less than a threshold value, And configured to configure the micro-service for the application.

또한, 상기 목적을 달성하기 위한 기술적 방법으로서, 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 방법은, 애플리케이션에 포함되는 메뉴를, 복수의 레이어로 분류하여 계층화 하는 단계, 상기 메뉴 각각을 정점으로, 다른 메뉴를 선으로 연결하여 그래프를 생성하는 단계, 및 변경명령에 따라, 상기 그래프 내의 메뉴 간의 변경 유사도를 가중치로 산출하고, 산출된 상기 가중치가 임계치 이하인 메뉴 간의 상기 선을 제거하여, 상기 애플리케이션에 대해 마이크로서비스를 구성하는 단계를 포함하여 구성할 수 있다.According to another aspect of the present invention, there is provided a method of configuring a monolithic application in units of micro services, comprising the steps of classifying menus included in an application into a plurality of layers and layering the menus, Generating a graph by connecting another menu with a line and calculating a degree of similarity of change between the menus in the graph according to the change command and removing the line between the calculated menus whose weights are equal to or less than the threshold, And configuring a micro-service for the service.

본 발명의 일실시예에 따르면, 클래스 정보와 개발 변경 기록을 분석하여 모놀리식 애플리케이션을 마이크로서비스 단위로 구성함으로써, 컴포넌트 단위의 개발 방식보다 확장성을 높일 수 있고 개발 및 배포를 보다 빠르게 할 수 있다.According to an embodiment of the present invention, by analyzing the class information and the development change record and constructing the monolithic application as a micro service unit, it is possible to enhance the scalability and speed up development and distribution more than the component-based development method have.

도 1은 본 발명의 일실시예에 따른 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치 및 방법을 통해 마이크로서비스를 구성하는 과정을 개략적으로 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치를 나타내는 블록도이다.
도 3은 본 발명의 일실시예에 따른 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하도록 처리하는 단계들을 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 계층화 단계를 설명하기 위한 도면이다.
도 5는 본 발명의 일실시예에 따른 그래프화 단계를 설명하기 위한 도면이다.
도 6은 본 발명의 일실시예에 따른 그래프화 단계를 설명하기 위한 도면이다.
도 7은 본 발명의 일실시예에 따른 마이크로서비스 단위의 재구성을 구현하는 과정을 설명하기 위한 도면이다.
도 8은 본 발명의 일실시예에 따른 계층화 단계를 구현하는 과정을 설명하기 위한 도면이다.
도 9 및 도 10은 본 발명의 일실시예에 따른 그래프화 단계를 구현하는 과정을 설명하기 위한 도면이다.
도 11 및 도 12는 본 발명의 일실시예에 따른 마이크로서비스 구성 단계를 구현하는 과정을 설명하기 위한 도면이다.
도 13은 본 발명의 일실시예에 따른 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 방법을 구체적으로 도시한 작업 흐름도이다.
FIG. 1 is a diagram schematically illustrating a process of configuring a micro-service through an apparatus and method for constructing a monolithic application according to an embodiment of the present invention.
2 is a block diagram illustrating an apparatus for constructing a monolithic application in units of micro-services according to an embodiment of the present invention.
FIG. 3 is a diagram illustrating steps of processing a monolithic application according to an embodiment of the present invention to construct a micro service unit.
4 is a view for explaining a layering step according to an embodiment of the present invention.
5 is a view for explaining a graphing step according to an embodiment of the present invention.
6 is a view for explaining a graphing step according to an embodiment of the present invention.
FIG. 7 is a diagram illustrating a process of implementing reconfiguration of a micro-service unit according to an embodiment of the present invention.
FIG. 8 is a view for explaining a process of implementing a layering step according to an embodiment of the present invention.
9 and 10 are views for explaining the process of implementing the graphing step according to an embodiment of the present invention.
11 and 12 are views for explaining a process of implementing a micro-service configuration step according to an embodiment of the present invention.
13 is a flowchart illustrating a method of configuring a monolithic application according to an exemplary embodiment of the present invention in units of micro-services.

이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 실시예들에는 다양한 변경이 가해질 수 있어서 특허출원의 권리 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 실시예들에 대한 모든 변경, 균등물 내지 대체물이 권리 범위에 포함되는 것으로 이해되어야 한다.In the following, embodiments will be described in detail with reference to the accompanying drawings. However, various modifications may be made in the embodiments, and the scope of the patent application is not limited or limited by these embodiments. It is to be understood that all changes, equivalents, and alternatives to the embodiments are included in the scope of the right.

실시예에서 사용한 용어는 단지 설명을 목적으로 사용된 것으로, 한정하려는 의도로 해석되어서는 안된다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terms used in the examples are used for descriptive purposes only and are not to be construed as limiting. The singular expressions include plural expressions unless the context clearly dictates otherwise. In this specification, the terms "comprises" or "having" and the like refer to the presence of stated features, integers, steps, operations, elements, components, or combinations thereof, But do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this embodiment belongs. Terms such as those defined in commonly used dictionaries are to be interpreted as having a meaning consistent with the contextual meaning of the related art and are to be interpreted as either ideal or overly formal in the sense of the present application Do not.

또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.In the following description of the present invention with reference to the accompanying drawings, the same components are denoted by the same reference numerals regardless of the reference numerals, and redundant explanations thereof will be omitted. In the following description of the embodiments, a detailed description of related arts will be omitted if it is determined that the gist of the embodiments may be unnecessarily blurred.

본 명세서에서 설명되는 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치 및 방법은 모놀리식 애플리케이션의 클래스 정보와 개발 변경 기록을 분석하여 계층화, 그래프화, 마이크로서비스 구성의 3단계를 통해 마이크로서비스 단위로 애플리케이션을 구성할 수 있다.The apparatus and method for constructing the monolithic application described in the present specification as a micro service unit analyzes the class information of the monolithic application and the development change record and provides the micro service unit through three steps of layering, The application can be configured with.

도 1은 본 발명의 일실시예에 따른 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치 및 방법을 통해 마이크로서비스를 구성하는 과정을 개략적으로 도시한 도면이다.FIG. 1 is a diagram schematically illustrating a process of configuring a micro-service through an apparatus and method for constructing a monolithic application according to an embodiment of the present invention.

모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치 및 방법(이하, 구성 장치 및 방법)을 구체적으로 설명하기 전에, 상기 장치 및 방법을 이용하여 모놀리식 애플리케이션을 마이크로서비스로 어떻게 구성하는지 전체 과정을 개략적으로 설명하고자 한다.Before describing specifically the apparatus and method for configuring a monolithic application as a micro-service unit (hereinafter, a configuration apparatus and a method), the entire process of how to configure a monolithic application as a micro-service using the apparatus and method Which will be described in brief.

먼저, 본 발명의 구성 장치 및 방법은 모놀리식 애플리케이션의 소스 코드(Source Code)를 수집할 수 있다(110). 예를 들면, 본 발명의 구성 장치 및 방법은 모놀리식 애플리케이션 자바 소스 코드를 수집할 수 있다.First, the constituent apparatus and method of the present invention may collect the source code of the monolithic application (110). For example, the inventive arrangements and methods may collect monolithic application Java source code.

다음으로, 본 발명의 구성 장치 및 방법은 소스 코드 내부의 클래스 이름, 속성, 기능, 연관관계를 분석하여 하나의 클래스 다이어그램(Class Diagram)을 생성할 수 있다(120). 예를 들면, 본 발명의 구성 장치 및 방법은 바운더리 레이어(Boundary Layer), 엔티티 레이어(Entity Layer), 및 컨트롤 레이어(Control Layer)로 구성된 UML(Unified Modeling Language) 클래스 다이어그램을 생성할 수 있다.Next, the constituent apparatus and method of the present invention can generate a class diagram 120 by analyzing the class name, attribute, function, and association within the source code. For example, the apparatus and method of the present invention can generate a Unified Modeling Language (UML) class diagram composed of a boundary layer, an entity layer, and a control layer.

참고로, 모놀리식 애플리케이션의 클래스는 하기 표 1에 표기된 바와 같을 수 있으나, 이에 한정되는 것은 아니다.For reference, the classes of the monolithic application may be as shown in Table 1 below, but are not limited thereto.

요소Element 설명Explanation NameName 클래스 이름Class name TypeType 클래스 유형Class type Purpose of changePurpose of change 클래스 변경 목적Purpose of Class Change Development timeDevelopment time 클래스 변경하는데 걸린 시간 정보Time information about class change Contribution countContribution count 클래스 변경 횟수Number of class changes Developer nameDeveloper name 클래스에 접근한 개발자 이름Name of the developer who accessed the class

다음으로, 본 발명의 구성 장치 및 방법은 연관성이 높은 정점들을 연결하여 독립적인 형태의 마이크로서비스를 구성할 수 있다(130). 연관성이 높은 정점을 선별하는 과정은 하기 도 2의 구성부(230)에서 상세히 설명한다.상기 구성 장치 및 방법에 대하여 하기 도 2 및 도 13을 참고하여 더 상세하게 설명하고자 한다.Next, the constituent apparatus and method of the present invention can construct an independent type of micro-service by connecting vertices having high relevance (130). The process of selecting vertices having a high correlation will be described in detail with reference to the configuration unit 230 of FIG. 2. The configuration apparatus and method will be described in more detail with reference to FIG. 2 and FIG.

도 2는 본 발명의 일실시예에 따른 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치를 나타내는 블록도이다.2 is a block diagram illustrating an apparatus for constructing a monolithic application in units of micro-services according to an embodiment of the present invention.

본 발명의 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치(200, 이하, 구성 장치)는 계층화부(210), 그래프 생성부(220) 및 구성부(230)를 포함할 수 있다.An apparatus 200 for constructing a monolithic application of the present invention in units of micro services may include a layering unit 210, a graph generating unit 220, and a configuring unit 230.

계층화부(210)는 애플리케이션에 포함되는 메뉴를, 복수의 레이어로 분류하여 계층화 한다. 즉, 계층화부(210)는 애플리케이션을 구성하는 메뉴의 속성을 유형에 따라 분류하여 그룹화 할 수 있다. 이때, 메뉴의 속성은 클래스(class)로 지칭할 수 있다. 예를 들면, 계층화부(210)는 각 클래스를 비즈니스 애플리케이션의 3-티어(3-Tier) 구분에 따라 각각 프레젠테이션 레이어(Presentation Layer), 비즈니스 로직 레이어(Business Logic Layer), 퍼시스턴스 레이어(Persistence Layer)로 그룹화 할 수 있다.The layering unit 210 classifies menus included in the application into a plurality of layers and layer them. That is, the layering unit 210 can classify the attributes of the menus constituting the application according to the types and group them. At this time, the attribute of the menu can be referred to as a class. For example, the layering unit 210 classifies each class into a presentation layer, a business logic layer, a persistence layer, and the like according to a 3-tier classification of a business application, . ≪ / RTI >

또한, 계층화부(210)는 선택 순서에 기초하여, 상기 메뉴를, 바운더리 레이어, 컨트롤 레이어, 엔티티 레이어로 순차적으로 분류하여 계층화 할 수 있다. 즉, 계층화부(210)는 메뉴를 구성하는 클래스의 요소를 확인하여, 바운더리 레이어, 컨트롤 레이어, 엔티티 레이어로 분류하여 그룹화 할 수 있다.In addition, the layering unit 210 can hierarchically classify the menu into a boundary layer, a control layer, and an entity layer in order based on the selection order. That is, the layering unit 210 identifies the elements of the class constituting the menu, and classifies them into a boundary layer, a control layer, and an entity layer, and groups them.

또한, 계층화부(210)는 상기 메뉴를, 사용자 인터페이스, 기능 및 데이터베이스 중 어느 하나의 클래스로 식별하고, 동일한 클래스로 식별되는 상기 메뉴의 집단을, 하나의 레이어로 분류하여 계층화 할 수 있다. 즉, 계층화부(210)는 모놀리식 애플리케이션의 각각의 클래스의 유형에 따라 각각의 레이어로 분류할 수 있으며, 클래스의 유형은 입출력과 관련된 클래스, 애플리케이션의 주요 기능을 실현하는 클래스, 및 데이터베이스에 접근하는 클래스의 유형으로 분류될 수 있다.In addition, the layering unit 210 may classify the menu into one class, such as a user interface, a function and a database, and classify the groups of menus identified by the same class into one layer. That is, the layering unit 210 can classify each layer according to the type of each class of the monolithic application. The type of the class includes a class related to input / output, a class for realizing the main function of the application, It can be categorized as the type of class that it accesses.

그래프 생성부(220)는 상기 메뉴 각각을 정점(vertex)으로, 다른 메뉴를 선(edge)으로 연결하여 그래프를 생성한다. 즉, 그래프 생성부(220)는 메뉴의 속성인 클래스를 정점으로 대응시키고, 정점과 다른 정점 사이에 선으로 연결하여 그래프를 생성할 수 있다. 이때, 그래프 생성부(220)는 레이어 별로 다른 정점의 형태를 생성할 수 있다. 또한, 선은 클래스 간의 연관 관계를 의미할 수 있다. 그래프를 생성하는 과정을 보다 상세하게 설명하기 위하여 후술하는 도 5, 도 9, 및 도 10을 참고하여 설명하고자 한다.The graph generating unit 220 generates a graph by connecting each of the menus to a vertex and connecting another menu to an edge. That is, the graph generating unit 220 can generate a graph by associating a class, which is an attribute of a menu, with a vertex and connecting lines between vertices and other vertices. At this time, the graph generating unit 220 can generate different vertex types for each layer. In addition, a line can mean an association between classes. The process of generating a graph will be described in more detail with reference to FIGS. 5, 9, and 10, which will be described later.

또한, 그래프 생성부(220)는 클래스가 정해진 횟수 이상으로 변경되는 제1 메뉴를 확인하고, 상기 제1 메뉴를, 둘 이상의 다른 메뉴 각각을 상기 선으로 연결하여 상기 그래프를 생성할 수 있다. 즉, 그래프 생성부(220)는 변경이 일정 횟수 이상으로 발생하는 메뉴를 두 개 이상의 정점으로 분리하여 대응시키고, 각각의 정점을 다른 정점과 선으로 연결하여 그래프를 생성할 수 있다. 이때, 정해진 횟수(즉, 일정 횟수)는 둘 이상일 수 있다. 따라서, 그래프 생성부(220)는 변경이 많은 클래스에 대해 더 중요하고 많이 사용되는 것으로 설정할 수 있다.Also, the graph generating unit 220 may check the first menu that the class is changed more than the predetermined number of times, and may generate the graph by connecting the first menu with each of the two or more different menus. That is, the graph generating unit 220 can generate a graph by dividing a menu generated by changing a predetermined number of times or more into two or more vertices and connecting the vertices with other vertices and lines. At this time, the predetermined number of times (that is, the predetermined number of times) may be two or more. Accordingly, the graph generating unit 220 can be set to be more important and heavily used for a class having many changes.

구성부(230)는 변경명령(commit)에 따라, 상기 그래프 내의 메뉴 간의 변경 유사도를 가중치로 산출하고, 산출된 상기 가중치가 임계치 이하인 메뉴 간의 상기 선을 제거하여, 상기 애플리케이션에 대해 마이크로서비스를 구성한다. 즉, 구성부(230)는 변경 목적이 유사한 클래스들을 비교한 값인 가중치가 임계치 이하이면 해당 선을 제거하고 남은 정점을 다시 연결하여 하나의 마이크로서비스를 구성할 수 있다. 여기서, 임계치는 전체의 가중치를 고려하여 설정된 값일 수 있다. 예컨대, 임계치는 전체 평균 가중치 값의 1/5 수준 이하의 값으로 설정될 수 있다. 예를 들면, 구성부(230)는 임의의 클래스가 2개의 클래스를 동시에 콜(call)을 하여 상기 2개의 클래스가 동시에 변경이 되면, 각 클래스 사이를 연결하는 선의 가중치를 올릴 수 있다. 따라서, 콜이 많을수록 가중치는 높아질 수 있다. 가중치가 많이 올라가지 않은 선은, 설정된 임계치 이하가 될 수 있고, 구성부(230)는 임계치 이하인 선 및 가중치가 0인 선을 제거할 수 있다. The configuration unit 230 may calculate the degree of similarity of change between the menus in the graph according to a change command and remove the line between menus whose calculated weight value is equal to or less than a threshold value to configure the micro- do. That is, when the weight value, which is a value obtained by comparing classes having similar purpose of change, is less than a threshold value, the constructing unit 230 can construct a micro-service by removing the line and connecting the remaining vertices. Here, the threshold value may be a value set in consideration of the entire weight value. For example, the threshold value may be set to a value less than 1/5 level of the total average weight value. For example, the constructing unit 230 can call up two classes simultaneously at the same time, and if the two classes are simultaneously changed, the weight of the line connecting the classes can be increased. Therefore, the more the call, the higher the weight. The line having a small weight can be less than or equal to the set threshold value, and the configuring unit 230 can remove a line having a threshold value or less and a line having a weight value of zero.

또한, 구성부(230)는 상기 바운더리 레이어로 분류된 메뉴와, 상기 엔티티 레이어로 분류된 메뉴 간의 상기 가중치를 '0'으로 산출하여, 상기 선을 제거할 수 있다. 즉, 구성부(230)는 바운더리 레이어와 엔티티 레이어의 연관성이 없다고 가정하고, 바운더리 레이어에 포함된 정점과 엔티티 레이어에 포함된 정점이 선으로 연결되지 않도록 가중치를 '0'으로 산출할 수 있다. Also, the configuration unit 230 may calculate the weight value between the menu classified into the boundary layer and the menu classified into the entity layer as '0', and remove the line. That is, the constructing unit 230 may calculate the weight as '0' so that the vertices included in the boundary layer and the vertices included in the entity layer are not connected by a line, assuming that there is no association between the boundary layer and the entity layer.

또한, 구성부(230)는 상기 변경명령에 따라, 동시에 변경되는 메뉴 쌍에 변경 유사도가 있는 것으로 판단하여 가중치 '1'을 가산하여 산출하고, 클래스 변경 정보에 근거하여, 상기 메뉴 쌍 내의 메뉴 각각이 갖는 변경목적이 서로 상이한 것으로 판단되면, 가중치 '1'을 감산하는 산출할 수 있다. 즉, 구성부(230)는 정점 쌍에서 동시에 변경 목적이 같은 변경명령이 하나 발생하면, 상기 선에 대해 가중치 '1'을 더 추가하여 산출할 수 있고, 변경명령이 하나 발생하였지만 변경 목적이 상이하면, 상기 선에 대해 가중치 '-1'을 할 수 있다. 예를 들어, 구성부(230)는 두 개의 클래스에서 3번의 변경이 동시에 발생하였을 때, 변경 정보에 근거하여 변경목적이 같은 2개의 변경과 변경목적이 다른 1개의 변경인 것으로 확인되면, 가중치는 3번의 변경에서 1을 감산하여 '2'로 산출할 수 있다.In accordance with the change command, the configuration unit 230 determines that there is a similarity degree to the menu pair to be changed at the same time, adds the weight value " 1 ", and calculates, based on the class change information, Quot; 1 " can be calculated by subtracting the weight value " 1 ". That is, if a change instruction having the same change purpose is generated at the same time in the vertex pair, the configuration unit 230 can calculate a weight '1' for the line, and if a change instruction is generated but the change purpose is different , A weight '-1' may be applied to the line. For example, if the configuration unit 230 determines that two changes of the same purpose are the same for the purpose of change based on the change information when three changes occur simultaneously in the two classes, the weight is Subtract 1 from 3 changes and calculate it as '2'.

이때, 상기 클래스 변경 정보는, '변경 식별자', '동시에 변경한 클래스 정보' 및 '목적 또는 메시지 정보'를 적어도 포함할 수 있다. 예를 들어, 클래스 변경 정보는 표 2에 나타낸 바와 같을 수 있으나, 이에 한정되지 않는다. 예를 들어, 'Commit Id'는 변경 식별자로서, 예컨대, 'Commit #1', 'Commit #2' 등의 형식일 수 있다. 'Commit Classes'는 동시에 변경한 클래스 정보로서, 예컨대, 'Commit #1'에서 어떤 클래스가 변경되었는지를 나타내는 정보일 수 있다. 또한, 'Commit Message'는 클래스 변경에 대한 목적 또는 메시지 정보로서, 예컨대, 'Commit #1'의 변경 이유일 수 있다.At this time, the class change information may include at least a 'change identifier', 'class information changed at the same time', and 'object or message information'. For example, the class change information may be as shown in Table 2, but is not limited thereto. For example, 'Commit Id' may be a change identifier, for example, 'Commit # 1', 'Commit # 2', or the like. 'Commit Classes' is class information that has changed at the same time, for example, information indicating which class has been changed in 'Commit # 1'. The 'Commit Message' may be the purpose of the class change or the message information, for example, the reason for the change of 'Commit # 1'.

요소Element 설명Explanation Commit IdCommit Id 변경 식별자Change identifier Commit ClassesCommit Classes 동시에 변경한 클래스 정보At the same time, the changed class information Commit MessageCommit Message 클래스 변경에 대한 목적 또는 메시지 정보Purpose or message information for class changes

또한, 구성부(230)는 상기 컨트롤 레이어로 분류된 메뉴를 기준으로, 상기 바운더리 레이어로 분류된 메뉴, 상기 컨트롤 레이어로 분류된 메뉴, 및 상기 엔티티 레이어 분류된 메뉴 간의 상기 가중치가 상기 임계치를 초과하는 선을 유지하여 하나의 마이크로서비스를 구성할 수 있다. 즉, 구성부(230)는 컨트롤 레이어에서 가중치가 임계치 이하인 선은 제거하고 가중치가 임계치 초과인 선은 유지시켜, 남은 정점을 연결하여 하나의 마이크로서비스를 구성할 수 있다.이러한, 구성 장치(200)는 클래스 정보와 개발 변경 기록을 분석하여 모놀리식 애플리케이션을 마이크로서비스 단위로 구성함으로써, 컴포넌트 단위의 개발 방식보다 확장성을 높일 수 있고 개발 및 배포를 보다 빠르게 할 수 있다.In addition, if the weight of the menu classified into the boundary layer, the menu classified into the control layer, and the menu classified into the entity layer is greater than the threshold value, A micro-service can be configured. That is, the configuration unit 230 can construct a micro-service by removing lines having a weight below a threshold value in a control layer, maintaining lines having a weight exceeding a threshold value, and connecting remaining vertices. ) Analyzes the class information and the development change history to configure the monolithic application as a micro-service unit, thereby making it possible to enhance the scalability and speed up development and distribution more than the component-based development method.

도 3은 본 발명의 일실시예에 따른 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하도록 처리하는 단계들을 도시한 도면이다.FIG. 3 is a diagram illustrating steps of processing a monolithic application according to an embodiment of the present invention to construct a micro service unit.

먼저, 구성 장치(200)는 모놀리식 애플리케이션의 클래스를 수집할 수 있다(310). 다음으로, 구성 장치(200)는 계층화 단계(320)로서, 수집된 각 애플리케이션의 클래스를 계층화하여 적어도 3개의 레이어로 분류할 수 있다. 다음으로, 구성 장치(200)는 그래프화 단계(330)로서, 각 레이어에서 각 클래스에 대응하는 정점을 생성하고, 정점을 하나 이상의 정점과 선으로 연결할 수 있다. 마지막으로, 구성 장치(200)는 마이크로서비스 구성 단계(340)로서, 정점간의 연관성에 기초하여 산출된 가중치에 따라 선을 제거하면서, 마이크로서비스 단위로 구성할 수 있다. 각 단계별 상세 단계에 대한 설명은 하기 도 4 내지 도 6을 참고하여 설명하고자 한다.First, the configuring device 200 may collect 310 a class of monolithic applications. Next, the configuration apparatus 200 is a layering step 320, and classify each collected application class into at least three layers. Next, the composing device 200 is a graphing step 330, which can create vertices corresponding to each class in each layer and concatenate vertices with one or more vertices. Finally, the configuring device 200 may be configured as a micro-service configuration step 340, with the line removed according to the weights computed based on the associations between vertices. The detailed steps of each step will be described with reference to Figs. 4 to 6 below.

도 4는 본 발명의 일실시예에 따른 계층화 단계를 설명하기 위한 도면이다.4 is a view for explaining a layering step according to an embodiment of the present invention.

구성 장치(200)는 모놀리식 애플리케이션의 각 클래스를 유형에 따라 분류할 수 있다. 도 4의 (a)에 도시된 바와 같은, 복수의 클래스를 포함하는 모놀리식 애플리케이션(410)을, 구성 장치(200)는 유형에 따라 분류할 수 있다. 즉, 구성 장치(200)는 클래스의 유형으로서, 입출력과 관련된 클래스, 애플리케이션의 주요 기능을 실현하는 클래스, 데이터베이스에 접근하는 클래스의 3가지 유형으로 나누어 분류할 수 있다. 예를 들어, 도 4의 (b)에 도시된 바와 같이, 구성 장치(200)는 각 클래스를 비즈니스 애플리케이션의 주요 계층화 방법인 3-티어 구분 방법에 따라 각각 프레젠테이션 레이어(421), 비즈니스 로직 레이어(422), 및 퍼시스턴스 레이어(423)로 그룹화할 수 있다. 프레젠테이션 레이어(421)는 사용자 인터페이스 부분이고, 비즈니스 로직 레이어(422)는 실제로 기능하는 부분이고, 퍼시스턴스 레이어(423)는 데이터를 다루는 부분일 수 있다.The configuring device 200 may classify each class of monolithic application by type. The configuration apparatus 200 can classify the monolithic application 410 including a plurality of classes as shown in FIG. 4 (a) according to the type. In other words, the configuration apparatus 200 can be classified into three types of classes: a class related to input / output, a class for realizing an application's main function, and a class for accessing a database. For example, as shown in FIG. 4 (b), the configuration apparatus 200 may classify each class into a presentation layer 421, a business logic layer 422, and a persistence layer 423. The presentation layer 421 is a user interface portion, the business logic layer 422 is a functioning portion, and the persistence layer 423 is a portion for handling data.

도 5는 본 발명의 일실시예에 따른 그래프화 단계를 설명하기 위한 도면이다.5 is a view for explaining a graphing step according to an embodiment of the present invention.

구성 장치(200)는 클래스 유형별 계층화를 진행한 후 클래스 변경 정보를 분석하여 정점과 가중치 값을 가지는 선으로 이루어진 그래프를 도 5와 같이 생성할 수 있다. 즉, 도 5의 (a)에 도시된 바와 같이, 구성 장치(200)는 계층화가 완료되면, 도 5의 (b)에 도시된 바와 같이, 각 레이어 별로 정점을 생성할 수 있다. 구성 장치(200)는 각 클래스에 대응하도록 정점을 생성하며, 기본적으로는 1:1로 대응하도록 생성할 수 있다. 하지만, 변경이 자주 발생하는 클래스의 경우, 구성 장치(200)는 두 개 이상의 정점으로 분리하여 생성할 수 있다. 그러면, 도 5의 (c)에 도시된 바와 같이, 구성 장치(200)는 정점을 선으로 연결할 수 있다. 선은 클래스 간의 연관 관계를 의미하며, 구성 장치(200)는 선에 대한 가중치에 대해, 두 정점에 대응하는 클래스 사이의 변경 유사성을 비교하여 산출할 수 있다. 예를 들면, 구성 장치(200)는 개발 변경 정보 중 변경이 동시에 발생한 클래스와 변경 목적이 유사한 클래스들을 비교하여 가중치 값을 산출할 수 있다.The configuration apparatus 200 may classify class information according to the class type, analyze the class change information, and generate a graph including lines having vertices and weight values as shown in FIG. That is, as shown in FIG. 5 (a), when the layering is completed, the constituent device 200 can generate vertices for each layer as shown in FIG. 5 (b). The configuration apparatus 200 generates vertexes corresponding to the respective classes, and basically generates 1: 1 correspondingly. However, in the case of a class in which a change frequently occurs, the constituent device 200 can be separated into two or more vertices. Then, as shown in FIG. 5 (c), the configuration apparatus 200 can connect the vertices by a line. The line means an association between classes, and the constructing device 200 can calculate the change similarity between the classes corresponding to the two vertices, with respect to the line weight. For example, the configuration apparatus 200 can calculate a weight value by comparing classes in which changes are made at the same time with classes having similar change purposes.

도 6은 본 발명의 일실시예에 따른 그래프화 단계를 설명하기 위한 도면이다.6 is a view for explaining a graphing step according to an embodiment of the present invention.

구성 장치(200)는 도 5에서의 그래프화 단계를 거쳐 구성된 그래프(도 6의 (a))에서 정점 사이의 가중치가 낮은 선들을 제거할 수 있다. 즉, 도 6의 (b)에 도시된 바와 같이, 구성 장치(200)는 가중치가 임계치 보다 낮은 선을 제거할 수 있다. 다시 말해, 구성 장치(200)는 도 6의 (a)에서의 레이어(610)에서, 임계치 보다 낮은 선을 제거하여, 도 6의 (b)에서의 레이어(620)과 같이 연관성이 높은 정점 간의 선만 남길 수 있다. 여기서, 가중치가 낮은 선(즉, 임계치 이하인 선)은 전체 평균 가중치 값의 1/5 수준 이하의 값을 갖는 선을 의미할 수 있다.The constituent device 200 can remove low weighted lines between the vertices in the graph (FIG. 6 (a)) constructed through the graphing step in FIG. That is, as shown in FIG. 6 (b), the configuration apparatus 200 can remove a line whose weight is lower than the threshold value. In other words, the constituent device 200 removes a line lower than the threshold value in the layer 610 in FIG. 6A, and the vertexes having high correlation with each other, such as the layer 620 in FIG. 6B, You can leave only the line. Here, a line having a low weight (that is, a line having a threshold value or less) may mean a line having a value less than 1/5 of the total average weight value.

그 다음, 도 6의 (c)에 도시된 바와 같이, 구성 장치(200)는 비즈니스 로직을 중심으로 정점을 묶을 수 있다. 구성 장치(200)는 연관성이 높은 정점들로 구성된 경로를 구하기 위해 프림, 크루스칼, 다익스트라 알고리즘과 같은 경로 탐색 알고리즘을 적용할 수 있다. 그 결과로 나온 경로를 구성하는 정점들을 묶어 하나의 마이크로서비스로 구성할 수 있다.Then, as shown in FIG. 6 (c), the configuration apparatus 200 can group vertices around business logic. The configuration apparatus 200 can apply a path search algorithm such as Prim, Kruskal, and Daikstra algorithms to obtain a path composed of highly related vertices. The resulting vertices can be grouped together into a single micro-service.

도 7은 본 발명의 일실시예에 따른 마이크로서비스 단위의 재구성을 구현하는 과정을 설명하기 위한 도면이다.FIG. 7 is a diagram illustrating a process of implementing reconfiguration of a micro-service unit according to an embodiment of the present invention.

복수의 개발자(710)는 Git, SVN 등을 이용하여 모놀리식 애플리케이션을 개발할 수 있다. 그러면, 구성 장치(200)는 모놀리식 애플리케이션의 UML 클래스 다이어그램(720) 및 Git, SVN을 통해 수집한 클래스 변경 정보(730)를 이용하여 계층화 단계, 그래프화 단계, 및 마이크로서비스 구성 단계를 수행할 수 있다. 도 8 내지 도 12를 통해 각 단계별 구현예를 설명하고자 한다. 본 명세서에서 모놀리식 애플리케이션이 병원 관련 애플리케이션인 것으로 설명하나, 이에 한정되는 것은 아니다.A plurality of developers 710 may develop monolithic applications using Git, SVN, and the like. The configuration apparatus 200 then performs the layering step, the graphing step, and the micro-service configuration step using the UML class diagram 720 of the monolithic application and the class change information 730 collected via Git and SVN can do. An implementation example according to each step will be described with reference to FIGS. 8 to 12. FIG. Although the monolithic application is described herein as a hospital-related application, it is not limited thereto.

도 8은 본 발명의 일실시예에 따른 계층화 단계를 구현하는 과정을 설명하기 위한 도면이다.FIG. 8 is a view for explaining a process of implementing a layering step according to an embodiment of the present invention.

구성 장치(200)는 클래스 유형에 따라 계층화를 진행할 수 있다. 이때, 분류 기준은 UML 클래스 다이어그램(810)에서 정의한 클래스의 스테레오 타입일 수 있다. 즉, 구성 장치(200)는 바운더리 스테레오 타입의 경우 프레젠테이션 레이어로, 컨트롤 스테레오 타입의 경우 비즈니스 로직 레이어로, 엔티티 스테레오 타입의 경우 퍼시스턴스 레이어로 분류할 수 있다. 예를 들어, 구성 장치(200)는 메뉴 “병원 예약 화면”의 스테레오 타입은 “<<Boundary>>”로 나타나 있으므로 바운더리 레이어로(820), 메뉴 “검색 Controller”의 스테레오 타입은 “<<Control>>”이므로 컨트롤 레이어로(830), 메뉴 “병원 정보”의 스테레오 타입은 “<<Entity>>”이므로 엔티티 레이어로(840) 계층화 할 수 있다. 그렇게 UML 클래스 다이어그램(810)의 각각의 메뉴를 계층화 하여 'Name'으로 정렬하면, 바운더리 레이어(821)는 메인 화면, 로그인 화면, 병원 예약 화면, 예약 완료 화면, 개인정보 입력 화면, 및 저장 완료 화면을 포함할 수 있다. 컨트롤 레이어(831)는 검색 Controller, 증상 검색 Controller, 약 정보 조회 Controller, 인증 Controller, 회원 정보 저장 Controller, 및 로그인 Controller를 포함할 수 있다. 엔티티 레이어(841)는 병원 예약 정보, 이용자 정보, 회원 정보, 약 정보, 질병 정보, 및 병원 정보를 포함할 수 있다.The configuration apparatus 200 can proceed with layering according to the class type. At this time, the classification criterion may be a stereotype of the class defined in the UML class diagram 810. That is, the configuration apparatus 200 can be classified as a presentation layer in the case of a boundary type stereotype, a business logic layer in the case of a control stereotype, and a persistence layer in the case of an entity stereotype. For example, the configuration apparatus 200 displays 820 as a boundary layer since the stereotype of the menu &quot; hospital reservation screen &quot; is indicated as &quot; << Boundary >> &quot;, and the stereotype of the menu & >> &quot;, so that the control layer 830 and the stereotype of the menu &quot; hospital information &quot; are &quot; << Entity >> &quot; When the menus of the UML class diagram 810 are hierarchized and arranged in 'Name', the boundary layer 821 displays the main screen, the login screen, the hospital reservation screen, the reservation completion screen, the personal information input screen, . &Lt; / RTI &gt; The control layer 831 may include a search controller, a symptom search controller, a weak information query controller, an authentication controller, a member information storage controller, and a login controller. The entity layer 841 may include hospital reservation information, user information, member information, drug information, disease information, and hospital information.

도 9 및 도 10은 본 발명의 일실시예에 따른 그래프화 단계를 구현하는 과정을 설명하기 위한 도면이다.9 and 10 are views for explaining the process of implementing the graphing step according to an embodiment of the present invention.

계층화를 진행한 후, 구성 장치(200)는 클래스 변경 정보를 분석하여 그래프를 생성할 수 있다. 그래프는 정점과 선으로 생성될 수 있다. 구성 장치(200)는 하나의 클래스에 정점을 대응시켜 생성할 수 있다. 만약 하나의 정점에 변경이 자주 발생하는 경우, 구성 장치(200)는 정점을 두 개 이상으로 분리시켜 생성할 수 있다. 도 9에 도시된 바와 같이, 구성 장치(200)는 계층화 단계에서 분류된 각 클래스에 하나의 정점이 대응하도록 할 수 있다. 예를 들어, 도 9의 (a)에 도시된 바와 같이, 구성 장치(200)는 바운더리 레이어에 포함된 바운더리 정점 중 '메인 화면'을 정점 'bv1'으로 생성할 수 있다. 도 9의 (b)에 도시된 바와 같이, 구성 장치(200)는 컨트롤 레이어에 포함된 컨트롤 정점 중 '검색 Controller'를 정점 'cv1'으로 생성할 수 있다. 도 9의 (c)에 도시된 바와 같이, 구성 장치(200)는 엔티티 레이어에 포함된 엔티티 정점 중 '병원 예약 정보'은 정점 'ev1'으로 생성할 수 있다.After proceeding to the layering, the configuration apparatus 200 can analyze the class change information to generate a graph. Graphs can be created with vertices and lines. The configuration apparatus 200 can generate vertexes corresponding to one class. If a change occurs frequently in one vertex, the constructing device 200 can generate vertices by separating the vertices into two or more vertices. As shown in FIG. 9, the configuring apparatus 200 may make one vertex correspond to each class classified in the layering step. For example, as shown in FIG. 9A, the configuration apparatus 200 may generate a 'main screen' among the boundary vertices included in the boundary layer as a vertex 'bv1'. As shown in FIG. 9 (b), the configuration apparatus 200 can generate a 'search controller' among the control vertices included in the control layer as a vertex 'cv1'. As shown in (c) of FIG. 9, the configuration apparatus 200 can generate 'hospital reservation information' among the entity vertices included in the entity layer as a vertex 'ev1'.

구성 장치(200)는 선의 가중치 값을 클래스 간 변경 유사성을 비교하여 산출할 수 있다. 이때, 구성 장치(200)는 변경 정보를 이용할 수 있는데, 표 3에 나타낸 바와 같이, 개발자에 의한 변경 정보에 관한 '변경명령 클래스(Commit Classes)'와 '변경명령 메시지(Commit Message)' 정보를 이용할 수 있다. 여기서, 'Commit Classes'는 하나의 변경명령(Commit)이 발생했을 때, 동시에 변경된 클래스를 의미할 수 있다. 'Commit Message'는 변경명령의 목적이 무엇인지 기록한 내용을 의미할 수 있다. 구성 장치(200)는 상기 두 가지 요소를 분석하여 변경 유사성을 가진 정점 사이의 가중치를 산출할 수 있다. The configuration apparatus 200 can calculate the weight value of the line by comparing the similarity between classes. At this time, the configuration apparatus 200 can use the change information. As shown in Table 3, the configuration information of the 'change command class (Commit Classes)' and the 'change command message' Can be used. Here, 'Commit Classes' can mean a class that has changed at the same time when one change command (Commit) occurs. 'Commit Message' can be a record of what the purpose of the change command is. The configuration apparatus 200 can analyze the above two factors and calculate the weight between vertices having a change similarity.

본 구현 예시에서는, 구성 장치(200)는 변경 목적이 같으면서 동시에 발생한 변경명령 하나당 1의 가중치를 추가할 수 있으나, 이에 한정되는 것은 아니다. 예를 들어, 표 3을 참고하여 설명하면, 구성 장치(200)는 'cv1(검색 클래스)'과 'bv1(메인화면 클래스)'이 4회(C2, C6, C7, C10) 동시에 변경이 발생한 것으로 분석할 수 있다. 하지만, 'C2'의 경우, 구성 장치(200)는 'Commit Message'를 통해 'cv1'이 함수 구현 목적으로 변경되었고 'bv1'이 버그 해결 목적으로 변경되었음을 확인할 수 있다. 따라서, 구성 장치(200)는 'cv1'과 'bv1'의 변경 목적이 서로 다르다는 것을 분석할 수 있다. 그러므로, 구성 장치(200)는 가중치를 3으로 산출할 수 있다. 이렇게 산출된 가중치의 값은 도 10에 도시된 바와 같다.In this embodiment, the configuring device 200 may add a weight of 1 for each change command generated at the same time for the purpose of changing, but is not limited thereto. For example, with reference to Table 3, the configuration apparatus 200 determines whether a change occurs at four times (C2, C6, C7, C10) at the same time when 'cv1 (search class)' and 'bv1 . However, in case of 'C2', the configuring device 200 can confirm that 'cv1' has been changed for the function implementation purpose and 'bv1' has been changed for the purpose of resolving the bug through 'Commit Message'. Therefore, the configuration apparatus 200 can analyze that the purpose of changing 'cv1' and 'bv1' are different from each other. Therefore, the configuration apparatus 200 can calculate the weight value to 3. The values of the weights thus calculated are as shown in FIG.

Commit IdCommit Id Commited ClassCommited Class Commit MessageCommit Message C1 C 1 bv15,cv1,ev6bv15, cv1, ev6 Implement function complete() for Class bv15,cv1,ev6Implement function complete () for Class bv15, cv1, ev6 C2 C 2 bv1,bv13,cv1,ev6bv1, bv13, cv1, ev6 Implement function searchHospital() for Class cv1,ev6

Implement function searchPharmacy() for Class bv1
Implement function searchHospital () for Class cv1, ev6

Implement function searchPharmacy () for Class bv1
C3 C 3 bv13,cv1,ev6bv13, cv1, ev6 Implement function complete() for Class bv13,cv1,ev6Implement function complete () for Class bv13, cv1, ev6 C4 C 4 bv1,ev6bv1, ev6 Fix Search bug for Class bv1, ev6Fix Search bug for Class bv1, ev6 C5 C 5 bv14,cv1bv14, cv1 Change Parameter Value for Class bv14,cv1Change Parameter Value for Class bv14, cv1 C6 C 6 bv1,bv,13,bv14,cv1,ev1bv1, bv, 13, bv14, cv1, ev1 Change Parameter Value for Class bv1,bv,13,bv14,cv1,ev1Change Parameter Value for Class bv1, bv, 13, bv14, cv1, ev1 C7 C 7 bv1,cv1bv1, cv1 Change Parameter Value for Class bv1, cv1Change Parameter Value for Class bv1, cv1 C8 C 8 bv,13,bv14bv, 13, bv14 UI part implementation for Class bv13, bv14UI part implementation for Class bv13, bv14 C9 C 9 bv14bv14 Fix Search Result bug for Class bv14Fix Search Result bug for Class bv14 C10 C 10 bv1,bv15,cv1,ev5,ev6bv1, bv15, cv1, ev5, ev6 Change Parameter Value for Class bv1, cv1

Fix searchPharmacy() bug for Class bv15, ev6, ev5
Change Parameter Value for Class bv1, cv1

Fix searchPharmacy () bug for Class bv15, ev6, ev5

도 11 및 도 12는 본 발명의 일실시예에 따른 마이크로서비스 구성 단계를 구현하는 과정을 설명하기 위한 도면이다.도 11의 (a)는 도 9 및 도 10에서 설명한 과정에 따라 생성된 그래프이다. 구성 장치(200)는 도 11의 (a)에 도시된 그래프에서 도 11의 (b)와 같이 가중치가 낮은 선을 제거하고 비즈니스 로직 중심으로 연관성이 높은 정점들로 구성된 경로를 탐색하여 연결할 수 있다. 여기서, 구성 장치(200)는 '가중치가 낮은 선'으로서, 전체 평균 가중치 값의 1/5 수준 이하인 3 이하의 값들을 제거할 수 있다(1110). 그러면, 도 11의 (c)에 도시된 바와 같이, 구성 장치(200)는 제거된 경로를 구성하는 각 정점들을 묶어 하나의 마이크로서비스 단위로 구성할 수 있다. 최종적으로, 도 12에 도시된 바와 같이, 구성 장치(200)는 하나의 마이크로서비스를 추출하여 여러 애플리케이션에 구성할 수 있다.11 and 12 are diagrams for explaining a process of implementing a micro-service configuration step according to an embodiment of the present invention. FIG. 11 (a) is a graph generated according to the processes described in FIGS. 9 and 10 . The constituent device 200 removes the line having low weight as shown in FIG. 11 (b) in the graph shown in FIG. 11 (a) and searches for a path composed of vertices having high relevance to the business logic center . Here, the configuration apparatus 200 may remove the value of 3 or less, which is 1/5 level or less of the total average weight value, as the 'low weighted line' (1110). Then, as shown in FIG. 11 (c), the configuration apparatus 200 can group the vertices constituting the removed path into one micro-service unit. Finally, as shown in Fig. 12, the configuration apparatus 200 can extract one micro-service and configure it into various applications.

도 13은 본 발명의 일실시예에 따른 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 방법을 구체적으로 도시한 작업 흐름도이다.13 is a flowchart illustrating a method of configuring a monolithic application according to an exemplary embodiment of the present invention in units of micro-services.

우선 본 실시예에 따른 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 방법은 상술한 구성 장치(200)에 의해 수행될 수 있다.First, a method of configuring the monolithic application according to the present embodiment in units of micro services can be performed by the configuration apparatus 200 described above.

먼저, 구성 장치(200)는 애플리케이션에 포함되는 메뉴를, 복수의 레이어로 분류하여 계층화 한다(1310). 즉, 단계(1310)는 애플리케이션을 구성하는 메뉴의 속성을 유형에 따라 분류하여 그룹화 하는 과정일 수 있다. 이때, 메뉴의 속성은 클래스(class)로 지칭할 수 있다. 예를 들면, 구성 장치(200)는 각 클래스를 비즈니스 애플리케이션의 3-티어(3-Tier) 구분에 따라 각각 프레젠테이션 레이어(Presentation Layer), 비즈니스 로직 레이어(Business Logic Layer), 퍼시스턴스 레이어(Persistence Layer)로 그룹화 할 수 있다.First, the configuration apparatus 200 classifies the menus included in the application into a plurality of layers and layers them (1310). That is, the step 1310 may be a step of classifying the attributes of the menus constituting the application according to the types and grouping them. At this time, the attribute of the menu can be referred to as a class. For example, the configuration apparatus 200 may classify each class into a presentation layer, a business logic layer, a persistence layer, and the like according to a 3-tier classification of a business application, . &Lt; / RTI &gt;

또한, 단계(1310)는 상기 메뉴를, 사용자 인터페이스, 기능 및 데이터베이스 중 어느 하나의 클래스로 식별하고, 동일한 클래스로 식별되는 상기 메뉴의 집단을, 하나의 레이어로 분류하여 계층화 하는 과정일 수 있다. 즉, 구성 장치(200)는 모놀리식 애플리케이션의 각각의 클래스의 유형에 따라 각각의 레이어로 분류할 수 있으며, 클래스의 유형은 입출력과 관련된 클래스, 애플리케이션의 주요 기능을 실현하는 클래스, 및 데이터베이스에 접근하는 클래스의 유형으로 분류될 수 있다.In addition, the step 1310 may identify the menu as any one of a user interface, a function, and a database, classify the group of the menus identified by the same class into one layer, and layer them. That is, the constituent device 200 can be classified into each layer according to the type of each class of the monolithic application. The type of the class includes a class related to input / output, a class for realizing the main function of the application, It can be categorized as the type of class that it accesses.

다음으로, 구성 장치(200)는 상기 메뉴 각각을 정점으로, 다른 메뉴를 선으로 연결하여 그래프를 생성한다(1320). 즉, 단계(1320)는 메뉴의 속성인 클래스를 정점으로 대응시키고, 정점과 다른 정점 사이에 선으로 연결하여 그래프를 생성하는 과정일 수 있다. 이때, 구성 장치(200)는 레이어 별로 다른 정점의 형태를 생성할 수 있다. 또한, 선은 클래스 간의 연관 관계를 의미할 수 있다.Next, the configuration apparatus 200 creates a graph by connecting each of the menus to vertices and connecting the other menus to lines (1320). That is, the step 1320 may be a process of generating a graph by associating a class, which is an attribute of a menu, with a vertex and connecting the vertex with another vertex by a line. At this time, the configuration apparatus 200 can generate different vertex shapes for each layer. In addition, a line can mean an association between classes.

또한, 단계(1320)는 클래스가 정해진 횟수 이상으로 변경되는 제1 메뉴를 확인하고, 상기 제1 메뉴를, 둘 이상의 다른 메뉴 각각을 상기 선으로 연결하여 상기 그래프를 생성하는 과정일 수 있다. 즉, 구성 장치(200)는 변경이 일정 횟수 이상으로 발생하는 메뉴를 두 개 이상의 정점으로 분리하여 대응시키고, 각각의 정점을 다른 정점과 선으로 연결하여 그래프를 생성할 수 있다. 이때, 정해진 횟수(즉, 일정 횟수)는 둘 이상일 수 있다. 따라서, 구성 장치(200)는 변경이 많은 클래스에 대해 더 중요하고 많이 사용되는 것으로 설정할 수 있다.In addition, step 1320 may be a step of confirming a first menu in which the class is changed more than a predetermined number of times, and creating the graph by connecting the first menu to each of two or more different menus by the line. That is, the configuration apparatus 200 can generate a graph by separating the menu generated by changing a predetermined number of times or more into two or more vertices, connecting each vertex with another vertex and a line, and so on. At this time, the predetermined number of times (that is, the predetermined number of times) may be two or more. Thus, the configuring device 200 can be set to be more important and heavily used for classes with many changes.

다음으로, 구성 장치(200)는 변경명령에 따라, 상기 그래프 내의 메뉴 간의 변경 유사도를 가중치로 산출하고, 산출된 상기 가중치가 임계치 이하인 메뉴 간의 상기 선을 제거하여, 상기 애플리케이션에 대해 마이크로서비스를 구성한다(1330). 즉, 단계(1330)는 변경 목적이 유사한 클래스들을 비교한 값인 가중치가 임계치 이하이면 해당 선을 제거하고 남은 정점을 다시 연결하여 하나의 마이크로서비스를 구성하는 과정일 수 있다. 여기서, 임계치는 전체의 가중치를 고려하여 설정된 값일 수 있다. 예컨대, 임계치는 전체 평균 가중치 값의 1/5 수준 이하의 값으로 설정될 수 있다. 예를 들면, 구성 장치(200)는 임의의 클래스가 2개의 클래스를 동시에 콜(call)을 하여 상기 2개의 클래스가 동시에 변경이 되면, 각 클래스 사이를 연결하는 선의 가중치를 올릴 수 있다. 따라서, 콜이 많을수록 가중치는 높아질 수 있다. 가중치가 많이 올라가지 않은 선은, 설정된 임계치 이하가 될 수 있고, 구성 장치(200)는 임계치 이하인 선 및 가중치가 0인 선을 제거할 수 있다. Next, in accordance with the change command, the configuring device 200 calculates the degree of similarity between the menus in the graph as weights, removes the line between the calculated menus whose weights are below the threshold, (1330). That is, the step 1330 may be a process of constructing a micro-service by removing the corresponding line and reconnecting the remaining vertices when the weight is equal to a value obtained by comparing similar classes for the purpose of change. Here, the threshold value may be a value set in consideration of the entire weight value. For example, the threshold value may be set to a value less than 1/5 level of the total average weight value. For example, the constituent device 200 can call two classes simultaneously at the same time, and if the two classes are changed at the same time, the weight of the line connecting the classes can be increased. Therefore, the more the call, the higher the weight. The weighted-up line may be below the set threshold, and the configuring device 200 may remove the line below the threshold and the zero weighted line.

또한, 단계(1330)는 상기 변경명령에 따라, 동시에 변경되는 메뉴 쌍에 변경 유사도가 있는 것으로 판단하여 가중치 '1'을 가산하여 산출하고, 클래스 변경 정보에 근거하여, 상기 메뉴 쌍 내의 메뉴 각각이 갖는 변경목적이 서로 상이한 것으로 판단되면, 가중치 '1'을 감산하여 산출하는 과정일 수 있다. 즉, 구성 장치(200)는 정점 쌍에서 동시에 변경 목적이 같은 변경명령이 하나 발생하면, 상기 선에 대해 가중치 '1'을 더 추가하여 산출할 수 있고, 변경명령이 하나 발생하였지만 변경 목적이 상이하면, 상기 선에 대해 가중치 '-1'을 할 수 있다. 예를 들어, 구성 장치(200)는 두 개의 클래스에서 3번의 변경이 동시에 발생하였을 때, 변경 정보에 근거하여 변경목적이 같은 2개의 변경과 변경목적이 다른 1개의 변경인 것으로 확인되면, 가중치는 3번의 변경에서 1을 감산하여 '2'로 산출할 수 있다.In step 1330, it is determined in step 1330 that there is a change degree of similarity between the menu pairs that are changed simultaneously according to the change command, and the weight value is added to calculate the change degree. Then, based on the class change information, 1 &quot; may be calculated by subtracting the weight value &quot; 1 &quot; That is, if one change instruction having the same change purpose simultaneously is generated in the pair of vertexes, the configuration apparatus 200 can calculate a weight by adding a weight '1' to the line, and if one change instruction is generated but the change purpose is different , A weight '-1' may be applied to the line. For example, when the configuration apparatus 200 determines that two changes of the same purpose are the same for the purpose of change based on the change information when three changes occur simultaneously in the two classes, the weight is set to Subtract 1 from 3 changes and calculate it as '2'.

이때, 상기 클래스 변경 정보는, '변경 식별자', '동시에 변경한 클래스 정보' 및 '목적 또는 메시지 정보'를 적어도 포함할 수 있다. 예를 들어, 'Commit Id'는 변경 식별자로서, 예컨대, 'Commit #1', 'Commit #2' 등의 형식일 수 있다. 'Commit Classes'는 동시에 변경한 클래스 정보로서, 예컨대, 'Commit #1'에서 어떤 클래스가 변경되었는지를 나타내는 정보일 수 있다. 또한, 'Commit Message'는 클래스 변경에 대한 목적 또는 메시지 정보로서, 예컨대, 'Commit #1'의 변경 이유일 수 있다.At this time, the class change information may include at least a 'change identifier', 'class information changed at the same time', and 'object or message information'. For example, 'Commit Id' may be a change identifier, for example, 'Commit # 1', 'Commit # 2', or the like. 'Commit Classes' is class information that has changed at the same time, for example, information indicating which class has been changed in 'Commit # 1'. The 'Commit Message' may be the purpose of the class change or the message information, for example, the reason for the change of 'Commit # 1'.

실시예에 따라, 단계(1310)는 선택 순서에 기초하여, 상기 메뉴를, 바운더리 레이어, 컨트롤 레이어, 엔티티 레이어로 순차적으로 분류하여 계층화 하는 과정일 수 있다. 즉, 구성 장치(200)는 메뉴를 구성하는 클래스의 요소를 확인하여, 바운더리 레이어, 컨트롤 레이어, 엔티티 레이어로 분류하여 그룹화 할 수 있다.According to an embodiment, step 1310 may be a step of sequentially classifying the menu into a boundary layer, a control layer, and an entity layer based on the selection order and layering the menu. That is, the constituent device 200 can identify the elements of the class constituting the menu and classify them into a boundary layer, a control layer, and an entity layer, and group them.

이때, 단계(1330)는 상기 바운더리 레이어로 분류된 메뉴와, 상기 엔티티 레이어로 분류된 메뉴 간의 상기 가중치를 '0'으로 산출하여, 상기 선을 제거하는 과정일 수 있다. 즉, 구성 장치(200)는 바운더리 레이어와 엔티티 레이어의 연관성이 없다고 가정하고, 바운더리 레이어에 포함된 정점과 엔티티 레이어에 포함된 정점이 선으로 연결되지 않도록 가중치를 '0'으로 산출할 수 있다.In this case, the step 1330 may be a step of calculating the weight between the menu classified into the boundary layer and the menu classified into the entity layer as '0', and removing the line. That is, assuming that there is no association between the boundary layer and the entity layer, the constituent device 200 may calculate the weight as '0' so that the vertices included in the boundary layer and the vertices included in the entity layer are not connected by a line.

이때, 단계(1330)는 상기 컨트롤 레이어로 분류된 메뉴를 기준으로, 상기 바운더리 레이어로 분류된 메뉴, 상기 컨트롤 레이어로 분류된 메뉴, 및 상기 엔티티 레이어 분류된 메뉴 간의 상기 가중치가 상기 임계치를 초과하는 선을 유지하여 하나의 마이크로서비스를 구성하는 과정일 수 있다. 즉, 구성 장치(200)는 컨트롤 레이어에서 가중치가 임계치 이하인 선은 제거하고 가중치가 임계치 초과인 선은 유지시켜, 남은 정점을 연결하여 하나의 마이크로서비스를 구성할 수 있다.At this time, if the weight value between the menu classified into the boundary layer, the menu classified into the control layer, and the menu classified into the entity layer exceeds the threshold value, And maintaining a line to construct a micro-service. In other words, the constructing device 200 can construct a micro-service by removing lines whose weights are below a threshold value in the control layer, maintaining lines whose weights are over a threshold value, and connecting the remaining vertices.

이러한, 구성 방법은 클래스 정보와 개발 변경 기록을 분석하여 모놀리식 애플리케이션을 마이크로서비스 단위로 구성함으로써, 컴포넌트 단위의 개발 방식보다 확장성을 높일 수 있고 개발 및 배포를 보다 빠르게 할 수 있다.By constructing a monolithic application as a micro service unit by analyzing class information and development change history, such a configuration method can increase the scalability and speed up development and distribution more than a method of developing in units of components.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to an embodiment may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions to be recorded on the medium may be those specially designed and configured for the embodiments or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the foregoing, and may be configured to configure the processing device to operate as desired or to process it collectively or collectively Device can be commanded. The software and / or data may be in the form of any type of machine, component, physical device, virtual equipment, computer storage media, or device , Or may be permanently or temporarily embodied in a transmitted signal wave. The software may be distributed over a networked computer system and stored or executed in a distributed manner. The software and data may be stored on one or more computer readable recording media.

이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.Although the embodiments have been described with reference to the drawings, various technical modifications and variations may be applied to those skilled in the art. For example, it is to be understood that the techniques described may be performed in a different order than the described methods, and / or that components of the described systems, structures, devices, circuits, Lt; / RTI &gt; or equivalents, even if it is replaced or replaced.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

200: 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치
210: 계층화부
220: 그래프 생성부
230: 구성부
200: A device that configures a monolithic application as a micro-service unit
210:
220:
230:

Claims (14)

애플리케이션에 포함되는 메뉴를, 복수의 레이어로 분류하여 계층화 하는 계층화부;
상기 메뉴 각각을 정점으로, 다른 메뉴를 선으로 연결하여 그래프를 생성하는 그래프 생성부; 및
마이크로서비스를 위해 상기 애플리케이션에 포함되는 메뉴에 대한 변경에 관한 변경명령에 따라,
상기 그래프 내의 메뉴 간의 변경 유사도를 가중치로 산출하고, 산출된 상기 가중치가 임계치 이하인 메뉴 간의 상기 선을 제거하여, 상기 애플리케이션에 대해 상기 마이크로서비스를 구성하는 구성부
를 포함하는 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치.
A layering unit for classifying the menus included in the application into a plurality of layers and layering the menus;
A graph generating unit for generating graphs by connecting each of the menus to vertices and connecting other menus to lines; And
According to a change command for a change to a menu included in the application for micro-service,
Wherein the micro-service is configured for the application by calculating the degree of similarity between the menus in the graph as a weight and removing the line between menus whose weight is not more than a threshold value,
Wherein the monolithic application is configured as a micro-service unit.
제1항에 있어서,
상기 계층화부는,
선택 순서에 기초하여, 상기 메뉴를, 바운더리 레이어, 컨트롤 레이어, 엔티티 레이어로 순차적으로 분류하여 계층화 하고,
상기 구성부는,
상기 바운더리 레이어로 분류된 메뉴와, 상기 엔티티 레이어로 분류된 메뉴 간의 상기 가중치를 '0'으로 산출하여, 상기 선을 제거하는
모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치.
The method according to claim 1,
The layering unit,
The menu is hierarchically classified into a boundary layer, a control layer, and an entity layer in sequence based on the selection order,
The above-
The weight between the menu classified by the boundary layer and the menu classified into the entity layer is calculated as '0', and the line is removed
A device that configures a monolithic application as a micro-service unit.
제1항에 있어서,
상기 계층화부는,
상기 메뉴를, 사용자 인터페이스, 기능 및 데이터베이스 중 어느 하나의 클래스로 식별하고, 동일한 클래스로 식별되는 상기 메뉴의 집단을, 하나의 레이어로 분류하여 계층화 하는
모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치.
The method according to claim 1,
The layering unit,
Identifies the menu as any one of a user interface, a function, and a database, classifies the groups of the menu identified by the same class into one layer,
A device that configures a monolithic application as a micro-service unit.
제1항에 있어서,
상기 그래프 생성부는,
클래스가 정해진 횟수 이상으로 변경되는 제1 메뉴를 확인하고, 상기 제1 메뉴를, 둘 이상의 다른 메뉴 각각을 상기 선으로 연결하여 상기 그래프를 생성하는
모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치.
The method according to claim 1,
Wherein the graph generating unit comprises:
Confirming a first menu in which the class is changed more than a predetermined number of times, and connecting the first menu to each of two or more other menus by the line to generate the graph
A device that configures a monolithic application as a micro-service unit.
제1항에 있어서,
상기 구성부는,
상기 변경명령에 따라, 동시에 변경되는 메뉴 쌍에 변경 유사도가 있는 것으로 판단하여 가중치 '1'을 가산하여 산출하고, 클래스 변경 정보에 근거하여, 상기 메뉴 쌍 내의 메뉴 각각이 갖는 변경목적이 서로 상이한 것으로 판단되면, 가중치 '1'을 감산하여 산출하는
모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치.
The method according to claim 1,
The above-
According to the change command, it is determined that there is a change degree of similarity in the menu pair changed at the same time, and the weight value '1' is added to the calculated change degree, and the change purpose of each menu in the menu pair is different If it is judged, it is calculated by subtracting the weight value &quot; 1 &quot;
A device that configures a monolithic application as a micro-service unit.
제5항에 있어서,
상기 클래스 변경 정보는,
'변경 식별자', '동시에 변경한 클래스 정보' 및 '목적 또는 메시지 정보'를 적어도 포함하는
모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치.
6. The method of claim 5,
The class-
At least a 'change identifier', 'class information changed at the same time', and 'destination or message information'
A device that configures a monolithic application as a micro-service unit.
제1항에 있어서,
상기 계층화부는,
선택 순서에 기초하여, 상기 메뉴를, 바운더리 레이어, 컨트롤 레이어, 엔티티 레이어로 순차적으로 분류하여 계층화 하고,
상기 구성부는,
상기 컨트롤 레이어로 분류된 메뉴를 기준으로, 상기 바운더리 레이어로 분류된 메뉴, 상기 컨트롤 레이어로 분류된 메뉴, 및 상기 엔티티 레이어로 분류된 메뉴 간의 상기 가중치가 상기 임계치를 초과하는 선을 유지하여 하나의 마이크로서비스를 구성하는
모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치.
The method according to claim 1,
The layering unit,
The menu is hierarchically classified into a boundary layer, a control layer, and an entity layer in sequence based on the selection order,
The above-
Wherein the weighting value between the menus classified into the boundary layer, the menus classified into the control layer, and the menus classified into the entity layer is maintained on the basis of the menus classified into the control layer, Configuring micro-services
A device that configures a monolithic application as a micro-service unit.
모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치에 의해 구현되는, 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 방법에 있어서,
상기 장치는, 애플리케이션에 포함되는 메뉴를, 복수의 레이어로 분류하여 계층화 하는 단계;
상기 장치는, 상기 메뉴 각각을 정점으로, 다른 메뉴를 선으로 연결하여 그래프를 생성하는 단계; 및
마이크로서비스를 위해 상기 애플리케이션에 포함되는 메뉴에 대한 변경에 관한 변경명령에 따라,
상기 장치는, 상기 그래프 내의 메뉴 간의 변경 유사도를 가중치로 산출하고, 산출된 상기 가중치가 임계치 이하인 메뉴 간의 상기 선을 제거하여, 상기 애플리케이션에 대해 마이크로서비스를 구성하는 단계
를 포함하는 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 방법.
A method of configuring a monolithic application in a micro-service unit, the monolithic application being implemented by a device that configures a monolithic application in a micro-service unit,
The apparatus includes a step of classifying menus included in an application into a plurality of layers and layering them;
Generating a graph by connecting each of the menus to vertices and connecting other menus to lines; And
According to a change command for a change to a menu included in the application for micro-service,
The apparatus includes a step of calculating a similarity degree of change between menus in the graph by weighting and removing the line between menus whose calculated weight value is equal to or less than a threshold value,
A method for configuring a monolithic application in a micro-service unit.
제8항에 있어서,
상기 계층화 하는 단계는,
선택 순서에 기초하여, 상기 메뉴를, 바운더리 레이어, 컨트롤 레이어, 엔티티 레이어로 순차적으로 분류하여 계층화 하는 단계
를 포함하고,
상기 마이크로서비스를 구성하는 단계는,
상기 바운더리 레이어로 분류된 메뉴와, 상기 엔티티 레이어로 분류된 메뉴 간의 상기 가중치를 '0'으로 산출하여, 상기 선을 제거하는 단계
를 포함하는 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 방법.
9. The method of claim 8,
Wherein the layering comprises:
A step of classifying the menu into a boundary layer, a control layer and an entity layer in order based on the selection order
Lt; / RTI &gt;
The step of configuring the micro-
Calculating a weight value between a menu classified by the boundary layer and a menu classified into the entity layer as '0', and removing the line;
A method for configuring a monolithic application in a micro-service unit.
제8항에 있어서,
상기 계층화 하는 단계는,
상기 메뉴를, 사용자 인터페이스, 기능 및 데이터베이스 중 어느 하나의 클래스로 식별하는 단계; 및
동일한 클래스로 식별되는 상기 메뉴의 집단을, 하나의 레이어로 분류하여 계층화하는 단계
를 포함하는 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 방법.
9. The method of claim 8,
Wherein the layering comprises:
Identifying the menu as one of a user interface, a function, and a database; And
Classifying the groups of the menus identified by the same class into one layer and layering
A method for configuring a monolithic application in a micro-service unit.
제8항에 있어서,
상기 그래프를 생성하는 단계는,
클래스가 정해진 횟수 이상으로 변경되는 제1 메뉴를 확인하는 단계; 및
상기 제1 메뉴를, 둘 이상의 다른 메뉴 각각을 상기 선으로 연결하여 상기 그래프를 생성하는 단계
를 포함하는 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 방법.
9. The method of claim 8,
Wherein generating the graph comprises:
Confirming a first menu in which the class is changed more than a predetermined number of times; And
Generating the graph by connecting the first menu with the lines of each of two or more different menus
A method for configuring a monolithic application in a micro-service unit.
제8항에 있어서,
상기 마이크로서비스를 구성하는 단계는,
상기 변경명령에 따라, 동시에 변경되는 메뉴 쌍에 변경 유사도가 있는 것으로 판단하여 가중치 '1'을 가산하여 산출하는 단계; 및
클래스 변경 정보에 근거하여, 상기 메뉴 쌍 내의 메뉴 각각이 갖는 변경목적이 서로 상이한 것으로 판단되면, 가중치 '1'을 감산하여 산출하는 단계
를 포함하는 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 방법.
9. The method of claim 8,
The step of configuring the micro-
Determining a change similarity to a menu pair to be changed at the same time according to the change command, and adding the weighted value '1' to the menu pair; And
If it is determined on the basis of the class change information that the menus in the menu pair have different purpose of modification, subtracting the weight value &quot; 1 &quot;
A method for configuring a monolithic application in a micro-service unit.
제12항에 있어서,
상기 클래스 변경 정보는,
'변경 식별자', '동시에 변경한 클래스 정보' 및 '목적 또는 메시지 정보'를 적어도 포함하는
모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 방법.
13. The method of claim 12,
The class-
At least a 'change identifier', 'class information changed at the same time', and 'destination or message information'
How to configure a monolithic application as a micro-service unit.
제8항에 있어서,
상기 계층화 하는 단계는,
선택 순서에 기초하여, 상기 메뉴를, 바운더리 레이어, 컨트롤 레이어, 엔티티 레이어로 순차적으로 분류하여 계층화 하는 단계
상기 마이크로서비스를 구성하는 단계는,
상기 컨트롤 레이어로 분류된 메뉴를 기준으로, 상기 바운더리 레이어로 분류된 메뉴, 상기 컨트롤 레이어로 분류된 메뉴, 및 상기 엔티티 레이어로 분류된 메뉴 간의 상기 가중치가 상기 임계치를 초과하는 선을 유지하여 하나의 마이크로서비스를 구성하는 단계
를 포함하는 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 방법.
9. The method of claim 8,
Wherein the layering comprises:
A step of classifying the menu into a boundary layer, a control layer and an entity layer in order based on the selection order
The step of configuring the micro-
Wherein the weighting value between the menus classified into the boundary layer, the menus classified into the control layer, and the menus classified into the entity layer is maintained on the basis of the menus classified into the control layer, Steps to configure micro-services
A method for configuring a monolithic application in a micro-service unit.
KR1020180044276A 2018-04-17 2018-04-17 Device and method for constructing monolithic application as microservice based unit KR101909420B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180044276A KR101909420B1 (en) 2018-04-17 2018-04-17 Device and method for constructing monolithic application as microservice based unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180044276A KR101909420B1 (en) 2018-04-17 2018-04-17 Device and method for constructing monolithic application as microservice based unit

Publications (1)

Publication Number Publication Date
KR101909420B1 true KR101909420B1 (en) 2018-12-19

Family

ID=65009001

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180044276A KR101909420B1 (en) 2018-04-17 2018-04-17 Device and method for constructing monolithic application as microservice based unit

Country Status (1)

Country Link
KR (1) KR101909420B1 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111221570A (en) * 2019-12-30 2020-06-02 中国平安财产保险股份有限公司 Migration method, device, equipment and storage medium of microservice framework
CN111866140A (en) * 2020-07-21 2020-10-30 腾讯科技(深圳)有限公司 Fusion management apparatus, management system, service calling method, and medium
CN112416318A (en) * 2020-11-03 2021-02-26 前海飞算云智软件科技(深圳)有限公司 Micro-service development method and device, storage medium and electronic equipment
KR20220023400A (en) * 2020-08-21 2022-03-02 주식회사 엔씨소프트 Appratus and method for providing bulletin board service
KR20220028255A (en) * 2020-08-28 2022-03-08 주식회사 엔씨소프트 Appratus and method for providing bulletin board service
CN116136756A (en) * 2023-04-18 2023-05-19 浪潮通用软件有限公司 Layered structure-based microservice assembly method, device, equipment and medium

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Gysel, Michael, et al. "Service cutter: A systematic approach to service decomposition." European Conference on Service-Oriented and Cloud Computing. Springer, Cham, 2016.
Levcovitz, Alessandra, Ricardo Terra, and Marco Tulio Valente. "Towards a technique for extracting microservices from monolithic enterprise systems." arXiv preprint arXiv:1605.03175, 2016.
Mazlami, Genc, Jürgen Cito, and Philipp Leitner. "Extraction of Microservices from Monolithic Software Architectures." Web Services (ICWS), 2017 IEEE International Conference on. IEEE, 2017.

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111221570A (en) * 2019-12-30 2020-06-02 中国平安财产保险股份有限公司 Migration method, device, equipment and storage medium of microservice framework
CN111221570B (en) * 2019-12-30 2022-07-15 中国平安财产保险股份有限公司 Migration method, device and equipment of microservice framework and storage medium
CN111866140A (en) * 2020-07-21 2020-10-30 腾讯科技(深圳)有限公司 Fusion management apparatus, management system, service calling method, and medium
CN111866140B (en) * 2020-07-21 2023-09-15 腾讯科技(深圳)有限公司 Fusion management device, management system, service calling method and medium
KR20220023400A (en) * 2020-08-21 2022-03-02 주식회사 엔씨소프트 Appratus and method for providing bulletin board service
KR102449105B1 (en) 2020-08-21 2022-09-29 주식회사 엔씨소프트 Appratus and method for providing bulletin board service
KR20220028255A (en) * 2020-08-28 2022-03-08 주식회사 엔씨소프트 Appratus and method for providing bulletin board service
KR102449107B1 (en) * 2020-08-28 2022-09-29 주식회사 엔씨소프트 Appratus and method for providing bulletin board service
CN112416318A (en) * 2020-11-03 2021-02-26 前海飞算云智软件科技(深圳)有限公司 Micro-service development method and device, storage medium and electronic equipment
CN116136756A (en) * 2023-04-18 2023-05-19 浪潮通用软件有限公司 Layered structure-based microservice assembly method, device, equipment and medium

Similar Documents

Publication Publication Date Title
KR101909420B1 (en) Device and method for constructing monolithic application as microservice based unit
US12034747B2 (en) Unsupervised learning to simplify distributed systems management
US10867244B2 (en) Method and apparatus for machine learning
US9547638B2 (en) Data logging for rule specifications
CN107251021B (en) Filtering data lineage graph
JP5432867B2 (en) Computer system management method and management system
US20100275186A1 (en) Segmentation for static analysis
US11431572B2 (en) Semantic detection and resolution of conflicts and redundancies in network function virtualization policies
US8429574B2 (en) Dual-pattern coloring technique for mask design
US10467083B2 (en) Event relationship analysis in fault management
US11302096B2 (en) Determining model-related bias associated with training data
CN106873957A (en) The processing method and equipment of a kind of operation flow
JP4383484B2 (en) Message analysis apparatus, control method, and control program
WO2023050745A1 (en) Image processing method and apparatus, device, medium, and program
US11270065B2 (en) Extracting attributes from embedded table structures
CN116601644A (en) Providing interpretable machine learning model results using distributed ledgers
US20220188290A1 (en) Assigning an anomaly level to a non-instrumented object
US20190102504A1 (en) Semiconductor package via stack checking
CN112416700A (en) Analyzing initiated predictive failures and SMART logs
US20200327364A1 (en) Clustering simulation failures for triage and debugging
US8468116B2 (en) Rule creation method and rule creating apparatus
US12026480B2 (en) Software development automated assessment and modification
US20220326917A1 (en) Automated software application generation
US11176010B2 (en) Circuit-cycle reproduction
WO2017109821A1 (en) Management system and management method for computer system