Ch 04. MSA 환경에서의 Kafka 활용

Monolithic

  • 장점

    • 소규모 서비스에서 개발, 테스트, 운영(및 모니터링)이 용이함.

  • 단점

    • 대규모 서비스에서 조그만한 수정에도 전체 빌드가 필요(빌드시간 증가).

    • 수정과 무관한 모듈의 재배포 불가피, scale-out 불리

MSA

  • 장점

    • 각 서비스 독립적으로 개발, 테스트, 배포, scale-out 가능함. CI/CD 달성 가능.

    • 서비스별로 각기 다른 언어 / DB 사용 가능(각 서비스는 api로 추상화)

  • 단점

    • 개발 복잡도와 통신 오버헤드 증가, 통합테스트 불리, 트랜잭션 처리

Event Driven Architecture

MSA & EDA

  • Event: 시스템의 내부나 외부에서 유발된 시스템 상태의 중요한 변화 또는 의미있는 사건

    • cf> IoT 센서, 마우스/키보드 입출력

  • Event Driven Architecture: 분산 시스템에서 비동기 통신 방식으로 이벤트를 발행/구독하는 아키텍쳐

  • 동기, 비동기 통신

    1. 동기 통신: (RESTful API를 비롯한) API를 통한 요청-응답 방식(peer to peer)

    2. 비동기 통신: Event Channel(Message Broker, Kafka)를 통한 pub/sub 방식

  • EDM = Event Driven Architecture를 적용한 MicroService

    1. 비동기 통신 사용 - 각 MicroService간 느슨한 결합도(Loosely Coupled) 유지 가능

    2. EDM에서 발생한 이벤트는 이벤트 스토어에 저장(이벤트 로그)

    3. Transaction Management: Retry, Rollback

Last updated