목록 보기
마이크로서비스 분리하기 - 코드 레벨 view
아키텍처

마이크로서비스 분리하기 - 코드 레벨 view

라포랩스
라포랩스
2025년 2월 19일

두줄요약

모노리스에서 마이크로서비스를 분리할 때의 세부 절차와 요구사항을 정리했습니다. 코드 구조 리팩토링과 피처 플래그로 충돌과 배포 지연을 줄이는 방법을 소개했습니다.

문제 상황

  • 모노리스에서 마이크로서비스로 전환하는 과정의 세부 마이그레이션 자료 부족
  • 서비스 개발과 분리 작업 병행 시 컨플릭, 긴 QA로 인한 배포 지연, 분리 전후 동작 동일성 보장 필요

원인 분석

  • 코드 구조 변경이 광범위해 개발 변경과 충돌 가능성 큼
  • trunk 기반 배포 흐름에서 오래 걸리는 QA가 이후 배포를 막는 구조
  • 내부 구현만 바꾸되 외부 API 동작은 유지해야 하는 리팩토링 성격

해결 방법

  • monolith 안에서 분리 대상 모듈을 미리 ms- prefix 구조로 리팩토링
  • domain에 인터페이스를 두고 in-process impl과 remote impl을 피처 플래그로 전환
  • STG에서는 remote 호출로 QA, PROD에서는 in-process 유지 후 점진적으로 전환

성능/운영 포인트

  • API 명세를 레포지토리 내부에 둬 피드백 루프 단축
  • 코드 복사와 config/secret 복사를 자동화해 피처 프리즈 최소화
  • 문제 시 피처 플래그 원복으로 빠른 롤백 가능

다음 읽기

#MSA 주제를 이어서 읽기

왜 팔도감은 마이크로서비스에서모놀리스로 전환했을까?

팔도감은 작은 조직 규모와 운영 복잡도를 고려해 MSA 대신 모듈리스 구조로 전환했습니다. Git Submodule, Gradle Composite Build, 코드 리팩터링 도구로 마이크로서비스 코드를 통합했습니다.

라포랩스
라포랩스
아키텍처

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...