MSA와 Event-Driven 아키텍처
MSA(Microservice Architecture)는 무엇인가
- 시스템을 독립적인 단위의 작은 서비스들로 분리 (크기보다는 독립성이 중요)
- 독립적인 단위: 다른 서비스와 다른 이유로 변경되고, 다른 속도로 변경되는 단위
- 각 서비스들이 사용하는 DB도 분리
- 각 서비스들은 API(인터페이스)를 통해서만 통신(다른 서비스의 DB 접근 불가)
기존의 Monolithic 아키텍처
모든 기능들이 한 서버 안에 들어가 있고, 공유 데이터베이스를 사용
MSA 아키텍처
기능 별로(도메인 별로) 서버가 나뉘어 있고, 각자의 데이터베이스를 사용하며, API를 이용해 통신
MSA로 얻으려는 것
- 모듈성(높은 응집도, 낮은 결합도)
- 서비스 별로 독립적인 개발과 배포가 가능
- 서비스(코드) 크기가 작아져 이해가 쉽고 유지보수가 용이함
- 더 빠른 개발, 테스트, 배포
- 확장성(서비스 별로 개별 확장이 가능)