Ch 04. MSA 환경에서의 Kafka 활용
Last updated
Last updated
장점
소규모 서비스에서 개발, 테스트, 운영(및 모니터링)이 용이함.
단점
대규모 서비스에서 조그만한 수정에도 전체 빌드가 필요(빌드시간 증가).
수정과 무관한 모듈의 재배포 불가피, scale-out 불리
장점
각 서비스 독립적으로 개발, 테스트, 배포, scale-out 가능함. CI/CD 달성 가능.
서비스별로 각기 다른 언어 / DB 사용 가능(각 서비스는 api로 추상화)
단점
개발 복잡도와 통신 오버헤드 증가, 통합테스트 불리, 트랜잭션 처리
MSA & EDA
Event: 시스템의 내부나 외부에서 유발된 시스템 상태의 중요한 변화 또는 의미있는 사건
cf> IoT 센서, 마우스/키보드 입출력
Event Driven Architecture: 분산 시스템에서 비동기 통신 방식으로 이벤트를 발행/구독하는 아키텍쳐
동기, 비동기 통신
동기 통신: (RESTful API를 비롯한) API를 통한 요청-응답 방식(peer to peer)
비동기 통신: Event Channel(Message Broker, Kafka)를 통한 pub/sub 방식
EDM = Event Driven Architecture를 적용한 MicroService
비동기 통신 사용 - 각 MicroService간 느슨한 결합도(Loosely Coupled) 유지 가능
EDM에서 발생한 이벤트는 이벤트 스토어에 저장(이벤트 로그)
Transaction Management: Retry, Rollback