MSA
MSA
등장배경
Monolithic Architecture란, 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어있는 형태인데,
아직까지는 많은 소프트웨어가 Monolithic 형태로 구현되어 있고, 소규모 프로젝트에는 Monolithic Architecture가 훨씬 합리적입니다. 간단한 Architecture이고, 유지보수가 용이하기 때문이다.
일정 규모 이상의 서비스에서는 한계를 보인다.
- 서비스가 커질수록 구조파악에 어려움
- 빌드, 테스트, 배포시간이 늘어남
- 서비스를 부분적으로 scale-out 하기 힘듦
- 부분의 장애가 전체의 장애로 이어지는 경우발생
Micro service의 정의
“하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍쳐”
MSA의 장점
- 서비스 별 개별 배포 가능 .
- 특정 서비스에 확장이 용이함.
- 장애가 전체서비스로 확장될 가능성이 적음
MSA의 단점
- 기존 아키텍쳐보다 복잡해 전체서비스가 커짐에 따라 복잡도가 늘어날수있다.
- 서비스 간 호출 시 API를 사용하기 때문에, 통신 비용이나, Latency가 그만큼 늘어나게 된다.
- 테스트와 트랜젝션의 복잡도가 증가하고 많은 자원을 필요로 한다.
- 데이터가 여러서비스에서 분산되어 한번에 조회하기가 어렵고, 데이터의 정합성또한 관리하기 어렵다.
출처 : https://velog.io/@tedigom/MSA-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-1-MSA%EC%9D%98-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-3sk28yrv0e