목표
- MSA의 개념과 도입 목적에 대하여 이해한다.
Monolithic Architecture
- 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 서비스
간단한 구현과 배포
데이터베이스 일관성 유지
긴 개발 주기
기능 및 애플리케이션 확장의 어려움
- 소규모의 프로젝트에서는 Monolithic Architecture가 더 적합할 수 있겠지만, 일정 수준 이상의 대규모 프로젝트에서는 일부 서비스 장애가 전체 서비스 장애로 확대될 수 있고, 빌드 시간이 크게 증가하며 기능 수정 시 side-effect 파악에도 어려움이 발생한다.
- 이런 어려움을 극복하기 위해 도입된 소프트웨어 개발 기법이 MSA이다.
MSA
- 마이크로서비스 (Microservice): 애플리케이션을 느슨하게 결합된 서비스의 모임으로 구조화하는 서비스 지향 아키텍처 (SOA) 스타일의 일종인 소프트웨어 개발 기법
- 하나의 애플리케이션을 여러 개의 독립적인 서비스로 분리하여 개발, 배포, 유지보수하는 소프트웨어 아키텍처
짧은 개발 주기
각 서비스 별 배포 가능
각 서비스 별 독립적 기술 스택 사용 가능
복잡성 증가
네트워크 지연 발생
- MSA 스타일로 개발한 애플리케이션의 경우에는 전체 서비스의 중단 없이 개별 서비스 별 독립적 배포가 가능하다.
- 하지만 서비스들이 모두 분산되어 있기 때문에 Monolithic Architecture 스타일의 애플리케이션보다 훨씬 복잡하며, 각 서비스 별로 통신해야 하기 때문에 이에 따른 latency도 발생한다.
참고 블로그 1 - https://hahahoho5915.tistory.com/71
TIL 너무 잘 작성해주셨군요! 앞으로도 꾸준히 작성해보아요~!