Data & Analytics
이번 장에서는 SAA를 준비하며 데이터와 분석에 대해서 알아보도록 한다.
Amazon Athena
- Amazon S3에 저장된 데이터를 분석하는 Serverless 쿼리 서비스다.
- 표준 SQL 언어를 사용하여 파일을 쿼리한다. (Presto 기반)
- CSV, JSON, ORC, Avro 및 Parquet를 지원한다.
- 가격: 스캔한 데이터 TB당 $5.00
- 보고/대시보드를 위해 "Amazon Quicksight"와 함께 일반적으로 사용된다.
- BI(Business Intelligence)/Analytics/Reporting, VPC FLow Logs, ELB Logs, Cloud Trail 분석 등을 위해 사용된다.
- Serverless SQL을 사용하여 S3에서 데이터를 분석해야 하는 경우 "Amazon Athena"를 사용하면 된다.
성능 개선
- 비용 절감을 위해 "컬럼 데이터(Columnar data)"를 사용하여 스캔을 감소시킨다.
- Apache parquet 또는 ORC가 권장된다.
- 엄청난 성능 향상을 할 수 있다.
- "Glue"를 사용하여 데이터를 Parquet 또는 ORC로 변환할 수 있다.
- 작은 검색(bzip2, gzip, lz4, snappy, zlip, zstd)을 위해 데이터를 압축할 수 있다.
- S3의 파티션 데이터 세트로 가상 컬럼에 대한 쿼리가 용이하다.
- 대용량 파일(128MB 이상)을 사용하여 오버헤드를 최소화할 수 있다.
연합(Federated) 쿼리
- 관계형, 비관계형, 객체 및 사용자 지정 데이터 소스(AWS 또는 On-Premise)에 저장된 데이터 전반에 걸쳐 SQL 쿼리를 실행할 수 있다.
- "AWS Lambda"에서 실행되는 "Data Source Connector"를 사용하여 "Federated" 쿼리(예: CloudWatch Logs, DynamoDB, RDS 등)를 실행할 수 있다.
- 결과를 Amazon S3에 다시 저장한다.
Redshift
- "Redshift"는 "PostgreSQL"을 기반으로 하지만 OLTP에는 사용되지 않는다.
- OLAP 데이터베이스로 온라인 분석 프로세싱(분석 및 데이터 웨어하우징)을 위해 사용된다.
- 다른 데이터 웨어하우스보다 10배 뛰어난 성능을 가지고 있으며, PB 단위로 데이터 확장이 가능하다.
- 데이터의 컬럼 스토리지(행 기반이 아닌) 및 병렬 쿼리 엔진을 가지고 있다.
- 프로비저닝된 인스턴스에 따라 비용을 지불하면 된다.
- 쿼리를 수행하기 위한 SQL 인터페이스가 있다.
- Amazon Quicksight 또는 Tableau와 같은 BI 도구와 통합된다.
- 인덱스 덕분에 Query/Join/Aggregation 속도가 "Amazon Athena"에 비해서 빠르다.
Cluster
- Leader Node: 쿼리 계획, 결과 집계를 위해 사용된다.
- Compute Node: 쿼리를 수행하기 위해 Leader에게 결과를 보낸다.
- 노드의 크기를 미리 프로비저닝한다.
- 비용 절감을 위해 예약된 인스턴스를 사용할 수 있다.
Snapshots & DR
- 일부 클러스터에 대해 Redshift에 "Multi-AZ" 모드가 있다.
- 스냅샷은 S3에 내부적으로 저장된 클러스터의 시점 단위 백업이다.
- 스냅샷은 변경된 내용만 저장되어 증분된다.
- 스냅샷을 새 클러스터로 복원할 수 있다.
- 자동화: 8시간마다, 5GB마다, 또는 일정에 따라 보존 기간을 1일에서 35일 사이로 설정할 수 있다.
- 수동: 스냅샷은 수동으로 삭제할 때까지 유지된다.
- 클러스터의 스냅샷(자동 또는 수동)을 다른 "AWS Region"에 자동으로 복사하도록 Amazon Redshift를 구성할 수 있다.
- Redshift에 데이터를 저장할 때, 단건 저장보다는 한 번에 많은(예: 배치) 데이터를 Insert하는 것이 유리하다.
Spectrum
- 이미 S3에 있는 데이터를 로드하지 않고 쿼리할 수 있다.
- 쿼리를 시작하려면 Redshift 클러스터를 사용할 수 있어야 한다.
- 이후 다음 수천 개의 "Redshift Spectrum" 노드에 쿼리가 전송된다.
Amazon OpenSearch Service
- "Amazon OpenSearch"는 "Amazon ElasticSearch"의 후속 제품이다.
- DynamoDB에서 쿼리는 기본 키 또는 인덱스로만 존재한다.
- OpenSearch를 사용하면 부분적으로 일치하는 필드라도 검색할 수 있다.
- OpenSearch는 다른 데이터베이스를 보완하는 기능으로 사용하는 것이 일반적이다.
- 관리되는 인스턴스 클러스터 프로비저닝 또는 OpenSearch Serverless를 사용할 수 있다.
- SQL은 기본적으로 지원하지 않으며 플러그인을 통해서 추가할 수 있다.
- Kinesis Data Firehose, AWS IoT 및 CloudWatch 로그에서 데이터를 수집할 수 있다.
- Cognito & IAM, KMS 암호화, TLS를 통한 보안을 제공한다.
- OpenSearch Dashboard와 함께 시각화를 제공한다.
OpenSearch 패턴 - DynamoDB
OpenSearch 패턴 - CloudWatch Logs
OpenSearch 패턴 - Kinesis
Amazon EMR
- EMR은 "탄력적 지도 축소(Elastic Map Reduce)"의 약자이다.
- EMR을 통해 하둡 클러스터(Big Data)를 생성하여 방대한 데이터를 분석 및 처리할 수 있다.
- 클러스터는 수백 개의 EC2 인스턴스로 구성할 수 있다.
- EMR은 아파치 스파크, HBase, Presto, Flink와 함께 제공된다.
- EMR은 모든 프로비저닝 및 구성을 담당한다.
- 자동으로 확장되며 스팟 인스턴스와 통합될 수 있다.
- 데이터 처리, 머신러닝, 웹 인덱싱, 빅데이터 등에 사용된다.
Node Types & Purchasing
- Master Node: 클러스터 관리, 조정, 상태 관리 - 장기 실행
- Core Node: 작업 실행 및 데이터 저장 - 장기 실행
- Task Node(Optional): 작업 실행을 위한 목적으로만 사용되며 일반적으로 스팟 인스턴스를 사용한다.
- 구매 옵션:
- On-demand: 신뢰성 있고 예측 가능하며 종료되지 않는다.
- Reserved(최소 1년): 비용 절감(사용 가능한 경우 EMR이 자동으로 사용)
- Spot Instances: 가격이 저렴하고 종료될 수 있으며 신뢰성이 떨어진다.
- 장기 실행 중인 클러스터 또는 일시적(임시) 클러스터를 가질 수 있다.
Amazon QuickSight
- Serverless 머신러닝 기반 비지니스 인텔리전스 서비스로 대화형 대시보드를 생성할 수 있다.
- 빠르고 자동으로 확장 가능하며 내장 가능하며 세션별 가격 정책을 가지고 있다.
- 비즈니스 분석, 건물 시각화, 임시 분석 수행, 데이터를 사용한 비즈니스 통찰력 확보 등에 사용된다.
- RDS, Aurora, Athena, Redshift, S3와 통합된다.
- QuickSight로 데이터를 가져오는 경우 SPICE 엔진을 사용하여 메모리 내에서 계산한다.
- 엔터프라이즈 에디션의 경우 CLS(Column-Level Security) 설정이 가능하다.
Dashboard & Analysis
- 사용자(Standard Version) 및 그룹(Enterprise Version) 정의
- 사용자 및 그룹은 QuickSight 내에서만 존재하며 IAM과는 다른 개념이다.
- 대시보드는 공유할 수 있는 분석을 위한 읽기 전용 스냅샷이다.
- 분석을 위한 구성(필터링, 파라미터, 컨트롤, 정렬)을 저장할 수 있다.
- 분석 또는 대시보드를 사용자 또는 그룹과 공유할 수 있다.
- 대시보드를 공유하려면 먼저 게시해야 한다.
- 대시보드를 보는 사용자는 기본 데이터도 조회할 수 있다.
AWS Glue
- ETL(Extract, Transform, Load)을 위한 관리형 서비스다.
- 분석을 위한 데이터 준비 및 변환에 유용하게 사용된다.
- 완전한 서버리스 서비스다.
- 아래의 이미지와 같이 CSV 형식의 데이터를 Parquet 형식의 데이터로 변환하여 "Amazon Athena"를 사용하여 분석할 수 있다.
- 아래의 이미지와 같이 "AWS Glue Data Crawler"를 활용하여 메타데이터를 생성하고 Dataset의 카탈로그로 사용할 수 있다.
High-level
- Glue Job Bookmarks: 오래된 데이터를 다시 처리하지 못하도록 한다.
- Glue Elastic Views:
- SQL을 사용하여 여러 데이터 저장소에 걸쳐 데이터 결합 및 복제를 한다.
- Custom 코드가 없고, Glue가 소스 데이터의 변경 사항을 모니터링 하며, Serverless로 작동한다.
- "가상 테이블"을 활용한다. (구체화된 보기)
- Glue DataBrew: 사전 구축된 변환을 사용하여 데이터를 정리하고 정규화할 수 있다.
- Glue Studio: Glue에서 ETL 작업을 생성, 실행 및 모니터링할 수 있는 GUI 서비스다.
- Glue Streaming ETL(Apache Spark Structured Streaming 기반): "Kinesis Data Stream", "Kafka", "MSK(관리형 Kafka)"와 호환된다.
AWS Lake Formation
- Data Lake: 분석을 목적으로 모든 데이터를 저장할 수 있는 중앙 장소
- 며칠 만에 데이터 레이크를 쉽게 설정할 수 있도록 완벽하게 관리되는 서비스다.
- 데이터를 검색, 정제, 변환 및 데이터 레이크로 수집할 수 있다.
- 복잡한 수동 단계(수집, 정리, 이동, 데이터 카탈로그 작성 등)와 중복제거(ML Transforms 사용)를 자동화한다.
- 데이터 레이크에 정형 데이터와 비정형 데이터를 결합한다.
- S3, RDS, RDB, NoSQL 에서 데이터를 가져올 수 있다.
- 응용프로그램에 대한 세분화된 액세스 제어(행 및 열 수준)를 제공한다.
- "AWS Glue"위에 구축해야 한다.
- 아래의 이미지와 같이 접근 제어와, 컬럼 수준의 보안을 적용할 수 있다.
Kinesis Data Analytics
- SQL을 사용하는 "Kinesis Data Streams" & "Firehose"는 실시간 데이터 분석을 위해 사용될 수 있다.
- Amazon S3의 참조 데이터를 추가하여 스트리밍 데이터를 풍부하게 생성할 수 있다.
- 완전 관리형 서비스이기 때문에 프로비저닝할 서버가 없다.
- 자동으로 스케일링이 된다.
- 실제 소비율에 대해서만 지불한다.
- Kinesis Data Streams: 실시간 분석 쿼리에서 스트림을 생성한다.
- Kinesis Data Firehose: 분석 쿼리 결과를 대상으로 전송한다.
- 시계열 분석, 실시간 대시보드, 실시간 메트릭 등을 분석하는 데 사용된다.
Kinesis Data Analytics for Apache Flink
- Flink(Java, Scala, SQL)를 사용하여 스트리밍 데이터를 처리 및 분석할 수 있다.
- AWS의 관리 클러스터에서 "Apache Flink" 애플리케이션을 실행할 수 있다.
- 컴퓨팅 리소스 프로비저닝, 병렬 계산, 자동 확장을 지원한다.
- 애플리케이션 백업(체크포인트 및 스냅샷)을 지원한다.
- "Apache Flink" 프로그래밍 기능을 사용할 수 있다.
- "Flink"는 "Firehose"로 부터 데이터를 읽지 않으며, "Kinesis Analytics for SQL"을 사용해야 한다.
Amazon Managed Streaming for Apache Kafka (Amazon MSK)
- "Amazon Kinesis"의 대안이다.
- AWS에서 작동하는 완전 관리형 "Apache Kafka" 서비스다.
- 클러스터를 생성, 업데이트, 삭제할 수 있다.
- MSK는 사용자를 위해 Kafka 브로커 노드 및 Zookeeper 노드를 생성 및 관리한다.
- VPC, Multi-AZ에 MSK 클러스터를 구축할 수 있고, HA를 위해 최대 3개까지 배포할 수 있다.
- 일반적인 Apache Kafka 장애로부터 자동으로 복구한다.
- 데이터는 원하는 기간 동안 EBS 볼륨에 저장된다.
- MSK Serverless
- 용량을 관리하지 않고 MSK에서 "Apache Kafka"를 실행한다.
- MSK는 리소스를 자동으로 프로비저닝하고 컴퓨팅 및 스토리지를 확장한다.
- 아래의 이미지는 "Apache Kafka"를 사용하는 대표적인 아키텍처다.
Kinesis Data Streams vs Amazon MSK
- Kinesis Data Streams
- 1MB 메시지 크기 제한이 있다.
- 샤드(Shard)와 함께 데이터가 스트리밍 된다.
- 샤드가 분할 및 병합된다.
- TLS를 통해서 전송중 암호화를 지원한다.
- KMS를 통해 저장된 데이터의 암호화를 지원한다.
- Amazon MSK
- 기본값은 1MB이며, 더 높은 값으로 메시지 크기를 설정할 수 있다.
- 파티션(Partitions)과 함께 Kafka Topic을 사용한다.
- Topic에 Partitions만 추가할 수 있다.
- PLAINTEXT 또는 TLS를 통해 전송 중 암호화를 지원한다.
- KMS를 통해 저장된 데이터의 암호화를 지원한다.
- 아래의 이미지와 같이 "Amazon MSK"는 여러 종류의 소비자(Consumers) 유형을 지원한다.
빅데이터 수집 파이프라인
- 데이터 수집 파이프라인을 서버가 완전히 필요없는 상태로 만드는 상황을 가정한다.
- 우리는 실시간으로 데이터를 수집해야 한다.
- 데이터가 전송될 때 우리는 데이터를 변형할 수 있어야 한다.
- SQL을 사용하여 변환된 데이터를 쿼리할 수 있어야 한다.
- 쿼리를 사용하여 생성된 보고서는 S3에 있어야 한다.
- 해당 데이터를 Data Warehouse로 이동하고 대시보드를 생성해야 한다.
- 이러한 요구사항이 있을 때, 아래의 이미지와 같은 아키텍처를 설계할 수 있다.
- "IoT Core"를 통해 IoT 기기에서 데이터를 수집할 수 있다.
- "Kinesis"는 실시간 데이터 수집에 적합한 서비스다.
- "Firehose"를 통해 거의 실시간으로 S3에 데이터를 제공할 수 있다.
- "Lambda"는 데이터 변환을 통해 "Firehose"에 도움을 줄 수 있다.
- "Amazon S3"는 "SQS"에 대한 알림을 트리거할 수 있다.
- "Lambda"는 "SQS"를 구독할 수 있다.(S3와 Lambda Connecter를 사용)
- "Athena"는 서버리스 SQL 서비스이며 분석 결과는 S3에 저장된다.
- Reporting 버킷에는 분석된 데이터가 포함되어 있으며 "AWS QuickSight", "Redshift"등의 리포팅 도구에서 사용할 수 있다.
참고한 자료
'Infrastructure > Certificate' 카테고리의 다른 글
[SAA] Monitoring & Audit & Performance (0) | 2023.10.04 |
---|---|
[SAA] Machine Learning (0) | 2023.10.03 |
[SAA] Databases (0) | 2023.10.02 |
[SAA] Serverless Architectures (0) | 2023.10.02 |
[SAA] API Gateway (0) | 2023.10.02 |