aws를 공부하다가 내용을 확실하게 알고 넘어가야겠다 싶어 확실하게 정리하려고 합니다.
이렇게 분리(decouple)하는 모델은 종류 별로 다음과 같이 있습니다.
make it easy to collect, process and analyze streaming data in real time.
kinesis를 사용하면 실시간 스트리밍 데이터를 손쉽게 수집하고 처리하여 분석할 수 있습니다.
kinesis에는 다양한 서비스가 있습니다.
1. Kinesis Data Stream : capture, process, and store data stream.
2. Kinesis Data Firehose : load data streams into AWS data stores.
kinesis Data Firehose에서는 데이터 스트림을 AWS 내부나 외부의 데이터 저장소로 읽어 들인다.
3. Kinesis Data analytics : analyze data streams with SQL or Apache Flink.
Kinesis Data analytics에서는 SQL 언어나 Apache Flink를 활용하여 데이터 스트림을 분석합니다.
4. Kinesis Video Streams : capture, process, and store video streams.
"생산자가 실시간 데이터를 Kinesis Data Stream에 데이터를 전송하고, 데이터는 잠시 그곳에 머물면서 여러 소비자에게 읽힌다."
Kinesis Data Streams을 설명하는 가장 간단한 한 문장입니다.
예를들어 커머스 앱의 경우 동시간대 수많은 이용자가 상품에 좋아요를 누르고, 장바구니에 담고, 결제를 하는 등 굉장히 많은 이벤트가 발생 합니다. 이렇게 실시간으로 물 밀듯이 들어오는 데이터를 받아주는 곳이 Kinesis Data Streams 입니다.
생산자(producers) -> Kinesis Data Streams -> 소비자(consumer)
생산자가 데이터스트림으로 파티션 키(partition key)가 포함된 메세지를 전송하고, 파티션 키(partition key)가 같은 데이터들은 같은 샤드(shard N)에 들어가서 키를 기반으로 데이터를 정렬할 수 있습니다.
보존 기간은 1일~365일 사이로 설정할 수 있고, 이 말은 기본적으로 데이터를 다시 처리하거나 확인할 수 있다는 뜻입니다.
일단 데이터가 kinesis로 들어오면 삭제할 수 없습니다. (불변성 immutability)
생산자(producers)는 : AWS SDK, Kinesis Producer Library(KPL), Kinesis Agent를 사용하여 데이터를 전송할 수 있고,
소비자(consumers)는 : Kinesis Client Library(KCL)이나 SDK를 써서 직접 데이터를 작성할 수 있습니다.
managed에는 AWS Lambda, Kenesis Data Firehose, Kenesis Data Analytics를 활용할 수 있습니다.