모놀리식 vs 마이크로서비스 아키텍처(MSA)
단일 서버 내부 호출 vs 분산 서비스 간 네트워크 통신 흐름 비교
개요
시스템 설계의 양대 패러다임인 모놀리식(Monolithic)과 마이크로서비스(Microservices, MSA)는 서비스 결합도, 통신 비용, 데이터베이스 정합성 및 장애 격리 메커니즘에서 근본적인 차이가 있습니다.
모놀리식 아키텍처 (Monolith)
모든 비즈니스 로직(인증, 주문, 재고, 결제, 알림 등)이 단일 애플리케이션 프로세스 안에서 번들링되어 실행됩니다.
- 메모리 내 함수 호출: 모듈 간 통신이 프로세스 내부 메모리 호출(In-Memory Call)로 이루어져 네트워크 지연(Latency)이 0에 가깝습니다.
- 단일 DB 및 ACID 트랜잭션: 공유 데이터베이스를 사용하여 강력한 외래키 무결성과 단일 로컬 트랜잭션으로 데이터 정합성을 완벽하게 보장합니다.
- 확장 및 장애 한계: 특정 모듈에 메모리 누수나 부하가 생기면 전체 시스템이 다운(SPOF)되며, 특정 기능만 별도로 스케일 아웃하기 어렵습니다.
마이크로서비스 아키텍처 (MSA)
비즈니스 경계(Bounded Context)에 따라 독립된 배포 단위로 쪼개어 각각 별도의 컨테이너 프로세스로 구동합니다.
- 네트워크 기반 통신 (RPC / Event): 서비스 간 통신은 REST, gRPC 또는 카프카(Kafka)/RabbitMQ 메시지 브로커를 통한 비동기 이벤트로 진행됩니다.
- Database-per-Service: 각 마이크로서비스가 전용 데이터베이스를 소유하여 서비스 간 데이터 결합도를 완전히 분리합니다.
- 장애 격리 (Fault Isolation): 결제 서비스에 장애가 발생하더라도 상품 조회나 장바구니 서비스는 정상 작동하도록 차단막(Circuit Breaker)을 형성할 수 있습니다.
- 독립적 스케일링: 트래픽이 몰리는 특정 서비스(예: 주문 서비스)만 골라서 독립적으로 파드를 증설할 수 있습니다.
핵심 아키텍처 특성 대조
- 서비스 간 통신: 모놀리스(초고속 In-Memory 스택 프레임 호출) vs MSA(네트워크 I/O, 직렬화/역직렬화 오버헤드 발생)
- 데이터베이스 모델: 모놀리스(단일 통합 DB, 엄격한 ACID 보장) vs MSA(서비스별 분리 DB, 사가(Saga) 패턴 기반 최종 일관성(Eventual Consistency))
- 배포 주기 및 속도: 모놀리스(작은 수정에도 전체 빌드/배포 필요) vs MSA(서비스별 독립적이고 빈번한 CI/CD 배포 가능)
- 운영 복잡도: 모놀리스(단순한 로깅 및 디버깅) vs MSA(분산 추적(Distributed Tracing), 서비스 메시(Service Mesh) 등 고도의 운영 역량 요구)
핵심 단계
- 1
클라이언트 요청 유입 — 사용자의 주문 요청이 유입됩니다. 모놀리스는 로드밸런서를 통해 단일 서버로, MSA는 API 게이트웨이로 도달합니다.
- 2
인증 및 인가 처리 — 모놀리스는 프로세스 내부 메모리 호출로 세션/토큰을 즉시 확인합니다. MSA는 인증 서비스(Auth Service)로 네트워크 통신을 거쳐 검증합니다.
- 3
비즈니스 로직 수행 및 주문 생성 — 모놀리스는 내부의 주문 모듈을 호출합니다. MSA는 게이트웨이를 거쳐 주문 서비스(Order Service)로 요청이 전달됩니다.
- 4
재고 확인 및 차감 — 주문 처리를 위해 재고 상태를 확인합니다. 모놀리스는 내부 메모리 호출로 재고를 조회하지만, MSA는 주문 서비스에서 재고 서비스(Inventory Service)로 네트워크 호출을 보냅니다.
- 5
결제 요청 및 트랜잭션 — 결제를 수행합니다. 모놀리스는 단일 데이터베이스 내에서 하나의 로컬 트랜잭션(ACID)으로 안전하게 처리합니다. MSA는 결제 서비스(Payment Service)로 네트워크 호출을 수행하고 분산 데이터베이스에 각각 기록하므로 분산 트랜잭션 처리가 수반됩니다.
- 6
알림 발송 및 최종 응답 — 고객에게 알림을 보냅니다. 모놀리스는 동기 혹은 내부 스레드로 알림 모듈을 호출한 후 응답합니다. MSA는 메시지 브로커를 통해 알림 서비스(Notification Service)에 비동기 이벤트를 발행하고, 주문 서비스는 클라이언트에게 즉시 최종 응답을 반환합니다.