AI & Data를 활용하는 기술경영자

Event Streaming 본문

Data Engineering

Event Streaming

Data_Lover 2022. 11. 1. 15:26
728x90

Event Streaming

실시간 정보의 지속적인 흐름을 뜻하고, 데이터 세트에서 발생한 변경 사항 혹은 이벤트의 실행 로그로 표시되는 경우가 많이 있습니다.

 

종종 이벤트 기반 아키텍쳐 모델(이벤트 스트림처리:Apache Kafka, 단순 이벤트 처리: 소비자에게 즉각적인 트리거, 복합 이벤트 처리: 소비자가 패턴을 감지하기 위한 일련의 이벤트 처리)사용하여 데이터가 도착하는 즉시 처리한다.

Kafka

개요

Apache Kafka는 실시간으로 기록 스트림을 게시, 구독, 저장 및 처리할 수 있는 분산 데이터 스트리밍 플랫폼으로, 여러 소스에서 데이터 스트림을 처리하고 여러 사용자에게 전달하도록 설계되었습니다.

 

간단하게 말하면, A지점에서 B지점까지 이동하는 것뿐만 아니라 A지점에서 Z지점을 비롯해 필요한 모든 곳에서 대규모 데이터를 동시에 이동할 수 있다.

 

Apache Kafka는 전통적인 엔터프라이즈 메시징 시스템의 대안으로 하루에 1조4천억 건의 메시지를 처리하기 위해서 Linkedin이 개발한 내부 시스템을 시작했으나, 현재 이는 다양한 기업의 요구사항을 지원하는 애플리케이션을 갖춘 오픈소스 데이터 스트리밍 솔루션

 

 

정의

Kafka 서비스는 데이터 스트리밍 플랫폼인 Apache Kafka를 제공하는 클라우드 서비스입니다.

Apache Kafka는 실시간으로 기록 스트림을 게시, 구독, 저장 및 처리할 수 있는 분산형 오픈소스 데이터 스트리밍 플랫폼으로, 여러 소스에서 데이터 스트림을 처리하고 여러 사용자에게 전달하도록 설계가 되어있기에 배포하는 방식이 복잡합니다.

 

특징

  • 방대한 양의 데이터를 처리하도록 설계되어 있다.
  • 스트리밍 데이터를 관리하기 위해 설계되어 있기에 빠르고 수평적으로 확장이 가능하고 내결합성을 갖추고 있습니다.
  • 비동기식 이벤트 기반 통합을 사용하는 개발자에겐 동기식 통합과 API를 보강해주는 탁월한 옵션입니다.
  • 인프라 관리의 부담이 없고 팀이 앱 개발과 기타 핵심 역량에 집중할 수 있습니다.
  • 팀이 즉시 개발을 시작하고, 새로운 기술을 빠르게 구현할 수 있기에 앱 개발 속도가 빨라집니다.
  • 추가적인 클라우드 서비스를 위한 대규모 에코시스템이 갖춰져 있기에 스트림 기반 애플리케이션의 제공을 간소화할 수 있습니다.
  • Kafka 브로커를 분산된 서비스로 연결하는 커넥터로 애플리케이션과 시스템간의 스트리밍 데이터를 쉽게 사용하고 공유할 수 있습니다.
  • 사용량에 따라서 가격이 책정되기 때문에 고객은 필요할 때, 필요한 용량에 대해서만 비용을 지불하면 됩니다.

 

Apache Kafka와 비동기식 통합

 

Apache Kafka는 중간 스토어에서 데이터를 복제하는 비동기식 방법을 활용하여 다른 개발팀의 데이터를 스트리밍하여 데이터 스토어를 채우면 해당 데이터를 여러 팀과 이들의 애플리케이션 간에 공유를 할 수 있게 됩니다.

 

3가지 기반 기능 필요

  • 분산형 통합: 필요한 경우 지속적으로 배포할 수 있는 경량의 패턴 기반 통합으로, 중앙집중식 ESB유형 배포의 제약을 받지 않습니다.
  • API: 파트너, 고객 및 개발자로 이루어진 에코시스템을 구현하는 API 기반 서비스로, 신뢰성과 수익성을 갖춘 유용한 활용 방안을 제공합니다.
  • 컨테이너: 클라우드 네이티브 방식의 커넥티드 애플리케이션을 개발, 관리 및 확장하는 플랫폼으로 개별 배포 방식으로 Devops 프로세스에 포함되고, 즉시 사용 가능한 클러스터링에 의해 지원되는 린(lean) 아티팩트 개발을 사용할 수 있도록 고가용성을 보장합니다.

 

 

