Kafka가 데이터를 빠르게 배달해주는 택배기사라면, Kafka Streams는 그 데이터를 실시간으로 가공하고 조립하는 마법사라고 할 수 있어요. 그냥 받기만 하는 게 아니라, 받아서 조합하고, 집계하고, 변형해서 새로운 정보로 재탄생시키는 거죠!
등장 배경
Kafka는 원래 메시지를 저장하고 전달하는 플랫폼이었어요. 그런데 데이터를 받기만 하고 뭔가 유의미한 가공을 하려면 Spark, Flink 같은 복잡한 외부 스트리밍 시스템을 붙여야 했죠 😓
Kafka Streams는 Kafka만으로 실시간 데이터 처리를 끝내고 싶은 욕망에서 탄생했어요!
Kafka Streams의 탄생 이유:
- 외부 프레임워크 없이 Kafka에서 바로 처리하고 싶다
- 가볍고 쉽고, Java 애플리케이션처럼 개발하고 싶다
- 내장된 상태 기반 처리 기능이 필요하다
핵심 원리
Kafka Streams는 말 그대로 Kafka를 위한 스트림 처리 라이브러리예요. Java 애플리케이션처럼 코드로 작성하고, Kafka 토픽을 입력/출력으로 사용합니다.
1. KStream vs KTable
- KStream: 무한히 흘러가는 실시간 이벤트 스트림 (예: 주문 발생 로그)
- KTable: 최신 상태를 나타내는 테이블 (예: 사용자별 마지막 주문 내역)
KStream<String, String> orders = builder.stream("orders-topic");
KTable<String, Integer> productInventory = builder.table("inventory-topic");
2. 변환 연산 (map, filter, join 등)
Kafka Streams는 Java Stream API와 유사한 방식으로 .map()
, .filter()
, .join()
등을 지원해요.
orders
.filter((key, value) -> value.contains("high-value"))
.to("filtered-orders");
3. 상태 저장 & 집계 (stateful processing)
Kafka Streams는 로컬 상태 저장소와 함께 동작해서, 집계, 카운트, 윈도우 처리 등을 가능하게 해요.
orders
.groupByKey()
.windowedBy(TimeWindows.ofSizeWithNoGrace(Duration.ofMinutes(5)))
.count();
사례 소개
🛒 이커머스 플랫폼의 주문 분석 시스템
order-topic
: 실시간 주문 정보- Kafka Streams로 특정 상품의 5분 단위 주문 건수 집계
hot-products-topic
: 주문이 몰린 상품 정보 전송
✈️ 항공사의 티켓 예매율 분석
reservation-topic
: 예매 이벤트- Kafka Streams로 노선별 예약률 계산 → 마케팅팀 알림
입력 토픽 | 처리 | 출력 토픽 |
---|---|---|
order-topic | 필터링 & 집계 | popular-items-topic |
user-activity-topic | 분석 | user-score-topic |
주의사항 및 팁 💡
⚠️ 이것만은 주의하세요!
- 정확한 처리 순서 보장하려면 partition 설정 주의
groupByKey()
이후 재파티셔닝 발생!
- 상태 저장소의 디스크 용량 관리
- state store는 RocksDB 기반으로 동작하므로 디스크 주의
💡 꿀팁
- Spring Kafka와 함께 쓰면 DI도 되고 편하게 관리 가능해요!
- Kafka Streams 앱은 그냥 Java 애플리케이션처럼 배포하면 돼요. 별도 클러스터가 필요 없어요!
- 테스트도 JUnit으로 간단히 가능해서 CI/CD에 적합해요
마치며
Kafka Streams는 Kafka 위에 실시간 데이터 처리의 두뇌를 얹어주는 도구예요 🧠
외부 시스템 없이도 강력한 스트림 처리를 구현할 수 있어서, 마이크로서비스 환경에 딱 맞는 기술이죠. "단순히 데이터를 받는 걸 넘어서, 받자마자 가공하고 똑똑하게 반응하는 시스템"을 원한다면 Kafka Streams 꼭 써보세요!
참고 자료 🔖
#KafkaStreams #실시간데이터처리 #KStream #KTable #Kafka
'300===Dev Framework > Apache' 카테고리의 다른 글
Apache Kafka - 실시간 데이터의 택배기사 📦🛵 (0) | 2025.03.29 |
---|---|
Apache Airflow - 워크플로우 자동화의 마법사 🧙♂️ (0) | 2025.03.24 |