마이크로서비스 아키텍처
Microservices Architecture (MSA)
마이크로서비스 아키텍처는 하나의 애플리케이션을 비즈니스 기능(도메인) 단위의 작고 독립적인 서비스들로 분해하고, 각 서비스가 독립적으로 개발·배포·확장되며 경량 API로 통신하도록 구성하는 아키텍처 스타일이다.
핵심 키워드
서비스 독립 배포(Independent Deployment)도메인 주도 설계(DDD)·Bounded ContextAPI 게이트웨이(API Gateway)서비스 디스커버리(Service Discovery)서킷 브레이커(Circuit Breaker)서비스별 데이터베이스(Database per Service)Saga 패턴CQRS·이벤트 소싱컨테이너·오케스트레이션
구성도
정리
1. 개요
- 정의: 단일 애플리케이션을 독립 배포 가능한 작은 서비스 집합으로 구성하는 아키텍처 스타일
- 배경
- 모놀리식 구조의 한계: 부분 변경에도 전체 빌드·배포, 장애 전파, 확장 비효율
- 클라우드·컨테이너·DevOps 확산으로 독립 배포·자동화 기반 성숙
- 설계 원칙: 비즈니스 역량 중심 분해, 분산 데이터 관리, 탈중앙 거버넌스, 장애 대비 설계(Design for Failure), 인프라 자동화
2. 구성/원리
| 구성 요소 | 역할 |
|---|---|
| API Gateway | 단일 진입점, 라우팅·인증·호출 제한·응답 집계 |
| Service Discovery | 동적 서비스 위치 등록·조회 |
| Config Server | 설정 중앙 관리·외부화 |
| Circuit Breaker | 장애 서비스 호출 차단, 연쇄 장애 방지 |
| Message Broker | 비동기 이벤트 기반 통신 |
| 분산 추적·모니터링 | 서비스 간 호출 추적, 로그·메트릭 수집 |
| 컨테이너 오케스트레이션 | 배포·확장·자가 치유 |
- 데이터 관리 패턴
- Database per Service: 서비스별 데이터 소유, 결합도 최소화
- Saga: 로컬 트랜잭션 연쇄 + 보상 트랜잭션으로 분산 정합성 확보(Choreography/Orchestration)
- CQRS: 명령(쓰기)과 조회(읽기) 모델 분리, 이벤트 소싱과 병행
- 전환 패턴: Strangler Fig(점진적 기능 대체)
3. 비교
| 항목 | 모놀리식 | SOA | MSA |
|---|---|---|---|
| 서비스 단위 | 단일 애플리케이션 | 기업 수준 공유 서비스 | 도메인 단위 소규모 서비스 |
| 통신 | 내부 함수 호출 | ESB 중심 | 경량 API(REST·gRPC), 메시징 |
| 데이터 | 단일 DB | 공유 DB 경향 | 서비스별 DB |
| 배포 | 전체 일괄 | 서비스 단위(ESB 의존) | 서비스별 독립 |
| 거버넌스 | 중앙 | 중앙 집중 | 탈중앙(팀 자율) |
| 장점 | 단순·초기 개발 용이 | 재사용·통합 | 민첩성·탄력적 확장 |
| 단점 | 확장·변경 어려움 | ESB 병목 | 운영 복잡도·분산 트랜잭션 |
4. 고려사항·최신 동향
- 고려사항
- 서비스 경계 설정: DDD의 Bounded Context 기반, 과도한 분해(Nano Service) 지양
- 분산 시스템 복잡성: 네트워크 지연, 최종 일관성 수용, 관측성(Observability) 확보 필수
- 조직 구조 정렬(콘웨이 법칙): 서비스 소유 자율 팀 구성
- 규모가 작은 시스템은 모듈러 모놀리스가 더 적합할 수 있음
- 최신 동향
- 서비스 메시(사이드카·Ambient 방식)로 통신·보안 기능 인프라 계층 이관
- 쿠버네티스 기반 클라우드 네이티브, 서버리스·이벤트 드리븐 아키텍처 결합
- OpenTelemetry 기반 통합 관측성
함께 볼 토픽
v1 · 2026. 10. 19. 갱신 · 틀린 내용을 발견하면 알려 주세요.