이벤트 드리븐 아키텍처와 스트림 처리

2024. 9. 24. 09:31MSA

2024/09/24

 

 

※  이벤트 드리븐 아키텍처와 스트립 처리(Spring Cloud Stream)에 대해 알아보자.

 

 

   ▶ 이벤트 드리븐 아키텍처

       ●  이벤트 드리븐 아키텍처란?             
            ○   이벤트 드리븐 아키텍처는 시스템에서 발생하는 이벤트(상태 변화나 행동)를 기반으로 동작하는 소프트웨어 설계 스타일이다.
            ○   이벤트는 비동기적으로 처리되며, 서비스 간의 느슨한 결합을 통해 독립적으로 동작할 수 있게 한다.

       ●  주요 개념
              이벤트 : 시스템 내에서 발생하는 상태 변화나 행동을 나타내는 메시지다.
              이벤트 소스 : 이벤트를 생성하여 이벤트 버스에 전달하는 역할을 한다.
            ○   이벤트 핸들러 : 이벤트를 수신하여 처리하는 역할을 한다.
            ○   이벤트 버스 : 이벤트 소스와 이벤트 핸들러 간의 메시지 전달을 중개한다.

       ●  이벤트 드리븐 아키텍처의 장점             
            ○   느슨한 결합
               ▪   서비스 간의 강한 종속성을 제거하여 독립적인 개발과 배포가 가능
               ▪   이벤트 기반 통신을 통해 서비스 간의 결합도 낮춤
            ○   확장성
               ▪   수평 확장이 용이하여 대규모 시스템에서 유용
               ▪   이벤트 프로듀서와 컨슈머를 독립적으로 확장 가능
            ○   비동기 처리
               ▪  
이벤트를 비동기적으로 처리하여 시스템의 응답성 향상
               ▪   요청과 응답을 비동기적으로 처리하여 성능 최적화

       ●  이벤트 드리븐 아키텍처의 단점             
            ○   복잡성 증가
               ▪   이벤트 기반 통신으로 인해 시스템의 복잡성 증가 가능
               ▪   이벤트 흐름과 상태 관리를 체계적으로 설계 필요
            ○   장애 전파
               ▪   이벤트 실패 시 다른 서비스로 장애가 전파될 수 있음
               ▪   이벤트 재처리 및 장애 복구 메커니즘 구현 필요

       ●  예시 : 온라인 쇼핑몰             
            ○   이벤트 소스: 사용자가 온라인 쇼핑몰에서 주문을 한다.
               ▪   주문 서비스가 '주문 생성' 이벤트를 발생시킨다.
            ○   이벤트 버스: Kafka나 RabbitMQ와 같은 메시지 브로커가 '주문 생성' 이벤트를 전달한다.
            ○   이벤트 핸들러:
              ✅  재고 서비스 : '주문 생성' 이벤트를 수신하여 재고를 확인하고 업데이트한다.
              ✅  배송 서비스 : '주문 생성' 이벤트를 수신하여 배송 준비를 시작한다.
              ✅  결제 서비스 : '주문 생성' 이벤트를 수신하여 결제 처리를 한다.

 

 

   ▶ Spring Cloud Stream

       ●  Spring Cloud Stream이란?             
            ○   Spring Cloud Stream은 이벤트 드리븐 마이크로서비스를 구축하기 위한 프레임워크다.
            ○   Kafka, RabbitMQ 등의 메시지 브로커와 통합하여 이벤트 스트리밍을 처리한다.
            ○   프로듀서와 컨슈머 간의 통신을 추상화하여 간편하게 이벤트 기반 애플리케이션을 개발할 수 있다.

       ●  주요 특징             
            ○   바인더 추상화 : 메시지 브로커와의 통합을 위한 추상화 레이어를 제공한다.
            ○   프로듀서/컨슈머 모델 : 이벤트를 생성하고 처리하는 프로듀서와 컨슈머 모델을 지원한다.
            ○   유연한 설정 : 다양한 설정 옵션을 통해 손쉽게 커스터마이징할 수 있다.