
아키텍처
레거시를 대물림하지 않는 아키텍처: flex의 5년간의 여정
두줄요약
플렉스팀이 5년간 Monolith에서 MSA까지 아키텍처를 진화시키며 레거시를 줄인 과정을 공유했습니다. 변경 파급효과를 줄이기 위한 구조 분리와 Auto Configuration 활용이 핵심이었습니다.
문제 상황
- 초기 Monolith와 전형적 레이어드 구조에서 개발 속도 저하와 변경 파급효과 확대 발생
- 편의적으로 도입한 ComponentScan 같은 선택이 시간이 지나며 통제 어려운 레거시로 전환
구조와 흐름
- Monolith에서 모듈형 Monolith, MSA로 이어지는 아키텍처 변화 과정 공유
- 레이어를 도메인 안으로 숨기고 도메인 간 통신은 인터페이스로 제한하는 원칙 강조
- 배포 단위 기준 패키징 분리와 Spring Boot Auto Configuration 활용으로 모듈 통합 유연성 확보
선택 이유
- 빠른 개발 속도와 유지보수성의 균형 확보 필요
- 변경의 파급효과를 최소화하면서 성장하는 팀과 제품에 맞는 구조로 진화 필요
적용해볼 점
- 쉬운 변경과 어려운 변경의 격리
- 재사용 범위에 따른 코드 분리와 모듈 구성 표준화
- Hexagonal Architecture와 Auto Configuration 활용 검토
