MSA(Microservice Architecture)란?
마이크로 서비스라는 이름에서 알 수 있는 것처럼 작은 단위의 서비스가 독립적으로 기능 및 배포가 가능한 구조를 의미한다. 독립적으로 배포 뿐만이 아니라 서로 다른 기술 스택 사용도 가능하다.
Monolithic Architecture
기존에 모든 요소가 한 프로젝트에 포함되어 개발 및 배포되는 방식을 모놀리틱 아키텍처라고 하며 작은 규모의 개발에서는 적용이 가능하나 큰 규모의 프로젝트에서는 한계점이 있다.
Monolithic Architecture의 한계
- 부분의 문제가 전체 시스템에 영향을 준다.
- 여러 서버(scale-out)로의 처리가 힘들다.
- 전체 테스트 등으로 인한 배포가 오래 걸린다.
- Framework나 특정 언어에 종속적이다.
MSA의 장점
- 모듈화 된 RPC 또는 message-driven API등을 이용하여 통신하여 개발 및 유지보수가 쉬워진다.
- 서비스별로 scale-out이 가능하다.
- 서비스별로 독립적으로 배포가 가능함으로 모놀로식에 비해 가볍게 진행할 수 있다.
- 다른 기술 스택과 함께 적용이 가능하다.
MSA의 단점
- 모놀리식에 비해 복잡하다는 단점이 있다. 분산된 서비스 내의 내부 통신을 어떻게 처리할지 정해야한다.
- 트랜젝션 유지가 어렵다.
- 통합 테스트가 어렵다.
- 각 서비스들의 연계 확인이 어렵다.
[MSA] MSA란 무엇인가? 개념 이해하기