http://cloudurable.com/blog/kafka-architecture/index.html

Apache Kafka 사용 단계

  • 시스템 및  애플리케이션 간 데이터를 공유하는 스트리밍 데이터 파이프라인에 구현이 되어 있고, 해당 데이터를 사용하는 시스템 및 애플리케이션에도 구현되어 있습니다.
  • 높은 처리량과 확장성이 반드시 필요한 다양한 활용 사례를 지원합니다.
  • 특정 애플리케이션에서 데이터 공유를 위한 포인트 투 포인트 통합의 필요성을 최소화하므로 지연 시간을 밀리초 단위로 줄일 수 있다.
  • 현재 빅데이터가 아니어도 사용 고려를 해야한다.
    • 데이터는 기하급수적으로 늘어나고 있기에 데이터 볼륨을 기반으로 구축하고 있는 애플리케이션에 빠르게 부담을 가중시킬 수 있다.
    • 데이터 처리의 경우, 데이터 급증에 대비해 확장성을 고려해야 합니다.

 

 

Amazon Kinesis

세부 내용: https://docs.aws.amazon.com/ko_kr/streams/latest/dev/introduction.html

 

정의

실시간으로  데이터 스트림을 수집, 처리, 분석해주는 서비스입니다.

이때, 샤드의 수를 조절하여 데이터 스트림의 양을 조절하여 수집할 수 있다.

 

세부 기능

  • Data Firehose: 데이터 스트림 처리 및 전송

  • Data Analytics: 스트리밍 데이터 분석
    • 실시간 분석 생성: 지표를 계산하고, Kinesis를 통해서 Amazon S3 또는 Amazon Redshift로 전송할 수 있다.
    • 실시간 대시보드 제공: 집계 및 처리된 스트리밍 데이터 결과를 전송하여 실시간 대시보드를 구성할 수 있다.
    • 실시간 지표 생성: 실시간 모니터링, 알림, 경보에 사용할 사용자 지정 지표와 트리거를 생성할 수 있다.
  • Video Streams
    • 재생 및 분석을 위해서 미디어 스트림을 캡쳐, 저장 및 처리

용어 정리

  • Data Record
    • 데이터 레코드는 데이터 스트림에서 사용되는 메세지를 말한다.
    • sequence number, partition key, data blob 등으로 이뤄져있고 하나에 1MB까지 사용할 수 있다.
    • 한 번에 스트림에 들어가면 변경이 불가능하다.
  • Retention Period
    • 데이터 레코드의 보존 기간은 기본적으로 24시간이다.
    • 최소 24시간이며 최대 365일까지 증가시킬 수 있으나 요금이 추가된다.
  • Producer
    • 스트림에 데이터를 보내준다.
  • Consumer
    • 스트림에 있는 데이터를 가져와서 사용한다.
  • Shard(샤드)
    • 샤드는 데이터 스트림의 단위를 말하는데 하나의 스트림은 하나 또는 그 이상의 사드로 구성될 수 있다.
    • 하나의 샤드는 읽을 때 최대 5개의 트랜잭션을 지원하고 최대 초당 2MB를 읽을 수 있고, 초당 1000개의 레코드를 쓰고 초당 1MB를 쓸 수 있다.
  • Partition Key
    • 스트림 내에서 샤드별로 데이터를 그룹화하는데에 사용된다
    • 데이터 레코드에 파티션 키를 지정할 수 있다
    • 파티션 키로 데이터 레코드가 속할 샤드를 결정할 수 있으며 결정 시에는 MD5 Hash함수를 사용한다.
  • Sequence Number
    • 각각의 데이터 레코드에는 파티션 키에 고유한 sequence Number가 있다.
  • Application Name
    • 애플리케이션의 식별자
    • DynamoDB, Amazon CloudWatch의 이름으로 사용된다.
728x90

'Data Engineering' 카테고리의 다른 글

Batch Processing  (0) 2022.11.01
Stream Processing  (0) 2022.11.01
빅데이터 플랫폼(아키텍처) 이해하기  (0) 2022.10.19
빅데이터 처리(Spark & Hadoop)  (0) 2022.10.19
데이터 수집 파이프라인 구축(Week2)  (0) 2022.07.15