AWS

AWS Kinesis 란?

박현국 2024. 10. 25. 00:55
Kinesis
  • 실시간 스트리밍 데이터를 손쉽게 수집하고 처리하여 분석할 수 있다.
    -> 실시간 데이터 : Application logs, Metrics, Website clickstreams, IOT 원격 측정 데이터 등
  • 4가지 서비스로 구성되어 있다.
    1. Kinesis Data Stream : 데이터 스트림을 수집하여 처리하고 저장한다.
    2. Kinesis Data Firehos : 데이터 스트림을 AWS 내부나 외부의 데이터 저장소로 읽어 들인다.
    3. Kinesis Data Anaytics : SQL 언어나 Apache Flink 를 활용하여 데이터 스트림을 분석한다.
    4. Kinesis Video Stream : 비디오 스트림을 수집하고 처리하여 저장한다.

 

 

 

Kinesis Data Stream

  • 시스템에서 큰 규모의 데이터 흐름을 다루는 서비스.
  • 여러 개의 Shard 로 구성되어 있고 이 Shard 는 1번부터 N번까지 번호가 매겨진다. -> 이것은 사전에 사용자가 프로비저닝 해야한다.
  • 그러면 데이터는 모든 Shard에 분배될 것 이다.
  • Shard는 데이터 수집률이나 소비율 측면에서 스트림의 용량을 결정한다.
  • ex) 데이터를 Kinesis Data Stream 으로 보낼 생성자(애플리케이션, 데스크톱, 휴대전화, SDK, Kinesis Producer Library (KPL) 와 같은 클라이언트) 를 가지고 Kinesis Agent 를 활용한 스트리밍할 서버, 즉, 스트림에서 애플리케이션 로그를 처리할 수 있다. 
    -> 해당 모든 생산자는 정확히 동일한 작업을 한다. 즉, 매우 낮은 수준에서 SDK 에 의존하며 Kinesis Data Stream 에 레코드를 전달하는데, 레코드는 근본적으로 두 가지 요소로 구성되는데, 파티션 키와 최대 1MB 크기의 데이터 블롭으로 구성된다.
    -> 파티션 키는 레코드가 이용할 샤드를 결정하는데 사용되고 데이터 블롭은 값 자체를 의미한다.
  • 이제 생산자는 데이터를 스트림으로 보낼 때 초당 1MB 를 전송하거나 샤드당 1초에 천 개의 메시지를 전송할 수 있다.
    -> 따라서 여섯 개의 샤드가 있다면 초당 6MB 를 얻거난 총 6천개의 메세지를 얻을 수 있다. 
  • 일단 데이터가 스트림에 들어가면 많은 소비자가 이 데이터를 사용한다.
  • 정리
    1. 생산자가 Kinesis Data Stream 에 데이터를 전송
    2. 데이터는 잠시 머물면서 여러 소비자에게 읽힌다.

 

 

  • 보존 기간은 1일 ~ 365일 사이로 설정할 수 있으며, 데이터를 다시 처리하거나 확인할 수 있다.
  • 데이터가 일단 Kinesis 로 들어오면 삭제할 수 없는 불변성을 가지고 있다.
  • 데이터 스트림으로 메세지를 전송하면 파티션 키가 추가되고 파티션 키가 같은 메세지들은 같은 샤드로 들어가게 되어 키를 기반으로 데이터를 정렬할 수 있다.
  • 생산자는 SDK, Kinesis Producer Library (KPL), Kinesis Agent 를 사용하여 데이터를 전송할 수 있고,
  • 소비자는 Kinesis Client Library (KCL) 나 SDK 를 써서 직접 데이터를 작성할 수 있다.
  • 모든 API 요청은 CloudTrail 로 감시할 수 있다.

 

 

Kinesis Data Firehose

  • 생산자로부터 데이터를 가져올 수 있는 매우 유용한 서비스이며 Kinesis Data Streams 에서 본 모든 것이 생산자가 될 수 있다.
  • 따라서 애플리케이션, 클라이언트 SDK 또는 Kinesis 에이전트는 모두 Kinesis Data Firehose 로 생성될 수 있다.
  • 그러나 Kinesis Data Stream 을 Kinesis Data Firehose 로 생성할 수도 있다.
  • CloudWatch 로그 및 이벤트는 Kinesis Data Firehose 로 생성되어 이러한 모든 애플리케이션은 Kinesis Data Firehose 로 레코드를 전송한다.
  • 그런 다음 Kinesis Data Firehose 는 Lambda 함수를 사용하여 데이터 변환도 가능하다.
  • 그리고 데이터가 선택적으로 변환되면 일괄적으로 대상에 작성할 수 있으며, Kinesis Data Firehose 는 소스에서 데이터를 가져온다.
  • 보통 Kinesis Data Streams 가 가장 일반적이지만, Kinesis Data Firehose  는 데이터를 작성하는 방법을 알고 있기 때문에 코드를 작성하지 않고 데이터를 대상에 기록한다.
  • Kinesis Data Firehose  의 수신처
    1. S3 : 여기에 모든 데이터를 작성할 수 있다.
    2. Redshift : 이를 위해 먼저 S3 데이터를 작성한 다음 Kinesis Data Firehose 가 복사 명령을 실행한다. 이 복사 명령은 Redshift 로 복사한다
    3. OpenSearch 
  • Kinesis Data Firehose 는 Datadog, Splunk, New Relic, MongoDB 로 데이터를 보낼 수 있으며 이 목록은 시간이 지남에 따라 점점 커질 수 있으므로 새로운 파트너가 추가되어도 업데이트 하지 않는다.

 

'AWS' 카테고리의 다른 글

Amazon ECS  (0) 2024.10.26
AWS MQ  (0) 2024.10.25
Amazon SQS  (0) 2024.10.24
Hybrid Cloud for Storage  (0) 2024.10.22
What is Amazon FSx?  (0) 2024.10.21