[논문 소개]유스케이스 모델을 활용한 마이크로서비스 기능 식별법

0

논문요약

목록 보기
5/6
post-thumbnail

✏️ 들어가기에 앞서

소프트웨어 엔지니어링 랩에서 작성한 세 번째 논문이다. 이 논문을 작성하게 된 계기는 다음과 같다. 지금까지 마이크로서비스를 식별하는 논문들은 많지만 식별된 마이크로서비스가 어떤 기능을 하는 서비스인지 판단하는 것은 개발자 또는 전문가의 노력이 필요하다. 메뉴얼한 작업을 통해서 판단할 수 있다는 것이다. 따라서 우리는 식별된 마이크로서비스가 어떤 기능을 하는지 오토매틱하게 판별하는 기법을 제안한다. 이를 위해 웹 앱의 기능적 요구사항을 담고 있는 유스케이스 모델을 추출한다. 그리고 유스케이스 모델과 식별된 마이크로서비스의 유사도를 기반으로 마이크로서비스의 기능을 예측한다.

✏️ 제안하는 기법의 방식

이 기법의 방식은 말로도 쉽게 설명할 수 있다.
그러나 조금 더 이해하기 쉽게 그림으로 나타내면 다음과 같다.

Step 1

웹 앱으로부터 유스케이스 모델을 추출합니다. 유스케이스 모델은 웹 앱의 기능적 요구사항을 담고 있으므로 마이크로서비스 기능 식별에 유용합니다. 마이크로서비스 역시 웹 앱을 기능적으로 분할한 것이므로, 유스케이스 모델의 각 유스케이스들이 마이크로서비스의 기능을 설명할 수 있습니다.
.
유스케이스 모델은 다음과 같이 이루어집니다. 유스케이스 모델 안에 여러 유스케이스들이 포함됩니다. 각 유스케이스는 유스케이스 명과 유스케이스 설명으로 이루어집니다.

Step 2

웹 앱에서 식별된 마이크로서비스에서 정보를 추출하는 단계입니다. 식별된 마이크로서비스의 기능을 유추하기 위해서 해당 마이크로서비스들이 갖는 단어들을 이용합니다. 마이크로서비스들이 갖는 단어는 마이크로서비스의 컴포넌트들이 갖는 단어들을 이용하여 표현합니다.
.
먼저, 임의의 마이크로서비스 m을 표현하는 단어는 다음과 같이 추출됩니다. m에 포함된 컴포넌트들로부터 단어들을 추출합니다. 각 컴포넌트에서 빈도수가 높은 단어 10개를 추출한 뒤 추출된 컴포넌트 대표 단어들에서 다시 빈도수가 높은 순서대로 10개의 단어를 추출합니다. 이 10개의 단어가 해당 마이크로서비스를 설명하는 단어가 될 수 있습니다.

Step 3

이제 웹 앱으로부터 유스케이스 n개와 마이크로서비스 설명 n개가 준비가 되었습니다. 이제 유스케이스와 마이크로서비스 설명의 유사도를 측정하여 마이크로서비스와 유사한 유스케이스와 매핑하여 해당 마이크로서비스를 유스케이스를 통해 설명할 필요가 있습니다. 이렇게 유사도를 계산하기 위해서 문장을 임베딩하는 Sentence BERT를 사용합니다.
.
유스케이스 모델의 각 유스케이스들을 SBERT에 넣어 각 유스케이스의 임베딩 벡터를 얻습니다. 그러고 나서 마이크로서비스 설명들을 SBERT에 넣어 각 마이크로서비스 설명마다 임베딩 벡터를 얻습니다. 얻은 임베딩 벡터 사이의 유사도를 측정한 뒤, 유사도가 높은 순서대로 마이크로서비스를 유스케이스와 매핑합니다. 마이크로서비스와 매핑된 유스케이스가 해당 마이크로서비스의 기능을 설명합니다.

✏️ 평가

본 논문은 이 기법이 효과적인지 검증하기 위해서 유스케이스 모델을 다양한 방식으로 활용합니다. 예를 들어, 유스케이스 명만 사용하거나, 유스케이스 문장만 사용하거나, 유스케이스 명과 유스케이스 문장을 모두 사용하는 방식을 테스트해봅니다. 이 중 유스케이스 명과 유스케이스 문장을 모두 사용할 때 가장 좋은 결과를 얻을 수 있었습니다. 따라서 유스케이스 명과 문장이 모두 마이크로서비스 기능 식별을 위해서 필요하다는 것을 알 수 있습니다.

✏️ 토의

이 논문에서 직접적으로 표현하고 있지는 않지만, 식별된 마이크로서비스와 유스케이스가 1:1로 대응되는 것을 전제로 합니다. 이는 어느정도 근거가 있습니다. 유스케이스 모델이 웹 앱의 기능적인 부분을 모두 담고 있고, 마이크로서비스는 웹 앱을 기능별로 분할한 것이기 때문에 잘 짜여진 유스케이스 모델과 잘 식별된 마이크로서비스는 1대1로 대응하는 것이 이상적이여 보입니다.

✏️ 소감

이 논문은 저널 심사 과정에서 수정 관련 코멘트를 많이 받지 않았습니다. 오히려 좋은 아이디어라고 좋은 심사평을 받았습니다. 하지만 지금 생각해보면 기업에서 큰 모노리식 웹 앱을 마이크로서비스 아키텍처로 전환한다고 하면, 이미 어느정도 어떻게 분할 할지 큰 그림을 그리고 진행할 것이라고 생각됩니다. 그렇다면 식별된 마이크로서비스가 어느 범주 내에 있기 때문에 식별된 마이크로서비스의 기능을 유추하는 데에 있어서 오토매틱한 방식까지는 필요하지 않을 수도 있습니다. 그러나 중요한 점은 웹 앱의 사이즈가 클 수록 이러한 노력이 커지는 것은 맞습니다. 예측하지 못하는 부분도 마이크로서비스로 분할될 수 있기 때문에 그런 점에서는 획기적인 아이디어라고 생각합니다.

원문 링크: https://doi.org/10.6109/jkiice.2023.27.7.807

profile
최악의 환경에서 최선을 다하기

0개의 댓글