
오늘 면접에서 "SpringCloud가 왜 MSA 적합한가요?"라는 질문을 받았는데, 순간 머릿속이 하얘지면서 대답을 하지 못했다.
공부를 아무리 하고가도 대답을 못했다는건 어쨌든 핑계니까 긴말하지 않겠다.
이 글을 쓴 이유는 충분히 설명됐고, 정리해보겠다.
| 구분 | 문제 | 예시 |
|---|---|---|
| 서비스 탐색 | 각 서비스의 IP/Port가 계속 바뀜 | Eureka |
| 중앙 설정 | 환경별 yaml 관리 힘듬 | Spring Cloud Config |
| 게이트웨이 | 인증/로깅/라우팅 중복 | Spring Cloud Gateway |
| 장애 복원력 | 한 서비스 장애가 전체 영향 | Resilience4j / Circuit Breaker |
| 통신 효율 | 서비스 간 REST 호출 복잡 | OpenFeign |
Spring Cloud는 Spring Boot 생태계와 통합되어 있어, 기존에 단일 애플리케이션을 만들던 방식으로도 서비스 디스커버리(Eureka), Config 서버, Gateway 같은 핵심 인프라를 쉽게 구성할 수 있게 해준다.
즉, 개발자는 인프라 구현보다 도메인 로직 설계에 집중할 수 있고, 서비스가 늘어나도 코드 스타일과 운영 방식이 일관하다는 점이 MSA 환경에 적합하다.
실제로 제가 진행했던 ‘홈런티켓’ 프로젝트에서는 Spring Cloud Gateway와 Eureka를 이용해 좌석/결제/회원 도메인을 각각 독립 서비스로 나누고, 공통 인증/라우팅 로직은 Gateway 단에서 처리했다.
서비스별 배포가 독립되면서 장애 전파가 줄었고, 이 과정을 통해 “Spring Cloud가 왜 MSA에 적합한가”를 실감하게 되었다.