안녕하세요~
Btc_돼지국밥입니다.
오늘의 주제는 AWS Kinesis !!입니다. 너무 즐거운 주제죠? ㅎㅎ
시작할게요!!
Kinesis는 실시간으로 데이터 스트림을 수집, 처리, 분석해주는 서비스이다. 샤드의 수를 조절하여 스트림을 얼마나 받을지 조절할 수 있습니다!
Amazon Kinesis Data Stream은 완전 관리형이라서 infra 관리를 하지않아도 되기 때문에 신경 써야 할 부분이 거의 없습니다!
Kinesis data stream은 여러 곳에서 데이터를 받아 스트림에 보관하고, 고객에게 해당 데이터를 전달합니다.
스트림은 한 개 이상의 샤드로 구성되어 있는데 데이터는 PartitionKey로 샤드를 특정해 보관합니다.
샤드는 Kinesis Stream의 용도에 맞게 랜덤 하게 분배하거나 특정 샤드에 보내도록 파티션키를 신경 써야 합니다!!
consumer는 Kinesis Client Library 를 이용하거나 Data Analytics, Data Firehose 등등 aws서비스를 추가적으로 이용할 수 있습니다.
![](https://blog.kakaocdn.net/dn/bEUVQc/btrzv48khQc/zM9NEzJAT6H49eCDB1ndAk/img.png)
키네시스의 큰그림입니다!
핵심인 Record를 더 자세히 보면 이런 값을 포함합니다.
- Sequence Number: 샤드 내에서 순서를 보장하기 위한 번호
- Partition Key: 최대 256Byte 문자열로 최종적으로 MD5 해시로 샤드에 매핑
- Data BLOB (최대 1MB)
put , get Record
Kinesis stream에 data 넣을때 필요한 파라미터는 stream-name, data, partition-key 입니다.
# aws kinesis put-record help
SYNOPSIS
put-record
--stream-name <value>
--data <value>
--partition-key <value>
[--sequence-number-for-ordering <value>]
데이터를 이런식으로 추가하시면 샤드아이디 와 시퀀스Number를 반환합니다.
Kiensis stream에서 데이터를 꺼내올 때는 shard iterator가 꼭 필요합니다.
shard iterator를 받아오기 위해 필요한 파라미터를 보면 stream-name, shard-id와 어떤 기준의 iterator를 받아올지 shard-iterator-type을 같이 넘깁니다.
# aws kinesis get-shard-iterator help
SYNOPSIS
get-shard-iterator
--stream-name <value>
--shard-id <value>
--shard-iterator-type <value>
[--starting-sequence-number <value>]
이렇게 shard-iterator를 사용해서 실제 데이터를 조회할 수 있습니다.
# aws kinesis get-records help
SYNOPSIS
get-records
--shard-iterator <value>
전송속도
-읽기: 6 TPS, 2 MB/초
-쓰기: 1200 TPS, 1MB/초
결과적으로 필요한 성능에 따라 샤드 수를 결정해야 한다. 왜냐하면 샤드 수가 늘어날 수록 성능이 좋아지기 때문입니다. kinesis stream 생성 계산식 입니다. 참고해주세요
number_of_shards = max(incoming_write_bandwidth_in_KiB/1024, outgoing_read_bandwidth_in_KiB/2048)
고가용성
Record는 PartitionKey에 의해 샤드에 저장됩니다. 샤드는 3군데의 AZ 존에 보관되어 고가용성을 보장한다.
긴글 읽어주셔서 감사합니다~
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
AWS CloudWatch Agent 설치 방법 (0) | 2022.04.23 |
---|---|
AMI와 Snapshot 비교 (0) | 2022.04.22 |
[AWS] VPC - 퍼블릭 서브넷 구성 (0) | 2022.04.20 |
[AWS] VPC - 리소스 (0) | 2022.04.14 |
[AWS] VPN & Direct Connect 개념 (0) | 2022.04.13 |
댓글