1. 모놀리식 vs 마이크로서비스 아키텍처
1️⃣ 모놀리식 아키텍처 (Monolithic Architecture)
1) 개념
- 하나의 애플리케이션 안에 모든 기능이 통합된 구조
- UI, 비즈니스 로직, DB 접근 코드가 하나의 프로젝트/서버에 존재
2) 구조 특징
- 하나의 코드베이스
- 하나의 배포 단위 (JAR/WAR 하나)
- 하나의 DB 사용하는 경우가 많음
[ 하나의 서버 ]
├─ 회원 기능
├─ 주문 기능
├─ 결제 기능
└─ DB3) 장점
- ✅ 개발 초기 속도가 빠름
- ✅ 구조가 단순해서 이해하기 쉬움
- ✅ 테스트/배포가 간단 (한 번에 배포)
4) 단점
- ❌ 기능 하나 수정해도 전체 재배포 필요
- ❌ 코드가 커질수록 유지보수 어려움 (스파게티 코드화)
- ❌ 특정 기능만 확장(scale) 불가능 → 전체 서버 확장해야 함
- ❌ 장애 발생 시 전체 서비스 영향
5) 언제 사용?
- 스타트업 초기
- 소규모 프로젝트
- 빠른 MVP 개발
2️⃣ 마이크로서비스 아키텍처 (MSA: Microservices)
1) 개념
- 기능별로 서비스를 작게 나누어 독립적으로 운영하는 구조
2) 구조 특징
- 서비스별로 독립된 서버
- 서비스별 독립 배포
- 서비스 간 통신 (HTTP / REST / 메시지 큐)
[ 회원 서비스 ] ←→ [ 주문 서비스 ] ←→ [ 결제 서비스 ]
↓ ↓ ↓
회원 DB 주문 DB 결제 DB3) 장점
- ✅ 서비스별 독립 배포 가능
- ✅ 특정 기능만 확장 가능 (예: 주문 서버만 scale)
- ✅ 장애 격리 (한 서비스 죽어도 전체는 유지 가능)
- ✅ 팀 단위 개발 가능 (조직 확장에 유리)
4) 단점
- ❌ 설계 복잡도 증가
- ❌ 서비스 간 통신 비용 (네트워크)
- ❌ 데이터 일관성 관리 어려움 (트랜잭션 문제)
- ❌ 운영 난이도 높음 (Docker, Kubernetes 필요)
5) 언제 사용?
- 대규모 서비스 (네이버, 쿠팡 등)
- 트래픽 많고 확장 필요한 서비스
- 여러 팀이 동시에 개발하는 환경
3️⃣ 핵심 차이 비교
구분 | 모놀리식 | 마이크로서비스 |
구조 | 하나의 앱 | 여러 개의 서비스 |
배포 | 전체 배포 | 서비스별 배포 |
확장 | 전체 확장 | 부분 확장 |
장애 영향 | 전체 영향 | 일부 영향 |
개발 난이도 | 쉬움 | 어려움 |
운영 난이도 | 낮음 | 높음 |
4️⃣ 실무 관점 핵심 요약 (중요🔥)
1) 시작은 대부분 모놀리식
- 빠르게 개발해야 하기 때문
2) 커지면 MSA로 분리
- 트래픽 증가
- 팀 규모 증가
- 기능 복잡도 증가
👉 이때 "도메인 기준으로 분리" (회원, 주문, 결제)
5️⃣ 한 줄 정리
- 모놀리식 → "하나로 묶어서 빠르게 개발"
- 마이크로서비스 → "나눠서 확장성과 유연성 확보"
6️⃣ 백엔드 개발자 관점 추가 포인트
- 모놀리식 → Spring Boot 하나로 충분
- MSA →
- API Gateway
- Service Discovery
- Docker / Kubernetes
- 메시지 큐 (Kafka 등)
👉 즉, MSA는 기술 스택이 훨씬 무거워짐
Share article