AWS Kinesis
AWS Kinesis
Amazon Kinesis를 사용하면 실시간 스트리밍 데이터를 손쉽게 수집, 처리 및 분석할 수 있으므로
적시에 통찰력을 확보하고 새로운 정보에 신속하게 대응할 수 있습니다.
Amazon Kinesis는 모든 규모의 스트리밍 데이터를 비용 효율적으로 처리할 수 있는 핵심 기능과
더불어 애플리케이션 요구 사항에 가장 적합한 도구를 선택할 수 있는 유연성을 제공합니다.
Amazon Kinesis에서는 기계 학습, 분석 및 기타 애플리케이션을 위해 비디오, 오디오, 애플리케이션 로그,
웹 사이트 클릭스트림 및 IoT 텔레메트리 데이터와 같은 실시간 데이터를 수집할 수 있습니다.
Amazon Kinesis를 사용하면 모든 데이터가 수집된 후에야 처리를 시작할 수 있는 것이 아니라 데이터가 수신되는 대로 처리 및 분석하여 즉시 대응할 수 있습니다.
출처 : AWS
Kinesis 는 데이터 수집구간과 데이터 처리 구간 중간에 위치합니다.
대용량의 데이터를 안정적으로 수집구간에서 수집 하고 처리 구간인 AWS 플랫폼 (EC2, S3) 에서 소비 할 수있도록 환경을 제공합니다.
더 이상 데이터 수집 서버를 만들 필요가 없고 모니터링 및 확장성 및 신뢰성 있는 배포를 걱정할 필요가 없습니다.
AWS에서 스트리밍 데이터를 좀 더 쉽게 처리하기 위해 만들어졌습니다.
간단히 Amazon Simple Storage Service (S3) 버킷으로 옮기거나 Amazon Redshift 테이블로 (1000 KB까지) 스트림 데이터를 기록할 수 있습니다.
Firehose는 모니터링, 확장성 및 데이터 관리를 도와 주게 됩니다.
이를 통해 인프라가 아닌 애플리케이션에 더 집중할 수 있는 시간을 얻을 수 있습니다.
AWS 에서 소개하는 Kinesis 의 이점
실시간성
- Amazon Kinesis를 사용하면 실시간으로 스트리밍 데이터를 수집, 버퍼링 및 처리할 수 있으므로
몇 시간 또는 며칠이 아니라 몇 초 또는 몇 분 만에 통찰력을 얻을 수 있습니다.
완전관리형
- Amazon Kinesis는 완전관리형으로 스트리밍 애플리케이션을 운영하므로 사용자는 인프라를 관리할 필요가 없습니다.
덕분에 Kinesis 사용 시 모든 데이터가 수집된후에야 처리를 시작할수있는것이 아니라 수신되는대로 처리 및 분석이 가능하여, 즉시 대응이 가능합니다.
확장성
- Amazon Kinesis는 모든 규모의 스트리밍 데이터를 처리하고 매우 짧은 지연 시간으로 수많은 소스의 데이터를 처리할 수 있습니다.
Kinesis 프로세스
Kinesis 의 내부 애플리케이션
1. Amazon Kinesis Video Streams
- 주로 비디오 스트림을 캡처, 처리 및 저장용도로 쓰입니다.
2. Amazon Kinesis Data Streams
-
데이터 스트림을 캡쳐, 처리 및 저장
-
Kinesis Data Streams 는 일련의 샤드이다 샤드마다 데이터 레코드 시퀀스가 있습니다.
-
그리고 각 데이터 레코드 에는 Kinesis Data Streams에서 할당하는 시퀀스 번호가 있습니다.
샤드 : 스트림에서 고유하게 식별되는 데이터 레코드 시퀀스, 트림은 하나 이상의 샤드로 구성되며 각 샤드는 고정된 용량 단위를 제공
Kinesis Data Streams 은 데이터를 신속하게 집계할수있습니다.
또한 생산자를 통해 직접 데이터를 실시간으로 Push 함으로서 몇초만에 처리 할수있습니다.
그렇기 떄문에 서버가 다운되거나 View 단이 다운되더라도 데이터 손실을 최소화 할수있습니다.
데이터가 Streams 이라는 통로로 통해 들어가므로 지속성과 탄력성이 보장됩니다.
Kinesis Data Streams
Kinesis Data Streams의 상위 수준 아키텍쳐에서는 생산자가 계속해서 data 를 push 하고 소비자(S3, EC2, Redshift)가 실시간으로 데이터를 처리합니다.
소비자 라는것은 Streams 에서 레코드 를 가져와 처리합니다.
3. Amazon Kinesis Data Firehose
Data Stream 을 AWS 데이터 스토어로 로드합니다.
Amazon Kinesis Data Firehose는 기존 인텔리전스 도구를 사용해 거의 실시간 분석을 위해
데이터 스트림을 캡쳐 및 변환하여 AWS 데이터 스토어로 로드할 수 있는 가장 쉬운 방법이다.
- 간단하게 전송 스트림을 생성하고, 대상을 선택한 다음, 수십만 개의 데이터 원본에서 동시에 실시간 데이터 전송을 할수있다
이를 간단하게 하기 위해 Firehose는 자료(raw data)를 따로 해석하거나 처리하지 않습니다
AWS의 James Hamilton는 다른 말로 “그냥 간단하다!”라고 표현합니다
가장 간단하게 S3 같은 버킷에 저장하는 방법입니다.
또한 요금도 사용한 만큼 지불하고 저렴한 편에 속합니다.
4. Amazon Kinesis Data Analytics
Amazon Kinesis Data Analytics는 새로운 프로그래밍 언어 또는 처리 프레임워크를 배울 필요 없이
표준 SQL을 통해 실시간으로 데이터 스트림을 처리할 수 있는 가자 쉬운 방법
Analytics를 사용하면 게임같은 경우 랭킹을 계산해 이를 Amazon S3로 전송함으로써 곧바로 실시간 라이브 순위표를 만들 수 있습니다.
또 한 5분 간격으로 웹사이트의 고유 방문자 수를 계산하고 처리된 결과를
AWS Redshift에 전송함으로써 웹 사이트에 대한 트래픽을 추적할 수도 있습니다.
각종 사례
광고 게제 적용
대상 추적 시스템, 광고 거래/입찰자/ 광고 서버에서 다양한 유형의 데이터 레코드를 수집하고, 이를 같은 스트림으로 통합할 수 있습니다
그런 다음 Amazon Kinesis Data Analytics를 통해 지속적으로 데이터 변환을 수행함으로써 실시간 광고 및 디지털 마케팅 솔루션을 지원할 수 있습니다
실시간 로그 분석 및 기록
수십억 개의 작은 메시지를 Amazon Kinesis Data Analytics로 스트리밍하여
주요 지표를 계산한 다음 콘텐츠 성능 대시보드를 실시간으로 새로 고침하고 콘텐츠 성능을 개선할 수 있습니다.
스트리밍 소셜 미디어 데이터 분석 / 문제 탐지 모니터링
애플리케이션 모니터링, 사기 탐지, 실시간 순위표와 같은 실시간 애플리케이션에 Amazon Kinesis를 사용할 수 있습니다.
밀리초의 엔드 투 엔드 지연 시간으로 Kinesis Streams를 사용하여 스트리밍 데이터를 수집하고,
Kinesis Analytics를 사용하여 이를 처리하며, Kinesis Streams를 사용하여 결과를 데이터 스토어나 애플리케이션으로 내보낼 수 있습니다.
이는 고객, 애플리케이션 및 제품이 지금 어떤 상태인지 파악하고 신속하게 대응하는 데 도움이 됩니다
Kinesis 특징
장점
-
스트림만 생성하면 바로 데이터 수집이 가능
-
스케일 인/아웃이 자유롭다.
-
인증을 통한 네크워킹
제약/단점
-
스트림 당 25샤드(Shard)까지 가질 수 있다(별도 계약으로 더 쓸 수 있음)
- SDK를 사용할 수 없다면 HTTPS로 데이터를 보내야 함
- 초당 쓰기 레코드 수를 늘리려면 샤드를 늘리거나(비용 증가), 뒤에서 설명할 모아(Collect) 보내기를 이용해야한다.
통상의 Kinesis 이용 방법
-
AWS에서 제공하는 SDK(다양한 언어지원)
-
KPL(Kinesis Producer Library와 KCL(Kinesis Client Library)을 사용
Reference
https://itjava.tistory.com/99
https://aws.amazon.com/ko/blogs/korea/amazon-kinesis-firehose-simple-highly-scalable-data-ingestion/
https://gist.github.com/haje01/5abaeadda792b40f39d7