[논문요약]Towards Migrating Legacy Software Systems to Microservice-based Architectures: a Data-Centric Process for Microservice Identification을 읽고,,

0

논문요약

목록 보기
2/6

⌨️ 접하게 된 배경

TF-IDF와 관련한 학술 논문을 작성중에 관련연구 논문을 찾아보면서 읽게 되었습니다. 마찬가지로 본 논문은 모놀리식 웹 앱에 대하여 마이크로서비스를 식별하는 방식에 대하여 설명하고 있습니다.

⌨️ 구성

마이크로서비스 식별과 관련한 설명을 하기 전에 논문이 주장하고 있는 바는 다음과 같습니다. 기존의 마이크로서비스 식별이 기능적 분할에 중점을 두고 있었다면, 본 논문에서는 데이터베이스를 기준으로 식별하고자 합니다. 데이터베이스를 각각의 마이크로서비스로 분할하고 식별된 마이크로서비스가 갖는 기능적 의미를 찾는 과정입니다. 그래서 웹 앱에 여러가지 계층(프레젠테이션 레이어, 비즈니스 로직 레이어, 데이터엑세스 레이어)를 거치면서 여러가지 구성요소들이 존재하는데 그 중 데이터베이스 테이블을 대상으로 실험을 진행합니다.

본 논문은 마이크로서비스를 식별하는 과정을 총 4가지의 단계로 분류합니다.

⌨️ 전처리

첫번째 과정은 전처리 과정입니다. 테이블이 가지고 있는 구성요소들을 추출하여 "모델링"합니다. "모델링"은 문서화와 유사하다고 볼 수 있습니다. 이 과정이 핵심적인 부분인데 테이블에서 테이블 이름과 속성명을 추출합니다. 뿐만 아니라 외래키 관계 역시 고려합니다. 모델링 과정에서 3가지 요소에 대해 가중치를 부여합니다.

  • 테이블 이름 : 테이블을 특정하는 가장 중요한 정보이기 때문에 여러번 반복해서 모델링 됩니다.
  • 싱클톤 외래키 관계 : 어떤 테이블이 하나의 테이블만 참조하는 관계입니다. 이것은 강력한 연결을 의미하기 때문에 참조하는 테이블의 이름과 외래키를 반복하여 모델링합니다. 반대로 참조당하는 테이블 역시 자신을 참조하는 테이블의 테이블 이름을 반복하여 모델링합니다.
  • 싱글톤이 아닌 외래키 관계 : 어떤 테이블이 여러테이블을 참조하는 관계입니다. 이것은 전 단계에서 설명한 관계보다는 약한 관계를 의미하기 때문에, 마찬가지로 반복을 통해 모델링을 진행하지면 반복 횟수가 싱글톤 외래키 관계보다 적습니다.

이 후, 토큰화 과정과 표제어 추출을 진행합니다. 결과적으로 각 테이블마다 단어들을 포함하는 단어 뭉치를 가지게 된다고 볼 수 있습니다.

⌨️ 문서 확장

두번째 과정은 문서를 강화하는 과정입니다. 데이터 증강과 유사하다고 볼 수 있으며, 모델링 과정에서 포함된 단어들에 대하여 의미적으로 유사한 단어도 추가하여 문서를 확장합니다. 이때 WordNet을 사용할 수 있습니다.

⌨️ 클러스터링

세번째 과정은 클러스터링 입니다. TF-IDF를 이용하여 각각의 문서들을 벡터화하고 K-Means로 클러스터링 합니다. 이 때 K-Means에서 적절한 K를 찾기 위해 실루엣 계수나 Elbow Method를 사용할 수 있습니다.

⌨️ 데이터베이스 할당 & 마이크로서비스 이름 추론

마지막 과정은 데이베이스 할당과 클러스터링 된 그룹의 서비스 이름을 추론하는 과정입니다. 전 단계의 결과는 단순히 단어를 포함하는 문서가 클러스터링 된 결과입니다. 그러므로 분류된 단어들을 확인하여 거기에 알맞게 데이터베이스를 할당합니다. 이 과정에서 어떤 기준을 가지고 데이터베이스를 할당할지 결정할 수 있습니다. 예를 들어 테이블 이름이 있는 쪽으로 해당 테이블을 할당하는 식으로 할 수 있습니다. 하나의 클러스터는 식별된 하나의 마이크로서비스라고 볼 수 있습니다. 그러므로 해당 마이크로서비스의 이름을 추론합니다.

⌨️ 끝맺음

데이터베이스를 기준으로 먼저 마이크로서비스를 식별하려고 하는 시도는 좋은 것 같다. 웹 앱은 데이터베이스와 끊임없이 교류하기 때문에 웹 앱의 함축된 정보는 데이터베이스 테이블에 들어가있는 것과 같다고 생각하기 때문이다. 우리가 진행하고 있는 실험도 본 논문이 설명하고 있는 것과 유사하다. 하지만 우리는 다른 컴포넌트들 역시 고려한다.(Class, View 등) 똑같은 방식으로 다른 컴포넌트들까지 고려하여 K-Means를 돌려서 좋은 결과를 낼 수 있었으면 어땠을까 라고 생각한다. 더 나아가서는 마지막 단계에서의 마이크로서비스 이름을 추론하는 과정역시 자동화 시킬 수 있을 것이라는 생각도 든다.

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

0개의 댓글