MSA의 등장배경
Monolithic Architecture
소프트웨어의 모든 요소가 한 프로젝트에 통합되어있는 형태.
소규모 프로젝트에 적합
한계점
서비스/프로젝트가 커질수록, 영향도 파악 및 전체 시스템 구조의 파악에 어려움이 있음.
빌드 시간 및 테스트시간, 배포시간이 기하급수적으로 증가
서비스를 부분적으로 scale-out하기 힘듬
부분의 장애가 전체 서비스의 장애로 이어지는 경우 발생
Micro Service Architecture
하나의 에플리케이션을 여러 작은 서비스들로 나눠서 개발하는 아키텍쳐 스타일
각각의 서비스들이 자신만의 프로세스로 동작하고 독립적으로 배포될수 있음.
MSA의 장단점
MSA의 장점
요구사항을 신속하게 반영하여 빠르게 배포가능
확장성이 용이하기 때문에, 클라우드 사용에 적합한 아키텍쳐
장애가 전체 서비스로 확장될 가능성이 적음
신기술 적용이 유연, polyglot 개발/운영이 가능하다.
MSA의 단점
전체서비스가 커짐에 따라서 복잡도가 기하급수적으로 증가할수 있음.
서비스간 호출시 API를 사용하기 때문에, 통신 비용이나 Latency 가 그만큼 늘어나게 됨.
테스트/트랜잭션 - 서비스가 분리되어 있기 때문에 테스트와 트랜젝션의 복잡도가 증가하고, 많은 자원을 필요로 함.
데이터 관리 - 데이터가 여러 서비스에 걸쳐 분산되기 때문에 한번에 조회가 어렵고 관리하기 어려움.