본문 바로가기

Back-end/Basic

Kafka Streams API

Kafka는 스트리밍 데이터를 다루기 위한 미들웨어와 그 주변 생태계를 말합니다.

 

카프카대규모 메시지를 저장하고 빠르게 처리하기 위해 만들어진 제품으로,

초기 사용 목적과는 다른 뛰어난 성능에 일련의 연속된 메세지인 스트림을 처리하는 데도 사용 됩니다.

이러한 스트림은 Kafka Streams API를 통해 제공합니다.

 

 

카프카 스트림즈(Kafka Streams API)

 

카프카 스트림즈는 카프카에 저장된 데이터를 처리하고 분석하기 위해 개발된 클라이언드 라이브러리입니다.

카프카 스트림즈 이벤트 시간과 처리 시간을 분리해서 다루고 다양한 시간 간격 옵션을 지원하기에 실시간 분석을 간단하지만 효율적으로 진행할 수 있습니다.

 

 

카프카 스트림즈의 장점

 

1. 카프카와 완벽하게 호환됩니다.

 

2. 스케쥴링 도구가 필요없습니다.
   대규모인 경우 Scale out 하여 여러 개의 10~20개 애플리케이션을 배포하면 됨

 

3. 스트림즈 DSL 과 프로세서 API 제공
   스트림즈 DSL: 이벤트 기반 데이터 처리할 때 필요한 다양한 기능 제공하여 사용하기 편리함
   프로세서 API: 스트림즈 DSL에 없는 기능 개발

 

4. 자체 로컬 상태 저장소를 사용함
    실시간 데이터 처리 방식
    (1) 비상태기반 처리(Stateless): 필터링이나 데이터를 변환하는 처리, 데이터가 들어오면 바로 처리하고 프로듀스하면                                              되기 때문에 유실이나 중복이 발생할 염려가 적어 쉽게 개발할 수 있음
    (2) 상태 기반 처리

 

 

Kafka의 특성

 

1. 높은 확장성(scalability)과 가용성(availability) - Highly scalable/available

2. 데이터 영속성(persistency) 지원 - Data persistency

3. Pub/Sub 모델을 사용한 데이터 분포 지원 - Supports Pub-Sub model

 

 

스트림 프로세싱과 배치 프로세싱의 차이점

 

스트림 프로세싱(Stream processing)은 데이터들이 지속적으로 유입되고 나가는 과정에서

데이터에 대한 일련의 처리 혹은 분석을 수행하는 것을 의미합니다.

즉, 스트림 프로세싱은 실시간 분석(Real Time Analysis)이라고 불리기도 합니다.

 

스트림 프로세싱과는 대비되는 개념으로 배치(Batch) 처리 또는 정적 데이터(Data-at-rest) 처리를 들 수 있습니다.

배치 및 정적 데이터 처리란 위의 스트림 프로세싱과는 다르게 데이터를 한번에 특정 시간에 처리한다는 특징이 있습니다.

 

-> 특정 이벤트 발생 시 바로바로 애플리케이션에서 데이터 처리를 하고 있습니다.

 

 

스트림 프로세싱의 장점

 

1. 애플리케이션이 이벤트에 즉각적으로 반응하기 때문에 이벤트 발생과 분석, 조치에 있어 지연 시간이 거의 발생하지 않습니다.

2. 항상 최신의 데이터를 반영한다라는 특징이 있습니다.

3. 데이터를 어디에 담아두고 처리하지 않기 때문에 대규모 공유 데이터베이스에 대한 요구를 줄일 수 있고, 인프라에 독립적인 수행이 가능합니다.

 

 

상태 기반과 무상태 스트림 처리

 

실시간 데이터 처리를 위하여 이전에 분석된 데이터의 결과가 필요 여부

 

상태 기반: 이벤트를 처리하고 그 결과를 저장할 상태 저장소 필요함

무상태 기반: 이전 스트림 처리 결과와 관계없이 현재 데이터로만 처리함

 

 

 

참고: https://xzio.tistory.com/1588

'Back-end > Basic' 카테고리의 다른 글

TCP 3, 4-way handshake  (0) 2022.03.07
SEDA(Staged Event-Driven Architecture)  (0) 2022.03.06
Cloud Native 란?  (0) 2022.03.06
쿠버네티스(kubernetes)를 왜 쓰는가?  (0) 2022.03.06
Jenkins 설정  (0) 2021.11.23