아키텍처
마이크로서비스 분리하기 - 코드 레벨 view
두줄요약
모노리스에서 마이크로서비스를 분리할 때의 세부 절차와 요구사항을 정리했습니다. 코드 구조 리팩토링과 피처 플래그로 충돌과 배포 지연을 줄이는 방법을 소개했습니다.
문제 상황
- 모노리스에서 마이크로서비스로 전환하는 과정의 세부 마이그레이션 자료 부족
- 서비스 개발과 분리 작업 병행 시 컨플릭, 긴 QA로 인한 배포 지연, 분리 전후 동작 동일성 보장 필요
원인 분석
- 코드 구조 변경이 광범위해 개발 변경과 충돌 가능성 큼
- trunk 기반 배포 흐름에서 오래 걸리는 QA가 이후 배포를 막는 구조
- 내부 구현만 바꾸되 외부 API 동작은 유지해야 하는 리팩토링 성격
해결 방법
- monolith 안에서 분리 대상 모듈을 미리
ms-prefix 구조로 리팩토링 domain에 인터페이스를 두고in-process impl과remote impl을 피처 플래그로 전환- STG에서는 remote 호출로 QA, PROD에서는 in-process 유지 후 점진적으로 전환
성능/운영 포인트
- API 명세를 레포지토리 내부에 둬 피드백 루프 단축
- 코드 복사와 config/secret 복사를 자동화해 피처 프리즈 최소화
- 문제 시 피처 플래그 원복으로 빠른 롤백 가능
