핵심 인사이트
- 본질: MSA (Microservice Architecture)는 하나의 모놀리틱(Monolithic) 애플리케이션을 독립적으로 배포 가능한 작은 서비스들로 분해하여, 서비스별 독립적 개발·배포·확장·장애 격리를 실현하는 아키텍처 스타일이다.
- 가치: 넷플릭스·아마존의 사례처럼 조직 규모와 배포 속도가 임계점을 넘으면 모놀리식의 배포 병목과 장애 전파가 비즈니스 리스크가 되므로, MSA로 전환하여 팀 자율성과 배포 민첩성을 확보한다.
- 판단 포인트: MSA는 조직 구조(콘웨이의 법칙)와 일치해야 한다. 각 마이크로서비스는 하나의 피자 두 판을 먹을 수 있는 팀(Two-Pizza Team, 5~8명)이 독립적으로 소유·운영한다.
Ⅰ. 개요 및 필요성
모놀리식에서 MSA로 전환하는 것을 '스트랭글러 피그 패턴'이라고 한다. 한 번에 전체를 전환하지 않고, 기능을 하나씩 서비스로 분리하면서 점진적으로 모놀리식을 대체한다.
📢 섹션 요약 비유: MSA는 레스토랑의 분업이다. 주방(주문), 바(결제), 케이터링(배달)이 독립적으로 운영되어 하나가 문제가 생겨도 다른 팀은 계속 일한다.
Ⅱ. 아키텍처 및 핵심 원리
┌──────────────────────────────────────────────┐
│ 모놀리식 vs MSA 비교 │
├──────────────────┬───────────────────────────┤
│ 모놀리식 │ MSA │
├──────────────────┼───────────────────────────┤
│ 단일 코드베이스 │ 서비스별 독립 저장소 │
│ 공유 DB │ 서비스별 DB(폴리글랏) │
│ 일체형 배포 │ 독립 배포 (CI/CD) │
│ 수직 확장 │ 수평 확장 (오토스케일링) │
└──────────────────┴───────────────────────────┘
| MSA 핵심 원칙 | 설명 |
|---|---|
| 단일 책임 | 하나의 서비스가 하나의 비즈니스 역할 |
| 폴리글랏 | 서비스마다 최적 기술 스택 선택 |
| 장애 격리 | 하나의 서비스 장애가 전체에 전파 안 됨 |
📢 섹션 요약 비유: 폴리글랏은 각 서비스팀이 최적의 도구(Java, Go, Python)를 선택하는 자유다.
Ⅲ. 비교 및 연결
| 구분 | 모놀리식 | MSA |
|---|---|---|
| 배포 | 전체 동시 | 서비스별 독립 |
| 확장 | 전체 스케일업 | 서비스별 스케일아웃 |
| 복잡성 | 코드 복잡 | 운영 복잡 |
📢 섹션 요약 비유: 모놀리식 vs MSA는 대형마트 vs 전문점 거리다. 대형마트(모놀리식)는 편하지만 한 코너가 문제면 전체 영향, 전문점 거리(MSA)는 각 가게가 독립적이다.
Ⅳ. 실무 적용 및 기술사 판단
쿠팡·배달의민족의 사례: 주문·결제·배달 서비스를 독립 MSA로 분리하여 쇼핑 시즌(블랙프라이데이) 때 결제 서비스만 100배 스케일아웃이 가능해졌다.
기술사 시험에서 이 개념의 정의·구성·비교·기대효과를 논하는 문제가 출제된다.
📢 섹션 요약 비유: MSA의 운영 복잡성은 분산 트랜잭션, 서비스 메시, 관찰 가능성(Observability) 도구로 관리한다.
Ⅴ. 기대효과 및 결론
MSA 도입으로 배포 속도 향상(하루 수백 회 배포 가능), 장애 격리, 팀 자율성 확보, 기술 다양성(폴리글랏) 실현이 달성된다.
📢 섹션 요약 비유: MSA는 도시 계획이다. 각 지역(서비스)이 독립적으로 발전하지만 교통망(API)으로 연결된 유기적 도시다.
📌 관련 개념 맵
| 개념 | 설명 | 연관 키워드 |
|---|---|---|
| DDD | 도메인 주도 설계 - MSA 경계 정의 | 바운디드 컨텍스트 |
| Kubernetes | 컨테이너 오케스트레이션 | MSA 운영 플랫폼 |
| 서비스 메시 | Istio - MSA 통신 제어 | 사이드카 패턴 |
👶 어린이를 위한 3줄 비유 설명
- MSA는 LEGO 세트처럼 작은 블록(서비스)들이 모여 큰 제품(애플리케이션)을 만드는 방법이에요.
- 하나의 블록이 부서져도 다른 블록들은 멀쩡하게 동작해요. 그게 MSA의 장애 격리예요.
- 각 팀이 자기 블록을 알아서 만들고 업데이트할 수 있어서 훨씬 빠르게 개발할 수 있어요.