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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software 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
Description
본 발명은 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치 및 방법에 관한 것이다.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.
다음으로, 본 발명의 구성 장치 및 방법은 연관성이 높은 정점들을 연결하여 독립적인 형태의 마이크로서비스를 구성할 수 있다(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
도 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
계층화부(210)는 애플리케이션에 포함되는 메뉴를, 복수의 레이어로 분류하여 계층화 한다. 즉, 계층화부(210)는 애플리케이션을 구성하는 메뉴의 속성을 유형에 따라 분류하여 그룹화 할 수 있다. 이때, 메뉴의 속성은 클래스(class)로 지칭할 수 있다. 예를 들면, 계층화부(210)는 각 클래스를 비즈니스 애플리케이션의 3-티어(3-Tier) 구분에 따라 각각 프레젠테이션 레이어(Presentation Layer), 비즈니스 로직 레이어(Business Logic Layer), 퍼시스턴스 레이어(Persistence Layer)로 그룹화 할 수 있다.The
또한, 계층화부(210)는 선택 순서에 기초하여, 상기 메뉴를, 바운더리 레이어, 컨트롤 레이어, 엔티티 레이어로 순차적으로 분류하여 계층화 할 수 있다. 즉, 계층화부(210)는 메뉴를 구성하는 클래스의 요소를 확인하여, 바운더리 레이어, 컨트롤 레이어, 엔티티 레이어로 분류하여 그룹화 할 수 있다.In addition, the
또한, 계층화부(210)는 상기 메뉴를, 사용자 인터페이스, 기능 및 데이터베이스 중 어느 하나의 클래스로 식별하고, 동일한 클래스로 식별되는 상기 메뉴의 집단을, 하나의 레이어로 분류하여 계층화 할 수 있다. 즉, 계층화부(210)는 모놀리식 애플리케이션의 각각의 클래스의 유형에 따라 각각의 레이어로 분류할 수 있으며, 클래스의 유형은 입출력과 관련된 클래스, 애플리케이션의 주요 기능을 실현하는 클래스, 및 데이터베이스에 접근하는 클래스의 유형으로 분류될 수 있다.In addition, the
그래프 생성부(220)는 상기 메뉴 각각을 정점(vertex)으로, 다른 메뉴를 선(edge)으로 연결하여 그래프를 생성한다. 즉, 그래프 생성부(220)는 메뉴의 속성인 클래스를 정점으로 대응시키고, 정점과 다른 정점 사이에 선으로 연결하여 그래프를 생성할 수 있다. 이때, 그래프 생성부(220)는 레이어 별로 다른 정점의 형태를 생성할 수 있다. 또한, 선은 클래스 간의 연관 관계를 의미할 수 있다. 그래프를 생성하는 과정을 보다 상세하게 설명하기 위하여 후술하는 도 5, 도 9, 및 도 10을 참고하여 설명하고자 한다.The
또한, 그래프 생성부(220)는 클래스가 정해진 횟수 이상으로 변경되는 제1 메뉴를 확인하고, 상기 제1 메뉴를, 둘 이상의 다른 메뉴 각각을 상기 선으로 연결하여 상기 그래프를 생성할 수 있다. 즉, 그래프 생성부(220)는 변경이 일정 횟수 이상으로 발생하는 메뉴를 두 개 이상의 정점으로 분리하여 대응시키고, 각각의 정점을 다른 정점과 선으로 연결하여 그래프를 생성할 수 있다. 이때, 정해진 횟수(즉, 일정 횟수)는 둘 이상일 수 있다. 따라서, 그래프 생성부(220)는 변경이 많은 클래스에 대해 더 중요하고 많이 사용되는 것으로 설정할 수 있다.Also, the
구성부(230)는 변경명령(commit)에 따라, 상기 그래프 내의 메뉴 간의 변경 유사도를 가중치로 산출하고, 산출된 상기 가중치가 임계치 이하인 메뉴 간의 상기 선을 제거하여, 상기 애플리케이션에 대해 마이크로서비스를 구성한다. 즉, 구성부(230)는 변경 목적이 유사한 클래스들을 비교한 값인 가중치가 임계치 이하이면 해당 선을 제거하고 남은 정점을 다시 연결하여 하나의 마이크로서비스를 구성할 수 있다. 여기서, 임계치는 전체의 가중치를 고려하여 설정된 값일 수 있다. 예컨대, 임계치는 전체 평균 가중치 값의 1/5 수준 이하의 값으로 설정될 수 있다. 예를 들면, 구성부(230)는 임의의 클래스가 2개의 클래스를 동시에 콜(call)을 하여 상기 2개의 클래스가 동시에 변경이 되면, 각 클래스 사이를 연결하는 선의 가중치를 올릴 수 있다. 따라서, 콜이 많을수록 가중치는 높아질 수 있다. 가중치가 많이 올라가지 않은 선은, 설정된 임계치 이하가 될 수 있고, 구성부(230)는 임계치 이하인 선 및 가중치가 0인 선을 제거할 수 있다. The
또한, 구성부(230)는 상기 바운더리 레이어로 분류된 메뉴와, 상기 엔티티 레이어로 분류된 메뉴 간의 상기 가중치를 '0'으로 산출하여, 상기 선을 제거할 수 있다. 즉, 구성부(230)는 바운더리 레이어와 엔티티 레이어의 연관성이 없다고 가정하고, 바운더리 레이어에 포함된 정점과 엔티티 레이어에 포함된 정점이 선으로 연결되지 않도록 가중치를 '0'으로 산출할 수 있다. Also, the
또한, 구성부(230)는 상기 변경명령에 따라, 동시에 변경되는 메뉴 쌍에 변경 유사도가 있는 것으로 판단하여 가중치 '1'을 가산하여 산출하고, 클래스 변경 정보에 근거하여, 상기 메뉴 쌍 내의 메뉴 각각이 갖는 변경목적이 서로 상이한 것으로 판단되면, 가중치 '1'을 감산하는 산출할 수 있다. 즉, 구성부(230)는 정점 쌍에서 동시에 변경 목적이 같은 변경명령이 하나 발생하면, 상기 선에 대해 가중치 '1'을 더 추가하여 산출할 수 있고, 변경명령이 하나 발생하였지만 변경 목적이 상이하면, 상기 선에 대해 가중치 '-1'을 할 수 있다. 예를 들어, 구성부(230)는 두 개의 클래스에서 3번의 변경이 동시에 발생하였을 때, 변경 정보에 근거하여 변경목적이 같은 2개의 변경과 변경목적이 다른 1개의 변경인 것으로 확인되면, 가중치는 3번의 변경에서 1을 감산하여 '2'로 산출할 수 있다.In accordance with the change command, the
이때, 상기 클래스 변경 정보는, '변경 식별자', '동시에 변경한 클래스 정보' 및 '목적 또는 메시지 정보'를 적어도 포함할 수 있다. 예를 들어, 클래스 변경 정보는 표 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'.
또한, 구성부(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
도 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
도 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
도 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
도 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
그 다음, 도 6의 (c)에 도시된 바와 같이, 구성 장치(200)는 비즈니스 로직을 중심으로 정점을 묶을 수 있다. 구성 장치(200)는 연관성이 높은 정점들로 구성된 경로를 구하기 위해 프림, 크루스칼, 다익스트라 알고리즘과 같은 경로 탐색 알고리즘을 적용할 수 있다. 그 결과로 나온 경로를 구성하는 정점들을 묶어 하나의 마이크로서비스로 구성할 수 있다.Then, as shown in FIG. 6 (c), the
도 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
도 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
도 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
구성 장치(200)는 선의 가중치 값을 클래스 간 변경 유사성을 비교하여 산출할 수 있다. 이때, 구성 장치(200)는 변경 정보를 이용할 수 있는데, 표 3에 나타낸 바와 같이, 개발자에 의한 변경 정보에 관한 '변경명령 클래스(Commit Classes)'와 '변경명령 메시지(Commit Message)' 정보를 이용할 수 있다. 여기서, 'Commit Classes'는 하나의 변경명령(Commit)이 발생했을 때, 동시에 변경된 클래스를 의미할 수 있다. 'Commit Message'는 변경명령의 목적이 무엇인지 기록한 내용을 의미할 수 있다. 구성 장치(200)는 상기 두 가지 요소를 분석하여 변경 유사성을 가진 정점 사이의 가중치를 산출할 수 있다. The
본 구현 예시에서는, 구성 장치(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
Implement function searchPharmacy() for Class bv1 Implement function searchHospital () for Class cv1, ev6
Implement function searchPharmacy () for Class bv1
Fix searchPharmacy() bug for Class bv15, ev6, ev5Change 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
도 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
먼저, 구성 장치(200)는 애플리케이션에 포함되는 메뉴를, 복수의 레이어로 분류하여 계층화 한다(1310). 즉, 단계(1310)는 애플리케이션을 구성하는 메뉴의 속성을 유형에 따라 분류하여 그룹화 하는 과정일 수 있다. 이때, 메뉴의 속성은 클래스(class)로 지칭할 수 있다. 예를 들면, 구성 장치(200)는 각 클래스를 비즈니스 애플리케이션의 3-티어(3-Tier) 구분에 따라 각각 프레젠테이션 레이어(Presentation Layer), 비즈니스 로직 레이어(Business Logic Layer), 퍼시스턴스 레이어(Persistence Layer)로 그룹화 할 수 있다.First, the
또한, 단계(1310)는 상기 메뉴를, 사용자 인터페이스, 기능 및 데이터베이스 중 어느 하나의 클래스로 식별하고, 동일한 클래스로 식별되는 상기 메뉴의 집단을, 하나의 레이어로 분류하여 계층화 하는 과정일 수 있다. 즉, 구성 장치(200)는 모놀리식 애플리케이션의 각각의 클래스의 유형에 따라 각각의 레이어로 분류할 수 있으며, 클래스의 유형은 입출력과 관련된 클래스, 애플리케이션의 주요 기능을 실현하는 클래스, 및 데이터베이스에 접근하는 클래스의 유형으로 분류될 수 있다.In addition, the
다음으로, 구성 장치(200)는 상기 메뉴 각각을 정점으로, 다른 메뉴를 선으로 연결하여 그래프를 생성한다(1320). 즉, 단계(1320)는 메뉴의 속성인 클래스를 정점으로 대응시키고, 정점과 다른 정점 사이에 선으로 연결하여 그래프를 생성하는 과정일 수 있다. 이때, 구성 장치(200)는 레이어 별로 다른 정점의 형태를 생성할 수 있다. 또한, 선은 클래스 간의 연관 관계를 의미할 수 있다.Next, the
또한, 단계(1320)는 클래스가 정해진 횟수 이상으로 변경되는 제1 메뉴를 확인하고, 상기 제1 메뉴를, 둘 이상의 다른 메뉴 각각을 상기 선으로 연결하여 상기 그래프를 생성하는 과정일 수 있다. 즉, 구성 장치(200)는 변경이 일정 횟수 이상으로 발생하는 메뉴를 두 개 이상의 정점으로 분리하여 대응시키고, 각각의 정점을 다른 정점과 선으로 연결하여 그래프를 생성할 수 있다. 이때, 정해진 횟수(즉, 일정 횟수)는 둘 이상일 수 있다. 따라서, 구성 장치(200)는 변경이 많은 클래스에 대해 더 중요하고 많이 사용되는 것으로 설정할 수 있다.In addition,
다음으로, 구성 장치(200)는 변경명령에 따라, 상기 그래프 내의 메뉴 간의 변경 유사도를 가중치로 산출하고, 산출된 상기 가중치가 임계치 이하인 메뉴 간의 상기 선을 제거하여, 상기 애플리케이션에 대해 마이크로서비스를 구성한다(1330). 즉, 단계(1330)는 변경 목적이 유사한 클래스들을 비교한 값인 가중치가 임계치 이하이면 해당 선을 제거하고 남은 정점을 다시 연결하여 하나의 마이크로서비스를 구성하는 과정일 수 있다. 여기서, 임계치는 전체의 가중치를 고려하여 설정된 값일 수 있다. 예컨대, 임계치는 전체 평균 가중치 값의 1/5 수준 이하의 값으로 설정될 수 있다. 예를 들면, 구성 장치(200)는 임의의 클래스가 2개의 클래스를 동시에 콜(call)을 하여 상기 2개의 클래스가 동시에 변경이 되면, 각 클래스 사이를 연결하는 선의 가중치를 올릴 수 있다. 따라서, 콜이 많을수록 가중치는 높아질 수 있다. 가중치가 많이 올라가지 않은 선은, 설정된 임계치 이하가 될 수 있고, 구성 장치(200)는 임계치 이하인 선 및 가중치가 0인 선을 제거할 수 있다. Next, in accordance with the change command, the configuring
또한, 단계(1330)는 상기 변경명령에 따라, 동시에 변경되는 메뉴 쌍에 변경 유사도가 있는 것으로 판단하여 가중치 '1'을 가산하여 산출하고, 클래스 변경 정보에 근거하여, 상기 메뉴 쌍 내의 메뉴 각각이 갖는 변경목적이 서로 상이한 것으로 판단되면, 가중치 '1'을 감산하여 산출하는 과정일 수 있다. 즉, 구성 장치(200)는 정점 쌍에서 동시에 변경 목적이 같은 변경명령이 하나 발생하면, 상기 선에 대해 가중치 '1'을 더 추가하여 산출할 수 있고, 변경명령이 하나 발생하였지만 변경 목적이 상이하면, 상기 선에 대해 가중치 '-1'을 할 수 있다. 예를 들어, 구성 장치(200)는 두 개의 클래스에서 3번의 변경이 동시에 발생하였을 때, 변경 정보에 근거하여 변경목적이 같은 2개의 변경과 변경목적이 다른 1개의 변경인 것으로 확인되면, 가중치는 3번의 변경에서 1을 감산하여 '2'로 산출할 수 있다.In
이때, 상기 클래스 변경 정보는, '변경 식별자', '동시에 변경한 클래스 정보' 및 '목적 또는 메시지 정보'를 적어도 포함할 수 있다. 예를 들어, '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,
이때, 단계(1330)는 상기 바운더리 레이어로 분류된 메뉴와, 상기 엔티티 레이어로 분류된 메뉴 간의 상기 가중치를 '0'으로 산출하여, 상기 선을 제거하는 과정일 수 있다. 즉, 구성 장치(200)는 바운더리 레이어와 엔티티 레이어의 연관성이 없다고 가정하고, 바운더리 레이어에 포함된 정점과 엔티티 레이어에 포함된 정점이 선으로 연결되지 않도록 가중치를 '0'으로 산출할 수 있다.In this case, the
이때, 단계(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
이러한, 구성 방법은 클래스 정보와 개발 변경 기록을 분석하여 모놀리식 애플리케이션을 마이크로서비스 단위로 구성함으로써, 컴포넌트 단위의 개발 방식보다 확장성을 높일 수 있고 개발 및 배포를 보다 빠르게 할 수 있다.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 > 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.
상기 계층화부는,
선택 순서에 기초하여, 상기 메뉴를, 바운더리 레이어, 컨트롤 레이어, 엔티티 레이어로 순차적으로 분류하여 계층화 하고,
상기 구성부는,
상기 바운더리 레이어로 분류된 메뉴와, 상기 엔티티 레이어로 분류된 메뉴 간의 상기 가중치를 '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.
상기 계층화부는,
상기 메뉴를, 사용자 인터페이스, 기능 및 데이터베이스 중 어느 하나의 클래스로 식별하고, 동일한 클래스로 식별되는 상기 메뉴의 집단을, 하나의 레이어로 분류하여 계층화 하는
모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치.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 메뉴를, 둘 이상의 다른 메뉴 각각을 상기 선으로 연결하여 상기 그래프를 생성하는
모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치.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'을 감산하여 산출하는
모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치.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 " 1 "
A device that configures a monolithic application as a micro-service unit.
상기 클래스 변경 정보는,
'변경 식별자', '동시에 변경한 클래스 정보' 및 '목적 또는 메시지 정보'를 적어도 포함하는
모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치.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.
상기 계층화부는,
선택 순서에 기초하여, 상기 메뉴를, 바운더리 레이어, 컨트롤 레이어, 엔티티 레이어로 순차적으로 분류하여 계층화 하고,
상기 구성부는,
상기 컨트롤 레이어로 분류된 메뉴를 기준으로, 상기 바운더리 레이어로 분류된 메뉴, 상기 컨트롤 레이어로 분류된 메뉴, 및 상기 엔티티 레이어로 분류된 메뉴 간의 상기 가중치가 상기 임계치를 초과하는 선을 유지하여 하나의 마이크로서비스를 구성하는
모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 장치.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.
상기 계층화 하는 단계는,
선택 순서에 기초하여, 상기 메뉴를, 바운더리 레이어, 컨트롤 레이어, 엔티티 레이어로 순차적으로 분류하여 계층화 하는 단계
를 포함하고,
상기 마이크로서비스를 구성하는 단계는,
상기 바운더리 레이어로 분류된 메뉴와, 상기 엔티티 레이어로 분류된 메뉴 간의 상기 가중치를 '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 >
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.
상기 계층화 하는 단계는,
상기 메뉴를, 사용자 인터페이스, 기능 및 데이터베이스 중 어느 하나의 클래스로 식별하는 단계; 및
동일한 클래스로 식별되는 상기 메뉴의 집단을, 하나의 레이어로 분류하여 계층화하는 단계
를 포함하는 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 방법.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.
상기 그래프를 생성하는 단계는,
클래스가 정해진 횟수 이상으로 변경되는 제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.
상기 마이크로서비스를 구성하는 단계는,
상기 변경명령에 따라, 동시에 변경되는 메뉴 쌍에 변경 유사도가 있는 것으로 판단하여 가중치 '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 " 1 "
A method for configuring a monolithic application in a micro-service unit.
상기 클래스 변경 정보는,
'변경 식별자', '동시에 변경한 클래스 정보' 및 '목적 또는 메시지 정보'를 적어도 포함하는
모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 방법.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.
상기 계층화 하는 단계는,
선택 순서에 기초하여, 상기 메뉴를, 바운더리 레이어, 컨트롤 레이어, 엔티티 레이어로 순차적으로 분류하여 계층화 하는 단계
상기 마이크로서비스를 구성하는 단계는,
상기 컨트롤 레이어로 분류된 메뉴를 기준으로, 상기 바운더리 레이어로 분류된 메뉴, 상기 컨트롤 레이어로 분류된 메뉴, 및 상기 엔티티 레이어로 분류된 메뉴 간의 상기 가중치가 상기 임계치를 초과하는 선을 유지하여 하나의 마이크로서비스를 구성하는 단계
를 포함하는 모놀리식 애플리케이션을 마이크로서비스 단위로 구성하는 방법.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.
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)
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 |
-
2018
- 2018-04-17 KR KR1020180044276A patent/KR101909420B1/en active
Non-Patent Citations (3)
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)
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 |