Spring Cloud Stream?
- 마이크로 서비스 아키텍처에서 이벤트 기반 메시징을 쉽게 처리할 수 있도록 도와주는 프레임워크
- Kafka, RabbitMQ, AWS SQS 와 같은 메세지 브로커와의 통합을 단순화하고, 프로듀서와 컨슈머를 쉽게 구현할 수 있도록 지원한다.
Spring Cloud Stream 구성 요소
1. Binder : 특정 메세지 브로커와 연결을 담당한다. Spring cloud stream 의 바인더를 사용하면 메세지를 발행하고 소비하기 위해 플랫폼마다 별도의 라이브러리와 API를 제공하지 않고도 메세징을 사용할 수 있다.
- Kafka, Kafka Stream, AWS SQS, RabbitMQ 등 다양한 바인더가 구현되어 있다.
- 메세지 브로커가 변경돼도 코드 수정을 최소화 하면서 바인더만 교체가능하고, 하나의 프로젝트에서 여러 종류의 메세지 브로커를 사용하더라도 동일한 형태로 구현할 수 있다.
2. Bindings : Application과 브로커간 메세지를 주고 받는 방식을 정의한 개체 (Producer & Consumer)
3. Message Channel : 메시지 생산자와 소비자가 메시지를 발행하거나 소비한 후 메시지를 보관할 큐를 추상화한 것이다. 코드에서는 큐 이름을 직접 사용하지 않고 채널 이름을 사용한다.
4. Producer & Consumer
- Producer (Source) : 메세지를 생성해서 Output Channel을 통해 브로커로 보낸다.
- Consumer (Sink) : 브로커에서 메세지를 받아서 Input Channel을 통해 처리한다.
멀티브로커 환경에서는 Spring Cloud Stream이 유리하고, Kafka만 사용할거면 가벼운 Spring kafka가 나은거 같다.
참고: Spring Cloud Stream vs Spring Kafka vs Kafka-Client
Spring cloud stream
- 고수준 추상화 (다양한 메세지 브로커 지원)
- Kafka, RabbitMQ, Aws SQS 등 다양한 브로커 지원
- 설정 변경으로 다른 메세지 브로커로 이동 가능
Spring kafka
- 중간 수준 추상화
- offset 자동 관리
- Kafka 전용, 디테일한 설정 가능
Kafka clients
- 낮은 수준의 추상화
- offset 수동처리, commit 필요
- Kafka 전용, Kafka 기본 API를 다룰 수 있음
Reference
https://docs.spring.io/spring-cloud-stream/docs/current/reference/html/spring-cloud-stream-binder-kafka.html#_kafka_streams_binder
https://docs.spring.io/spring-cloud-stream/reference/
'TWIL' 카테고리의 다른 글
MariaDB의 READ COMMITTED vs REPEATABLE READ 격리 수준과 부정합 문제들 (0) | 2025.03.30 |
---|---|
JPA 더티체킹 사용시 주의할점 : REPEATABLE READ 격리 수준에서 발생한 동시성문제 해결하기 (1) | 2025.03.22 |
API 성능 최적화하기 - 1 (2) | 2025.03.16 |
Semantic Versioning : SemVer 에 대해 알아보자 (0) | 2025.03.08 |
MSA 환경에서 UUID 선택 - UUIDv4 vs UUIDv7 (0) | 2025.03.08 |