SMALL
1. Amazon Athena
- Amazon S3에 저장된 데이터를 분석하기 위한 서버리스 쿼리 서비스
- 표준 SQL 언어를 사용하영 파일을 쿼리 (Presto 엔진에 빌드)
- CSV, JSON, ORC, Avro, Parquet 등 다양한 형식 지원
- 가격: 검색된 데이터 1TB당 $5.00
- 보고서 및 대시보드를 위해 주로 Amazon Quicksight와 함께 사용
- ex) 비즈니스 인텔리전스, 분석, 보고서 작성, VPC Flow Logs, ELB Logs, CloutTrail 추척 등 AWS 서비스에서 발생하는 모든 로그를 쿼리하고 분석
- 서버리스 엔진을 사용한 Amazon S3 데이터 분석
- Performance Improveemeneet
- 비용 절감을 위해 컬럼(열) 기반 데이터를 사용 (스캔이 적어짐)
- Apache Parquet 또는 ORC를 권장
- 성능이 크게 향상도딤
- Glue를 사용하여 데이터를 Parquet 또는 ORC로 변환
- 데이터를 압축하여 더 적은 검색(bzip2, gzip, lz4, snappy, zlib, zstd...)
- 특정 열을 항상 쿼리한닫면 데이터 세트를 분할(파티션)
- S3 버킷에 있는 전체 경로를 슬래시로 분할 - 각 슬래시에 다른 열 이름을 붙여 열별로 특정 값을 저장
- ex) s3://athena-examples/flight/parquet/year=1991/month=1/day=1/
- 오버헤드를 최소화하기 위해 큰 파일(> 128mb)을 사용
- 비용 절감을 위해 컬럼(열) 기반 데이터를 사용 (스캔이 적어짐)
- Federated Query
- 관계형, 비관계형, 객체, 사용자 지정 데이터 소스(AWS 또는 온프레미스)에 저장된 데이터를 대상응로 SQL 쿼리를 실행할 수 있도록 함
- 연합 쿼리를 실행하기 위해 AWS Lambda에서 실행되는 데이터 소스 커넥터를 사용 (ex. CloudWatch Logs, DynamoDB, RDS ...)
- 쿼리 결과를 Amazon S3에 저장
2. Redshift
- PostgreSQL을 기반으로 하지만 OLTP(온라인 트랜잭션 처리)에는 사용되지 않음
- 온라인 분석 처리(OLAP: Online Analytical Processing) 유형의 데이터베이스 : 분석 및 데이터 웨어하우징에 사용
- 다른 데이터 웨어하우스에 비해 10배 빠른 성능을 제공하며 PB 단위의 데이터까지 확장 가능
- 데이터를 컬럼(열) 기반으로 저장하고 병렬 쿼리 엔진을 사용
- 프로비저닝된 인스턴스에 따라 요금 지불
- 쿼리를 수행하기 위해 SQL 인터페이스 제공
- Amazon Quicksight나 Tableau와 같은 BI 도구와 통합될 수 있음
- Athena와 비교했을 때, 인덱스를 통해 빠른 쿼리/조인/집계가 가능
- Redshift Cluster
- 리더 노드(Leader Node): 쿼리 계획 및 결과 집계를 위한 노드
- 컴퓨트 노드(Compute Node): 쿼리 실행 및 결과를 리더 노드로 전송하는 노드
- 노드 크기는 미리 프로비저닝 해야 함
- 예약 인스턴스(Reserved Instances)를 사용하여 비용 절감 가능
- Snapshots & DR
- Redshift에는 다중 AZ 모드 X
- 스냅샷은 클러스터의 지정시간 백업, S3 내부에 저장
- 스냅샷은 증분(incremnetal)한다 - 변경 사항만 저장
- 스냅샷을 사용하여 새로운 클러스터로 복원 가능
- 자동화: 매 8시간마다, 5gb마다 또는 일정에 따라 스냅샷 생성, 보존 기간은 1일 ~ 35일 까지 설정 가능
- 수동: 스냅샷은 삭제할 때까지 보존
- 클러스터의 스냅샷(자동화된 또는 수동 스냅샷)을 다른 AWS 리전으로 자동으로 복사하도록 Redshift를 구성하여 재해 복구 전략을 사용할 수 있음
- Redshift Spectrum
- Amazon S3에 저장된 데이터를 Redshift를 사용해 분석은 하지만 Redshift에 로드하지는 않음
- 쿼리를 시작하려면 Redshift cluster가 있어야 함
- 쿼리는 수천개의 Redshift Spectrum 노드로 제출됟ㅁ
3. Amazon OpenSearch Service(= Amazon ElasticSearch)
- DynamoDB에서는 기본키나 데이터베이스의 인덱스로만 데이터를 쿼리할 수 있지만 OpenSearch에서는 부분적으로 일치하는 필드를 포함해 모든 필드를 검색할 수 있음
- 일반적으로 OpenSearch는 다른 데이터베이스 보완을 위하여 사용
- OpenSearch를 생성하고 사용하기 위해서는 인스턴스의 클러스터를 생성해야 함(NOT Serverless)
- 자체 쿼리 언어가 있기 때문에 SQL 미지원
- Kinesis Data Firehose, AWS IoT, CloudWatch Logs, 사용자 지정 애플리케이션의 데이터를 주입할 수 있음
- Cognito, IAM과 통합해 제공하는 보안을 통해 저장 데이터 암호화와 전송중 암호화가 가능
- OpenSearch에는 OpenSearch 대시보드(시각화 도구)가 함께 제공됨
4. Amazon EMR(Elastic MapReduce)
- AWS에서 빅데이터 작업을 위한 하둡(Hadoop) 클러스터를 생성하는 데 사용
- 클러스터는 수백 개의 EC2 인스턴스로 구성 가능
- EMR은 Apache Spark, HBase, Presto, Flink등과 함께 사용
- EMR은 상기 서비스에 관한 프로비저닝과 구성을 대신 처리
- 클러스터를 자동으로 확장할 수 있고 spot 인스턴스와 통합되므로 가격 할인 혜택 가능
- ex) 데이터 처리, 머신 러닝, 웹 인덱싱, 빅 데이터 등
- Node Types & Purchasing
- 마스터 노드: 클러스터를 관리하고 다른 모든 노드의 상태를 조정하며 클러스터의 상태를 모니터릭, 지속적으로 실행되는 노드
- 코어 노드: 태스크를 실행하고 데이터를 저장하는 역할, 지속적으로 실행되는 노드
- 태스크 노드(optional): 작업 실행에만 사용되는 노드, 일반적으로 저렴한 Spot Instance로 구성
- 구매 옵션
- On-demand: 신뢰성 있고 예측 가능하며 절대 종료 X
- Reserved(min 1 year): 비용 절감, 가능한 경우에 EMR이 자동으로 예약 인스턴스를 사용, 장기 실행해야하는 마스터 노드와 코어 노드에 적합
- Spot Instances: 저렴하지만 중지될 수 있으므로 신뢰성이 낮음, 태스크 노드에 적합
- EMR에서 배포 시에는 장기 실행 클러스터에서 예약 인스턴스를 사용하거나 임시 클러스터를 사용해 특정 작업을 수행하고 분석 완료 후에 삭제할 수 있음
5. Amazon QuickSight
- 서버리스 머신 러닝 기반 비즈니스 인텔리전스 서비스, 대화형 대시보드 생성 가능
- 빠르고 오토 스케일링이 가능하며 세션별 가격 책정이 가능
- ex) 비즈니스 분석, 시각화 구축, 임시 분석 수행, 비즈니스 인사이트 획득
- RDS, Aurora, Athena, Redshift, S3 등 다양한 데이터 소스에 연결 가능
- Quicksight로 데이터를 가져온 경우 SPICE 엔진을 사용하여 인메모리 계산이 가능
- 엔터프라이즈 에디션: 컬럼 수준 보안(Column-Level Security, CLS) 가능
- QuickSight의 개념
- 대시보드
- 공유할 수 있는 읽기 전용 스냅샷, 분석 결과 공유 가능
- 분석의 구성(필터링, 매개변수, 제어,정렬 옵션 등)을 보존
- 분석 결과나 댇시보드를 사용자 또는 그룹과 공유 가능
- 대시보드를 공유하기 위해서는 대시보드를 게시(publish) 해야함
- 대시보드에 액세스권한이 잇는 사용자는 기본 데이터 열람 가능
- 분석
- 사용자
- Standard versions - 사용자 정의, Enterprise versions - 그룹 정의
- QuickSight의 사용자와 그룹은 IAM 사용자와 다름
- Standard versions - 사용자 정의, Enterprise versions - 그룹 정의
- 대시보드
6. AWS Glue(= ETL)
- 추출(Extract), 변환(Transform), 로드(Load) 서비스를 관리
- 분석을 위해 데이터를 준비하고 변환하는 데 유용
- 완전 서버리스 서비스
- things to know at a high-level
- glue 작업 북마크: 이전 데이터의 재처리 방지
- Glue Elastic Views
- SQL을 사용하여 여러 데이터 저장소에서 데이터를 결합하고 복제
- 커스텀 코드를 지원하지 않으며, Glue가 원본 데이터의 변경사항을 모니터링, 서버리스 서비스
- "가상 테이블" (materialized view) 활용
- Glue DataBrew: 사전에 빌드된 변환을 사용하여 데이터 정리 및 정규화
- Glue Studio: Glue에서 ETL 작업을 생성, 실행 및 모니터링 하기 위한 GUI
- Glue Streaming ETL(Apache Spark Structured Streaming 기반): kinesis Data Streaming, Kafka, MSK(관리형 Kafka)와 호환 가능7. AWS Lake Formation
- 데이터 레이크(Data Lake): 분석 목적을 위해 모든 데이터를 한 곳으로 모아주는 중앙 집중식 저장소
- Lake Formation은 데이터 레이크 생성을 수월하게 해주는 완전 관리형 서비스 - 보통 수개월식 걸리는 작업을 며칠만에 완료할 수 있음
- 데이터 검색, 정제, 변환, 주입을 위한 데이터 레이크 구성
- 데이터 수집, 정제, 이동, 카탈로깅, 복제 등의 복잡한 수동 단계를 자동화하고 기계학습(ML) 변환을 사용하여 중복 데이터를 제거
- 데이터 레이크에서 정형 데이터와 비정형 데이터 결합 가능
- 사전 구성된 소스 블루프린트: S3, RDS, 관계형 및 NoSQL DB 등에서 지원됨
- 애플리케이션에서 행, 열 수준의 세분화된 액세스 제어 가능
- AWS Glue 위에 빌드되는 계층이긴 하지만 Glue와 직접 상호작용 X
8. Kinesis Data Analytics
- for SQL application
- Kinesis Data Analytics는 SQL을 사용하여 Kinesis Data Streams 및 Firehose의 실시간 분석 수행
- Amazon S3의 참조 데이터를 추가하여 스트리밍 데이터를 보강
- 완전 관리형 서비스, 서버 프로비저닝 불필요
- 오토 스케일링 가능
- Kinesis Data Analytices에 전송된 데이터만큼 비용 지불
- Output
- Kinesis Data Streams: 실시간 분석 쿼리에서 스트림을 생성
- Kinesis Data Firehose: 분석 쿼리 결과를 대상으로 전송
- ex) 시계열 분석, 실시간 대시보드, 실시간 지표
- for Apache Flick
- Flink(Java, Scala or SQL)을 사용하여 스트리밍 데이터를 처리하고 분석
- AWS의 관리형 클러스터에서 Apache Flink 애플리케이션 실행 가능
- 컴퓨터 리소스를 자동으로 프로비저닝 할 수 있고, 병렬 연산과 오토 스케일링 가능
- 애플리케이션 백업은 체크포인트와 스냅샷으로 구성
- Apach Flink 프로그래밍 기능 사용 가능
- Flink는 Firehose의 데이터는 읽지 못함 (Firehose에서 데이터를 읽고 실시간으로 분석하려면 SQL 애플리케이션용 Kinesis Data Analytics를 사용해야함)
9. Amazon Managed Streaming for Apache Kafka(Amazon MSK)
- Kafka는 Amazon Kinesis의 대안(둗 서비스 모두 데이터를 스트리밍)
- MSK는 AWS의 완전 관리형 Kafka 클러스터 서비스
- 클러스터 생성, 업데이트, 삭제 가능
- MSK는 클러스터 내 Kafka 브로커 노드와 Zookeepeer 노드를 자동으로 생성하고 관리
- 고가용성을 위해 VPC 클러스터를 최대 3개의 다중 AZ 전역에 배포
- 일반적인 Apache Kafka 장애로부터 자동 복구 기능
- EBS 볼륨에 데이터를 원하는 기간동안 저장 가능
- MSK Serverless
- 용량 관리 없이 MSK에서 Apachee Kafka를 실행할 수 있음
- MSK가 자동으로 리소스를 프로비저닝하고 컴퓨팅 및 스토리지를 확장
Kenisis Data Streams | Amazon MSK |
---|---|
메시지 크기 제한 1mb | 기본적으로 1mb의 메시지 크기, 더 큰 크기로 구성 가능 |
shard를 사용한 데이터 스트리밍 | 파티션을 가진 kafka 주제 |
shard 분할(용량 확장) 및 병합 (용량 축소) | 파티션 추가로 주제 확장만 가능, 파티션 제거 불가능 |
전송중 TLS 암호화 | PLAINTEXT와 전송 중 TLS 암호화 |
저장 데이터 암호화 | 저장 데이터 암호화 |
10. Big Data Ingestion Pipeline
- IoT Core 사용 시 IoT 장치에서 데이터 수집 가능
- Kinesis는 실시간 데이터 수집에 효과적
- Firehose는 데이터를 거의 실시간으로 S3에 전달하는 데 도움이 된다(최저 간격: 1분)
- Lambda는 Firehose를 도와 데이터를 변형
- Amazon S3는 SQS로 알람을 트리거
- Lambda는 SQS에 구독 가능
- Athena는 서버리스 SQL 서비스이며 결과는 S3에 저장
- 보고 버킷에는 분석된 데이터가 포함되어 있으며 AWS QuickSight, Redshift등의 보고 도구에서 사용 가능
LIST
'develop > AWS' 카테고리의 다른 글
[SAA] Monitoring, Audit and Performance: CloudWatch, CloutTrail, AWS Config (0) | 2024.06.23 |
---|---|
[SAA] Machine Learning (0) | 2024.06.22 |
[SAA] Databases (0) | 2024.06.20 |
[SAA] Serverless Architectures (1) | 2024.06.19 |
[SAA] Serverless (1) | 2024.06.18 |