마이크로서비스 아키텍처

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. 비교

항목모놀리식SOAMSA
서비스 단위단일 애플리케이션기업 수준 공유 서비스도메인 단위 소규모 서비스
통신내부 함수 호출ESB 중심경량 API(REST·gRPC), 메시징
데이터단일 DB공유 DB 경향서비스별 DB
배포전체 일괄서비스 단위(ESB 의존)서비스별 독립
거버넌스중앙중앙 집중탈중앙(팀 자율)
장점단순·초기 개발 용이재사용·통합민첩성·탄력적 확장
단점확장·변경 어려움ESB 병목운영 복잡도·분산 트랜잭션

4. 고려사항·최신 동향

  • 고려사항
    • 서비스 경계 설정: DDD의 Bounded Context 기반, 과도한 분해(Nano Service) 지양
    • 분산 시스템 복잡성: 네트워크 지연, 최종 일관성 수용, 관측성(Observability) 확보 필수
    • 조직 구조 정렬(콘웨이 법칙): 서비스 소유 자율 팀 구성
    • 규모가 작은 시스템은 모듈러 모놀리스가 더 적합할 수 있음
  • 최신 동향
    • 서비스 메시(사이드카·Ambient 방식)로 통신·보안 기능 인프라 계층 이관
    • 쿠버네티스 기반 클라우드 네이티브, 서버리스·이벤트 드리븐 아키텍처 결합
    • OpenTelemetry 기반 통합 관측성

함께 볼 토픽

v1 · 2026. 10. 19. 갱신 · 틀린 내용을 발견하면 알려 주세요.