Kinesis ordering & SQS ordering

2022. 6. 24. 12:14Cloud/aws

# Kinesis data streams

데이터를 규모에 맞게 수집하게 해주는 일종의 스트리밍 서비스입니다.

한번 데이터가 Kinesis에 삽입이 되면은 데이터를 지울수가 없습니다.

실시간으로 수집이 가능하며 같은 파티션키를 가진 데이터끼리 같은 샤드로 공유가 됩니다.

Provisioned mode와 On-demand mode 총 2가지의 모드가 존재하는데 

Provisoned mode는 말그대로 사용자가 직접 샤드의 수를 선택하여 프로비전해야되고 

On-demand는 굳이 사용자가 프로비전을 할 필요가 없고 기본값으로 프로비전된 값을 이용하면 됩니다.

 

# Kinesis data firehose

사용자가 직접 데이터를 목적지로 불러올 수 있으며 목적지로는 크게 partner, aws, customom 총 3개가 있습니다.

그 중 aws의 목적지로는 S3, Redshift, ElasticSearch가 있습니다.

완전한 실시간이 아니지만 거의 준실시간이며 서버리스 이므로 스토리지가 없으며 오토스케일링이 자동으로 탑재되어 있습니다.


# Kinesis ordering

https://dev.to/aws-builders/event-streaming-and-aws-kinesis-4877

Kinesis는 샤드와 파티션키를 사용해야 됩니다.

예를 들어서 트럭들의 데이터를 Kinesis로 보내고 싶을때 

파티션키를 트럭의 id로 지정하여 샤드로 전달합니다.

같은 파티션키값을 가진 트럭들은 같은 샤드로 전달되고

여기서 어느 샤드로 갈지는 Kinesis Stream이 파티션키를 해시하여 결정합니다.

Kinesis ordering에서는 각각의 샤드마다 하나의 소비자가 필요하며 만약 100명의 소비자가 있고 샤드의 수는 5라면은 한 샤드의 들어가는 소비자의 수는 20이 됩니다.

 

# SQS ordering

https://aws.amazon.com/ko/blogs/compute/solving-complex-ordering-challenges-with-amazon-sqs-fifo-queues/

SQS standard를 사용하면 정렬기능이 없고 SQS FIFO를 사용해야지 정렬이 됩니다.

SQS에서는 그룹id[Kinesis에서는 파티션 키와 비슷한 느낌]를 지정할 수 있는데 그룹id를 지정하여 관련된 그룹들간끼리 나누어서 메시지를 전달할 수 있게 됩니다. 

Kinesis가 여러 샤드를 사용한 것과 다르게 SQS FIFO에서는 한개의 FIFO queue를 통해서 데이터를 전달할 수 있으며 그룹의 id와 소비자의 수는 비례 관계입니다.

'Cloud > aws' 카테고리의 다른 글

EBS Volume Types Summary  (0) 2022.07.03
vpc summary  (0) 2022.06.28
AWS Storage Comparison  (0) 2022.06.20
RDS database port  (0) 2022.06.14
Types of Load Balancers  (0) 2022.06.12