1. Monolith (모놀리식 아키텍처)
개념
모든 기능이 하나의 애플리케이션으로 통합되어 배포되는 구조입니다.
[ Client ]
│
▼
┌─────────────────────┐
│ Monolith App │
│ │
│ Controller │
│ Service │
│ Repository │
│ Domain │
│ │
└─────────────────────┘
│
▼
DB
│
▼
┌─────────────────────┐
│ Monolith App │
│ │
│ Controller │
│ Service │
│ Repository │
│ Domain │
│ │
└─────────────────────┘
│
▼
DB
예
- Spring Boot 하나
- WAR 하나
- DB 하나
2. MSA (Microservice Architecture)
개념
시스템을 여러 개의 독립 서비스로 분리하여 운영하는 구조
Client
│
▼
API Gateway
│
├───────────────┐
▼ ▼
Order Service User Service
│ │
▼ ▼
Order DB User DB
│
▼
API Gateway
│
├───────────────┐
▼ ▼
Order Service User Service
│ │
▼ ▼
Order DB User DB
각 서비스
- 독립 배포
- 독립 DB
- 독립 팀
핵심 차이
항목 Monolith MSA
| 배포 | 하나 | 서비스별 |
| 코드 구조 | 하나의 프로젝트 | 여러 프로젝트 |
| DB | 하나 | 서비스별 |
| 통신 | 내부 메서드 호출 | REST / Message |
| 장애 영향 | 전체 영향 | 부분 영향 |
| 확장 | 전체 확장 | 서비스별 확장 |
Monolith 장점
1. 단순한 구조
설계가 단순합니다.
Controller → Service → Repository
이게 끝입니다.
2. 트랜잭션 관리 쉬움
하나의 DB
@Transactional
으로 해결됩니다.
3. 개발 속도 빠름
- 작은 팀
- 스타트업
- MVP
에서 가장 빠릅니다.
4. 운영 비용 낮음
- 서버 적음
- 네트워크 없음
- 메시지 브로커 없음
Monolith 단점
1. 시스템 커지면 유지보수 어려움
대표적인 문제
God Service
Huge Repository
Massive Build Time
Huge Repository
Massive Build Time
2. 배포 리스크 큼
작은 수정도
전체 시스템 재배포
3. 기술 스택 제한
예
전체 Java
다른 언어 사용 어려움.
MSA 장점
1. 독립 배포
예
Order Service만 배포
가능합니다.
2. 서비스별 확장
예
검색 서비스 → 트래픽 많음
검색 서비스만 scale
검색 서비스만 scale
3. 팀 조직에 맞음
예
팀 A → 주문
팀 B → 결제
팀 C → 검색
팀 B → 결제
팀 C → 검색
4. 기술 다양성
예
검색 → Go
AI → Python
Core → Java
AI → Python
Core → Java
MSA 단점
1. 운영 복잡도
필요한 것
Service Discovery
API Gateway
Monitoring
Tracing
Logging
API Gateway
Monitoring
Tracing
Logging
대표 도구
- Kubernetes
- Prometheus
- Jaeger
- ELK
2. 데이터 일관성 문제
모놀리식
ACID Transaction
MSA
Eventual Consistency
Saga Pattern
Saga Pattern
3. 네트워크 비용
서비스 간 통신
REST
gRPC
Kafka
gRPC
Kafka
→ latency 증가
4. 분산 시스템 문제
대표 문제
Timeout
Retry
Circuit Breaker
Partial Failure
Retry
Circuit Breaker
Partial Failure
언제 Monolith가 좋은가
조건
팀 < 10명
서비스 초기
도메인 단순
서비스 초기
도메인 단순
대표 사례
- 스타트업 MVP
- 내부 시스템
언제 MSA가 좋은가
조건
팀 > 30명
서비스 규모 큼
도메인 복잡
트래픽 많음
서비스 규모 큼
도메인 복잡
트래픽 많음
대표 사례
- Netflix
- Amazon
- Uber
현실적인 아키텍처
요즘은 대부분
Modular Monolith
입니다.
Monolith
├ Order Module
├ Payment Module
├ User Module
├ Order Module
├ Payment Module
├ User Module
장점
- 모놀리식 장점 유지
- MSA로 확장 가능
유명한 말
Martin Fowler
"Most people should start with a monolith and evolve to microservices."
실제 회사 아키텍처
대부분
초기 → Monolith
성장 → Modular Monolith
대규모 → MSA
성장 → Modular Monolith
대규모 → MSA
LIST
'Architecture' 카테고리의 다른 글
| 좋은 아키텍처는 기술이 아니라 ‘변경 비용’을 줄이는 것이다 (0) | 2026.03.12 |
|---|---|
| MSA에서 데이터 일관성(Eventual Consistency)을 어떻게 관리할까 (0) | 2026.03.12 |
| Saga 패턴은 언제 필요할까? (0) | 2026.03.12 |
| MSA에서 이벤트 드리븐 아키텍처를 언제 도입해야 할까 (0) | 2026.03.12 |
| 왜 MSA에서는 기술 통일보다 서비스 경계가 더 중요할까 (0) | 2026.03.12 |
