- 0) Kinesis Data Streams 란?
- 대량에 '스트림 데이터'를 실시간으로~ "수집 및 처리" 하는 서비스.
- `Kinesis Client Library` 등을 기반으로... 데이터를 처리하는 `Kinesis Data Streams application`을 만들수있다.
- 예를들면, "가공된 데이터 -> 대시보드 전송 -> 알람생성 및 동적대응 및 타서비스 연동" 임.
- 빠르고 지속적으로~ 실시간 데이터를 가볍게 입수 및 집계 할 수 있어서, 다양한 (로그-소셜-마켓-웹클릭 등) 데이터를 다루기 좋다.
- ex) Accelerated log and data feed intake and processing : ...
- ex) Real-time metrics and reporting : ...
- ex) Real-time data analytics : ...
- ex) Complex stream processing : ...
- 다양한 스트리밍 처리에 응용할수있지만,
- "실시간 데이터 집계 -> (집계 데이터) -> [데이터 웨어하우스 or 맵리듀스 클러스터] 로드" 가 일반적 임.
- 핵 꿀 장점
- 데이터는 durability & elasticity 하게 넣을수있다.
- 보통 데이터를 put/get 하는데 1초 미만이다. (즉, 거의 즉시 추가된 데이터를 곧바로 처리 함)
- 관리 측면에서도~ '데이터 입수 파이프라인' 생성 및 운영하는 부담을 줄일수있다.
- 탄력있게 스트림의 스케일을 조절하기 때문에, 데이터 유실을 걱정 안해도 된다.
- 하나의 스트림을 -> 여러 `K.D.S. application` 처리 -> 다양한 짓들을 병렬로 가능!! ㅋㅋㅋ
- `Kinesis Client Library`는 스트림 데이터 처리시, fault-tolerant 및 scaling 을 제공함. ㅎㄷㄷ
- ※ 스트리밍 데이터란?
- 대량의 데이터 소스(mobile or web-app)에서 연속적으로 생성되는 데이터를 작은 단위(KB)으로 전송하는것.
- 데이터를 recode 혹은 sliding_time_window 에 따라~ 순차적으로 처리 되어야 함.
- 일반적으로 상관관계, 집계, 필터링, 샘플링 등등으로 서비스의 전략적 분석에 사용됨.
- 스트리밍 방식의 특징 :
- 새로운 동적인 데이터를 지속적으로 처리해야하는 시나리오에 유리함. (빅데이터)
- 2개의 계층으로 구성 되야함.
- 저장계층 = 빠르고 가볍게~ 데이터 순서 및 일관성 제공 (예 : Flume , Kafka , ... )
- 처리계층 = 데이터 컴퓨팅 및 삭제 (예 : Apache Spark-Streaming , Apache Storm , ... )
- (?내구성C, 내결함성A, 확장성P 은 당연히 갖춰야?)
- Batch-Process Vs Stream-Process
- 배치 : 전체 데이터를 대상으로 대규모 쿼리를 하여, 장시간에 걸쳐 복잡한 분석. 예) Map-Reduce
- 스트림 : rolling_time_window 내의 최신 데이터를 대상으로, 실시간 증분식 업데이트 분석.
- 1) 아키텍쳐를 구성하는 용어와 그 개념
- 아키텍쳐
- Producer -> Kinesis Data Streams -> Consumer -> 응용
- 용어
- Kinesis Data Streams
- 샤드의 집합체로, 각각에 샤드는 연속적인 데이터를 가진다.
- 각각에 데이터는 Kinesis Data Streams이 할당한 seq값을 가진다.
- Data Record
- Kinesis Data Streams에 저장되는 단위 데이터.
- seq, partition-key, 불변의 blob(최대 1MB) 으로 구성됨.
- Kinesis Data Streams는 절대로 blob데이터를 검사, 해석 또는 변경하지 않음.
- Retention Period
- 데이터가 스트립에 추가된 이후로부터~ 유효한 기간. (디폴트 24시간)
- Producer
- Kinesis Data Streams에 데이터를 put 하는 자.
- Consumer
- Kinesis Data Streams에서 데이터를 get 하고, 처리 하는 자.
- Kinesis Data Streams application
- 흔히 보통 EC2에서 동작하는Consumer를 이렇게 부름.
- shared fan-out 과 enhanced fan-out 이 두가지 종류로 개발할수있음.
- 당연히 AWS의 다양한 서비스로 재전달 할수있고, 하나의 스트림에 여러게의 app이 독립적으로 동시에 처리 가능.
- Shard
- 스트립 내부적으로, 고유하게 식별되는 특정 데이터 흐름의 단위
- 각 샤드는 고정된 용량의 단위를 제공함. (R=최대 초당 5트랜잭션 2MB , W=최대 초당 1000개 1MB)
- 재샤딩을 통해서~ 스트림의 샤드수(총 용량)를 조절할수있다.
- Partition-Key
- 각각에 샤드로 데이터를 그룹화 하는데 사용하는 값.
- 즉, Kinesis Data Streams가 데이터를 각각에 샤드로 분산시키는데 사용한다.
- 최대 256자의 Unicode 으로 지정 -> MD5 해시함수() -> 128bit 정수값 매핑-> 소속될 샤드 결정
- SequenceNumber
- 각각에 데이터는 샤드내 Partition-Key 별곡 각각 고유한 시퀀스 번호가 있음.
- (특정 샤드에 매핑되는 Partition-Key는 여러개 이지!!!)
- 즉! Kinesis Data Streams이 각 PK 별로 해당 값을 적절히? 증가시키며 할당함.
- 데이터 텀이 길면~ 해당 값이 더 크게 증가되는 식! (순차증가 아닌듯...)
- 그래서! 동일한 스트림내의 데이터 집합에 대한 인덱스로 사용할수는 없단다.
- Kinesis Client Library : ...
- Application Name : ...
- Server-Side Encryption : ...
- Kinesis Data Streams
- 아키텍쳐
- ※ Kinesis Data Streams Vs SQS
- (약간 kafka vs rabbitmq 랑 비슷한 느낌?)
- cloud기반의 decoupled된 application 개발환경에는 message-based service 가 필요하죠. ㅎㅎ
- https://www.slideshare.net/awskorea/aws-aws-devday2018-122965087
- Kinesis
- 최소한의 지연으로 실시간 스트림 처리. (집계, 샘플, 필터, ...)
- 대용량 빅데이터 데이터에 적합.
- 여러게의 Application에서 똑같은 순서로 처리 가능.
- SQS
- FIFO 표준 대기열 지원.
- 컴퓨터간 송수신 메세지를 저장.
- 메세징 의미체계, 레벨 확인/실폐 추적, 제한시간 적용, 지연시간 적용.
- 높은 확장성 및 안전성.
- 보안적으로 안정적일 필요가 있는 데이터에 적합.
-끝-
'AWS' 카테고리의 다른 글
Amazon CloudFront (0) | 2022.03.20 |
---|---|
Amazon Route53 (작성예정) (0) | 2020.12.02 |
AWS CodeDepoly (0) | 2020.08.29 |
AWS CodeBuild (0) | 2020.08.29 |
Amazon EKS (0) | 2020.07.16 |