MSA란

- 여러 개의 작은 서비스로 구성되어 각 서비스가 독립적으로 개발되고 배포되는 구조
모놀리식 VS MSA
| 구분 |
모놀리식(Monolithic) |
MSA(MicroService Architecture) |
| 실행 방식 |
하나의 JAR 파일로 실행 |
서비스마다 별도 JAR 파일로 실행 |
| DB |
모든 기능이 같은 DB를 공유 |
서비스별로 독립 DB 사용 |
| 배포 |
기능 하나만 수정해도 전체 다시 빌드/배포 |
해당 서비스만 빌드/배포 |
| 확장성 |
전체 애플리케이션을 확장 |
특정 서비스만 독립적으로 확장 |
| 장애 영향 |
하나의 장애가 전체에 영향을 줌 |
장애가 발생해도 다른 서비스는 동작 |
| 개발 / 운영 난이도 |
구조 단순, 작은 서비스에 적합 |
운영 복잡, 모니터링&통신 관리 필요 |
MSA로 전환하는 대표 이유
장점
1. 독립 배포로 개발 속도 향상
- 모놀리식은 작은 변경에도 전체 빌드/배포가 붙고 릴리즈 리스크가 큼
- MSA는 서비스 단위로 배포 → 팀별로 빠르게 릴리즈 가능
2. 독립 확장으로 비용/성능 최적화
- 트래픽이 몰리는 서비스만 scale out → 비용 효율 + 성능 튜닝 쉬움
3. 장애 격리
- 모놀리식은 장애가 전체 장애로 번지기 쉬움
- MSA는 장애를 특정 서비스 안에 가두기 쉬움
4. 조직/도메인 규모가 커질수록 책임 분리가 필요
- 도메인이 커지면 코드베이스가 복잡해지고 충돌, 의존이 늘어남
- 서비스 경계를 분리하면 팀 소유권이 명확해지고 변경 영향 범위가 줄어듦