| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 코딩테스트
- 영어
- 여행
- Apache Kafka
- Data Engineering
- hadoop
- 백준
- pyspark
- 개발
- Data Engineer
- 코엑스맛집
- bigdata engineering
- 삼성역맛집
- 알고리즘
- bigdata engineer
- 프로그래머스
- 자바
- BigData
- Iceberg
- Trino
- 코딩
- Linux
- 코테
- java
- apache iceberg
- Kafka
- HIVE
- HDFS
- 맛집
- Spark
- Today
- Total
지구정복
[AWS] DEA-C01 자격증 준비 본문
아래 블로그에서 덤프 링크 도움이 많이 됐습니다 ㅎㅎ
https://blog.naver.com/imaokiro/223328925777
1. 개념 정리
EC2 관련
-AWS Graviton 인스턴스: Graviton 프로세서는 성능 대비 전력 효율이 뛰어나고 비용 효율성이 매우 높아, 클라우드 컴퓨팅 비용 절감에 큰 도움을 줍니다.
웹서버, 컨테이너, 마이크로서비스, 빅데이터, 머신러닝 워크로드 등에서 주로 사용
-EC2 Instance Store 볼륨은 일시적(ephemeral)이며, 이는 EC2 인스턴스가 종료되면 인스턴스 스토어에 저장된 모든 데이터가 손실됨을 의미합니다.
Amazon EBS
-EC2 인스턴스에 연결하여 사용할 수 있는 블록 스토리지 볼륨입니다.
SSD 기반 성능 옵션(gp2, gp3, io1 등) 및 HDD 기반 옵션(st1, sc1) 중 선택
EBS 볼륨의 데이터 백업 및 복원, 다른 리전으로 복제도 가능
Identity and Access Management (IAM)
IAM(Identity and Access Management)는 AWS에서 "누가 어떤 리소스에, 어떤 작업을, 언제, 어떻게 할 수 있는가"를 제어하는 서비스입니다.
✅ IAM을 통해 사용자, 그룹, 역할, 정책을 정의해서 AWS 리소스 접근을 안전하고 세밀하게 제어할 수 있습니다.
IAM은 객체 단위(S3 버킷, prefix 수준) 제어만 지원, column-level 제어는 IAM 정책만으로 구현 불가
| 구성요소 | 설명 |
| IAM 사용자 (User) | 특정 개인의 AWS 계정. 로그인 자격(비밀번호 or 액세스 키) 보유 |
| IAM 그룹 (Group) | 여러 사용자를 하나로 묶은 단위. 그룹에 정책을 적용하면 모든 사용자에 적용됨 |
| IAM 역할 (Role) | 특정 자격이 있는 주체(사용자, 서비스 등)에게 일시적으로 부여하는 권한 |
| 정책 (Policy) | JSON 형식의 권한 정의 문서. “누가 무엇을 어디서 어떻게” 할 수 있는지 정의 |
| 신뢰 정책 (Trust Policy) | 누가 이 역할을 사용할 수 있는지 정의하는 정책 (특히 역할에 적용) |
AWS에서의 S3 암호화 방식 & 키 관리 방식 분류
| 암호화 방식 | 키 관리 주체 | 설명 | 사용 사례 |
| SSE-S3 | AWS (S3가 키 관리) | 가장 기본. 사용자 개입 없음 | 단순 보안 요구 |
| SSE-KMS | AWS KMS (사용자 정의 가능) |
IAM 기반 세부 제어, 로그 기록 가능, IAM 정책을 통해 오직 특정 직원(사용자/역할)만 KMS 키 사용할 수 있게 세밀하게 접근제어가 가능. |
보안 요건 높은 경우 |
| SSE-C | 사용자 (직접 키 제공) | 사용자가 직접 키 제공. AWS는 키 저장 안 함 | 특수 요구 (거의 안 씀) |
| Client-side + CloudHSM |
사용자 + 전용 HSM | AWS CloudHSM에서 키 관리. 애플리케이션에서 직접 암호화 수행 | 고급 보안/규제 준수 |
DSSE-KMS stands for Dual-layer Server-Side Encryption with KMS.
It encrypts the data twice on the server-side, each layer using different AWS KMS keys.
This ensures compliance with regulations requiring multi-layered encryption.
It works with AWS services (like Lambda) that integrate with the S3 PutObject API.
S3 관련
-S3 = hdfs
-S3 스토리지 클래스 간략 정리
| 스토리지 클래스 | 특징 | 고가용성 | 비용 | 용도 |
| S3 Standard | 최고 수준 내구성, 가용성, 빈번한 액세스에 최적 | 있음 | 높음 | 잦은 액세스 데이터 |
| S3 Standard-IA (Infrequent Access) | 자주 안쓰는 데이터를 위한 클래스, 빠른 액세스 가능, 다중 AZ 저장 | 있음 | Standard보다 저렴 | 월 1~2회 액세스 등 ‘드물지만 빠른 액세스’ 필요한 데이터 |
| S3 One Zone-IA | 한 가용 영역(AZ)에만 저장됨, 여러 AZ 수준 고가용성 아님 | 없음 (단일 AZ) | 표준 IA보다 더 저렴 | 복구 가능 데이터, 고가용성 불필요한 데이터 |
| S3 Glacier Flexible Retrieval | 저비용 장기 보관용, 복구시간 수분~시간, 고가용성 | 있음 | 아주 저렴 | 몇 시간 이내 액세스되는 장기저장 데이터 |
| S3 Glacier Deep Archive | 가장 저렴, 복구시간 최대 12시간 이상 걸림, 고가용성 | 있음 | 가장 저렴 | 거의 액세스 안 하는 장기보관 |
-Intelligent-Tiering 이란?
S3가 자동으로 데이터 액세스 패턴을 분석해서, 자주 액세스되지 않는 객체를 더 저렴한 tier로 이동
액세스 빈도에 따라 자동으로 tier 변경
✔ 비용 구조 (기본 tier 기준)
| Tier | 설명 | 액세스 속도 | 가격 |
| Frequent | 자주 접근됨 | 밀리초 | 비쌈 |
| Infrequent | 적게 접근됨 | 밀리초 | 저렴 |
| Archive tiers (옵션) | 설정해야 사용됨 | 느림 | 매우 저렴 |
-S3 Storage Lens
S3 스토리지 렌즈는 계정, 리전, 스토리지 클래스 전반에 걸친 스토리지 사용량 및 활동 추세를 파악할 수 있으며, 실행 가능한 지표와 권장 사항을 제공합니다.
-S3 Lifecycle Policies
S3 수명 주기 정책은 Amazon S3 버킷에 저장된 객체의 수명 주기 관리를 자동화하기 위해 사용자가 정의하는 규칙입니다.
이러한 정책은 객체를 스토리지 클래스 간에 전환하거나 자동으로 만료(삭제)함으로써 비용을 최적화하고 데이터를 효율적으로 관리하는 데 도움을 줍니다.
예시 수명 주기 규칙:
30일 이상 된 객체를 S3 스탠다드 → S3 스탠다드-IA로 전환.
365일 이상 된 객체를 S3 글레이어로 전환.
5년 이상 된 객체를 만료(삭제).
-S3 Event Notification : S3 버킷에서 특정 이벤트(예: 객체 생성, 수정 등)가 발생했을 때 트리거되는 특정 이벤트 발생 시 SNS/SQS/Lambda로 알림 전달
-S3 Select allows you to retrieve only needed parts (columns/rows) of compressed files like GZIP — without downloading the full file.
예시:
10 GB의 CSV 파일이 S3에 저장되어 있고, 이 파일에는 사용자 데이터가 포함되어 있지만 'US'인 사용자만 검색하고 싶다고 가정해 보겠습니다.
전체 파일을 다운로드하는 대신, 다음과 같은 쿼리를 사용하여 S3 Select를 사용할 수 있습니다:
| SELECT * FROM S3Object WHERE country = 'US' |
이렇게 하면 S3는 최소한의 데이터 전송으로 조건에 맞는 행만 반환합니다.
-S3 Versioning을 사용하면 S3오브젝트에 있는 파일들이 여러 개의 버전으로 관리되어 어떤 파일을 삭제하더라도 새로운 버전의 파일이 생기는 것이므로 이전 버전의 파일도 존재하게 된다.
-S3 Object Lambda
Amazon S3의 기능으로, S3 GET 요청에 Lambda 함수를 추가하여 S3에서 반환되는 데이터를 실시간으로 수정하거나 처리할 수 있습니다.
작동 방식:
애플리케이션이 S3 Object Lambda Access Point를 통해 S3에서 객체를 요청하면, 해당 요청이 Lambda 함수를 트리거합니다.
이 Lambda 함수는 객체의 내용을 변환, 필터링, 민감 정보 삭제(redact), 또는 수정한 후 반환합니다.
Amazon Comprehend(개인 식별 정보(PII) 감지 API)와 통합하면 객체에 접근할 때 PII를 동적으로 감지하고 삭제하거나 난독화할 수 있습니다.
사용 사례:
동적 데이터 변환: 예를 들어, PII(개인 식별 정보)를 실시간으로 삭제.
형식 변환: 읽기 중 CSV를 JSON으로 변환.
민감 데이터 필터링 또는 마스킹: 데이터의 민감한 부분을 가림.
요청자 기반 콘텐츠 맞춤화: 요청자에 따라 콘텐츠를 사용자 정의.
핵심 포인트:
S3 Object Lambda는 S3와 긴밀히 통합되어 있으며, 객체를 읽는 동안 실시간으로 수정하는 데 특화되어 있습니다.
EMR
-EMR(Elastic MapReduce) : 하둡클러스터로 hadoop, Spark, Hbase, Flink, Oozie, Pig등 오픈소스 빅데이터 툴들을 실행가능
서버리스는 아니지만 관리형 클러스터로 운영부담 줄일 수 있음
Amazon EMR은 Hive 메타스토어를 호스팅하고 온프레미스 Hive 메타스토어를 Amazon EMR로 마이그레이션하는 데 사용할 수 있습니다.
AWS Glue
-Glue = Spark기반의 데이터처리 / Spark로 ETL배치 / 작은 airflow, oozie
-실행방식
Standard Execution : Job이 즉시 실행
Flex Execution : 비용 효율적인 타이밍에 맞춰서 Job실행(딜레이 존재)
Spot Instance는 비용절감에 유리하나 중단될 수 있으며, 이로인해 job이 실패할 수 있음.
-Glue Data Catalog는 AWS Glue의 메타데이터 저장소로, 데이터 구조, 데이터 위치, 데이터에 대한 다른 정보(예: 데이터 형식, 데이터 스키마 등)를 저장하는 역할을 합니다.
| 항목 | 설명 |
| 역할 | 중앙 메타데이터 저장소 (S3, Redshift, RDS 등과 연결) |
| 연동 서비스 | Athena, EMR, Redshift Spectrum 등 |
| 데이터 타입 | JSON, Parquet, CSV, ORC 등 |
| 특징 | 서버리스, 자동 파티션 인식, 크롤링 가능 |
| Hive 연동 | Hive → Glue 메타데이터 마이그레이션 지원 |
-AWS Glue Trigger는 특정 이벤트나 스케줄링에 따라 AWS Glue 작업을 시작하는 자동화된 메커니즘입니다.
트리거는 특정 시간에 Glue 작업을 실행하거나, 특정 조건이 충족될 때, 또는 다른 작업이 완료된 후 실행하도록 설정할 수 있습니다.
-Glue Schema Registry는 스트리밍 데이터나 JSON/Avro/Protobuf 형식의 데이터를 처리할 때, 변경될 수 있는 데이터 구조(스키마)를 안전하게 관리하는 서비스입니다.
즉, "이 데이터가 어떤 구조를 가져야 하는지"를 정의하고, 데이터가 그 구조를 따르는지 검사하며, 버전 관리까지 해주는 서비스입니다.
-Glue DataBrew: GUI기반 데이터 시각화
AWS Glue DataBrew는 사용자가 웹에서 코드 작성 없이 시각적으로 데이터를 준비하거나 정제, Cleansing 할 수 있도록 도와준다.
NEST_TO_MAP 변환은 여러 컬럼을 키-값 쌍의 맵 구조 (JSON 형태)로 병합
NEST_TO_ARRAY는 단순히 값을 배열 형식으로 묶음
-AWS Glue Scale up: Glue 작업에 사용하는 인스턴스 크기 확장 (scale up)
-Glue Studio안에
Detect PII transform : Detect PII transform은 PII 식별(profile)뿐 아니라 가명처리 전용 기능(obfuscate)도 포함
Glue Data Quality : 주로 데이터 품질 점검과 프로파일링에 초점을 맞춘 서비스
-AWS Glue의 내장 ML 기반 변환 기능인 FindMatches transform은 데이터셋에서 중복 및 유사 레코드를 자동으로 탐지 및 매칭 가능하고, 중복된 데이터도 변환시켜준다.
-> 두 테이블의 컬럼명이 다르지만 데이터가 동일할 경우 이를 식별해서 매칭시켜줄 수 있다.
-Glue Crawler는 메타데이터를 자동으로 수집하고 추가하는 데 사용된다.
데이터 스키마 추출용으로 주로 새 데이터 또는 데이터포맷 변동 시 활용, 정기적 또는 수동 실행 가능
You can run Glue crawlers either:
On a schedule (time-based).
On demand (triggered by an event like SQS).
S3 파일의 스키마와 파티션을 자동 분석 후 Glue Data Catalog 생성
AWS Glue 크롤러는 distinct schema or distinct combination of file format, compression, and folder path의 고유한 조합마다 별도의 테이블을 만듭니다.
만약 AWS Glue 크롤러가 하나의 테이블만 만들게하고 싶다면 위 조합들을 통일시켜줘야 한다.
또한 S3의 prefix도 통일하면 하나의 테이블로 만들어질 가능성이 크다.
AWSGlueServiceRole는 Glue에서 S3접근 및 Data Catalog 갱신에 필요한 권한.
크롤링 작업 이후 크롤링한 테이블 메타데이터를 저장할 Data Catalog내 데이터베이스를 지정해야 합니다.
AWS Glue 크롤러는 다양한 데이터 소스(RDS, Redshift, S3)를 자동으로 크롤링하여 스키마 변경을 감지하도록 설정할 수 있습니다.
또한 크롤러는 반정형 데이터(예: S3의 JSON 및 XML 파일)의 스키마를 추론하여 이 메타데이터를 AWS Glue Data Catalog에 저장합니다.
크롤러를 주기적으로 실행하도록 예약하면 Data Catalog의 메타데이터가 정기적으로 업데이트되어 데이터 소스의 변경 사항과 동기화된 상태를 유지합니다.
-AWS Glue Workflow(=workload): 데이터 준비 및 ETL(Extract, Transform, Load) 프로세스를 자동화해줌
하지만 직접적으로 다른 AWS 서비스(Lambda, Step Functions, Kinesis 등)를 호출하는 기능은 내장되어 있지 않아서 Glue잡만 워크플로할 수 있다.
Crawler와 Job을 연결해 순차 실행하고 관리할 수 있다.
-Glue의 Job bookmarks는 증분되는 데이터를 적재할 수 있도록 도와주는데 이미 처리된 데이터들을 북마크해서 오로지 새로운 데이터나 수정된 데이터만 처리되도록 도와준다.
그러나 bookmarks는 작업 완료 후 명시적으로 커밋해야 합니다.
커밋이 완료되지 않으면 상태/북마크가 저장되지 않아 이전 모든 객체가 다시 처리됩니다.
-AWS Glue Data Quality API는 AWS Glue의 데이터 품질 평가 및 모니터링 기능을 지원하는 API입니다.
이 API를 사용하면 사용자가 데이터 품질 규칙을 정의하고 관리가능
(AWS Glue Data Quality allows you to create custom rulesets.)
사용자는 특정 데이터 세트에 대해 필요한 품질 기준을 정의할 수 있습니다.
예를 들어, 누락된 값(missing value), 중복 항목, 특정 값의 유무, empty file 등을 체크하는 규칙을 설정할 수 있습니다.
AWS Glue Data Quality API는 AWS Glue ETL 작업과 원활하게 통합되어, ETL 과정 중에 데이터 품질 검사를 자동으로 수행할 수 있습니다.
사용 사례
데이터 파이프라인 관리: ETL 작업 중 데이터 품질을 실시간으로 평가하여 데이터 품질 문제를 조기에 발견하기.
데이터 전환: 데이터 복사 또는 마이그레이션 시 데이터의 매핑과 규칙 적용을 통해 데이터 품질 보장.
확장 가능성: 대규모 데이터 환경에서도 자동화된 품질 검사를 통해 효율적으로 데이터 품질을 관리.
Lambda 함수를 사용하여 AWS Glue Data Quality API를 호출하여 데이터 품질 규칙을 한 번에 수정할 수 있습니다.
API 호출을 통해 자동화된 방식으로 규칙을 업데이트하면, 많은 수의 테이블을 효율적으로 관리할 수 있습니다.
data quality rule들은 API(boto3 또는 CLI), AWS Glue 콘솔 또는 SDK를 통해 관리할 수 있습니다.
많은 테이블에 대해 대량 편집이나 변경 자동화를 수행할 때는 API를 사용하여 프로그래밍 방식으로 처리하는 것이 가장 좋습니다.
AWS Glue Data Quality is primarily designed for data validation and quality checks, not for masking or obfuscation.
-AWS Glue 데이터 품질 변환을 지원합니다:
- IsComplete 규칙: 지정된 열에서 NULL 값을 자동으로 확인.
- ReferentialIntegrity 규칙: 한 데이터셋의 값이 다른 데이터셋의 키(외래 키 확인)와 일치하는지 확인.
이 규칙들은 Data Quality Definition Language(DQDL)로 작성되며, Glue ETL 작업에 기본적으로 통합됩니다.
이 방법은 선언형이며, 맞춤 코드를 필요로 하지 않고 Glue 파이프라인에 직접 통합됩니다.
The data engineer needs a solution to determine whether a specific set of values in the city and state columns of the primary dataset exactly match the same specific values in the reference dataset.
-> Referentiallntegrity “city,state” “reference.{ref_city,ref_state}” = 1.0
-AWS Glue Partition Index는 Amazon S3의 파티션된 데이터셋에서 데이터 접근을 최적화하는 기능으로, Amazon Athena, Amazon Redshift Spectrum, 또는 AWS Glue 자체에서 AWS Glue Data Catalog의 파티션 관리와 접근 방식을 개선합니다.
시간 시계열 데이터나 대용량 데이터를 다룰 때 파티션 수가 많아지면 모든 파티션을 스캔하는 과정에서 쿼리 성능 병목 현상이 발생할 수 있습니다.
Partition Indexing은 특정 파티션에 대한 타겟 쿼리를 가능하게 하여 쿼리 계획 시간을 단축하고 쿼리 성능을 향상시킵니다.
Partition Indexing 작동 방식
- Partition Indexing은 AWS Glue에서 파티션에 대한 메타데이터를 더 최적화된 형식으로 저장합니다.
- 이 메타데이터는 쿼리에 관련된 파티션을 빠르게 식별하여 모든 파티션을 스캔하지 않아도 됩니다.
- 파티션 필터링: 인덱스가 설정되면 파티션 필터링이 더 효율적으로 이루어집니다:
- 쿼리에 관련된 파티션만 스캔.
- 쿼리 실행 시 로드해야 하는 파티션 수를 줄여 성능 향상.
- Amazon Athena 및 AWS Glue와의 자동 통합:
- Partition Indexing은 Athena 쿼리와 AWS Glue ETL 작업에 특히 유용합니다.
파티션 인덱스가 있으면 Amazon S3에 저장된 데이터에 대해 더 빠른 조회가 가능합니다.
- Partition Indexing은 Athena 쿼리와 AWS Glue ETL 작업에 특히 유용합니다.
AWS Glue에서 Partition Indexing 활성화 방법
AWS Glue 자체에는 Partition Indexing을 "활성화"하는 전용 명령이 없지만, AWS Glue 크롤러를 설정하거나 데이터 카탈로그를 관리할 때 파티션 최적화 및 필터링을 통해 이 기능을 간접적으로 활용할 수 있습니다.
다음은 진행 방식입니다:
- AWS Glue 크롤러가 데이터를 스캔하여 Glue Data Catalog에 파티션을 생성.
- 파티션된 테이블을 설정(Glue Data Catalog 사용)할 때, 데이터에 기반한 효율적인 파티션 전략과 파티션 필터를 사용하여 쿼리를 최적화.
- Glue 카탈로그에 파티션이 생성된 후, Athena 또는 Redshift Spectrum에서 쿼리를 실행할 때 파티션 필터를 사용하여 관련 파티션만 스캔하도록 설정, 이는 인덱싱 개념을 간접적으로 활용.
AWS Athena 예시: Amazon S3에 저장된 데이터를 쿼리하고, 데이터가 파티션(예: 연도, 월, 일로 파티션)된 경우, 파티션 인덱싱 기법을 사용하여 쿼리를 최적화할 수 있습니다.
|
-- 파티션 필터링을 사용한 Athena 쿼리 예시
SELECT *
FROM my_table
WHERE year = '2023' AND month = '01' AND day = '01';
|
이 쿼리는 파티션 필터링과 인덱싱 덕분에 모든 파티션을 스캔하지 않고 2023/01/01 파티션만 스캔합니다.
-Glue DynamicFrame(similar to an Apache Spark DataFrame) API에는 grouped_dynamic_frame라는 메서드가 포함되어 있습니다.
이 메서드는 많은 작은 파일들을 더 큰 논리적 단위로 그룹화할 수 있습니다.
작은 파일들을 많이 여는 것에 따른 오버헤드를 줄여줍니다.
더 크거나 더 많은 작업자 없이도 성능을 향상시킵니다.
AWS Glue 내에서 Spark 작업을 최적화합니다.
자원 증가 없이 작업 속도를 개선하기 때문에 가장 비용 효율적입니다.
이 기능은 AWS Glue ETL의 기본 기능입니다.
-AWS Glue의 동적 프레임 파일 그룹화 옵션은 AWS Glue에서 데이터를 처리할 때 여러 개의 작은 파일을 그룹화하여 더 큰 파일로 통합할 수 있게 해주는 기능입니다.
이 기능은 데이터 파이프라인의 성능, 특히 대량의 작은 파일을 처리할 때 중요한 최적화입니다.
-Glue는 실시간 데이터 처리 부적절
RedShift
-Redshift = Hive
-Amazon Redshift supports logging user and connection activities.
Logs can be delivered to an Amazon S3 bucket.
-Redshift의 두 가지 사용방식
1. Redshift Provisioned Cluster는 AWS에서 제공하는 완전관리형 데이터 웨어하우스입니다.
특히 “Provisioned”란 사용자가 인스턴스 수, 타입을 직접 지정하는 고정형 클러스터입니다.
2. Redshift Serverless (서버리스 방식):
사용자가 클러스터 구성 필요 없음
쿼리 실행 시 자동으로 리소스 할당
사용량 기반 과금 (RPU – Redshift Processing Unit)
자동 확장 및 축소
요즘은 Redshift Serverless가 많이 사용되며, 특히 데이터 레이크 + 분석 + 비용 최적화에 매우 적합
-Redshift Data Sharing(데이터 공유): 두 Redshift 클러스터 간 실시간 데이터 공유 기능, 혹은 Lake Formation과도 공유가능
공유자(Producer) 클러스터에서 데이터를 공유하면, 소비자(Consumer) 클러스터가 자체 클러스터 내에 데이터 복사본을 만들지 않고도 조회할 수 있습니다.
데이터 복제가 필요 없어서, 데이터 복사 및 동기화 비용이 없음
Amazon Redshift 데이터 공유 기능을 사용하면 동일한 AWS 계정 내 또는 AWS Organizations 내의 Redshift 클러스터 간에 Redshift의 실시간 데이터를 공유할 수 있습니다.
Redshift data sharing does not support sharing views (only base tables can be shared via data shares).
-Redshift Spectrum : Amazon S3에 저장된 데이터를 Redshift 클러스터로 복사하지 않고도 직접 쿼리할 수 있게 해주는 서비스
이를 사용하려면 어찌됐든 Redshift cluster가 필요하다.
S3 Glacier Flexible Retrieval로는 쿼리할 수 없고, 오로지 표준 S3로만 쿼리가능
-Concurrency Scaling은 Amazon Redshift의 기능으로, 높은 워크로드를 관리하기 위해 쿼리 급증 시 일시적인 컴퓨팅 용량을 자동으로 추가하여 피크 시간 동안 쿼리 성능을 향상시킵니다.
Redshift에서 Concurrency Scaling을 활성화하는 방법:
- Workload Management (WLM): Concurrency Scaling은 Redshift 클러스터의 Workload Management (WLM) 큐 수준에서 제어됩니다.
- 특정 WLM 큐에 대해 Concurrency Scaling을 활성화해야 합니다. 각 WLM 큐는 피크 쿼리 시간 동안 추가 워크로드를 처리하기 위해 확장되도록 구성할 수 있습니다.
-Amazon Redshift의 외부 스키마는 Redshift 자체에 저장되지 않은 외부 데이터를 참조하는 스키마입니다.
이를 통해 Redshift는 Amazon S3와 같은 외부 소스에 있는 데이터를 로컬 Redshift 테이블에 저장하지 않고도 접근하고 쿼리할 수 있습니다.
Redshift에서 외부 스키마는 주로 Redshift Spectrum과 함께 사용되며, 이는 데이터를 Redshift로 로드하지 않고 Amazon S3에 직접 저장된 데이터를 쿼리할 수 있게 해주는 기능입니다.
🔧 작동 방식:
- Redshift에서 CREATE EXTERNAL SCHEMA 명령을 사용하여 외부 스키마를 생성.
- Redshift Spectrum을 통해 Amazon S3와 같은 외부 데이터 소스에 연결.
- Amazon S3의 데이터는 Redshift Spectrum이 지원하는 형식(예: CSV, Parquet, ORC, Avro)이어야 함.
- 외부 스키마 생성 후, 외부 소스의 데이터를 참조하는 외부 테이블을 생성.
🛠️ Amazon Redshift에서 외부 스키마 생성 예시:
|
-- 1단계: 외부 스키마 생성
CREATE EXTERNAL SCHEMA spectrum_schema
FROM data catalog
DATABASE 'spectrum_db'
IAM_ROLE 'arn:aws:iam::your-account-id:role/YourRedshiftRole'
CREATE EXTERNAL DATABASE IF NOT EXISTS;
-- 2단계: Amazon S3의 데이터를 참조하는 외부 테이블 생성
CREATE EXTERNAL TABLE spectrum_schema.sales_data (
transaction_id INT,
product_id INT,
quantity_sold INT,
sale_price DECIMAL(10, 2),
transaction_date DATE
)
STORED AS PARQUET
LOCATION 's3://your-bucket-name/sales_data/';
|
- 1단계: Redshift에서 외부 스키마(spectrum_schema)를 생성하여 AWS Glue와 같은 외부 데이터 카탈로그 또는 S3 데이터에 직접 연결.
- 2단계: S3 위치(sales_data)에 저장된 데이터를 참조하는 외부 테이블을 정의하여 데이터를 Redshift로 이동하지 않고도 쿼리 가능.
📊 외부 스키마를 사용하는 경우:
- 데이터 레이크: Amazon S3에 대량의 원시 데이터를 저장하고 Redshift로 직접 쿼리해야 할 때.
- 대용량 파일 또는 반정형 데이터: S3에 JSON, Parquet, ORC 형식의 대용량 데이터를 Redshift의 구조화된 데이터와 조인하고자 할 때.
- Redshift 스토리지 비용 절감: 비용 문제로 모든 데이터를 Redshift에 저장하지 않고 쿼리 기능이 필요할 때.
🚀 실시간 데이터 수집 사용 사례: 외부 스키마는 Kinesis Data Streams 또는 S3에서 데이터를 지속적으로 수집하고 쿼리하여 Redshift로 데이터를 이동하지 않고도 실시간 인사이트를 제공할 수 있습니다.
-시스템 테이블
| 시스템 테이블 | 역할 | 성능 이상 감지 기능 |
| STL_ALERT_EVENT_LOG | 옵티마이저 및 실행 시 경고/이상 이벤트 기록 | 예 |
| STL_USAGE_CONTROL | 쿼리 자원 제한 및 WLM 제어 로그 | 아니오 |
| STL_QUERY_METRICS | 쿼리 실행 관련 정밀 성능 메트릭 | 아니오 (모니터링 용) |
| STL_PLAN_INFO | 쿼리 실행 계획 세부정보 | 아니오 |
-Materialized Views는 쿼리의 결과를 물리적으로 저장한 것입니다.
이는 데이터베이스에서 자주 쿼리되는 복잡한 쿼리의 성능을 향상시켜줍니다.
물리적 뷰(Materialized Views)를 자동으로 새로 고침으로 설정(Auto Refresh)하면, 데이터에 대한 지속적인 업데이트가 가능합니다.
이를 통해 사용자는 최신 데이터를 손쉽게 분석할 수 있습니다.
-Query Editor v2는 웹 기반의 SQL 쿼리 편집기, 잡 스케줄링도 설정 가능
-Distribution Style
| 분산 방식 | 설명 | 분산 키 사용 여부 |
| AUTO | Redshift가 자동으로 선택 | ❓ 필요 시 사용 |
| EVEN | 데이터를 균등하게 분산 (Round-robin) | ❌ 사용 안 함 |
| KEY | 특정 컬럼 값을 기준으로 해시하여 분산 | ✅ Distribution Key 사용 Distinct개수가 많은 것(dimention이 높음)에 사용해야 data skrew가 생기지 않음 |
| ALL | 모든 노드에 전체 데이터 복제, 작은 테이블에 유리 |
❌ 사용 안 함 (모든 노드에 복사됨) |
Key방식에서 Distribution Key: Amazon Redshift에서 분배 키는 클러스터의 노드 간 데이터 분배 방식을 결정합니다.
분배 키를 잘못 선택하면 데이터 스큐(data skew)가 발생하여 특정 노드가 다른 노드보다 더 많은 데이터를 처리하게 될 수 있습니다.
-VACCUME 관련
Redshift는 데이터를 실제로 물리적으로 삭제하지 않고 "숨기기"만 합니다.
→ 이 숨겨진 공간은 계속 차지하고 있어서 디스크가 점점 가득 차게 됩니다.
→ VACUUM을 수행하면:
숨겨진(삭제된) row를 제거하고 정렬 상태를 재조정하여 쿼리 성능 향상 + 저장 공간 확보 효과가 있습니다.
VACUUM 명령어 종류
| 명령어 | 설명 | 정렬 여부 | 삭제 공간 회수 | Interleaved 지원 |
| VACUUM FULL | 삭제 공간 회수 + 재정렬 | ✅ | ✅ | ❌ |
| VACUUM DELETE ONLY | 삭제 공간만 회수 | ❌ | ✅ | ✅ |
| VACUUM SORT ONLY | 정렬만 수행 (공간 회수 안 함) | ✅ | ❌ | ❌ |
| VACUUM REINDEX | Interleaved Sort Key 전용 정렬 복구 | ✅ | ✅ | ✅ |
| VACUUM RECLUSTER | 정렬 및 클러스터링 수행 | ✅ | ✅ | ✅ |
Sort Key의 두 종류
| 종류 | 설명 | 쿼리 최적화 대상 |
| Compound Sort Key | 열들을 순차적으로 정렬 (왼쪽 열 우선) | WHERE 절이 첫 번째 열에 조건이 있는 쿼리 |
| Interleaved Sort Key | 여러 열 모두를 동등한 우선순위로 정렬 | -WHERE 절에서 여러 열을 자주 기준으로 삼을 때 -쿼리 패턴이 다양할 때 -특정 열 하나만 자주 조회되는 경우는 Compound가 더 좋음 |
-COPY 명령은 S3에서 Redshift로 데이터를 로드하는 데 사용되며, 데이터를 언로드하는 데 사용되지 않습니다.
UNLOAD 명령은 Redshift에서 S3로 데이터를 내보내는 데 사용됩니다.
-Amazon Redshift Federated Query는 Redshift의 기능으로, Redshift 클러스터 외부에 저장된 데이터, 특히 다음 AWS 데이터베이스에 대해 SQL 쿼리를 실행할 수 있게 합니다:
- Amazon Aurora PostgreSQL
- Amazon RDS for PostgreSQL
- Amazon RDS for MySQL
- (기타 지원되는 소스)
이를 통해 데이터를 수동으로 이동하거나 복사하지 않고도 이러한 데이터베이스의 실시간 운영 데이터와 Redshift에 저장된 데이터를 단일 쿼리로 결합할 수 있습니다.
-Amazon Redshift Streaming Ingestion은 Amazon Kinesis Data Streams 및 Amazon Managed Streaming for Apache Kafka(Amazon MSK)와 같은 스트리밍 데이터 소스에서 Amazon Redshift로 데이터를 지속적이고 거의 실시간으로 인제스트할 수 있는 네이티브 기능입니다.
사용법:
스트리밍 데이터를 수신할 Redshift 테이블을 설정합니다.
Kinesis Data Stream 또는 MSK 토픽에 대한 Redshift 스트리밍 인제스천 연결을 구성합니다.
스트리밍 데이터를 직접 또는 물리화 뷰를 통해 쿼리하기 시작합니다.
AWS 관리 콘솔 또는 CloudWatch에서 인제스천 지표를 모니터링합니다.
-Amazon Redshift ML은 SQL을 통해 직접 ML 모델을 생성, 훈련, 배포할 수 있게 합니다.
Redshift 내에서 실시간 예측을 지원하므로 재고 추천(Inventory recommandation)과 같은 사용 사례에 적합합니다.
Amazon Redshift는 SQL의 CALL 문을 사용하여 SageMaker 엔드포인트를 호출하는 것을 지원합니다.
이를 통해 SQL 쿼리 내에서 실시간 SageMaker 모델을 활용하여 예측을 수행할 수 있습니다.
-Amazon Redshift introduced the SUPER data type, which allows storing semi-structured data, such as JSON
Athena
-Athena = Trino
Athena는 NoSQL 데이터베이스를 데이터 소스로 사용할 수 없다.
Athena is not a data warehouse but a query service over S3.
-Amazon Athena Federated Query : 다양한 데이터 소스에 대해 실시간으로 쿼리 및 조인 가능, 여러 데이터 소스에 있는 데이터를 분산 쿼리로 처리하므로 작업에 따라 비용 최적화 가능
(다양한 소스의 예시: Amazon DynamoDB, Amazon RDS, Amazon Redshift, Amazon S3, Glue Catalog, Hive Metastore)
-Partition projection은 Athena가 Glue Data Catalog에서 실제 파티션 정보를 읽는 대신, 파티션 경로 정보를 미리 정의된 규칙(예: 접두사 패턴)으로 예측하는 방식입니다.
Glue Data Catalog에 파티션 메타데이터를 저장하는 대신, Athena는 제공된 파라미터에 기반하여 동적으로 파티션을 계산합니다.
다음과 같이 프로젝션 구성(config)를 정의합니다 — 기본적으로 Athena에 다음을 안내합니다:
| ALTER TABLE my_table SET TBLPROPERTIES ( 'projection.enabled' = 'true', 'projection.year.type' = 'integer', 'projection.year.range' = '2019,2024', 'projection.month.type' = 'integer', 'projection.month.range' = '1,12', 'projection.day.type' = 'integer', 'projection.day.range' = '1,31', 'storage.location.template' = 's3://my-bucket/logs/year=${year}/month=${month}/day=${day}/' ); |
이 방식으로 Athena는 Glue 메타데이터 호출 없이도 파티션 목록을 동적으로 생성할 수 있습니다.
-Athena workgroup은 사용자 쿼리를 효율적으로 조직하고 관리, 여러 사용자가 쿼리를 실행하는 경우 work group을 통해 쿼리들을 관리하고 모니터링 가능
뿐만 아니라 쿼리 실행을 논리적으로 분리하고 모니터링/제한/비용관리/보안정책을 적용할 수 있게하는 단위이다.
Athena는 Spark와 통합가능하다.
When workgroup's usage is high, your queries may be queued, waiting for capacity to become available.
By enabling provisioned capacity, you reserve dedicated query processing slots (DPU — Data Processing Units) for a specific workgroup.
-Athena Query Result Reuse
동일 쿼리 실행 시 결과 캐시 활용, 설정에서 Query result reuse 옵션 활성화
-Athena의 data source 유형:
- Amazon S3: Athena 쿼리의 주요 데이터 소스로 S3에 저장된 데이터.
- AWS Glue Data Catalog: S3에 저장된 데이터에 대한 메타데이터가 Glue Data Catalog에 저장됨.
- 외부 데이터 소스: Athena의 연합 쿼리(Federated Query) 기능을 사용하여 Amazon DynamoDB, Amazon RDS와 같은 외부 소스의 데이터도 쿼리 가능.
-WITH NO DATA는 Athena에 스키마는 생성하되 데이터 행의 삽입은 건너뛰도록 명시적으로 지시하는 것입니다.
Kinesis
-Kinesis = Kafka
-Amazon Kinesis 에이전트는 일반적으로 서버(예: 로그 파일)에서 데이터를 수집하여 Kinesis로 전송하는 데 사용됩니다.
-Kinesis firehose : 실시간 스트리밍 데이터를 S3, Redshift, Elasticsearch Service, Splunk 등으로 저장시켜주는 서비스.
1. serverless 서비스이다.
2. 작은 데이터의 경우 데이터 변환작업이 필요하다면 수집중에 Lambda를 호출해서 사용할 수 있다.
3. 다양한 포맷으로 저장할 수 있다. (json, parquet, orc)
Firehose의 기본 버퍼 간격은 300s.
주로 Log데이터 수집, IoT 데이터, 클릭데이터, 웹 데이터 등의 수집에 사용된다.
그냥 kinesis 는 그냥 실시간 데이터 수집만할뿐 목적지 시스템에 저장시켜주진 않는다.
또한 Firehose에서 Timestream database 으로 데이터 운송 미지원
-Kinesis Data Streams는 내장적으로 Splunk로 직접 전송하는 기능이 없음. 연동하려면 코드를 추가로 구현
-The Kinesis Client Library (KCL) is a Java library provided by Amazon Web Services (AWS) that simplifies the process of building applications that consume data from Amazon Kinesis streams.
-The Kinesis Producer Library (KPL) is a client library provided by Amazon Web Services (AWS) for sending large amounts of data to Amazon Kinesis Data Streams efficiently.
Flink
-Flink = 실시간 스트림 데이터 분석, 복잡한 변환, 다양한 윈도우 집계시 주로 사용
AWS Lambda
-AWS Lambda = 코드(함수)를 업로드하면 AWS가 서버가 없어도 코드를 실행해줌
Lambda함수는 AWS서비스에서 발생하는 이벤트에 따라 호출된다.
S3에 파일 업로드될 때, DynamoDB에 데이터 변경될 때, API Gateway호출시, S3 이벤트 수신 시 Glue 워크플로 호출 가능 등등
-Lambda는 최대 실행 시간이 15분 제한이 있다.
-Lambda는 AWS 내부에서 IP가 동적이므로 IP 기반 허용은 어렵고, 보안 그룹을 통한 허용이 보통
-Lambda Layers : 공통 코드(예: 라이브러리, 헬퍼 스크립트 등)를 Lambda 함수와 분리하여 재사용할 수 있게 해주는 기능.
-Provisioned Concurrency는 Lambda 함수의 "워밍업" 상태를 유지하여, 호출 시 생기는 지연(콜드 스타트 시간)을 줄여 줍니다.
일반적으로 Lambda 함수는 일정 기간 호출되지 않으면 함수가 비활성화되어 첫 호출 시 함수 초기화에 시간이 걸립니다(콜드 스타트).
Provisioned Concurrency를 설정하면 지정한 수만큼 Lambda 함수 인스턴스를 미리 활성화해 두어 빠른 응답이 가능하게 만든 옵션입니다.
AWS Lake Formation
-AWS Lake Formation은 AWS에서 제공하는 데이터 레이크 구축 및 보안 관리 서비스입니다.
여러 데이터 소스(S3, Glue 카탈로그 등)를 통합하여 한 곳에서 데이터 카탈로그 관리, 보안, 데이터 액세스 제어를 할 수 있습니다.
중앙집중식 데이터 카탈로그 관리: 다양한 데이터 소스를 하나의 카탈로그로 통합 관리
세밀한 권한 관리 (Fine-grained access control): 테이블, 열, 행 수준 권한 설정 가능 / 데이터 필터링 기능으로 특정 조건(예: 리전, 부서, 역할)에 따라 데이터 접근 제한
데이터 위치(Location) 등록 및 관리: S3 경로나 기타 데이터 저장 위치를 등록해 보안 및 접근 권한 부여
직관적인 보안 정책 설정: 데이터 접근 권한 정책을 AWS IAM 역할, 사용자 등에 매핑하여 관리
보안 감사와 추적: 누가 언제 어떤 데이터에 접근했는지 로그 기록
Lake Formation은 Glue 카탈로그 위에서 동작하며, 보안과 세부 권한 관리를 추가하여 전체 데이터 레이크를 안전하게 운영하게 함
| AWS Lake Formation 구조 | 설명 |
| 구성요소 | S3, Glue Data Catalog |
| 데이터 위치 (Location) | S3 버킷 또는 경로. 데이터 작업의 대상으로 등록됨 |
| 데이터베이스 | 카탈로그 내 논리적 데이터베이스 단위 |
| 테이블 | 데이터베이스 내의 테이블, 메타데이터 관리 |
| 데이터 필터 (Data Filter) | 행/열 단위 데이터 접근 통제 규칙 설정 |
| 권한 | 데이터 위치, 데이터베이스, 테이블 등에 대한 읽기/쓰기 권한 등 |
-AWS Lake Formation FindMatches는 고유 식별자가 없을 수 있는 레코드를 식별하고 중복 제거하기 위해 특별히 설계된 내장 변환 기능입니다.
이 기능은 정의된 기준에 따라 일치 및 유사성을 찾기 위해 머신 러닝을 사용하여 다양한 방식으로 일치하는 레코드를 식별할 수 있도록 합니다.
-주요구성요소
필수: S3, Glue Data Catalog
권한·정책: Lake Formation Console(자체 UI), IAM
분석/쿼리: Athena, Redshift Spectrum, EMR
ETL: Glue ETL
BI: QuickSight
모니터링: CloudTrail
Boto3
-Boto3 : AWS서비스들을 파이썬에서 조작하기 위한 SDK(소프트웨어 개발키트)
EC2 시작/중지, S3에 파일 업로드/다운로드, Athena쿼리 실행 등등
AWS Step Functions
AWS Step Functions : 여러 개의 AWS 서비스나 작업(예: Lambda 함수 실행, Glue 작업 시작, API 호출, EMR 작업 호출 및 연결 등)을 순서대로 정해진 흐름대로 자동으로 실행하고 관리하도록 도와주는 서비스
-Step Functions 상태(State) 유형 간단 정리
| 상태 유형 | 설명 | 적용 사례 |
| Parallel state | 복수의 서로 다른 작업을 병렬로 수행할 때 사용 | 분기된 여러 다른 경로를 동시에 실행 |
| Choice state | 조건에 따라 흐름을 분기하는 상태 | 분기 결정 및 경로 선택 |
| Map state | 배열 내 아이템 각각에 대해 동일한 작업을 병렬 또는 순차적으로 반복 실행 | 배열의 각 요소를 처리하는 루프 형태의 병렬 처리 |
| Wait state | 일정 시간 대기 | 지정 시간만큼 대기 후 다음 상태 실행 |
AWS Data Exchange
AWS Data Exchange is a service that makes it easy to find, subscribe to, and use third-party data in the cloud.
It enables organizations to securely and efficiently discover, subscribe to, and manage data products from various data providers without complex data ingestion processes.
AWS Data Exchange 작동 방식:
1. 데이터 제공자가 데이터 세트를 게시합니다 — 이는 원시 데이터 파일, 분석 모델 또는 스트리밍 데이터일 수 있습니다.
2. 구독자가 관심 있는 데이터 세트를 찾아 구독합니다.
3. 구독한 데이터 세트는 다음과 같이 제공됩니다:
구독자가 제어하는 Amazon S3 버킷으로의 데이터 내보내기, 또는
프로그래밍 방식으로 데이터에 접근할 수 있는 API 호출.
구독자는 최소한의 설정으로 이 데이터를 기존 애플리케이션이나 분석 워크플로우와 통합합니다.
예제 사용 사례:
미디어 회사가 제3자 청중 행동 데이터를 활용하여 개인화된 추천을 개선합니다.
금융 기관이 거래 알고리즘을 강화하기 위해 시장 데이터에 구독합니다.
헬스케어 조직이 연구를 위해 환자 결과 데이터 세트에 접근합니다.
소매업체가 마케팅 최적화를 위해 인구통계학적 또는 위치 정보 데이터를 통합합니다.
AWS DataSync
-AWS DataSync = 온프레미스 스토리지와 AWS S3간에 데이터 빠르고 안전하게 전송(스케줄링, 증분데이터 전송지원, 다양한 데이터 소스 지원, TLS통한 전송 암호화 및 IAM권한관리 지원)
다른 리전에 있는 AWS Services끼리도 데이터 전송이 가능하다. (예: 다른 리전에 있는 EFS끼리도 가능)
Supports many storage types:
On-premises storage (NFS, SMB file systems).
AWS services like Amazon S3, Amazon EFS, and Amazon FSx for Windows File Server.
AWS DMS
-AWS DMS = 데이터베이스 간에 데이터를 마이그레이션 할 수 있는 서비스
마이그레이션 중에도 애플리케이션 사용가능하여 다운타임 최소화
AWS RDS와 호환좋음
-Change Data Capture(CDC)를 제공하는데 이는 실시간으로 변경되는 데이터들도 Redshift에 복제되도록 해준다.
-AWS DMS replication instance는 최종적으로 저장되는 데이터 스토어(Target data store)와 같은 region에 위치해야 한다.
-DMS is mainly for data migration, not schema migration.
AWS Schema Conversion Tool (AWS SCT)
AWS SCT is specifically designed to convert database schemas and code from source to target.
It supports Teradata to Redshift schema conversion, handling differences in SQL dialects and structures.
After schema conversion, AWS DMS migrates the data.
AWS ECS(Elastic Container Service)
-ECS는 AWS에서 제공하는 완전관리형 컨테이너 오케스트레이션 서비스
컨테이너화된 애플리케이션(예: Docker 컨테이너)을 손쉽게 배포, 관리, 확장할 수 있도록 도와줍니다
AWS EKS(Elastic Kubernetes Service)
-EKS는 Kubernetes 클러스터 운영에 필요한 제어 플레인을 AWS가 관리해 주며, 사용자는 워커 노드 및 애플리케이션을 신경 쓰면 됩니다.
EventBridge
-애플리케이션 간 이벤트를 연결하고 라우팅하는 역할을 합니다.
다양한 AWS 서비스 및 서드파티 서비스에서 발생하는 이벤트를 받아 조건에 따라 타깃(예: Lambda 함수, Step Functions, SNS 등)에 전달할 수 있습니다.
예를 들어, 일정한 간격으로 Lambda 함수를 실행하는 스케줄링, 특정 S3 버킷에 파일 업로드 시 알림 전달 등 자동화에 활용됩니다.
Amazon EventBridge can detect AWS Glue job status changes, including job failures.
-EventBridge가 Lambda 함수를 호출하려면 두 가지 권한이 필요.
1.IAM 역할에 적절한 권한
2.리소스 기반 정책(resource-based policy)
Amazon CloudWatch
-AWS에서 제공하는 모니터링 및 관리 서비스
로그 수집 및 관리: 애플리케이션과 시스템 로그를 중앙에 모아 저장하고, 검색 및 분석할 수 있습니다.
예를 들어, 애플리케이션 에러 로그, 시스템 로그, 사용자 정의 로그들을 CloudWatch Logs로 관리합니다.
리소스 및 애플리케이션 모니터링: AWS 리소스(예: EC2 인스턴스, RDS 데이터베이스, Lambda 함수 등)의 상태와 성능 지표(metrics)를 실시간으로 수집하고 시각화
경보(Alarm) 설정: 특정 지표가 정의된 임계값(threshold)을 넘으면 알람을 발생시켜 이메일, SMS, 자동 복구 작업(SNS, Lambda 등)을 트리거할 수 있습니다.
대시보드 제공: 원하는 지표와 로그를 한눈에 볼 수 있도록 대시보드를 구축할 수 있어 운영 상황을 쉽게 파악할 수 있습니다.
Amazon CloudWatch에서 외부로 로그를 전송하려면 보내는 쪽에 subscription filter가 필요함
Amazon AppFlow
Amazon AppFlow: 이 서비스는 SaaS 애플리케이션에서 Amazon S3로 데이터 이동을 손쉽게 자동화할 수 있다.
(예: Salesforce)
Amazon Aurora
Amazon Aurora는 AWS에서 제공하는 관계형 데이터베이스 서비스로, MySQL 및 PostgreSQL과 호환됩니다
-Aurora zero-ETL is a feature that enables near real-time replication of data from Amazon Aurora (MySQL or PostgreSQL-compatible) directly into Amazon Redshift, without the need for complex extract, transform, load (ETL) jobs.
How does it work?
- Aurora streams database changes (inserts, updates, deletes) continuously using change data capture (CDC).
- These changes are automatically replicated to Amazon Redshift tables.
- This process eliminates the need for traditional ETL pipelines, reducing latency and operational complexity.
- Users can query and analyze the latest Aurora data in Redshift almost immediately.
DynamoDB
| 항목 | 설명 |
| DynamoDB | AWS의 완전관리형 NoSQL 키-값 및 문서형 DB |
| Capacity Mode | - Provisioned: 원하는 RCU/WCU 설정 |
| - On-demand: 자동 확장, 비용 비쌈 | |
| RCU/WCU | - RCU (Read Capacity Unit): 초당 4KB 읽기 |
| - WCU (Write Capacity Unit): 초당 1KB 쓰기 | |
| Auto Scaling | 트래픽에 따라 자동으로 용량 조절 (동적 or 스케줄 기반) |
| Scheduled Scaling | 특정 시간에 용량을 조정 (예: 월요일 오전 6시에 증가) |
| On-demand Mode | 자동 스케일링되며 사용한 만큼만 과금 (예측 불가능한 트래픽에 적합) |
-DynamoDB TTL(Time To Live) automatically deletes items after a specified timestamp attribute expires.
AWS CloudTrail
AWS CloudTrail은 AWS 계정 내에서 발생하는 모든 API 호출 및 활동을 추적하고 기록하는 서비스입니다.
CloudTrail은 AWS API 호출을 기록하는 서비스입니다.
S3의 경우, 데이터 이벤트는 객체 수준 활동(예: S3 버킷에 대한 쓰기 작업)과 같은 특정 작업을 추적할 수 있습니다.
CloudTrail에는 크게 두 종류의 이벤트가 있습니다:
| 유형 | 설명 |
| Management Events | 리소스 수준 활동 |
| (예: EC2 시작, IAM 생성, S3 버킷 생성 등) | |
| Data Events | 데이터 수준 활동 |
| → 예: S3 객체 업로드, 읽기, 삭제 등 |
AWS CloudTrail does not provide real-time detailed Step Functions execution status.
CloudTrail is for audit logs, not for real-time event processing
Amazon QuickSight
Amazon QuickSight는 대화형 대시보드와 시각화를 쉽게 생성하고 게시할 수 있는 클라우드 네이티브 비즈니스 인텔리전스(BI) 서비스입니다.
다양한 데이터 소스와 연결되며, 예를 들어:
- Amazon S3 (Athena 또는 직접 파일 업로드를 통해)
- Amazon Redshift
- Amazon RDS
- Amazon Aurora
- SaaS 소스 (Salesforce, Twitter 등)
- 기타 데이터베이스 (커넥터를 통해)
QuickSight를 사용하면 사용자가 다음을 수행할 수 있습니다:
- 대시보드와 보고서 작성
- 복잡한 코딩 없이 데이터를 시각적으로 탐색
- 팀 또는 조직 전체에 인사이트를 안전하게 공유
- 머신 러닝 기반 인사이트를 자동으로 활용
QuickSight 는 실시간 처리에 한계가 있다. -> 실시간 대시보드에는 grafana가 낫다.
-SPICE
SPICE는 Super-fast, Parallel, In-memory Calculation Engine의 약자입니다.
SPICE는 QuickSight가 데이터 분석을 가속화하기 위해 사용하는 인메모리 데이터 엔진입니다.
SPICE에 데이터를 로드하면:
- 데이터를 압축하여 메모리에 저장하여 빠른 쿼리와 시각화를 가능하게 함.
- 대규모 데이터셋과 많은 사용자가 있어도 빠른 응답 시간을 제공.
- SPICE를 통해 QuickSight는 수천 명의 사용자와 높은 동시성을 처리하며 데이터베이스 성능 저하 없이 확장 가능.
SPICE에 저장된 데이터는 원본 데이터 소스와 분리되어 있어, 원본 데이터베이스를 반복적으로 호출하지 않고도 빠른 대화형 대시보드를 제공합니다.
Performance Insights
Performance Insights는 Amazon RDS와 Aurora에서 쿼리 성능 분석, 리소스 사용량 추적, 병목 현상 파악을 위한 시각화 도구입니다.
Manifest Files in AWS
Manifest files are primarily used in the context of data loading operations, especially with Amazon Redshift and some other AWS services.
Here’s a breakdown of their usage:
1. Amazon Redshift
Purpose: In Amazon Redshift, manifest files are used with the COPY command to specify the locations of multiple data files that need to be loaded into a table.
Instead of executing multiple COPY commands for each file, you can create a single manifest file that lists all the data file URIs (Uniform Resource Identifiers).
AWS Transfer Family
AWS Transfer Family는 SFTP, FTPS, FTP 및 AS2 프로토콜을 사용하여 Amazon S3, Amazon EFS로 파일을 전송할 수 있게 하는 서비스이다.
(주로 Transfer Family로 SFTP 서버를 생성하고 AWS S3와 연결시킨다.)
예시) 기업 간 데이터 교환
A기업(온프레미스 데이터 센터)과 B기업(AWS 데이터센터)이 매일 수십 개의 데이터 파일을 안전하게 교환해야 한다.
파일은 크기가 다르고, 주기적으로 업데이트되며, 보안이 중요한 데이터이다. (절대 유출되면 안되는 데이터)
해결책: AWS Transfer Family를 사용하여 SFTP 프로토콜로 안전하게 데이터 파일을 교환한다.
-Transfer Family Server의 Security policy에 특정 버전의 TLS를 사용하도록 설정할 수 있다.
Amazon SageMaker
Amazon SageMaker는 아마존 웹 서비스(AWS)에서 제공하는 완전 관리형 기계 학습(ML) 플랫폼입니다.
개발자와 데이터 과학자들이 기계 학습 모델을 쉽게 구축, 훈련 및 배포할 수 있도록 돕는 다양한 도구와 서비스들을 제공합니다.
SageMaker Studio는 통합 개발 환경(IDE)으로서, 사용자가 모델을 더 쉽게 관리하고, 훈련하고, 배포할 수 있는 완전한 솔루션을 제공합니다.
-SageMaker Studio는 AWS Glue 대화형 세션과 상호작용하기 위해 IAM 역할을 받아야 합니다.
IAM 사용자는 SageMaker Studio가 Glue 작업(대화형 세션)을 실행하는 데 사용하는 역할을 수임할 수 있는 권한이 있어야 합니다.
즉:
- IAM 사용자는 sts:AssumeRole 권한이 필요합니다.
- Glue/SageMaker가 사용하는 IAM 역할은 해당 서비스가 역할을 수임할 수 있도록 신뢰 관계가 설정되어 있어야 합니다.
-Data Wrangler helps prepare data for ML workflows.
📨 Amazon SQS (Simple Queue Service)
Amazon SQS is a fully managed message queuing service.
It lets applications send, store, and receive messages between components without losing messages or requiring each part to be always available.
🔧 How it works:
A producer sends messages to the SQS queue.
Messages are stored temporarily in the queue.
A consumer (usually another application) receives and processes those messages.
🧠 Key Features:
Decouples microservices or distributed systems
Supports standard queues (best-effort ordering) and FIFO queues (strict ordering)
Messages are kept up to 14 days
Scales automatically
---
☠️ DLQ (Dead-Letter Queue)
A Dead-Letter Queue is a secondary SQS queue where messages are sent if they fail processing multiple times in the main queue.
🧩 Why use DLQ?
To prevent data loss when something goes wrong
To isolate problematic messages for investigation
To retry or analyze failed messages later
📋 Example:
A message is received by the consumer, but it crashes or times out during processing.
After a certain number of failed attempts (configurable), SQS automatically moves the message to the DLQ.
You can then monitor the DLQ, fix issues, and reprocess the failed messages.
AWS Application Auto Scaling
AWS Application Auto Scaling은 DynamoDB 테이블의 프로비저닝된 처리량을 자동으로 조정할 수 있게 해줍니다. 이 스케일링은 다음과 같은 방식으로 특히 유익합니다:
- 예약된 스케일링: 매주 월요일 아침의 사용량 증가나 주말의 낮은 사용량과 같은 예측 가능한 패턴에 따라 스케일링 작업을 예약할 수 있습니다.
- 비용 효율성: 이 접근법은 비피크 시간(예: 주말)에 과도한 용량을 프로비저닝하지 않도록 하여 피크 사용량을 충족하면서도 비용을 절감합니다. 필요할 때만 프로비저닝된 용량을 증가시키고 사용량이 낮을 때는 감소시켜 비피크 시간 동안 비용을 줄입니다.
예를 들어, 월요일 아침마다 용량을 증가시키고 주중에 트래픽이 감소할 때 용량을 줄이도록 자동 스케일링을 설정하여 성능 저하 없이 비용을 절감할 수 있습니다.
VPC Gateway Endpoint
VPC 게이트웨이 엔드포인트는 인터넷 게이트웨이, NAT 장치, VPN 연결 또는 AWS Direct Connect를 사용하지 않고 가상 사설 클라우드(VPC)를 지원되는 AWS 서비스에 비공개로 연결할 수 있게 해주는 AWS 기능입니다.
이는 VPC와 해당 AWS 서비스 간의 트래픽이 전적으로 아마존 네트워크 내에서 이루어져 보안이 강화되고 인터넷 기반 접근의 필요성이 줄어든다는 것을 의미합니다.
지원 서비스: 현재 게이트웨이 엔드포인트는 다음 서비스에만 제공됩니다:
Amazon S3
DynamoDB
Amazon Macie
Macie focuses on data security and sensitive data discovery.
AWS Certificate Manager (ACM)
AWS Certificate Manager (ACM)는 AWS 서비스 및 내부 연결 리소스에 사용되는 SSL/TLS 인증서의 프로비저닝, 관리, 배포를 처리하는 완전 관리형 서비스입니다.
ACM 사용 이유
운영 오버헤드 감소: 인증서의 생애 주기(발급, 갱신 등)를 자동으로 관리.
보안 향상: 인증서 만료로 인한 다운타임이나 보안 위험 방지.
관리 간소화: AWS 환경에서 인증서를 중앙 집중적으로 관리.
비용 효율성: 공인 인증서는 무료이며, 사설 CA는 필요 시에만 비용 지불.
오답노트
2, 3, 9,
13, 14, 18,
21, 28,
30, 32, 34, 36, 39
40, 41, 44, 45, 48,
50,
61, 62, 65,
75, 76, 77, 78, 79
84, 85, 86, 87, 88, 89
90, 95, 97, 98, 99
100, 102, 105, 107, 108,
111, 112, 114, 115, 116, 118,
120, 122, 123, 124, 127, 128,
130, 132, 133, 134, 137, 138, 139
144, 146, 147, 148, 149,
150, 151, 152, 153, 157, 159,
160, 161, 163, 164, 165, 166, 168, 169
176, 178,
181, 182, 184,
192, 193, 194, 197, 198, 199,
200, 201, 203, 204, 206, 209,
212, 215, 216, 219
223, 228, 229
235, 238, 239
'데이터 엔지니어링 정복 > Cloud(AWS, Ncloud)' 카테고리의 다른 글
| [AWS] RDS 활용 (1) | 2021.05.09 |
|---|---|
| [AWS] S3 서비스 이용, SNS서비스 이용 (2) | 2021.05.06 |
| [AWS] EBS(Elastic Block Storage) 만들기 및 Snapshot 기능 사용 (0) | 2021.05.05 |
| [Naver Cloud] 02/10 | 클라우드 개념, 네이버 클라우드 리눅스 생성, 클라우드 리눅스 서버 사용, 클라우드 리눅스에 MariaDB설치 및 사용, DB설치되어있는 리눅스서버 생성 및 사용, 우편번호검색기 (2) | 2021.02.10 |
| [AWS] 4장 가상 네트워크 공간 만들기 (0) | 2020.12.29 |