회사에서 AWS의 Kinesis를 사용하게 되어 이에 대한 용어를 더 편리하게 해석해보았다. 이 용어들을 이해하다보면 kinesis의 컨셉이 어느정도 이해가 될 것이다.
Kinesis concept
Kinesis Data Stream
•
Shards 의 집합이다.
•
각각의 Shard는 data record의 순서를 갖고 있다.
•
각각이 데이터는 kinesis data stream 에서 할당하는 sequence number를 갖는다.
Data record
•
Kinesis data stream에 저장되는 데이터 이다.
•
Sequence number, partition key, data blob 의 component가 immutable 한 component로 구성
◦
이 각각의 데이터는 inspect, interpret, change 가 되지 않는다.
•
Data blob 은 최대 1MB 이다.
Capacity mode
•
on-demand mode
◦
필요한 throughput 에 알맞게 managed 된다.
◦
워크로드 처리량에 따라 알아서 증가, 감소
•
provisioned mode
◦
Data stream 에서 사용할 shard 의 숫자를 특정해야 한다.
◦
전체 capacity의 data stream은 shard의 숫자를 합한 값이다.
Retention period
•
Stream에 저장된 후에 data record 가 남아있는 시간을 의미한다.
•
Default 는 24시간이며, 365일 까지 연장할 수 있다.
•
비용에 당연히 밀접하다.
Producer
•
Kinesis에 data를 집어넣는 객체이다.
Consumer
•
Kinesis에서 data stream을 가져오고, 처리한다.
•
◦
대표적으로 EC2 instance에서 이를 수행할 수 있다.
Amazon Kinesis Data Streams Application
Kinesis의 data stream을 소비하여 어떠한 작업을 하는 것을 뜻한다. 대표적으로 EC2 instance에서 구동한다.
두 가지 type의 consumer 가 있는데 shard fan-out consumer와 enhanced fan-out consumer 가 있으며
다른 stream 에서 input을 할 수도 있으며, 이를 통해 복잡한 구조에서 실시간으로 데이터를 처리한다.
또한, 다양한 AWS service로 데이터를 전송할 수 있다.
여러개의 application 이 하나의 stream을 볼 수도 있으며, 각각의 application 이 독립적으로, 동시에 stream을 처리할 수도 있다.
Shard
•
Stream에서 고유하게 식별되는 data record sequence 이다.
•
Stream은 하나 혹은 그 이상의 으로 구성되어 고정된 capacity를 갖는다.
•
각 shard는 읽기에 대해 최대 1초에 5번 읽기, 2MB 읽기를 수행할 수 있다.
•
각 shard는 쓰기에 1초에 1MB 1000개 records까지 write 할 수 있다. (파티션 키가 포함되어)
•
Stream의 data 용량은 stream에 지정한 shard 수의
Partition Key
•
Partition key는 stream 안에 있는 shard 기준으로 group화 하는데 사용된다.
•
KDS는 stream 에 소속된 data record는 여러개의 shard에 분포된다.
•
Partition key를 통해서 어떤 shard에 포함된 data record 인지 확인할 수 있다.
•
Unicode 문자열, 256 length 가 limit
•
MD5로 해싱되었으며 128-bit integer value 로 hash ring에 할당.
•
Data를 stream에 저장할 때 이 값이 특정된다.
Sequence number
•
각각의 data record 는 shard 안에서 유일하게 식별하는 sequence number를 갖는다.
•
KDS는 각 client.putRecords 시점에 sequence number를 할당하낟.
•
시간에 따른 증가