MSA란?
마이크로서비스 아키텍처(MSA)는 작고 독립적인 서비스들의 집합으로 구성된 애플리케이션 구조

애플리케이션을 작은 독립적인 서비스로 분리하고, 각 서비스는 모듈 또는 프로젝트로 나눠서 개발 및 관리를 진행
=> 진행할 경우 독립적으로 개발 및 배포가 가능하여 개별적인 배포 주기를 가질 수 있음.
📌 MSA(Microservices Architecture) 장점과 단점
✅ MSA 장점
- 확장성(Scalability)
- 서비스 단위로 개별 확장이 가능하여 트래픽이 많은 특정 서비스만 확장할 수 있음.
- 비용 효율적인 확장 가능.
- 배포의 유연성
- 개별 서비스 단위로 배포가 가능하여 전체 시스템을 중단하지 않고 업데이트 가능.
- CI/CD(Continuous Integration/Continuous Deployment)를 통한 빠른 배포 가능.
- 유지보수 용이
- 특정 서비스만 수정하면 되므로 코드 수정 및 유지보수가 쉬움.
- 다양한 기술 스택을 서비스별로 적용 가능(Java + Spring, Node.js + Express 등).
- 독립적인 개발 및 배포
- 여러 팀이 독립적으로 개발 가능하여 개발 속도가 빨라짐.
- 팀별로 다른 기술 스택을 선택할 수 있음.
- 장애 격리(Fault Isolation)
- 하나의 서비스가 장애를 일으켜도 전체 시스템이 영향을 받지 않도록 설계 가능.
❌ MSA 단점
- 복잡한 운영 관리
- 서비스가 많아지면 네트워크 관리, 모니터링, 로깅 등의 운영 부담이 커짐.
- 서비스 간 데이터 일관성 유지가 어려움.
- 네트워크 비용 증가
- 서비스 간 통신이 많아지고, HTTP, gRPC 등 API 호출이 빈번해지면서 성능 저하 가능성 존재.
- API 게이트웨이를 두어야 하는 경우가 많음.
- 데이터 일관성 문제
- 각 서비스별로 데이터베이스를 가질 경우 트랜잭션 관리가 어려워지고, 결국 SAGA 패턴 등을 활용해야 함.
- 여러 서비스에 걸친 트랜잭션(분산 트랜잭션) 관리가 어려움.
- 배포 및 테스트의 복잡성
- 서비스가 많아질수록 배포 자동화(CI/CD)가 필수적이며, 설정이 복잡해짐.
- 여러 서비스가 연동되므로 통합 테스트가 어려움.
📌 MSA는 언제 사용해야 할까?
✅ 적합한 경우
- 빠른 배포와 확장이 필요한 대규모 서비스 (예: Netflix, Amazon, 쿠팡)
- 여러 팀이 독립적으로 개발해야 하는 환경
- 다양한 기술 스택을 도입하려는 경우
- 트래픽이 많은 특정 기능을 별도로 확장해야 하는 경우
❌ 부적합한 경우
- 작은 프로젝트 또는 스타트업 초기 단계(모놀리식이 더 효율적)
- 운영 및 유지보수할 인력이 부족한 경우
- 데이터 일관성이 중요한 금융, 회계 시스템
참고
'Backend' 카테고리의 다른 글
| AJAX(Asynchronous JavaScript and XML) (0) | 2024.11.29 |
|---|---|
| [RBF] 2주차 (2) | 2024.11.07 |
| [RBF] 1주차 (1) | 2024.10.30 |