03. 데이터 분석 실시간으로 처리하기: Kinesis Data Stre
데이터를 실시간 분석할 때 사용하는 Kinesis Data Streams과 MSK를 알아보자.
데이터 소스 -------- 배치 처리 데이터 스토리지 ---------- 배치 프로세스 ------ 배치 뷰 ------------ 소비자
데이터 소스를 가진다
데이터 스토리지를 가진다
배치 프로세싱을 한다. - 시간별 또는 일별로 통계 계산이나 데이터 가공 작업을 한다.
결과를 소비자가 소비할 수 있도록 저장한다.
소비자가 있다.
1
배치 처리?
데이터 소스 -----스트림 인제스천----- 스트림 스토리지-------스트림 딜리버리------ 배치 처리 데이터 저장소 --------- 배치 프로세스 ------ 배치 뷰 ------------ 소비자
2
실시간 처리?
데이터 소스 -----스트림 인제스천----- 스트림 스토리지-----스트림 프로세스-------리얼타임 뷰-----소비자
실시간으로 처리해주는 스트림 프로세스 = 스피드 레이어라고 한다.
1
데이터 소스 -----스트림 인 제스천(데이터 수집)----- 스트림 스토리지-------스트림 프로세스(실시간 분석)----------데이터 레이크
2
Kinesis Data Streams과 MSK는 스트림 스토리지 역할을 한다.
Kinesis Data Streams vs MSK에서는 소비자가 데이터를 읽었다고 해서 삭제하지 않음
한번 소비된 데이터를 계속해서 반복적으로 읽을 수 있다.
3
MSK는 글루, 람다, 키네시스 데이터 어 넬리 티스 등 일부 AWS 서비스와 같이 사용 가능
Kinesis Data Streams은 대부분은 AWS 서비스와 같이 사용 가능
1
중개인, 주키퍼 모니터링 필요
2
프로듀서가 빠르게 생산 , 컨슈머가 빠르게 처리하는지 확인이 필요
3
중개인은 EC2 이기 때문에 데이터가 들어갈 때 네트워크 패킷 드롭 모니터링 필요. 대역폭도 모니터링 필요.
4
MSK는 데이터를 디스크에 저장하므로 디스크 Full 모니터링 필요
5
중개인이 토픽을 얼마나 가지고 있는지 확인 필요. 파일로 존재하기 때문에 max openfile 개수에 도달해 장애가 발생할 수 있다.
6
클라우드 와치로 모니터링 하자.
1
실제로 볼 수 있는 것은 스트림과 샤드의 개수 정보만 볼 수 있다.
2
API 사용 주의?
Put레코드의 경우 초당 샤드당 1MB 만 가능 , 1000개의 레코더만 가능
Get 레코드당 초당, 샤드당 10MB , 한 API 호출당 1만 건의 데이터만 읽어 갈 수 있다.
하나의 샤드에 대해 초당 5번의 리드만 가능하다.
3
샤드 내에 레코드들이 얼마나 처리하지 못하고 대기하는지 모니터링이 필요하다.
클라우드 와치로 모니터링 하자.
GetRecords.IteratorAgweMiliseconds 은 데이터 소비량이 수집량 보다 뒤처지고 있다는 지표이다.
컨슈머가 읽지를 못하거나 초당 5번 리드만 가능한 거로 인한 제약이므로 샤드수를 추가해서 이슈를 해결해야 한다.
MSK , Kinesis Data Streams 성능을 높여 보자.
1
MSK?
여러 가지 Scaling 방법을 사용하자.
2
Kinesis Data Streams?
샤드수를 늘려 데이터 처리량을 증가시키자.
1
Kinesis Data Streams 이 운영 부담이 적다.
상세 설정은 적다.
2
Kinesis Data Streams 온디맨드 서비스 출시됨.
용량을 예측할 수 없는 경우 좋은 서비스이다.
3
MSK는 상세 설정이 가능하다.
운영 부담은 키네시스 보다 크다.
4
MSK 운영 부담을 줄이기 위해 MSK 서버리스가 출시되어있다!
MSK , Kinesis Data Streams 모니터링 지표들을 확인하고 모니터링 하자!!
MSK , Kinesis Data Streams 성능 향상법 참고 하자
https://brunch.co.kr/@topasvga/2439
감사합니다.