
아키텍처
에러 0%, MSA에서의 Enum 관리 전략
두줄요약
MSA에서 공용 Enum의 버전 불일치로 생기는 Deserialize 에러를 줄이기 위한 관리 전략을 소개했습니다. 문자열 래핑, 빌드 규칙, 메타 감시로 안전성을 높였습니다.
문제 상황
- MSA에서 공용 Enum 값이 버전 불일치로 Deserialize 에러를 유발하는 문제
- 서비스 확장, 담당자 변경, 새 Enum 추가 시 반복적으로 발생하는 운영 리스크
원인 분석
- 제공자와 소비자 간 Enum 기대 동작이 서로 달라 단일 규칙으로 관리하기 어려운 구조
- 소비자 버전이 따라가지 못하면 알 수 없는 값이 곧바로 장애로 이어지는 의존성
해결 방법
EnumString으로 Enum 값을 문자열 기반으로 다루며toEnumOrNull,toEnumOrElse,toEnumOrThrow로 처리 정책을 선택- ArchUnit으로 소비자 코드의 직접 Enum 사용을 감지해 빌드 단계에서 전파 차단
- Meta Expose로 Enum 정의를 외부 노출하고 Hub, ServiceDiscovery, Prometheus, Grafana로 버전 불일치 감시