Kinesis
Kinesis 개요
- Kinesis는 실시간 스트리밍 데이터를 수집, 처리, 분석하는 AWS 서비스 모음
- 클릭스트림, 로그, IoT 이벤트, 애플리케이션 이벤트, 비디오 스트림 등을 처리할 때 사용
- 실시간 또는 준실시간 데이터 파이프라인 구성에 적합
- 목적에 따라 Kinesis Data Streams, Kinesis Data Firehose, Managed Service for Apache Flink, Kinesis Video Streams를 구분해서 선택
Kinesis Data Streams
핵심 개념
- Kinesis Data Streams는 실시간 스트리밍 데이터를 수집하고 여러 소비자에게 전달하는 서비스
- 생산자는 데이터를 스트림에 넣고, 소비자는 스트림에서 데이터를 읽어 처리
- 여러 소비자가 같은 스트림 데이터를 독립적으로 읽을 수 있음
- Lambda, KCL 애플리케이션, Managed Service for Apache Flink, Kinesis Data Firehose 등이 소비자로 사용될 수 있음
- 실시간 처리, 실시간 대시보드, 로그 수집, 클릭스트림 처리, IoT 이벤트 처리에 적합
- 정적인 파일 저장소가 아니라 지속적으로 들어오는 스트리밍 데이터 처리에 적합
주요 수치
| 항목 |
내용 |
| 데이터 보존 기간 |
기본 24시간, 최대 365일 |
| 샤드 1개 쓰기 처리량 |
초당 1MB 또는 1,000 records |
| 샤드 1개 읽기 처리량 |
초당 2MB 또는 2,000 records |
| 소비자 |
Lambda, KCL 애플리케이션, Managed Service for Apache Flink, Firehose 등 |
- Kinesis Data Streams의 데이터 보존 기간은 기본 24시간이며 최대 365일까지 늘릴 수 있음
- 샤드 수를 늘리면 전체 처리량을 확장할 수 있음
- 여러 소비자가 같은 데이터를 독립적으로 처리해야 하면 SQS보다 Kinesis Data Streams가 더 적합
- 순서 보장은 파티션 키를 기준으로 같은 샤드 안에서 보장됨
Kinesis Data Firehose
핵심 개념
- Kinesis Data Firehose는 스트리밍 데이터를 목적지로 전달하는 완전 관리형 전송 서비스
- S3, Redshift, OpenSearch Service, Splunk, HTTP 엔드포인트 등으로 데이터를 전달할 수 있음
- 자동 확장을 지원하며, 서버나 샤드를 직접 관리하지 않아도 됨
- 데이터를 버퍼링한 뒤 목적지로 전달하는 방식
- 완전한 실시간보다는 준실시간 전송 서비스로 이해하는 것이 안전
- Lambda를 활용한 데이터 변환을 지원
- 데이터를 S3에 적재하거나 Redshift/OpenSearch로 전달하는 파이프라인에 자주 사용
Firehose 버퍼링
- Firehose는 데이터를 일정 크기 또는 일정 시간 동안 버퍼링한 뒤 목적지로 전달
- 버퍼 크기와 버퍼 간격을 설정할 수 있음
- 일반적인 버퍼 간격은 목적지와 설정에 따라 달라질 수 있으며, API 기준 최대 900초까지 설정 가능
- Lambda 데이터 변환을 사용하는 경우 기본 버퍼 간격은 대부분의 대상에서 60초로 동작
- 따라서 Firehose는 “즉시 처리”가 아니라 “버퍼링 기반 준실시간 전송”으로 정리하는 것이 좋음
Managed Service for Apache Flink
- 과거 Kinesis Data Analytics for Apache Flink로 불리던 서비스
- Apache Flink 기반 스트리밍 애플리케이션을 실행하는 관리형 서비스
- Kinesis Data Streams, Amazon MSK, Kafka 등 스트리밍 소스의 데이터를 실시간으로 처리할 수 있음
- 실시간 집계, 윈도우 분석, 이상 탐지, 시계열 분석, 스트리밍 ETL에 적합
- SQL 또는 Apache Flink 애플리케이션으로 스트리밍 데이터를 처리할 수 있음
- 단순 전송은 Firehose, 복잡한 실시간 스트림 처리는 Managed Service for Apache Flink를 고려
Kinesis Video Streams
- Kinesis Video Streams는 카메라, 센서, IoT 디바이스에서 비디오 스트림을 수집, 저장, 처리하는 서비스
- 보안 카메라, 스마트 홈, 산업용 카메라, 영상 분석 애플리케이션 등에 사용
- 비디오 데이터를 안전하게 수집하고, 재생하거나 분석할 수 있음
- 영상 기반 머신러닝 분석이나 실시간 영상 처리 파이프라인에 활용 가능
- 날씨 예측보다는 비디오 스트리밍 수집과 분석이 핵심 사용 사례
Kinesis 데이터 흐름 패턴
장기 보관이 필요한 스트리밍 데이터
[Producer] → [Kinesis Data Streams] → [Kinesis Data Firehose] → [S3]
- Kinesis Data Streams에서 실시간 처리를 수행하고, Firehose를 통해 S3에 장기 보관 가능
- 30일 이상 장기 보관이 필요하면 최종 저장소는 S3를 고려
- Data Streams 자체도 최대 365일 보관 가능하지만, 장기 데이터레이크 저장과 분석에는 S3가 더 적합
로그 데이터를 Redshift로 준실시간 적재
[Producer] → [Kinesis Data Streams] → [Kinesis Data Firehose] → [S3] → [Redshift]
- Firehose는 Redshift 대상으로 데이터를 적재할 수 있음
- Redshift 적재 시 Firehose는 일반적으로 S3를 중간 저장소로 사용한 뒤 Redshift COPY 방식으로 적재
- 거의 실시간 분석이 필요하면 Firehose 대상에 Redshift를 구성
- S3에 원천 데이터를 남기고 Redshift에서 분석할 수 있음
SQS vs Kinesis Data Streams
| 항목 |
SQS |
Kinesis Data Streams |
| 목적 |
비동기 작업 큐 |
실시간 스트리밍 데이터 처리 |
| 컨슈머 모델 |
메시지를 소비하면 큐에서 삭제 |
여러 소비자가 같은 스트림 데이터를 독립적으로 읽기 가능 |
| 데이터 유형 |
개별 작업 메시지 |
연속적인 대량 이벤트 스트림 |
| 메시지/데이터 보존 |
최대 14일 |
기본 24시간, 최대 365일 |
| 순서 |
FIFO 큐에서 메시지 그룹 기준 순서 보장 |
같은 파티션 키 기준 순서 보장 |
| 주요 사용 사례 |
작업 분산, 비동기 처리, 재처리 |
클릭스트림, 로그, IoT, 실시간 분석 |
- 단순 비동기 작업 처리와 재시도가 핵심이면 SQS
- 여러 소비자가 같은 이벤트 스트림을 읽고 분석해야 하면 Kinesis Data Streams
- 대량 실시간 이벤트 처리와 스트리밍 분석은 Kinesis가 더 적합
Athena
핵심 개념
- Athena는 S3에 저장된 데이터를 SQL로 직접 쿼리할 수 있는 서버리스 쿼리 서비스
- 인프라를 직접 관리할 필요가 없음
- 기본적으로 쿼리당 스캔한 데이터 양을 기준으로 과금
- ELB 로그, VPC Flow Logs, CloudTrail 로그, S3 데이터레이크 분석에 적합
- Glue Data Catalog의 테이블 메타데이터를 사용해 S3 데이터를 조회할 수 있음
- 데이터를 미리 Redshift 같은 데이터 웨어하우스에 적재하지 않고도 S3 데이터를 분석할 수 있음
Athena 비용 최적화
- Athena는 스캔한 데이터 양이 비용에 직접 영향을 줌
- Parquet 또는 ORC 같은 컬럼형 포맷을 사용하면 스캔량을 줄일 수 있음
- 압축, 파티셔닝, 컬럼형 포맷 변환을 통해 비용과 성능을 개선할 수 있음
- 필요한 컬럼만 조회하도록 쿼리를 작성하는 것이 좋음
- S3 파일 크기와 파티션 설계를 적절히 구성하면 성능과 비용을 함께 개선할 수 있음
Athena Federated Query
- Federated Query를 사용하면 S3 외의 여러 데이터 소스를 Athena에서 통합 쿼리할 수 있음
- RDS, DynamoDB, CloudWatch Logs, JDBC 데이터 소스 등과 연동 가능
- Lambda 기반 데이터 소스 커넥터를 사용
- 여러 데이터 소스를 하나의 SQL 쿼리로 분석해야 할 때 사용
File Gateway + Athena
- Storage Gateway의 File Gateway를 통해 온프레미스 파일을 S3에 저장할 수 있음
- S3에 저장된 파일은 Glue Crawler로 스키마를 추론하고 Glue Data Catalog에 등록 가능
- 이후 Athena로 해당 데이터를 SQL 분석할 수 있음
Glue
핵심 개념
- Glue는 서버리스 데이터 통합 및 ETL 서비스
- ETL은 Extract, Transform, Load의 약자
- 데이터 추출, 변환, 적재 작업을 자동화하는 데 사용
- Apache Spark 기반 배치 ETL 작업을 실행할 수 있음
- Glue Data Catalog를 통해 데이터 소스의 메타데이터를 중앙 관리
- S3 데이터레이크, Athena, Redshift Spectrum 등과 함께 자주 사용
- 반복 일정 기반 ETL과 서버리스 데이터 변환에 적합
Glue Streaming ETL
- Glue는 배치 ETL뿐 아니라 Streaming ETL 작업도 지원
- Glue Streaming ETL은 Apache Spark Structured Streaming 기반으로 스트리밍 데이터를 처리
- Kinesis Data Streams, Kafka, Amazon MSK 같은 스트리밍 소스를 처리할 수 있음
- 다만 시험 관점에서는 “완전한 실시간 초저지연 처리”보다는 “서버리스 ETL/데이터 변환”으로 이해하는 것이 안전
- 복잡한 실시간 스트림 애플리케이션은 Managed Service for Apache Flink와 비교해서 판단
Glue Data Catalog
- Glue Data Catalog는 데이터베이스, 테이블, 파티션 등 메타데이터를 중앙 관리하는 카탈로그
- Athena, Redshift Spectrum, EMR, Glue ETL 등에서 공통 메타데이터 저장소로 사용 가능
- Glue Crawler를 사용하면 S3 등 데이터 소스를 스캔해 스키마를 자동 추론할 수 있음
- 수동으로 테이블과 스키마를 정의할 수도 있음
- Glue + Athena 조합은 S3 데이터레이크 분석에서 자주 사용됨
Glue DataBrew
- Glue DataBrew는 코드 없이 데이터를 정리하고 정규화하는 시각적 데이터 준비 도구
- 데이터 정제, 변환, 프로파일링 작업을 GUI 기반으로 수행할 수 있음
- Recipes를 저장하고 재사용할 수 있음
- 코딩 없이 데이터 품질 개선과 정제가 필요한 경우 적합
EMR
핵심 개념
- EMR은 Elastic MapReduce의 약자
- Apache Spark, Hive, Presto, Flink, Hadoop 등 오픈소스 빅데이터 프레임워크를 실행하는 관리형 클러스터 서비스
- 대규모 분산 처리, 빅데이터 분석, 장시간 Spark/Hive 작업에 적합
- 클러스터 기반으로 세밀한 제어가 필요한 경우 사용
- 장시간 실행되거나 복잡한 Spark 워크로드, 대규모 ML 전처리 작업에 적합
- 비용 최적화를 위해 Spot Instance와 함께 사용하는 경우도 많음
EMR Serverless
- EMR Serverless는 클러스터를 직접 구성하거나 관리하지 않고 Spark/Hive 같은 분석 애플리케이션을 실행할 수 있는 서비스
- 워크로드에 따라 리소스를 자동으로 할당
- 과도하거나 부족한 프로비저닝을 줄이는 데 도움
- 클러스터 관리 부담 없이 EMR 런타임을 사용하고 싶을 때 적합
EMR vs Glue
| 항목 |
Glue |
EMR |
| 목적 |
서버리스 ETL, 데이터 통합 |
대규모 분산 처리 클러스터 |
| 운영 부담 |
낮음 |
Glue보다 직접 제어할 요소가 많음 |
| 실행 모델 |
서버리스 ETL 작업 중심 |
Spark/Hive/Flink 등 클러스터 기반 처리 |
| 적합한 경우 |
반복 ETL, 스키마 탐지, 데이터레이크 변환 |
장시간 대규모 Spark/Hive 작업, 세밀한 클러스터 제어 |
| 실시간 처리 |
Glue Streaming ETL 지원 |
Flink/Spark Streaming 등 구성 가능 |
- 운영 부담 없이 서버리스 ETL을 구성하려면 Glue
- 클러스터 설정, 프레임워크, 실행 환경을 더 세밀하게 제어하려면 EMR
- 1시간 이상 걸리는 대규모 Spark/Hive 워크로드나 복잡한 분산 처리는 EMR을 고려
- 단순 ETL과 Athena용 메타데이터 관리는 Glue가 적합
QuickSight
- QuickSight는 AWS의 클라우드 기반 BI 서비스
- BI는 Business Intelligence의 약자
- 대시보드, 차트, 시각화, 리포트를 생성할 수 있음
- S3, Athena, Redshift, RDS, OpenSearch Service 등 여러 데이터 소스와 연동 가능
- 경영진, 운영팀, 마케팅팀, 분석팀을 위한 데이터 시각화에 적합
- SPICE 엔진을 사용해 데이터를 메모리에 적재하고 빠르게 분석할 수 있음
- Athena나 Redshift 기반 분석 결과를 시각화하는 데 자주 사용
OpenSearch Service
- OpenSearch Service는 검색, 로그 분석, 관찰 가능성 분석에 사용하는 관리형 서비스
- Elasticsearch에서 파생된 OpenSearch 기반 서비스
- 로그 기반 검색, 전문 검색, 대시보드, 운영 로그 분석에 적합
- CloudWatch Logs에서 OpenSearch Service로 로그를 거의 실시간 전송하려면 CloudWatch Logs 구독 필터를 사용할 수 있음
- 애플리케이션 로그, 보안 로그, 운영 이벤트를 검색하고 시각화할 때 사용
- CloudWatch Logs는 로그 수집과 기본 분석, OpenSearch는 검색과 대시보드 기반 분석에 강점
SageMaker
- SageMaker는 ML 모델을 구축, 학습, 튜닝, 배포하는 관리형 머신러닝 서비스
- 데이터 레이블링, 모델 훈련, 하이퍼파라미터 튜닝, 모델 배포, 실시간 추론 엔드포인트 등을 제공
- 자체 ML 모델을 개발하고 운영해야 할 때 사용
- 사전 학습된 AI API가 아니라, 사용자가 직접 모델을 학습하거나 배포하는 플랫폼에 가까움
- 교차 계정 리소스 접근이 필요한 경우 IAM Role과 리소스 정책을 구성하여 접근 가능
AI/ML 서비스
| 서비스 |
용도 |
| Rekognition |
이미지·비디오 분석, 얼굴 인식, 객체 탐지, 부적절한 콘텐츠 탐지 |
| Comprehend |
자연어 처리, 감정 분석, 문서 통찰 |
| Comprehend Medical |
의료 텍스트에서 의료 정보 추출 |
| Transcribe |
음성 → 텍스트 |
| Polly |
텍스트 → 음성 |
| Translate |
기계 번역 |
| Lex |
대화형 챗봇 |
| Kendra |
기업 지식 검색 |
| SageMaker |
ML 모델 개발·학습·배포 |
- 이미지나 비디오 분석은 Rekognition
- 텍스트 감정 분석과 NLP는 Comprehend
- 의료 문서에서 의학 정보를 추출해야 하면 Comprehend Medical
- 음성을 텍스트로 변환하면 Transcribe
- 텍스트를 음성으로 변환하면 Polly
- 챗봇을 만들면 Lex
- 사내 문서나 지식 기반 검색은 Kendra
- 직접 ML 모델을 만들고 학습, 배포해야 하면 SageMaker
클릭스트림 분석 아키텍처
[사용자 클릭]
↓
[API Gateway 또는 애플리케이션]
↓
[Kinesis Data Streams]
↓
[Kinesis Data Firehose]
↓
[S3 데이터 레이크]
↓
[Glue ETL / Glue Data Catalog]
↓
[Redshift 또는 Athena]
↓
[QuickSight]
- 사용자 클릭 이벤트를 Kinesis Data Streams로 수집
- Firehose를 통해 S3 데이터 레이크에 준실시간 적재
- Glue Crawler와 Glue Data Catalog로 스키마 관리
- Glue ETL로 데이터를 정제하거나 변환
- Redshift 또는 Athena로 SQL 분석
- QuickSight로 대시보드 시각화
- 거의 실시간으로 Redshift 적재가 필요하면 Firehose 대상을 Redshift로 구성
- S3 원천 데이터를 Glue로 가공한 뒤 Redshift에 적재하면 SQL 분석과 BI 시각화에 활용 가능
S3 Storage Lens / Batch Operations
S3 Storage Lens
- S3 Storage Lens는 S3 사용량, 활동, 비용 최적화 지표를 분석하는 기능
- 여러 계정과 여러 버킷의 S3 스토리지 현황을 파악할 수 있음
- 버전 관리, 복제, 미완료 멀티파트 업로드, 암호화 상태 등 운영 지표를 확인하는 데 도움
- 암호화되지 않은 객체 수 같은 스토리지 보안·운영 지표를 파악할 수 있음
- Storage Lens는 분석 도구이며, 객체를 직접 일괄 수정하는 기능은 아님
S3 Batch Operations
- 기존 객체에 대해 일괄 작업을 수행하려면 S3 Batch Operations를 사용
- 객체 복사, 태그 변경, ACL 변경, Object Lock 보존 설정, Glacier 복원 등 대량 작업에 사용
- Storage Lens나 Inventory로 현황을 파악한 뒤 Batch Operations로 일괄 처리를 수행하는 흐름이 가능
분석 서비스 비교
| 시나리오 |
적합한 서비스 |
| S3 데이터를 SQL로 직접 쿼리 |
Athena |
| S3 데이터레이크 메타데이터 관리 |
Glue Data Catalog |
| ETL, 스키마 탐지, 데이터 변환 |
Glue |
| 코드 없는 데이터 정리 |
Glue DataBrew |
| 실시간 데이터 수집과 다중 소비자 처리 |
Kinesis Data Streams |
| 스트리밍 데이터를 S3/Redshift/OpenSearch로 전달 |
Kinesis Data Firehose |
| 복잡한 실시간 스트림 처리 |
Managed Service for Apache Flink |
| 비디오 스트림 수집과 저장 |
Kinesis Video Streams |
| BI 대시보드 |
QuickSight |
| 대규모 Spark/Hive 클러스터 처리 |
EMR |
| 서버리스 Spark/Hive 실행 |
EMR Serverless |
| 로그 기반 검색과 분석 |
OpenSearch Service |
| ML 모델 학습·배포 |
SageMaker |
| 데이터 웨어하우스 |
Redshift |
| S3 사용량·활동 분석 |
S3 Storage Lens |
| S3 객체 일괄 처리 |
S3 Batch Operations |