Introduction

숭맹이·2025년 4월 22일

Event Streaming이란?

Event Streaming은 실시간 데이터 흐름을 기반으로 시스템 간 데이터를 주고받고 처리하는 아키텍처 패턴입니다.

인간 신경계처럼 시스템 내에서 이벤트(사건)가 발생할 때마다 실시간으로 이를 감지, 저장, 처리, 전달하는 메커니즘.

핵심 특징

  • 이벤트 실시간 수집 및 처리
  • 데이터의 영구 저장 및 조회 가능
  • 다양한 시스템 간 데이터 연동
  • 레거시 데이터베이스 기반 시스템을 실시간 시스템으로 진화 가능

활용 예시

  • 금융: 주식 거래, 실시간 결제 처리
  • 물류: 배송 상태 모니터링
  • IoT: 센서 데이터 수집 및 분석
  • 헬스케어: 환자 상태 모니터링
  • 리테일: 실시간 주문 처리 및 추천 시스템

Apache Kafka란?

Apache Kafka는 Event Streaming을 위한 분산형 데이터 플랫폼입니다. Netflix, LinkedIn, Uber 등 대형 서비스에서 핵심 인프라로 사용되고 있습니다.

Kafka의 세 가지 주요 기능

  1. Publish & Subscribe: 이벤트를 송수신하는 메시징 시스템
  2. Durable Storage: 이벤트를 신뢰성 있게 장기간 저장
  3. Stream Processing: 스트림 데이터를 실시간 또는 과거 데이터 기반으로 처리

Kafka는 분산성, 고가용성, 고성능을 목표로 설계되었습니다.

아키텍처 구성

  • 서버 측 구성
    • Brokers: 이벤트 저장 및 관리
    • Kafka Connect: 외부 시스템과 데이터 연동
  • 클라이언트 측 구성
    • Producers: 이벤트 생산자 (쓰기)
    • Consumers: 이벤트 소비자 (읽기)
    • 다양한 언어 지원 (Java, Scala, Python, Go 등)

핵심 개념 및 용어 정리

개념설명
Event"무엇인가 발생했다"를 나타내는 기록 (Key, Value, Timestamp 포함)
Topic이벤트를 저장하는 논리적 단위 (폴더 개념)
PartitionTopic을 나눈 물리적 단위 (버킷)
Replication장애 대응을 위한 데이터 복제 (보통 3개 복제본)
Producer이벤트를 Kafka에 발행하는 역할
ConsumerKafka로부터 이벤트를 구독하여 처리하는 역할

특징: 이벤트는 소비한 뒤 삭제되지 않으며, 다수의 Consumer가 동일 Topic을 읽을 수 있습니다.

이벤트 저장과 처리 흐름

  1. Producer가 이벤트를 특정 Topic에 발행
  2. 이벤트는 하나의 Partition에 기록
  3. Consumer는 Topic의 Partition으로부터 이벤트를 읽음
  4. 필요한 경우, Kafka Streams 등으로 실시간 데이터 변환 및 집계 처리

Kafka API 살펴보기

Kafka는 Java/Scala 기반으로 다음과 같은 주요 API를 제공합니다.

  • Admin API: 토픽, 브로커 관리
  • Producer API: 이벤트 발행
  • Consumer API: 이벤트 구독 및 처리
  • Kafka Streams API: 이벤트 스트림 변환 및 집계
  • Kafka Connect API: 외부 시스템 연동용 커넥터 관리 (PostgreSQL, MongoDB 등 지원)

Kafka를 사용하며 느낀 실무 포인트

  • Topic 설계가 중요하다: 잘못 설계하면 Partition 수 조정이 어려워 스케일링에 문제가 생김
  • 이벤트 스키마 관리를 위한 Schema Registry 사용을 추천
  • Exactly-once 처리가 필요한 경우 프로듀서-컨슈머 설정을 신중히 해야 함
  • 모니터링/알림 필수: 브로커 장애, Lag 발생 모니터링 필요 (Prometheus + Grafana 추천)
profile
👨🏻‍💻 Backend Developer

0개의 댓글