MSA(마이크로 서비스 아키텍처)
특징
- 시스템을 독립적인 단위의 작은 서비스들로 분리(크기 보다는 독립성이 중요하다)
독립적인 단위 : 각기 다른 이유로 변경되고, 다른 속도로 변경되는 단위
- 각 서비스들이 사용하는 데이터베이스 또한 분리되며 API를 통해서만 통신이 가능하다.(다른 서비스의 DB에 접근 불가)
장점
- 모듈성(높은 응집도, 낮은 결합도)을 얻음으로써 서비스의 유지/보수가 수월해지며 의존도를 낮추고 개별적인 개발, 테스트 및 배포가 가능하기 때문에 개발 속도를 높일 수 있다.
- 서비스 별로 개별적인 확장이 가능하다.
- 결함 격리 → 일부 서비스의 일시적인 실패가 전체 서비스의 실패로 이어지지 않는다.
단점
- 분산시스템의 단점을 그대로 가져오게 된다.‣
- 통합 테스트가 어렵고 모니터링 및 디버깅의 복잡도가 증가한다.
- 개별적인 DB를 사용하기 때문에 트랙잭션의 관리가 어렵다.
- 서비스간 통신 구조에 대한 고민이 필요하다.→ 동기/비동기, 프로토콜, 통신 브로커 등
<aside>
💡 통신 브로커는 마이크로서비스 아키텍처에서 각 서비스가 통신하는 과정에서 중간에서 역할을 수행하는 소프트웨어이다. 통신 브로커를 사용하면 서비스간의 통신을 안전하게 관리하고, 서비스 간의 결합도를 낮출 수 있다. 대표적인 통신 브로커로는 Redis-Streams, Kafka, RabbitMQ, NATS 등이 있다.
</aside>
Event-Driven 아키텍처
특징
- Event-Driven 아키텍처는 이벤트를 생성, 전달, 수신, 반응하는 방식으로 서비스 간의 통신을 처리하는 아키텍처이다. 이벤트는 일종의 메시지로, 서비스 간의 상호작용을 통해 발생한다.
- 각 서버시들은 이벤트 저장소인 Event-Broker과의 의존성만을 가진다.
장점