개요
실시간 작업에 대한 요건이 증가함에 따라 스트림 데이터를 처리할 플랫폼을 구성할 필요가 생겼습니다. 플랫폼을 구성하기에 앞서 어떤 도구를 활용하는게 좋을지 간략하게 배운 내용을 정리해봅니다.
스트림 프로세싱
스트리밍 데이터는 실시간 정보의 지속적인 흐름이자 이벤트 기반 아키텍처 소프트웨어 모델의 기반입니다. 현대적인 애플리케이션은 스트리밍 데이터를 사용하여 데이터를 처리, 저장, 분석합니다.
-RedHat
스트림 프로세싱은 신규 데이터를 끊임없이 처리해 결과를 만들어내는 행위로 배치 프로세싱과 대치되는 데이터 처리방식입니다.
스트림 프로세싱 사례
- 실시간 검색순위
- 위치 데이터
- 이상거래 탐지 및 방지
스트림 프로세싱 플랫폼의 종류와 특징
Apache Flink
- 매우 활발한 개발활동
- 모니터링 대시보드 지원
- standalone
- 임베디드 데이터베이스를 지원하여 상태를 저장할 수 있음
- 데이터 유실 방지를 위해서 체크포인트 기능지원
- 커스텀 메모리 매니저
- 네이티브 스트림
- 일괄처리(배치처리)도 가능
- SQL 엔진 지원
- 용례
Apache Spark
- 매우 활발한 개발활동
- 마이크로 배치
- 구조적 스트리밍
- 용례
Kstreams
- JVM application으로 동작
- 라이브러리 형태로 인한 낮은 진입장벽과 적은 운영 오버헤드
- 네이티브 스트림
KsqlDB
- 서버가 따로 존재해야 함
- SQL문법 사용
- REST API 제공
- Confluent Control Center에서 KsqlDB 웹 UI 제공
- 매우 활발한 개발활동
스트림 프로세싱 플랫폼 선택시 고려사항
- 지연율
- 타 시스템과의 연동
- 운영 오버헤드
- 데이터 처리량
- 플랫폼 사용자의 기술 수준
- 커뮤니티 활성화 수준
- 업데이트 주기
마치며