마이크로서비스 아키텍처(MSA)는 하나의 대형 애플리케이션을 작은 서비스(마이크로서비스)들의 집합으로 분할하여 각각 독립적으로 개발, 배포, 운영하는 방식입니다. 각 서비스는 자신만의 데이터 저장소와 비즈니스 로직을 갖고 자체적으로 운영됩니다.
MSA 아키텍처의 일반적 레이어 구조
| 레이어 | 주요 역할 및 설명 |
|---|---|
| API Gateway | 외부와 내부 서비스간 트래픽을 중재. 인증·권한·라우팅·로깅 등 공통 정책 처리 |
| Presentation | 사용자 UI/UX 제공. 웹/앱·REST API 엔드포인트 등 |
| Application | 각 비즈니스 도메인의 서비스, 업무 규칙 로직 처리 |
| Persistence | 데이터 관리(서비스별 DB, 캐시 등) |
| Infrastructure | 메시지 브로커·로그·모니터링·서킷브레이커 등 기술 인프라 지원 |
-
각 마이크로서비스는 위 구조를 단일 서비스 단위로 가지며, 상호 통신은 주로 API Gateway 또는 직접 REST/gRPC, 메시지 브로커로 이뤄집니다.
MSA 아키텍처의 레이어별 장단점
1. API Gateway 레이어
-
장점
-
인증, 로깅, 트래픽 분기, 요청 라우팅 등 공통 기능 통합.
-
클라이언트와 서비스 간 결합도 감소, 서비스 안정성·보안성 높임.
-
-
단점
-
추가 인프라 필요로 관리 복잡성 증가.
-
장애 시 전체 서비스 접근이 불가능할 수 있음.
-
2. Presentation(프레젠테이션/UI/API) 레이어
-
장점
-
각 서비스별로 UI/API 엔드포인트 독립 설계·확장 가능.
-
다양한 클라이언트(웹, 앱, IoT 등) 대응 유연.
-
-
단점
-
동일 데이터·로직 중복 가능성.
-
API 버전관리·호환성 유지 부담 증대.
-
3. Application(비즈니스 로직) 레이어
-
장점
-
각 서비스별로 업무 특화 비즈니스 로직 모듈화.
-
독립적 배포, 팀별 병렬 개발·확장 가능.
-
장애 발생 시 해당 서비스에만 국한(격리성 향상).
-
-
단점
-
서비스 간 트랜잭션 관리, 데이터 일관성 보장 어려움.
-
서비스 분할 및 설계 난이도 상승.
-
4. Persistence(데이터 저장소) 레이어
-
장점
-
마이크로서비스별 최적화된 DB(관계형, NoSQL 등) 선택 가능.
-
서비스 장애 격리(특정 서비스 DB 오류 시 전체 서비스 영향 최소화).
-
-
단점
-
데이터 중복·동기화 문제, 분산 트랜잭션 처리 복잡.
-
데이터 정합성 관리 및 통합 분석 어려움.
-
5. Infrastructure(인프라/운영) 레이어
-
장점
-
각 서비스별 배포·확장성(유동적 오토스케일링 등) 용이.
-
장애 감시, 로그, 모니터링 등 자동화·유지보수 수월.
-
-
단점
-
운영 자동화·배포 파이프라인, 네트워크 관리 등 DevOps 복잡성 증가.
-
전체 인프라 구성·비용 증가.
-
요약: MSA 아키텍처의 전반적 장·단점
장점
-
모듈화와 결합도 최소화: 서비스별 변화 영향 최소화, 유지보수 용이.
-
독립적 확장성과 배포: 필요한 서비스만 빠르게 배포·확장 가능.
-
장애 격리: 특정 서비스 문제 발생 시 전체 서비스 장애로 이어지지 않음.
-
기술 다양성: 서비스별로 다양한 언어·DB·프레임워크 채택 가능.
-
팀 생산성 강화: 각 도메인팀이 독립적으로 개발·운영 역량 강화.
단점
-
시스템 복잡도 증가: 서비스 수 증가로 개발, 유지, 운영 난이도 상승.
-
네트워크·통신 비용: 서비스 간 통신 증가로 인한 딜레이 및 장애 가능성.
-
데이터 일관성 문제: 분산 환경에서 데이터 관리·트랜잭션 복잡.
-
테스트·배포 관리의 어려움: 전체 통합 테스트·분산 배포 자동화의 필요.
-
운영 비용 증가: 인프라, 모니터링, 장애 처리 위한 리소스 및 비용 증가.
MSA는 각 레이어별로 책임이 분리되어 있어 대규모 서비스, 프로젝트에 강력하지만 복잡한 구조와 관리 부담도 동반합니다. 도입 시 이러한 장단점을 충분히 고려해야 합니다.