2024. 9. 24. 09:31ㆍMSA
2024/09/24
※ 이벤트 드리븐 아키텍처와 스트립 처리(Spring Cloud Stream)에 대해 알아보자.
▶ 이벤트 드리븐 아키텍처
● 이벤트 드리븐 아키텍처란?
○ 이벤트 드리븐 아키텍처는 시스템에서 발생하는 이벤트(상태 변화나 행동)를 기반으로 동작하는 소프트웨어 설계 스타일이다.
○ 이벤트는 비동기적으로 처리되며, 서비스 간의 느슨한 결합을 통해 독립적으로 동작할 수 있게 한다.
● 주요 개념
○ 이벤트 : 시스템 내에서 발생하는 상태 변화나 행동을 나타내는 메시지다.
○ 이벤트 소스 : 이벤트를 생성하여 이벤트 버스에 전달하는 역할을 한다.
○ 이벤트 핸들러 : 이벤트를 수신하여 처리하는 역할을 한다.
○ 이벤트 버스 : 이벤트 소스와 이벤트 핸들러 간의 메시지 전달을 중개한다.
● 이벤트 드리븐 아키텍처의 장점
○ 느슨한 결합
▪ 서비스 간의 강한 종속성을 제거하여 독립적인 개발과 배포가 가능
▪ 이벤트 기반 통신을 통해 서비스 간의 결합도 낮춤
○ 확장성
▪ 수평 확장이 용이하여 대규모 시스템에서 유용
▪ 이벤트 프로듀서와 컨슈머를 독립적으로 확장 가능
○ 비동기 처리
▪ 이벤트를 비동기적으로 처리하여 시스템의 응답성 향상
▪ 요청과 응답을 비동기적으로 처리하여 성능 최적화
● 이벤트 드리븐 아키텍처의 단점
○ 복잡성 증가
▪ 이벤트 기반 통신으로 인해 시스템의 복잡성 증가 가능
▪ 이벤트 흐름과 상태 관리를 체계적으로 설계 필요
○ 장애 전파
▪ 이벤트 실패 시 다른 서비스로 장애가 전파될 수 있음
▪ 이벤트 재처리 및 장애 복구 메커니즘 구현 필요
● 예시 : 온라인 쇼핑몰
○ 이벤트 소스: 사용자가 온라인 쇼핑몰에서 주문을 한다.
▪ 주문 서비스가 '주문 생성' 이벤트를 발생시킨다.
○ 이벤트 버스: Kafka나 RabbitMQ와 같은 메시지 브로커가 '주문 생성' 이벤트를 전달한다.
○ 이벤트 핸들러:
✅ 재고 서비스 : '주문 생성' 이벤트를 수신하여 재고를 확인하고 업데이트한다.
✅ 배송 서비스 : '주문 생성' 이벤트를 수신하여 배송 준비를 시작한다.
✅ 결제 서비스 : '주문 생성' 이벤트를 수신하여 결제 처리를 한다.
▶ Spring Cloud Stream
● Spring Cloud Stream이란?
○ Spring Cloud Stream은 이벤트 드리븐 마이크로서비스를 구축하기 위한 프레임워크다.
○ Kafka, RabbitMQ 등의 메시지 브로커와 통합하여 이벤트 스트리밍을 처리한다.
○ 프로듀서와 컨슈머 간의 통신을 추상화하여 간편하게 이벤트 기반 애플리케이션을 개발할 수 있다.
● 주요 특징
○ 바인더 추상화 : 메시지 브로커와의 통합을 위한 추상화 레이어를 제공한다.
○ 프로듀서/컨슈머 모델 : 이벤트를 생성하고 처리하는 프로듀서와 컨슈머 모델을 지원한다.
○ 유연한 설정 : 다양한 설정 옵션을 통해 손쉽게 커스터마이징할 수 있다.
'MSA' 카테고리의 다른 글
분산 추적(Spring Cloud Sleuth) 및 로깅(Zipkin) (2) | 2024.09.24 |
---|---|
MSA 보안 구성 - OAuth2 + JWT (0) | 2024.09.23 |
MSA - 서킷 브레이커 (10) | 2024.09.12 |
클라이언트 사이드 로드 밸런싱 - FeignClient와 Ribbon (0) | 2024.09.11 |
MSA - Microservices Architecture란? (1) | 2024.09.09 |