Backend/Infra

AWS Kinesis - data stream

지미닝 2024. 3. 18. 20:59

Kinesis란

실시간으로 데이터 스트림(data stream)을 수집,처리,분석해주는 서비스

📎스트리밍 데이터

  • 데이터 스트림을 수집할 수 있고 저장할 수 있다.
  • 데이터를 실시간 처리해 S3와 같은 스토리지에 저장해서 다양한 일괄 처리를 수행한다.

Kinesis data stream은 set of shards다!

  • 샤드의 수를 조절하여 스트림을 얼마나 받을지 조절할 수 있다. (DynamoDB)

리샤딩(Resharding)

  • 모든 data record에는 sequence가 존재한다.

Capacity Mode

  • on-demand mode: 자동으로 샤드의 개수를 관리한다.
  • provisioned mode: 필요햔 샤드의 개수를 사용자가 명시해야한다.

Kinesis & Lambda

Lambda

  • Kinesis와 Lambda를 함께 사용할 때는 폴링이 발생한다.

Kinesis 스트림에 새로운 데이터 레코드가 지속적으로 추가되기 때문이다. 이 데이터 레코드들은 실시간으로 처리되어야 할 경우 Lambda함수가 이를 자동으로 처리할 수 있게 해준다.

Kinesis스트림에 데이터가 들어오면, Lambda는 이 스트림을 주기적으로 확인하여 새로운 데이터가 있는지 검사하고, 새로운 레코드가 발견된다면 Lamdba함수가 트리거되어 그 데이터를 처리하게 된다.

이 과정은 전적으로 자동으로 일어나기 때문에 실시간 데이터 스트림 처리를 가능하게 해준다.

이러한 폴링 방식을 사용하는 이유는, 실시간으로 데이터를 처리해야하는 애플리케이션에서 중요한 변화나 정보를 놓치지 않고 즉시 반응할 수 있게 하기 위해서다. Lambda 함수는 이 폴링 과정을 통해서 데이터 스트림의 변화를 지속적으로 모니터링하고, 필요한 로직을 실행하여 데이터를 분석하거나 다른 시스템으로 전송하는 등의 작업을 하게 된다.

SQS (Amazon Simple Queue Service)란

SQS(Amazon Simple Queue Service)

대략적인 구조 예시

  1. 기자들의 위치 데이터 수집: 기자들의 위치 정보는 실시간으로 Amazon Kinesis를 통해 스트리밍됩니다.
  2. 데이터 처리: AWS Lambda는 Kinesis로부터 데이터를 받아 처리합니다. 이 처리 과정에서 필요한 정보를 추출하거나 변환할 수 있습니다.
  3. API 인터페이스: Amazon API Gateway를 통해 처리된 데이터에 대한 접근을 관리합니다. 이를 통해 외부 시스템이 데이터에 접근할 수 있도록 합니다.
  4. 메시지 큐잉: AWS SQS를 사용하여 처리된 데이터를 임시로 저장하고, 이후의 처리를 위해 순차적으로 관리합니다.
  5. 데이터베이스 저장: EC2 인스턴스에서 동작하는 데이터베이스 또는 S3를 사용하여 데이터를 영구적으로 저장합니다.
  6. 실시간 위치 전송: WebSocket을 통해 프론트엔드에 실시간 위치 정보를 전송합니다. 이를 통해 사용자는 기자들의 위치를 실시간으로 확인할 수 있습니다.

API Gateway

참고
https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/welcome.html

'Backend > Infra' 카테고리의 다른 글

SQS(Amazon Simple Queue Service)에 대해서  (0) 2024.03.18
Aws Lambda에 대해서  (0) 2024.03.18