
AWS
238+ 무료 연습 문제 (AI 검증 답안 포함)
AI 기반
모든 AWS Certified Data Engineer - Associate (DEA-C01) 답안은 3개의 최고 AI 모델로 교차 검증하여 최고의 정확도를 보장합니다. 선택지별 상세 해설과 심층 문제 분석을 제공합니다.
한 대도시 교통 당국은 도시 전역의 버스 및 경전철 네트워크를 운영하며, 6개의 독립 시스템(배차, 차량 텔레매틱스, 요금 수납, 정비, 역 제어, 사고 관리)에 걸친 다단계 운영 워크플로를 사용한다. 각 시스템은 최신 운행 상태를 기록하는 JDBC 호환 관계형 데이터베이스(MySQL 및 PostgreSQL 혼합)를 백엔드로 사용한다. 당국은 관제 센터가 전체 워크플로 전반에서 모든 차량의 운행 상태를 시간 단위로 가시화(신선도 ≤ 15분, 전체 시스템 합산 분당 약 5,000행 업데이트)하여 추적할 수 있어야 하며, 개발 노력을 최소화하면서 보고를 위해 다른 AWS Region에 데이터를 중앙화해야 한다. 이러한 요구 사항을 가장 적은 개발 오버헤드로 충족하는 솔루션은 무엇인가?
AWS Glue는 기본적으로 ETL 및 data integration service이지, 최소한의 engineering으로 OLTP 시스템의 row-level change를 지속적으로 추적하는 native CDC replication service가 아닙니다. Amazon Redshift로 로드하는 경우에도 6개의 source system 전반에서 latest trip state를 유지하기 위한 incremental ingestion, deduplication, upsert logic에 대한 추가 설계가 필요합니다. Redshift와 QuickSight는 analytics에 강력하지만, 이 선택지는 DMS CDC보다 더 많은 개발 및 운영 복잡성을 초래합니다. 따라서 near-real-time operational status tracking을 위한 최소 노력 솔루션이 아닙니다.
이 선택지는 target으로 DynamoDB를 사용하므로 latest state 저장에는 적절하지만, AWS Glue는 여전히 여러 relational database에서 low-latency CDC를 위한 잘못된 ingestion mechanism입니다. 15분 freshness 목표를 안정적으로 충족하려면, Glue는 DMS가 기본적으로 제공하는 custom incremental extraction logic, scheduling, state management, error handling을 필요로 합니다. 이는 managed CDC replication과 비교해 개발 오버헤드를 크게 증가시킵니다. 또한 이 operational dashboard use case에서는 QuickSight도 DynamoDB 바로 위에 놓는 reporting layer로 가장 자연스러운 선택은 아닙니다.
AWS DMS는 MySQL과 PostgreSQL의 CDC를 위해 특별히 설계되었으므로, transaction log를 지속적으로 읽고 낮은 지연 시간과 최소한의 custom code로 변경된 record를 복제할 수 있습니다. DynamoDB는 복잡한 relational analytics보다 current state tracking에 초점이 맞춰진 use case이기 때문에 최신 trip status를 저장하는 데 매우 적합하며, 이 규모의 빈번한 update도 쉽게 처리합니다. 다른 AWS Region의 DynamoDB table에 게시하면 cross-Region centralization 요구 사항을 충족하면서도 architecture를 운영 측면에서 단순하게 유지할 수 있습니다. Grafana는 current-state store에 대한 거의 실시간 operational dashboard에 QuickSight보다 더 적합하며, 특히 목표가 전통적인 BI warehousing보다 control-center visibility인 경우에 그렇습니다.
이 선택지의 ingestion 측면은 강력합니다. AWS DMS CDC를 DynamoDB로 보내는 것은 지속적인 relational change를 current-state store로 복제하기 위한 적절한 low-development pattern이기 때문입니다. 그러나 Amazon QuickSight는 BI 및 analytics dataset에 최적화되어 있으며, 가장 단순한 architecture에서 DynamoDB와 직접적인 operational reporting source로 자연스럽게 맞아떨어지지는 않습니다. 실제로 여기서 QuickSight를 사용하려면 추가적인 data preparation 또는 intermediary query layer가 필요한 경우가 많아, 노력이 더 들고 'least development overhead' 요구 사항을 약화시킵니다. Grafana가 이런 종류의 데이터에 대한 near-real-time operational dashboard에 더 적합하므로, D는 최선의 정답이 아닙니다.
핵심 개념: 이 문제는 최소한의 개발 노력으로 여러 JDBC relational source에서 거의 실시간에 가까운 cross-Region change data capture (CDC)를 테스트합니다. 핵심 managed service는 AWS Database Migration Service (AWS DMS)이며, CDC를 사용해 업데이트를 지속적으로 복제하고, 운영 보고를 위해 빠른 upsert와 간단한 aggregation을 지원하는 low-ops 대상 저장소를 사용합니다. 정답인 이유: 요구 사항은 시간 단위 가시성, freshness ≤ 15분, 그리고 서로 독립적인 6개의 MySQL/PostgreSQL 시스템에서 분당 약 5,000건의 row update를 다른 AWS Region에 중앙 집중화하는 것입니다. AWS DMS는 database transaction log (CDC)를 읽고 낮은 지연 시간과 최소한의 custom code로 지속적인 변경 사항을 복제하도록 특별히 설계되었습니다. DMS는 여러 source를 단일 target(또는 여러 table)으로 통합할 수 있으며, Amazon DynamoDB에 쓸 수 있습니다. DynamoDB는 높은 write rate와 key 기반 access pattern(예: vehicleId+tripId)에 매우 적합하여 “latest trip state”를 유지하는 데 적합합니다. Amazon QuickSight를 사용하면 custom visualization stack을 구축하는 것보다 적은 dashboard 개발로 “reporting” 요구 사항을 충족할 수 있는 managed BI service를 활용할 수 있습니다. 주요 AWS 기능: - AWS DMS CDC: MySQL binlog와 PostgreSQL WAL을 사용하여 inserts/updates/deletes를 지속적으로 캡처합니다. - Cross-Region replication: target Region에서 DMS replication instance를 실행하고 network connectivity (VPN/Direct Connect/peering)를 통해 source에 연결하여 reporting이 수행되는 위치로 데이터를 중앙 집중화합니다. - “current state” 저장소로서의 DynamoDB: 높은 처리량, 낮은 지연 시간, 그리고 latest-state tracking을 위한 간단한 upsert semantics를 제공합니다. - QuickSight: Managed dashboard를 제공하며, reporting을 위한 운영 오버헤드를 최소화하기 위해 지원되는 connector/approach(일반적으로 Athena/Glue catalog 또는 기타 지원되는 ingestion pattern)를 통해 DynamoDB와 통합됩니다. 흔한 오해: - “ingestion”에 AWS Glue를 선택하고 싶을 수 있지만, Glue job은 일반적으로 batch/micro-batch ETL이며 6개의 OLTP 시스템 전반에서 일관된 ≤15분 freshness를 달성하려면 더 많은 custom development와 운영 튜닝이 필요합니다. - Redshift는 analytics에 매우 뛰어나지만, 여러 OLTP source로부터의 지속적인 CDC ingestion에는 일반적으로 추가 구성 요소(streaming ingestion pattern, staging, MERGE logic)가 필요하여 개발 노력이 증가합니다. - Grafana는 time-series/ops metrics에 강하지만, 요구 사항은 최소한의 노력으로 중앙 집중식 reporting을 구현하는 것입니다. business reporting에는 일반적으로 QuickSight가 더 적합한 managed BI 선택입니다. 시험 팁: “JDBC relational source + changed record + near-real-time + minimal development”를 보면 AWS DMS CDC를 떠올리세요. 높은 update rate에서 “latest state” 운영 뷰가 필요하다면, warehouse에 복잡한 MERGE pipeline을 구축하는 것보다 DynamoDB가 더 나은 low-ops target인 경우가 많습니다. 최소한의 오버헤드로 “reporting dashboard”를 구현하려면, 일반적으로 self-managed visualization stack보다 QuickSight가 선호됩니다.
이동 중에도 모든 문제를 풀고 싶으신가요?
Cloud Pass를 무료로 다운로드하세요 — 모의고사, 학습 진도 추적 등을 제공합니다.
이동 중에도 모든 문제를 풀고 싶으신가요?
Cloud Pass를 무료로 다운로드하세요 — 모의고사, 학습 진도 추적 등을 제공합니다.
이동 중에도 모든 문제를 풀고 싶으신가요?
Cloud Pass를 무료로 다운로드하세요 — 모의고사, 학습 진도 추적 등을 제공합니다.
학습 기간: 1 month
문제 제대로 이해하고 풀었으면 여러분들도 합격 가능할거에요! 화이팅
학습 기간: 1 month
I passed the AWS data engineer associate exam. Cloud pass questions is best app which help candidate to preparer well for any exam. Thanks
학습 기간: 1 month
시험하고 문제 패턴이 비슷
학습 기간: 2 months
813/1000 합격했어요!! 시험하고 문제가 유사한게 많았어요
학습 기간: 1 month
해설까지 있어서 공부하기 좋았어요. 담에 또 올게요


이동 중에도 모든 문제를 풀고 싶으신가요?
무료 앱 받기
Cloud Pass를 무료로 다운로드하세요 — 모의고사, 학습 진도 추적 등을 제공합니다.
한 스트리밍 미디어 회사는 5개 AWS Region에 걸쳐 6개의 프로덕션 스튜디오를 운영하고 있으며, 각 스튜디오의 컴플라이언스 팀은 서로 다른 IAM role을 사용합니다. 또한 모든 원본 자막 파일과 QC 로그는 aws_region으로 파티셔닝된 단일 Amazon S3 data lake에 통합되어 있습니다(예: s3://media-lake/raw/aws_region=eu-central-1/). 데이터 엔지니어링 팀은 운영 오버헤드를 최소화하고 새 bucket을 만들거나 데이터를 중복하지 않으면서, 각 스튜디오가 Amazon Athena 같은 서비스를 통해 자신의 Region에 해당하는 레코드만 쿼리할 수 있도록 보장해야 합니다. 팀이 수행해야 할 단계 조합은 무엇입니까? (두 개 선택)
오답입니다. Lake Formation data filter는 Data Catalog table에 대한 권한 범위(행/열 필터링)를 제한하는 데 사용되며, S3 prefix를 data location으로 등록하는 용도가 아닙니다. data location 등록은 별도의 Lake Formation 작업(bucket 또는 prefix 등록)입니다. prefix를 등록할 수는 있지만, 그 메커니즘이 “data filter를 사용”하는 것은 아닙니다. 이 선택지는 서로 다른 Lake Formation 기능 두 가지를 혼동하고 있습니다.
정답입니다. S3 bucket 또는 특정 prefix를 Lake Formation data location으로 등록하는 것은 기본 object에 대해 Lake Formation이 거버닝되는 액세스를 제공하기 위한 선행 조건입니다. 이를 통해 Lake Formation이 service-linked role을 통해 액세스를 관리하고 Athena 같은 서비스에 대해 권한을 강제할 수 있습니다. 이 단계는 새 bucket을 만들거나 데이터를 중복하지 않고 중앙 거버넌스를 지원합니다.
오답입니다. Lake Formation data filter를 IAM role에 연결하지 않습니다. 대신 Lake Formation에서 data filter를 생성한 다음, 해당 filter를 참조하여 IAM principal(role/user)에 Lake Formation 권한을 grant합니다. IAM policy는 API action을 허용/거부할 수 있지만, 행/파티션 제한은 IAM role에 filter를 붙여서가 아니라 Lake Formation permission grant로 강제됩니다.
정답입니다. fine-grained access control을 활성화하고 Region 기반 data filter(예: aws_region = 'us-east-1')를 생성하면, Lake Formation이 행 수준 제한을 강제하여 각 스튜디오의 Athena 쿼리가 해당 Region의 레코드만 반환하도록 할 수 있습니다. 적절한 filter를 사용해 각 스튜디오의 IAM role에 권한을 부여하는 것은 운영 오버헤드를 최소화하고 새 bucket 또는 데이터 중복을 피한다는 요구사항을 충족합니다.
오답입니다. Region별로 별도의 S3 bucket을 만드는 것은 새 bucket과 데이터 중복을 피하라는 요구사항을 위반합니다. S3 prefix/bucket IAM policy로 구현하더라도, 이는 쿼리 시점의 행 수준 거버넌스가 아니라 object 수준의 거친 액세스 제어를 제공합니다. 또한 중앙 Lake Formation 거버넌스에 비해 운영 오버헤드(bucket 증가, replication/ingestion 변경, policy 증가)가 커집니다.
핵심 개념: 이 문제는 Athena로 쿼리되는 S3 기반 data lake에 대해 AWS Lake Formation 거버넌스를 적용하는 것을 평가하며, 특히 데이터를 중복하거나 새 bucket을 만들지 않고 data filter(행/열 수준 보안)를 사용한 fine-grained access control(FGAC)을 다룹니다. 정답이 맞는 이유: 각 스튜디오를 자신의 Region 파티션(aws_region=...)으로만 제한하려면, 데이터 엔지니어링 팀은 Lake Formation을 사용해 공유 table에 대한 액세스를 중앙에서 거버닝해야 합니다. 먼저 데이터가 들어 있는 S3 bucket/prefix를 Lake Formation data location으로 등록해야 Lake Formation이 service-linked role을 통해 권한을 강제하고(또는 “data location permissions”를 통해) 액세스를 관리할 수 있습니다. 다음으로 FGAC를 활성화하고 Region 기반 data filter(예: filter expression aws_region = 'eu-central-1')를 생성한 뒤, 각 스튜디오의 IAM role에 해당 data filter를 사용하여 table 권한을 부여합니다. 이렇게 하면 Athena 쿼리 결과가 해당 Region의 행만 반환되며, 운영 오버헤드는 최소이고 데이터 중복도 없습니다. 주요 AWS 기능 및 구성: - Lake Formation data locations: data lake에서 사용하는 S3 bucket/prefix를 등록하여 Lake Formation이 기본 object에 대한 액세스를 제어할 수 있게 합니다. - Data filters(LF-Tags/data filters): data filter는 거버닝되는 table에 대해 행 수준 및 열 수준 필터링을 제공합니다. 파티셔닝된 데이터의 경우 filter를 통해 특정 파티션(예: aws_region)으로 액세스를 효과적으로 제한할 수 있습니다. - IAM principal에 대한 grant: 각 스튜디오의 IAM role에 Lake Formation 권한(SELECT, DESCRIBE 등)을 부여하되, data filter 범위로 제한합니다. - Athena 통합: Athena는 거버닝되는 table을 쿼리할 때 Glue Data Catalog/Lake Formation 권한을 사용하므로, role별 S3 policy가 아니라 중앙 거버넌스를 구현할 수 있습니다. 흔한 오해: A는 data filter와 prefix를 언급해 그럴듯하지만, “data filter를 사용해 prefix를 data location으로 등록”은 서로 다른 두 개의 개념을 섞은 것입니다. data filter는 S3 location을 등록하지 않습니다. C는 data filter를 IAM role에 연결하는 방식이 아니므로 틀립니다. E는 제약(새 bucket/중복 금지)을 위반하며, 쿼리 시점 FGAC가 아니라 거친(granular하지 않은) S3 prefix policy로 거버넌스를 옮기는 것입니다. 시험 팁: “단일 S3 data lake”, “Athena”, “각 팀이 행/파티션의 일부만 볼 수 있어야 함”을 보면, Lake Formation FGAC(data filters 또는 LF-Tags)와 S3 data location 등록을 떠올리세요. 또한 IAM은 누가 서비스를 호출할 수 있는지를 제어하고, Lake Formation은 data lake에서 무엇을 볼 수 있는지를 제어한다는 점을 기억하세요.
미디어 스트리밍 스타트업이 하루에 약 3 TB의 원시 clickstream 로그를 Amazon S3에 적재하고, 선별된 집계 데이터를 Amazon Redshift RA3 cluster로 로드하며, 분석가들은 또한 AWS Glue Data Catalog에 의해 백업되는 external schema를 사용하여 Amazon Redshift Spectrum을 통해 가장 최신의 S3 데이터에 대해 낮은 지연 시간의 ad hoc query를 실행해야 합니다. 대부분의 필터가 event_date(YYYY-MM-DD)와 region에 적용되고 팀이 가장 빠른 Spectrum query 성능을 원한다면, 어떤 두 가지 조치를 취해야 합니까? (두 개 선택)
오답입니다. GZIP은 저장 및 전송 크기를 줄일 수 있지만, Spectrum에서는 핵심이 scan 효율과 parallelism입니다. GZIP으로 압축된 text 파일은 일반적으로 non-splittable이어서 parallel read를 제한하고 지연 시간을 증가시킵니다. 또한 파일당 1–5 GB는 최적의 parallelism과 복구 관점에서 종종 너무 큽니다. 더 나은 선택은 splittable compression(예: Snappy)을 사용하는 columnar Parquet/ORC와 적절한 파일 크기입니다.
정답입니다. Parquet/ORC는 columnar format으로, column pruning(참조된 column만 읽기)과 embedded statistics를 활용한 predicate pushdown/row-group skipping을 가능하게 합니다. 이는 Spectrum이 S3에서 스캔해야 하는 데이터 양을 줄여 지연 시간과 비용을 개선합니다. 대규모 dataset에 대해 분석 쿼리를 실행할 때 Redshift Spectrum 및 기타 S3 query engine의 표준 모범 사례입니다.
정답입니다. dataset을 event_date와 region(가장 일반적인 predicate)으로 partitioning하면 Spectrum이 Glue Data Catalog metadata를 사용해 partition을 pruning하여, 쿼리와 매칭될 수 없는 전체 S3 prefix를 건너뛸 수 있습니다. 이는 스캔되는 데이터를 수십~수백 배까지 줄일 수 있으며, 최신 S3 데이터에 대한 낮은 지연 시간의 ad hoc query를 가속하는 가장 효과적인 방법 중 하나입니다.
오답입니다. 매우 작은 파일(<10 KB)이 많으면 small-file 문제가 발생합니다: S3 request overhead 증가, 과도한 metadata 작업, 비효율적인 task scheduling. Spectrum은 파일당 오버헤드를 줄이고 처리량을 개선할 수 있기 때문에 더 적고 더 큰 파일에서 더 잘 동작합니다. Parallelism은 중요하지만, 작은 object가 아니라 적절한 크기(종종 수백 MB)의 파일과 partitioning으로 달성해야 합니다.
오답입니다. non-splittable format/codec(예: GZIP이 적용된 CSV)은 일반적으로 parallel read를 제한하고 관련 없는 데이터를 효율적으로 건너뛰지 못하게 하므로 Spectrum 성능을 저하시킵니다. compression이 저장되는 byte를 줄이더라도, Spectrum은 predicate를 평가하기 위해 파일의 큰 부분을 읽고 decompress해야 할 수 있습니다. 가장 빠른 쿼리를 위해서는 columnar, splittable format(Parquet/ORC with Snappy/ZSTD)이 선호됩니다.
핵심 개념: 이 문제는 AWS Glue Data Catalog를 사용하는 external schema를 통해 Amazon S3의 데이터를 직접 쿼리할 때 Amazon Redshift Spectrum 성능 최적화를 테스트합니다. Spectrum은 predicate를 S3/Glue metadata로 pushdown하고 S3 object를 스캔하며, 성능은 얼마나 많은 데이터를 읽어야 하는지와 얼마나 효율적으로 읽을 수 있는지에 의해 좌우됩니다. 정답이 맞는 이유: (B) S3 데이터를 columnar format(Parquet/ORC)으로 변환하는 것은 Spectrum에 대한 가장 영향이 큰 최적화 중 하나입니다. Columnar format은 데이터를 column 단위로 저장하고 통계(예: row group별 min/max)를 포함하여 predicate pushdown과 관련 없는 block을 건너뛰는 것을 가능하게 합니다. 일반적인 ad hoc analytics가 일부 column을 선택하고 event_date/region으로 필터링하는 경우, Spectrum은 row-based text format보다 훨씬 적은 byte를 읽습니다. (C) event_date와 region으로 partitioning하면 물리적 레이아웃과 Glue partition metadata가 가장 일반적인 WHERE predicate와 정렬됩니다. Spectrum은 Glue catalog를 사용해 partition을 pruning하여, 매칭되지 않는 partition의 object를 스캔하지 않고도 전체 partition을 제외할 수 있으므로, “가장 최신 데이터” 쿼리의 S3 I/O와 지연 시간을 크게 줄입니다. 주요 AWS 기능 / 모범 사례: - AWS Glue Data Catalog partition을 사용하는 Redshift Spectrum partition pruning. - Parquet/ORC를 통한 predicate pushdown 및 column pruning. - S3 data lake 레이아웃: Hive-style partitioning을 위한 s3://bucket/path/event_date=YYYY-MM-DD/region=.../. - small-file 문제를 피하고, 더 적고 더 큰 파일을 선호(Parquet의 경우 종종 100–1000+ MB)하여 S3 request overhead를 줄이고 scan 효율을 향상. 흔한 오해: 많은 작은 파일로 “더 많은 parallelism”을 얻으면 속도가 빨라진다고 생각하기 쉽지만, Spectrum과 S3 request overhead 때문에 작은 파일은 더 느리고 더 비쌉니다. 또 다른 함정은 CSV에 GZIP을 사용하는 것입니다. 저장되는 byte는 줄일 수 있지만, 일반적으로 non-splittable이라 효율적인 parallel read와 predicate 기반 건너뛰기를 방해하여 query latency를 악화시키는 경우가 많습니다. 시험 팁: Spectrum/Athena 스타일 엔진에서 가장 빠른 쿼리는 보통 (1) 자주 사용하는 필터 기준으로 partitioning하고 (2) splittable compression을 사용하는 columnar format을 선택할 때 나옵니다. date와 region에 대한 빈번한 필터가 보이면 해당 key로 partitioning을 선택하세요. ad hoc analytics가 일부 column만 선택하는 경우 Parquet/ORC를 선택하세요.
AWS 계정 111122223333의 한 재무 분석가가 us-east-1에서 Amazon QuickSight Enterprise 대시보드를 열고, Amazon Athena를 통해 Amazon S3 버킷 s3://city-traffic-logs-2025(200 GB, 날짜 파티션됨)의 데이터를 쿼리하고 쿼리 결과를 s3://athena-results-prod-002에 기록하여 두 개의 데이터셋을 새로 고칩니다. 두 버킷은 모두 계정 444455556666이 소유하고 있으며 객체는 customer-managed AWS KMS key alias/traffic-cmk-01로 암호화되어 있습니다. 새로 고침을 시도하자 분석가는 'Insufficient permissions' 오류를 받았습니다. 이러한 권한 관련 오류를 유발할 수 있는 요인은 무엇입니까? (두 개 선택)
정답입니다. Athena를 통한 QuickSight 데이터셋 새로 고침은 소스 S3 데이터와 Athena 쿼리 결과 객체에 대한 읽기 권한이 필요합니다. 어느 버킷에서든 s3:GetObject(그리고 흔히 관련 prefix에 대한 s3:ListBucket)가 누락되면 “Insufficient permissions”가 발생합니다. cross-account의 경우, 버킷을 소유한 계정의 bucket policy가 호출자 계정의 QuickSight/Athena principal을 허용해야 하며, 호출자 계정의 IAM 권한만으로는 충분하지 않습니다.
오답입니다. Glue Data Catalog에서 날짜 파티션이 없으면 쿼리 성능과 비용에 영향을 주어(Athena가 더 많은 데이터를 스캔) 실행 시간이 길어지거나 스캔 바이트가 증가하거나 타임아웃이 발생할 수는 있지만, 본질적으로 권한 실패를 유발하지는 않습니다. “Insufficient permissions”는 테이블 설계/파티션 전략보다는 IAM/S3/KMS 정책 문제를 가리킵니다.
오답입니다. SPICE vs Direct Query는 QuickSight가 데이터를 SPICE로 가져오는지 또는 Athena를 통해 라이브로 쿼리하는지를 바꿉니다. 그러나 새로 고침(SPICE ingestion)은 여전히 Athena 쿼리를 실행하고 S3 객체(결과 포함)를 읽고/쓰는 권한이 필요합니다. 따라서 SPICE 자체는 권한 오류의 근본 원인이 아니며, 누락된 S3/KMS 권한은 작업에 따라 두 모드 모두에서 문제를 일으킬 수 있습니다.
정답입니다. 두 버킷의 객체가 customer-managed KMS key로 암호화되어 있으므로, 관련 principal(QuickSight/Athena 실행 경로)은 특히 데이터를/결과를 읽기 위한 kms:Decrypt 권한이 필요합니다. Athena 결과를 S3에 기록하려면 kms:Encrypt 및 kms:GenerateDataKey도 필요할 수 있습니다. cross-account 사용에서는 CMK key policy가 외부 principal을 신뢰하도록 추가로 구성되어야 합니다.
오답입니다. 기본이 아닌 Athena workgroup(wg-prod)을 사용하는 것 자체는 권한 문제를 의미하지 않습니다. workgroup은 설정(output location, 암호화, engine version)을 강제할 수 있고 IAM 권한(해당 workgroup에 대한 athena:StartQueryExecution 등)으로 제어될 수 있지만, 보기의 내용은 단지 primary가 아니라 wg-prod로 설정되었다는 것뿐이므로 추가 제약이 없는 한 “Insufficient permissions” 오류를 설명하지 못합니다.
핵심 개념 - 테스트되는 주요 AWS 서비스/개념: 이 문제는 Amazon QuickSight + Amazon Athena를 사용해 Amazon S3의 데이터를 분석하는 cross-account 액세스와, 관련된 2계층 권한 모델을 테스트합니다: (1) S3 객체(및 Athena 쿼리 결과)에 대한 data-plane 액세스, (2) 해당 객체를 암호화하는 customer-managed key(CMK)에 대한 AWS KMS 권한. cross-account 구성에서는 IAM/service role과 리소스 정책(S3 bucket policy, KMS key policy)이 모두 일치해야 합니다. 정답이 맞는 이유: A가 정답인 이유는 QuickSight가(서비스 role 및 Athena 통합을 통해) s3://city-traffic-logs-2025의 소스 데이터를 읽어야 하고, s3://athena-results-prod-002의 Athena 출력 파일도 읽어야 하기 때문입니다. QuickSight service role(또는 QuickSight를 대신해 Athena가 사용하는 role)에 s3:GetObject(그리고 일반적으로 관련 prefix에 대한 s3:ListBucket)가 없으면 새로 고침이 “Insufficient permissions”로 실패합니다. 특히 cross-account에서는 계정 444455556666의 bucket policy가 111122223333의 QuickSight 관련 principal을 명시적으로 허용해야 합니다. D가 정답인 이유는 S3 권한이 있더라도 CMK로 암호화된 객체는 KMS 권한이 필요하기 때문입니다. QuickSight/Athena는 CMK를 사용할 수 있어야 하며(읽기에는 kms:Decrypt, Athena 결과 쓰기에는 보통 kms:Encrypt/kms:GenerateDataKey도 필요), cross-account에서는 KMS key policy(및 IAM policy)가 외부 principal을 허용하지 않으면 액세스가 거부되어 데이터셋 새로 고침 중 권한 오류로 나타납니다. 주요 AWS 기능 / 구성: - 데이터 및 Athena 결과에 대한 cross-account 액세스를 위한 S3 bucket policy(ListBucket/GetObject; prefix 범위 지정). - kms:Decrypt(및 Athena 결과의 경우 kms:Encrypt/GenerateDataKey도) 권한을 위한 KMS CMK key policy + IAM 권한. - Athena는 output location이 필요하며, QuickSight 새로 고침은 해당 결과를 읽습니다. 흔한 오해: 파티셔닝(B)은 성능/비용 및 쿼리 계획에 영향을 주지만 권한과는 무관합니다. SPICE vs Direct Query(C)는 데이터가 저장/쿼리되는 위치를 바꾸지만, 새로 고침은 여전히 S3/Athena 및 KMS에 대한 액세스가 필요합니다. workgroup 선택(E)은 강제 설정(예: output location/암호화)에 영향을 줄 수 있지만, “wg-prod vs primary” 자체만으로는 권한 오류가 아닙니다. 시험 팁: S3 + KMS에서 “Insufficient permissions”를 보면 항상 두 계층을 모두 확인하세요: S3 작업 권한과 KMS key policy/IAM. Athena/QuickSight의 경우 권한을 부여해야 하는 S3 위치가 두 곳(소스 데이터 버킷과 Athena 쿼리 결과 버킷)이며, 두 위치의 CMK 암호화 객체에 대한 KMS 권한도 필요하다는 점을 기억하세요.
미디어 분석 회사가 Amazon S3에 900TB의 이벤트 로그를 저장하고 Amazon Athena를 사용해 비즈니스 리포팅 대시보드를 구동하고 있습니다. AWS Glue 작업이 24시간마다 한 번(UTC 02:00)에 데이터를 컴팩션하고 새 데이터를 기록합니다. 회사 정책은 SLA를 충족하기 위해 대시보드가 15분마다 새로 고침되어야 한다고 요구합니다. 데이터 엔지니어링 팀은 새로운 인프라를 추가하지 않고 운영 오버헤드를 최소화하면서 Athena 비용을 줄이려 합니다. 어떤 솔루션이 이러한 요구 사항을 충족합니까?
데이터를 1일 후 S3 Glacier Deep Archive로 전환하면 Athena dashboard에서 활발하게 쿼리되는 데이터로는 적합하지 않게 됩니다. Athena는 먼저 object를 restore하지 않으면 Glacier Deep Archive의 데이터를 직접 분석할 수 없으며, 이는 큰 지연과 운영 복잡성을 초래합니다. 이는 dashboard를 15분마다 새로 고쳐야 한다는 요구 사항과 직접적으로 충돌합니다. 이 선택지는 analytics query 비용 최적화 전략이 아니라 archival 비용 전략입니다.
Athena query result reuse는 동일한 query text가 다시 실행되고 Athena가 이전 result set를 안전하게 재사용할 수 있을 때만 비용을 줄일 수 있습니다. dashboard 환경에서는 쿼리가 time window, filter, parameter 또는 생성된 SQL text에 따라 자주 달라지므로, reuse가 광범위한 절감을 제공한다고 보장할 수 없습니다. 또한 각 query pattern의 첫 번째 실행 비용은 줄이지 못하는 반면, Parquet는 모든 쿼리의 스캔 비용을 낮춥니다. 따라서 result reuse는 일부 경우에 도움이 되지만, 매우 큰 데이터셋에서 Athena 비용을 줄이기 위한 전반적인 최선의 솔루션은 아닙니다.
Amazon ElastiCache는 새로운 infrastructure를 도입하게 되며, 이는 문제에서 명시적으로 피하라고 한 사항입니다. 또한 provisioning, scaling, monitoring, cache invalidation 및 dashboard application과의 integration에 대한 운영 오버헤드도 추가됩니다. caching은 반복되는 query load를 줄일 수 있지만, 이 시나리오에서 운영 측면에서 가장 부담이 적은 선택지는 아닙니다. Parquet를 사용한 S3의 native data format 최적화가 더 단순하고 Athena 모범 사례에도 더 부합합니다.
Apache Parquet는 Athena가 스캔한 데이터 양을 기준으로 요금을 부과하기 때문에 Athena 쿼리 비용을 크게 줄여주는 columnar storage format입니다. reporting dashboard의 경우 쿼리가 종종 column의 일부만 선택하는데, Parquet를 사용하면 Athena가 row-based file 전체를 읽는 대신 해당 column만 읽을 수 있습니다. Parquet는 또한 compression과 효율적인 predicate pushdown을 지원하므로 스캔 볼륨을 더욱 줄이고 성능을 향상시킵니다. 회사는 이미 매일 실행되는 AWS Glue compaction job을 가지고 있으므로, 해당 job이 Parquet로 쓰도록 업데이트하는 것은 새로운 infrastructure를 추가하지 않으면서도 오버헤드가 낮은 변경입니다.
핵심 개념: Amazon Athena 요금은 주로 쿼리당 스캔한 데이터 양을 기준으로 부과되므로, 가장 효과적인 장기 비용 최적화 방법은 스캔되는 데이터를 줄이는 것입니다. Amazon S3의 대규모 데이터셋에는 Apache Parquet와 같은 columnar format을 사용하는 것이 모범 사례입니다. Athena가 필요한 column만 읽을 수 있고 compression 및 predicate pushdown의 이점을 활용할 수 있기 때문입니다. 이 경우 이것이 정답인 이유는 회사가 이미 하루에 한 번 AWS Glue job을 실행하고 있으므로, 기존 ETL process를 수정하여 Parquet로 쓰도록 변경하는 데 추가 운영 오버헤드가 거의 없고 새로운 infrastructure도 필요하지 않기 때문입니다. 흔한 오해는 Athena query result reuse가 dashboard에 항상 최선의 답이라는 것이지만, 이는 특정 조건에서 반복되는 동일한 쿼리에만 작동하며 storage format 자체를 최적화하는 것보다 전반적으로 효과가 떨어집니다. 시험 팁: Athena 비용 절감이 목표이고 선택지에 Parquet 또는 ORC가 포함되어 있다면, 문제에서 반복되는 동일한 쿼리와 cached result를 주요 패턴으로 명시적으로 강조하지 않는 한 보통 그것이 가장 강력한 정답입니다.
한 미디어 분석 회사가 온프레미스 Kafka 클러스터(브로커 3개, 파티션 24개, 평균 ingest 약 2 MB/s이며 최대 12 MB/s까지 버스트, 메시지 50 KB)와 온프레미스 MySQL에서 Debezium을 통해 방출되는 증분 CDC 업데이트를 처리하는 consumer 애플리케이션을 AWS로 lift-and-shift할 계획이다. 또한 팀은 운영 관리가 최소화되면서 Kafka API를 보존하고 자동 스케일링을 유지하는 replatform(리팩터링 아님) 전략을 고수한다. 이러한 요구 사항을 가장 적은 관리 오버헤드로 충족하는 AWS 서비스 선택은 무엇인가?
Amazon Kinesis Data Streams는 shard 관리 또는 on-demand 모드를 통한 탄력적 스케일링을 제공하는 완전 관리형 스트리밍 서비스이지만, Kafka 호환이 아니다. Kafka/Debezium에서 마이그레이션하려면 producer/consumer를 Kinesis API로 리팩터링하고 offset/consumer group 및 partitioning 시맨틱을 재설계해야 한다. 처리량 요구는 충족할 수 있지만, replatform(리팩터링 아님) 전략에서 Kafka API를 보존해야 한다는 요구 사항을 위반한다.
Amazon MSK provisioned cluster는 Kafka API를 보존하며 Kafka lift-and-shift 마이그레이션의 일반적인 replatform 대상이다. 그러나 serverless보다 운영 관리가 더 필요하다. 브로커 인스턴스 타입/개수를 선택하고, 버스트를 위한 용량을 계획하며, 스케일링 작업을 관리하고, partition/broker 밸런싱 고려 사항을 처리해야 한다. 관리형(패치, 교체)이긴 하지만, 자동 스케일링이 명시적으로 요구될 때 최소 오버헤드 옵션은 아니다.
Amazon Kinesis Data Firehose는 선택적 버퍼링 및 변환과 함께 대상(S3, Redshift, OpenSearch, Splunk)으로 전달하기 위한 서비스로, 범용 Kafka 호환 스트리밍 플랫폼이 아니다. Kafka broker 시맨틱, topic/partition, consumer group 코디네이션을 제공하지 않는다. Firehose를 사용하면 CDC 파이프라인과 consumer 동작을 재설계해야 하므로 리팩터링이 필요하며 Kafka API 보존에도 적합하지 않다.
Amazon MSK Serverless는 가장 낮은 운영 부담으로 Kafka API 호환성을 제공한다. 처리량과 스토리지를 자동으로 확장하여 브로커를 사이징하고 관리할 필요를 없애면서도 Kafka client, topic, partition, consumer group을 지원한다. 이는 최소 관리와 자동 스케일링으로 Kafka 기반 CDC 파이프라인(Debezium + Kafka consumer)을 AWS로 replatform하는 요구 사항과 직접적으로 부합하므로 최선의 선택이다.
핵심 개념: 이 문제는 replatform(리팩터링 아님) 접근 방식에서 워크로드가 Kafka 프로토콜/API 호환성, 최소 운영 관리, 자동 스케일링을 요구할 때 관리형 스트리밍 ingest 서비스를 선택하는지를 평가한다. 정답이 맞는 이유: Amazon MSK Serverless가 최적의 선택인 이유는 Apache Kafka API(producer/consumer, topic/partition, consumer group)를 그대로 보존하면서 대부분의 클러스터 관리 작업(용량 계획, 브로커 사이징, 패치, 스케일링 작업)을 제거하기 때문이다. 회사는 Kafka 클러스터와 이미 Kafka를 사용하는 CDC consumer(Debezium이 Kafka topic으로 emit)를 lift-and-shift하고 있다. MSK Serverless로 replatform하면 애플리케이션과 Debezium 통합 패턴을 거의 변경하지 않으면서 “최소 운영 관리”와 “자동 스케일링” 요구 사항을 충족한다. ingest 프로파일(평균 약 2 MB/s, 최대 약 12 MB/s 버스트, 50 KB 메시지)은 일반적인 MSK Serverless의 탄력적 처리량 기대치 범위 내에 있으며, serverless는 사용량에 따라 읽기/쓰기 처리량과 스토리지를 자동으로 확장한다. 주요 AWS 기능: MSK Serverless는 Kafka 호환 엔드포인트, IAM 기반 인증(또는 구성에 따라 SASL/SCRAM), 전송 중 및 저장 시 암호화, 브로커 인스턴스를 관리하지 않고도 용량을 자동 확장하는 기능을 제공한다. Amazon CloudWatch와 통합되어 메트릭과 로깅을 제공하며, 일반적인 Kafka 툴링을 지원한다. CDC의 경우 Debezium은 Kafka topic으로 계속 produce할 수 있고, consumer는 Kafka client library와 consumer group 시맨틱을 계속 사용할 수 있다. 흔한 오해: Kinesis Data Streams와 Firehose는 “관리형 스트리밍”으로 자주 선택되지만, Kafka API/시맨틱을 노출하지 않기 때문에(partition vs shard, offset, consumer group이 다름) 리팩터링이 필요하다. MSK provisioned는 Kafka API를 보존하지만, 브로커 사이징, 스케일링 이벤트 관리, 용량 계획이 필요하므로 “자동 스케일링과 최소 관리 오버헤드” 요구 사항을 serverless만큼 강하게 충족하지 못한다. 시험 팁: “Kakfa API 보존”과 “최소 운영”이 보이면 MSK를 떠올려라. 또한 “자동 스케일링”과 “최소 관리”가 함께 요구되면 provisioned MSK보다 MSK Serverless를 우선하라. Kinesis는 API 변경/리팩터링이 허용되거나 Kinesis 네이티브 ingest/처리 패턴을 명시적으로 요구할 때만 선택하라.
미디어 분석 회사는 200개 이상의 예약된 데이터 파이프라인을 위한 워크플로 오케스트레이터가 필요합니다. 이 파이프라인은 온프레미스 Kubernetes 클러스터(워커 노드 3대, 각 32 vCPU)와 us-east-1의 AWS 계정 전반에서 실행되며, 두 위치 모두에서 동일한 오픈 소스 DAG 정의를 사용해야 하고, 벤더 종속을 피해야 하며, 하루 최소 500회 이상의 task 실행을 지원해야 합니다. 팀이 온프레미스에서는 오픈 소스 엔진을 실행하고 클라우드에서는 완전 관리형 동등 서비스를 사용할 수 있도록 채택해야 할 AWS 서비스는 무엇입니까?
AWS Data Exchange는 AWS에서 서드파티 데이터셋을 찾고, 구독하고, 사용하는 서비스입니다. 워크플로 오케스트레이션, 스케줄링, DAG 실행을 제공하지 않습니다. 데이터 파이프라인이 외부 데이터셋을 소비할 수는 있지만, Data Exchange는 오케스트레이터가 아니며 온프레미스와 관리형 클라우드 서비스에서 동일한 오픈 소스 DAG 정의를 실행하는 요구사항을 충족할 수 없습니다.
Amazon SWF는 AWS 네이티브 워크플로 조정 서비스입니다. 작업을 오케스트레이션할 수는 있지만 Apache Airflow가 아니며 Airflow DAG 정의를 사용하지 않습니다. SWF를 사용하면 워크플로 로직과 애플리케이션 통합을 재설계해야 하므로 벤더 종속이 증가합니다. 또한 공유 DAG 코드로 온프레미스 오픈 소스 DAG 엔진의 “완전 관리형 동등 서비스”를 제공하지 않습니다.
Amazon MWAA는 Apache Airflow를 위한 완전 관리형 AWS 서비스입니다. 온프레미스(Kubernetes에서 자체 관리 Airflow)와 AWS(관리형 Airflow) 전반에서 동일한 오픈 소스 DAG 정의를 유지해야 한다는 요구사항에 직접 부합합니다. MWAA는 확장, 가용성, 패치, 통합을 처리하며 S3, IAM, CloudWatch, VPC, KMS와 연동되므로 200개 이상의 예약 파이프라인과 하루 500회 이상의 task 실행에 이상적입니다.
AWS Glue는 crawlers, jobs, Glue Workflows를 갖춘 서버리스 데이터 통합(ETL/ELT) 서비스입니다. 그러나 Glue는 Apache Airflow가 아니며, 다시 작성 없이 온프레미스와 AWS에서 동일한 Airflow DAG를 실행할 수 없습니다. 또한 Glue는 온프레미스 Kubernetes 클러스터에 동일한 오픈 소스 엔진으로 배포할 수 없으므로 이식성과 종속 회피 요구사항을 충족하지 못합니다.
핵심 개념: 이 문제는 온프레미스와 완전 관리형 AWS 서비스 모두에서 실행할 수 있는 오픈 소스 DAG 엔진을 사용하여 예약된 데이터 파이프라인을 위한 워크플로 오케스트레이션을 테스트합니다. 핵심은 이식성(동일한 DAG 정의), 벤더 종속 회피, 그리고 운영 확장성입니다. 정답이 맞는 이유: Amazon Managed Workflows for Apache Airflow (MWAA)는 Apache Airflow를 위한 AWS의 완전 관리형 서비스입니다. Airflow는 오픈 소스이며 온프레미스에서 Kubernetes에 배포되는 경우가 흔합니다. Airflow DAG를 표준으로 삼으면 회사는 동일한 DAG 코드를 두 곳에서 실행할 수 있습니다: (1) 온프레미스 Kubernetes 클러스터에서 자체 관리 Airflow, (2) us-east-1의 MWAA. 이는 “두 위치에서 동일한 오픈 소스 DAG 정의” 및 “온프레미스에서 오픈 소스 엔진을 실행하고 클라우드에서 완전 관리형 동등 서비스를 실행” 요구사항을 직접 충족합니다. 또한 MWAA는 하루 500회 이상의 task 실행을 훨씬 상회하는 일반적인 엔터프라이즈 스케줄링/오케스트레이션 요구를 지원합니다. 주요 AWS 기능: MWAA는 Airflow 컨트롤 플레인(scheduler, web server, workers)을 관리하고 IAM, VPC 네트워킹, CloudWatch logs/metrics, DAG/plugins/requirements를 위한 S3, 암호화를 위한 KMS를 통해 AWS 서비스와 통합됩니다. 또한 워커 용량 확장(environment class/worker scaling)을 지원하고 운영 부담(패치, 업그레이드, 고가용성)을 줄여줍니다. 하이브리드 패턴에서는 팀이 종종 DAG를 공유 repo에 두고 CI/CD를 통해 온프레미스 Airflow와 MWAA의 S3 DAG bucket에 배포합니다. 흔한 오해: AWS Glue는 관리형 ETL 서비스이며 workflows/triggers를 포함하지만, 온프레미스 오케스트레이터와 “동일한 오픈 소스 엔진”이 아니고 Glue를 온프레미스에서 네이티브로 실행할 수도 없습니다. Amazon SWF는 AWS 네이티브 워크플로 서비스(Airflow 호환 아님)로 DAG 로직을 다시 작성해야 하므로 종속성이 증가합니다. AWS Data Exchange는 서드파티 데이터셋 구독을 위한 서비스이지 오케스트레이션이 아닙니다. 시험 팁: “DAGs”, “Airflow”, “avoid vendor lock-in”, “managed equivalent in AWS”가 보이면 MWAA를 떠올리세요. 문제가 오케스트레이션 코드의 하이브리드 이식성을 강조한다면, 리팩터링이 필요한 AWS 네이티브 워크플로 엔진보다 오픈 소스 호환 관리형 서비스를 우선하세요.
한 핀테크 스타트업은 us-east-1 및 eu-west-1에서 Amazon API Gateway (Regional)로 12개의 public REST API를 실행하고 있으며, custom domain이 있는 단일 Amazon CloudFront distribution 뒤에 두고 있습니다. 회사는 모든 클라이언트 연결에 대해 TLS 1.2+를 강제해야 하며, 최소 60일마다 zero-downtime certificate renewal이 필요합니다. 한 data engineer는 SSL/TLS certificate의 발급, 배포, rotation을 단순화하고, 운영 오버헤드를 최소화하면서 두 Region 전반에 걸쳐 자동으로 갱신 및 배포하는 솔루션을 구현해야 합니다. 어떤 솔루션이 이러한 요구 사항을 충족합니까?
오답입니다. certificate를 수동으로 생성하고 스크립트와 cron job으로 교체하는 방식은 불필요한 운영 복잡성을 만들고, 갱신 시점에 outage가 발생할 위험을 높입니다. 또한 이 접근 방식은 validation, secure storage, deployment timing, rollback logic를 팀이 직접 처리해야 합니다. 이는 관리형 갱신과 원활한 배포를 위한 ACM의 CloudFront native integration을 활용하지 못합니다. 시험 문제에서 least operational overhead와 zero-downtime renewals를 강조한다면, 수동 프로세스는 ACM보다 분명히 열등합니다.
정답입니다. AWS Certificate Manager (ACM)는 public SSL/TLS certificates를 발급하고 갱신하는 AWS-native managed service로, 운영 부담을 직접적으로 줄여 줍니다. 회사는 사용자 지정 도메인이 있는 단일 CloudFront distribution을 사용하므로, client-facing certificate는 각 Regional API Gateway endpoint에서 개별적으로 관리되는 것이 아니라 CloudFront에 연결됩니다. CloudFront는 viewer connection용 ACM certificates가 us-east-1에 있어야 하므로, 해당 리전에 certificate를 프로비저닝하는 것이 필수입니다. ACM은 적격한 public certificate를 자동으로 갱신하며, CloudFront는 중단을 유발하는 수동 교체 과정 없이 갱신된 certificate를 계속 제공합니다.
오답입니다. AWS Secrets Manager는 database credentials, API keys 및 기타 application secrets와 같은 secret을 저장하고 교체하는 용도로 설계되었으며, CloudFront viewer certificates의 기본 certificate lifecycle manager가 아닙니다. CloudFront는 public custom-domain certificate를 Secrets Manager에서 native하게 가져오지 않으므로, 이 설계는 여전히 certificate를 import하고 연결하기 위한 custom automation이 필요합니다. 이는 복잡성, 유지 관리 부담, 그리고 배포 오류나 downtime 가능성을 더합니다. 반면 ACM은 이 정확한 사용 사례에 대해 직접적인 certificate 발급, 갱신 및 CloudFront integration을 이미 제공합니다.
오답입니다. Amazon ECS Service Connect는 ECS workloads를 위한 service-to-service networking 기능으로, 내부 연결 패턴에는 도움이 될 수 있지만 CloudFront 또는 API Gateway custom domains용 public certificates 관리와는 관련이 없습니다. 문제의 아키텍처는 ECS-hosted services가 아니라 API Gateway와 CloudFront를 기반으로 합니다. 또한 mesh-style connectivity도 요구하지 않습니다. Service Connect는 client가 CloudFront에 연결할 때 사용되는 public edge certificate를 프로비저닝하거나 교체하지 않습니다. 따라서 제시된 TLS, renewal 또는 multi-Region certificate management 요구 사항을 해결하지 못합니다.
핵심 개념: 이 문제는 Amazon CloudFront를 사용한 edge-terminated HTTPS에 대해 중앙 집중식 TLS certificate lifecycle management를 테스트하며, CloudFront와 함께 AWS Certificate Manager (ACM)를 올바르게 사용하는지를 묻습니다. 또한 CloudFront에서 ACM certificates에 대한 regional requirement와 ACM이 zero downtime으로 renewal을 처리하는 방식도 암묵적으로 테스트합니다. 정답인 이유: 모든 client connection이 CloudFront에서 종료되므로(사용자 지정 도메인이 있는 단일 distribution), 클라이언트에 대해 TLS 1.2+를 강제하는 데 중요한 certificate는 CloudFront viewer certificate입니다. CloudFront용 public certificate를 발급, 배포, 교체하는 가장 운영 부담이 적은 방법은 ACM입니다. CloudFront의 경우 ACM certificate는 us-east-1 (N. Virginia)에 있어야 합니다. distribution에 연결되면 ACM은 적격한 public certificate를 자동으로 갱신하고, CloudFront는 downtime이나 수동 재배포 없이 갱신된 certificate를 자동으로 사용합니다. 이는 “zero-downtime renewals”와 “least operational overhead” 요구 사항을 직접 충족합니다. 주요 AWS 기능: (1) ACM public certificates: 무료이며 관리형 발급 및 갱신을 제공합니다. (2) CloudFront viewer certificate integration: 사용자 지정 도메인에 대해 ACM cert(반드시 us-east-1)를 distribution에 연결합니다. (3) Security policy: 규정 준수 요구 사항을 충족하기 위해 CloudFront가 TLS 1.2+를 강제하도록 구성합니다(예: TLSv1.2_2021 이상). (4) Automatic renewal: ACM은 만료 전에 갱신합니다(정확히 60일 주기는 아님). 그래도 갱신이 자동으로 이루어지고 정책상 필요하면 짧은 유효 기간으로 발급할 수 있으므로 “at least every 60 days” 요구를 충족합니다. 운영 측면에서 ACM이 의도된 관리형 접근 방식입니다. 흔한 오해: 많은 사람들은 certificate를 각 Region의 모든 API Gateway Regional endpoint에 배포해야 한다고 생각합니다. 그러나 앞단에 CloudFront가 있으면 client-facing cert는 API Gateway가 아니라 CloudFront에 있습니다. 또 다른 함정은 cert를 여러 Region에 “복사”해야 한다고 생각하는 것입니다. 하지만 viewer certificate에 대한 CloudFront의 특별한 us-east-1 requirement 때문에 cross-Region 배포는 필요하지 않습니다. 시험 팁: “CloudFront + custom domain + least operational overhead”를 보면 기본적으로 ACM-managed public certificates를 떠올리세요. 규칙을 기억하세요: CloudFront는 us-east-1의 ACM certificates를 요구합니다. 또한 “viewer-side TLS”(CloudFront와 client 간)와 “origin TLS”(CloudFront와 API Gateway 간)를 구분하세요. 이 둘은 독립적으로 처리할 수 있습니다.
스트리밍 분석 스타트업이 4-노드 Amazon Redshift RA3 (ra3.4xlarge) 클러스터를 운영하며, 230개 컬럼을 가진 비정규화된 이벤트 테이블을 모델링해야 합니다. 이 테이블은 9개월 내 300 GB에서 3 TB로 증가할 것으로 예상되며, 안정적인 조인 컬럼이나 distribution key로 적합한 균일하게 높은 cardinality 필드가 없습니다. 테이블이 확장됨에 따라 지속적인 유지보수를 최소화하려면 어떤 distribution style을 선택해야 합니까?
ALL distribution은 전체 테이블을 모든 노드에 복제하여 조인 시 재분배를 제거합니다. 그러나 이는 작은 dimension/lookup 테이블을 위한 것입니다. 약 3 TB까지 성장할 테이블을 4-노드 클러스터 전체에 복제하면 스토리지 사용량, 로드 시간, vacuum/유지보수 오버헤드가 크게 증가하고 성능에도 부정적 영향을 줄 수 있습니다. 이는 테이블이 확장될 때 지속적인 유지보수를 최소화해야 한다는 요구사항과 정면으로 충돌합니다.
EVEN distribution은 행을 slice 전반에 라운드로빈으로 분산하므로, 적절한 distkey가 없을 때 합리적인 기본값이며 skew를 피하는 데 도움이 됩니다. 하지만 이는 고정된 수동 선택입니다. 테이블이 커지고 쿼리 패턴이 진화하면, EVEN은 Redshift가 관리하는 결정(예: 작은 테이블에 대해 ALL을 선택하거나 전략을 조정하는 것)보다 최적이 아닐 수 있습니다. “지속적인 유지보수 최소화” 요구사항을 가장 잘 충족하지는 못합니다.
AUTO distribution은 Amazon Redshift가 테이블 크기와 쿼리 패턴에 따라 최적의 distribution style을 선택하도록 하여, 시간이 지나도 수동 튜닝 필요성을 줄여줍니다. 안정적인 조인 컬럼이나 적합한 high-cardinality distkey가 없으므로, AUTO는 KEY로 인한 skew 위험과 ALL의 확장 문제를 피합니다. 300 GB에서 3 TB로 성장하는 동안 지속적인 유지보수를 최소화해야 한다는 요구사항과 직접적으로 부합합니다.
KEY distribution은 동일한 distkey 값을 가진 행을 같은 노드에 colocate하여, 테이블들이 동일한 조인 키를 공유하고 그 키가 균등 분포의 high cardinality일 때 조인 성능을 크게 향상시킬 수 있습니다. 그러나 프롬프트는 distribution key로 적합한 안정적인 조인 컬럼이나 균일하게 높은 cardinality 필드가 없다고 명시하므로, KEY는 데이터 skew, 불균등한 노드 활용, 향후 재작업을 유발할 가능성이 높아 유지보수 최소화와 반대입니다.
핵심 개념: 이 문제는 Amazon Redshift 테이블 distribution style과 확장 가능한 성능을 위해 최소한의 운영 오버헤드로 이를 선택하는 방법을 평가합니다. Distribution은 행이 compute node/slice 전반에 어떻게 배치되는지를 결정하며, 조인 성능, 데이터 skew, 그리고 데이터가 증가할 때의 유지보수에 영향을 줍니다. 정답이 맞는 이유: 테이블은 300 GB에서 3 TB로 성장하는 크고 비정규화된 이벤트 테이블이며, 프롬프트에서 DISTKEY에 적합한 안정적인 조인 컬럼 또는 균일하게 높은 cardinality 필드가 없다고 명시합니다. 이런 상황에서는 수동 KEY distribution(스큐 위험 및 향후 재작업)과 ALL distribution(데이터를 모든 노드에 복제하므로 테이블이 커질수록 비현실적)을 피하는 것이 모범 사례입니다. RA3에서는 Redshift가 테이블 크기와 사용 패턴에 따라 distribution style(예: 작은 dimension 테이블에 대해 EVEN 또는 ALL)을 선택하고 조정할 수 있는 AUTO distribution을 지원합니다. 요구사항이 “테이블이 확장될 때 지속적인 유지보수를 최소화”하는 것이므로, AUTO가 가장 부합합니다. 테이블이 커지고 쿼리 패턴이 진화함에 따라 DISTSTYLE 결정을 다시 검토할 필요를 줄여줍니다. 주요 AWS 기능/모범 사례: DISTSTYLE AUTO는 Redshift가 distribution 선택을 자동으로 관리하도록 합니다. 이는 명확한 distkey가 없거나 워크로드가 변하는 경우 특히 유용합니다. RA3는 managed storage를 통해 compute와 storage를 분리하지만, distribution은 조인 및 집계 중 네트워크 재분배에 여전히 영향을 줍니다. AUTO는 수동 튜닝의 반복을 피하도록 돕고, 확신이 없거나 Redshift가 최적화하도록 하려는 경우 AUTO를 사용하라는 Redshift 가이드와 일치합니다. 흔한 오해: 적절한 distkey가 없을 때 EVEN이 자주 권장되지만, 이는 여전히 수동으로 고정된 선택이며 테이블이 커지거나 다른 테이블/쿼리가 변하면 최적이 아닐 수 있습니다. ALL은 조인 속도 측면에서 매력적으로 보일 수 있지만, 수 TB 규모의 fact/event 테이블이 아니라 작은 lookup/dimension 테이블에만 적합합니다. 시험 팁: 문제가 “최소 유지보수”, “알 수 없거나 불안정한 조인 키”, 또는 “진화하는 워크로드”를 강조하면 DISTSTYLE AUTO를 우선 선택하십시오. ALL은 작고 자주 조인되는 dimension 테이블에만 사용하십시오. KEY는 일반적인 조인과 정렬되며 skew를 유발하지 않는 안정적인 high-cardinality 키가 있을 때만 사용하십시오.
한 바이오테크 기업이 lab-data-prd-042라는 이름의 Amazon S3 bucket에 마스킹된 실험실 보고서를 저장하고, AWS IAM Identity Center를 통해 5개 팀이 assume하는 IAM roles를 사용하여 엄격한 access policy를 적용하고 있습니다. 이 기업은 policy를 위반하여 어떤 사용자가 s3://lab-data-prd-042/restricted/ prefix에서 GetObject 또는 PutObject를 수행할 때마다 정확한 username을 포함하는 거의 실시간(3분 미만) 알림이 필요합니다. 다음 중 어떤 솔루션이 이러한 요구 사항을 충족합니까?
AWS Config rules는 AWS resources의 configuration state(예: bucket policy, public access settings)를 평가하고 시간 경과에 따른 compliance를 보고합니다. GetObject/PutObject 같은 개별 S3 object API call을 캡처하지 않으며, 거부된 각 요청에 대한 정확한 username도 제공하지 않습니다. Config는 거의 실시간의 요청 단위 위반 알림을 위해 설계되지 않았으므로 3분 미만, 사용자별 요구 사항을 충족할 수 없습니다.
S3에 대한 Amazon CloudWatch metrics(요청 metrics 포함)는 주로 집계된 count/latency이며, 정확한 username 또는 특정 AccessDenied 이벤트 컨텍스트 같은 요청 단위 세부 정보를 제공하지 않습니다. S3 request metrics를 활성화하더라도 특정 prefix에서 policy를 위반한 사용자가 누구인지 신뢰성 있게 식별할 수 없습니다. 따라서 attribution 요구 사항을 충족하지 못합니다.
CloudTrail S3 data events는 object-level API activity(GetObject/PutObject)를 기록하고 identity details(userIdentity) 및 error information(예: AccessDenied)을 포함합니다. CloudTrail events를 CloudWatch Logs로 전달(또는 EventBridge 사용)하면 restricted/ prefix에서 거부된 access를 필터링하여 몇 분 내에 alarms/notifications를 트리거할 수 있습니다. 이는 거의 실시간 알림과 정확한 username attribution 요구 사항을 모두 충족합니다.
S3 server access logs는 object-level requests를 보여줄 수 있지만, 전달이 거의 실시간이 아니며 logs는 일반적으로 상당한 지연(종종 수십 분에서 수 시간) 후에 전달됩니다. 또한 이를 CloudWatch Logs로 운영화하면 ingestion/processing 지연과 복잡성이 추가됩니다. requester 정보가 포함될 수는 있지만, 3분 미만이라는 시간 요구 사항이 이 옵션이 부적합한 주된 이유입니다.
핵심 개념: 이 문제는 Amazon S3 object-level access에 대한 감사(auditing)와 거의 실시간 알림을 테스트하며, 특히 policy에 의해 access가 거부될 때 정확한 human user를 식별(attribution)하는 것을 요구합니다. 올바른 도구 조합은 AWS CloudTrail S3 data events(object-level API activity)와 Amazon CloudWatch Logs/EventBridge로의 거의 실시간 전달을 통한 알림입니다. 정답이 맞는 이유: AWS CloudTrail은 특정 bucket, 심지어 특정 prefix(restricted/)에 대해 GetObject 및 PutObject에 대한 S3 data events를 기록할 수 있습니다. 이러한 events에는 identity context(userIdentity)가 포함되며, IAM Identity Center로 federated된 sessions의 경우 일반적으로 assumed role session 세부 정보와 원본 사용자(예: session name 및/또는 설정에 따라 principal tags)가 포함됩니다. CloudTrail events를 CloudWatch Logs로 전송(또는 EventBridge를 통해 라우팅)하면, 해당 prefix에서 AccessDenied/Unauthorized 작업을 매칭하는 metric filters 또는 event rules를 생성하여 몇 분 내에 alarm/notification을 트리거할 수 있으므로 3분 미만 요구 사항을 충족합니다. 주요 AWS 기능 / 구성 방법: 1) bucket lab-data-prd-042에 대해 CloudTrail data events를 활성화하고 restricted/ prefix로 범위를 제한합니다(advanced event selectors). 필요에 따라 management events를 포함할 수 있으나, GetObject/PutObject에는 data events가 필수입니다. 2) 낮은 지연 시간 처리를 위해 CloudTrail을 CloudWatch Logs로 전달(또는 EventBridge integration 사용)합니다. 3) eventName이 [GetObject, PutObject]이고, resources에 restricted/ prefix가 포함되며, errorCode가 AccessDenied인 이벤트를 매칭하는 CloudWatch Logs metric filter(또는 EventBridge rule)를 생성합니다. SNS, PagerDuty 등으로 트리거합니다. 4) Identity Center sessions가 사용자 attribution을 보존하도록 보장합니다: role session name 매핑 및/또는 principal tags를 사용하여 alert payload에 정확한 username이 포함되도록 이벤트에 해당 정보가 들어가게 합니다. 흔한 오해: AWS Config는 개별 API call이 아니라 resource configuration compliance를 평가하므로, username을 포함한 요청 단위 policy 위반을 감지할 수 없습니다. CloudWatch S3 metrics는 집계(aggregate) 데이터이며 사용자 identity를 요청 단위로 제공하지 않습니다. S3 server access logs는 지연(종종 수 시간)이 발생하므로 3분 미만 알림에는 적합하지 않습니다. 시험 팁: S3 objects에 대한 “누가 무엇을 했는지”(GetObject/PutObject)가 필요하면 CloudTrail data events를 떠올리십시오. 거의 실시간 알림이 필요하면 CloudTrail을 CloudWatch Logs metric filters 또는 EventBridge rules와 결합하십시오. 정확한 username이 요구되면, 집계 metrics나 지연된 access logs에 의존하지 말고 federated/assumed-role sessions에서 identity context(session name/principal tags)를 캡처하도록 구성해야 합니다.
데이터 엔지니어가 us-west-2에서 Amazon Athena 쿼리를 실행하여 Amazon S3 버킷(s3://prod-logs-2024)을 가리키는 Glue Data Catalog 테이블을 조회하고 있다. 이 버킷에는 128-MB Parquet 파일이 고객 관리형 AWS KMS 키(alias/prod-logs-key)로 암호화되어 있으며, 쿼리에 사용된 IAM role에는 버킷에 대한 s3:ListBucket 및 s3:GetObject 권한이 있음에도 객체를 읽는 동안 AccessDenied로 쿼리가 실패한다. 가장 가능성이 높은 원인은 무엇인가?
bucket policy가 액세스를 차단할 수는 있지만, 프롬프트는 role에 s3:ListBucket 및 s3:GetObject가 있고 실패가 SSE-KMS로 암호화된 객체를 읽는 동안 발생한다고 구체적으로 말한다. 실제로도 동일한 role이 목록 조회와 읽기 시도를 할 수 있지만 KMS 때문에 복호화가 실패하는 경우가 많다. 문제에서 명시적인 bucket policy deny나 cross-account 제한을 언급하지 않는 한, KMS 권한 누락이 더 가능성이 높은 원인이다.
Athena engine version 문제는 보통 쿼리 문법/기능 비호환이나 성능 차이를 유발하지, S3에서 객체를 가져올 때 AccessDenied 오류를 만들지는 않는다. AccessDenied는 S3/KMS의 권한 부여 실패이며 compute engine 불일치가 아니다. 시험에서는 증상이 지원되지 않는 SQL 함수, Parquet reader 버그, 또는 문서화된 engine별 동작이 아닌 이상 “오래된 engine version”을 오답 유도 선택지로 보라.
Region 불일치는 지연 시간 때문에 AccessDenied로 나타나지 않는다. S3는 regional service이며 다른 Region의 버킷에 접근하는 것도 global endpoint/redirect 동작을 통해 가능하지만, 이는 권한 오류를 유발하지 않는다. Athena 쿼리는 특정 Region에서 실행되며 일반적인 구성에서는 데이터 소스와 Glue catalog가 같은 Region에 있어야 하지만, 설명된 오류(객체 읽기 중 AccessDenied)는 지연 시간이 아니라 권한을 가리킨다.
정답. SSE-KMS로 암호화된 S3 객체의 경우 principal은 KMS 키를 사용할 권한, 특히 kms:Decrypt가 있어야 하며 KMS key policy도 해당 사용을 허용해야 한다. alias/prod-logs-key(또는 그 기반이 되는 key ARN)에 대한 kms:Decrypt가 없으면 S3가 객체의 데이터 키를 복호화할 수 없고 GetObject 중 AccessDenied를 반환하여 Athena가 Parquet 파일을 스캔할 때 실패한다.
핵심 개념: 이 문제는 SSE-KMS(AWS KMS 고객 관리형 키)로 암호화된 Amazon S3 객체를 Amazon Athena가 읽을 때의 액세스 제어를 테스트한다. SSE-KMS에서는 S3 권한(객체 읽기)과 KMS 권한(객체를 암호화한 데이터 키 복호화) 둘 다가 필요하다. 정답이 맞는 이유: IAM role에는 s3:ListBucket 및 s3:GetObject가 있어 필요 조건은 충족하지만, SSE-KMS 암호화 객체에는 충분하지 않다. Athena가 고객 관리형 KMS 키(alias/prod-logs-key)로 암호화된 S3의 Parquet 파일을 읽을 때, S3는 principal을 대신해 KMS를 호출하여 복호화해야 한다. role에 해당 CMK에 대한 kms:Decrypt(그리고 일부 워크플로에서는 일반적으로 kms:GenerateDataKey)가 없으면 KMS가 요청을 거부하고, S3는 이를 GetObject 중 AccessDenied로 표면화한다. 일반적인 S3 권한이 올바르게 보이는데도 SSE-KMS 객체에서만 읽기가 실패할 때 가장 흔하고 가능성이 높은 근본 원인이다. 주요 AWS 기능 / 구성: - SSE-KMS는 principal이 키를 사용할 수 있도록 KMS key policy와 IAM policy 모두에서 허용되어야 한다. 교차 서비스 액세스의 경우 key policy가 계정/role을 신뢰(또는 IAM을 통해 허용)해야 하며, IAM role에는 key ARN에 대한 kms:Decrypt가 포함되어야 한다. - Athena에서는 실행 role(또는 쿼리를 실행하는 user/role)이 소스 데이터 객체와 (종종) 쿼리 결과 위치가 해당 버킷도 SSE-KMS인 경우 그 결과 위치도 복호화할 수 있어야 한다. - KMS 권한 평가는 key policy와 IAM policy 모두에 의해 수행되며, 어느 한쪽에라도 명시적 deny가 있으면 액세스가 차단된다. 흔한 오해: 많은 사람이 S3:GetObject만 있으면 충분하다고 생각한다. 이는 SSE-S3에서는 맞지만 SSE-KMS에서는 아니다. 또 다른 함정은 Glue Data Catalog 권한에 집중하는 것인데, 여기서의 실패는 catalog 액세스가 아니라 객체 읽기 시점에서 발생한다. 시험 팁: “고객 관리형 KMS 키로 암호화된 S3 객체” + “읽기 시 AccessDenied” + “S3 권한은 존재”를 보면 즉시 KMS 권한(kms:Decrypt)과 key policy grant를 확인하라. 또한 Athena 결과 버킷의 암호화 요구 사항도 고려해야 하지만, 프롬프트는 객체를 읽는 동안 실패한다고 명시하므로 소스 객체 복호화 권한을 가리킨다.
미디어 분석 스타트업이 온프레미스 Oracle 12c 데이터베이스를 1 Gbps Direct Connect 링크를 통해 AWS에 연결해 운영하고 있으며, 데이터 엔지니어는 JDBC를 통해 특정 테이블(~5천만 행, 30개 컬럼)을 크롤링하여 스키마를 카탈로그화한 다음, 데이터를 추출, 변환, 적재하여 Amazon S3 버킷에 파티셔닝된 Parquet(Snappy)로 매일 01:00 UTC 일정에 맞춰 저장해야 합니다. 또한 비용을 낮게 유지하기 위해 관리형 서비스 오버헤드를 최소화하면서 엔드투엔드 파이프라인을 오케스트레이션해야 합니다. 이러한 요구 사항을 가장 비용 효율적으로 충족하는 AWS 서비스 또는 기능은 무엇입니까?
AWS Step Functions는 ETL 단계를 orchestration할 수 있지만, Glue 중심 파이프라인에 가장 자연스러운 기능이라기보다는 범용 workflow 서비스입니다. 이 시나리오에서는 파이프라인이 JDBC 소스 크롤링과 ETL job 실행 같은 Glue-native 기능에 이미 의존하고 있으므로, Step Functions를 추가하면 필요하지 않은 추가 orchestration 서비스를 도입하게 됩니다. Step Functions도 serverless이고 오버헤드가 낮지만, 시험 관점에서 가장 적절한 답은 워크플로가 주로 crawler에서 job으로 이어지는 순서를 다룰 때의 Glue-native orchestration 기능입니다. 따라서 Step Functions도 가능한 선택이지만, 제시된 보기 중 가장 비용 효율적이거나 직접적으로 맞는 선택은 아닙니다.
AWS Glue workflows는 AWS Glue crawlers, Glue ETL jobs, 그리고 triggers를 하나의 관리형 서비스에서 기본적으로 orchestration하기 때문에 가장 적합합니다. 문제는 스키마를 cataloging하기 위해 JDBC로 접근 가능한 Oracle 테이블을 크롤링한 다음, partitioned Parquet 형식으로 S3에 적재하는 scheduled ETL을 실행해야 한다고 명시하고 있으며, 이는 Glue crawler와 Glue job 기능에 정확히 대응됩니다. Glue workflows를 사용하면 별도의 orchestration 계층을 도입할 필요가 없어 서비스 확산과 운영 오버헤드를 모두 줄일 수 있습니다. Glue 구성 요소를 중심으로 한 일일 파이프라인에서는 일반적으로 이것이 가장 비용 효율적인 관리형 옵션입니다.
AWS Glue Studio는 Glue ETL jobs를 생성, 편집, 모니터링하기 위한 시각적 개발 인터페이스입니다. 데이터 엔지니어가 transformations를 설계하고 Glue job 코드를 생성하는 데 도움을 주지만, crawlers, jobs, 그리고 scheduled dependencies를 처음부터 끝까지 연결하는 기본 orchestration 기능은 아닙니다. 문제는 최소한의 오버헤드로 일일 일정에 따라 파이프라인을 orchestration할 서비스 또는 기능을 묻고 있으므로, Studio UI가 아니라 Glue workflows를 가리킵니다. Glue Studio를 선택하는 것은 job authoring과 workflow orchestration을 혼동한 것입니다.
Amazon MWAA는 여러 시스템 전반에서 복잡한 DAG 기반 orchestration을 위한 관리형 Apache Airflow를 제공하지만, 단일 일일 Glue 중심 ETL 파이프라인에는 보통 과도한 선택입니다. MWAA는 지속적으로 실행되는 Airflow 환경을 필요로 하므로, Glue workflows와 비교해 비용과 운영 복잡성이 모두 증가합니다. 문제는 관리형 서비스 오버헤드 최소화와 비용 통제를 강조하므로, MWAA는 적합하지 않습니다. 이는 이미 Airflow를 표준으로 사용하고 있거나 Glue-native 기능을 넘어서는 광범위한 custom orchestration이 필요한 조직에 더 적합합니다.
핵심 개념: 요구 사항은 JDBC를 통해 온프레미스 Oracle 테이블을 크롤링하고, 스키마를 카탈로그화하고, 데이터를 변환한 뒤, 이를 partitioned Parquet 형식으로 Amazon S3에 적재하는 일일 ETL 파이프라인을 위한 낮은 오버헤드와 비용 효율적인 orchestration 메커니즘입니다. 이 파이프라인은 Glue crawler 및 Glue ETL job과 같은 AWS Glue 구성 요소를 중심으로 자연스럽게 구성되므로, 가장 적절한 orchestration 기능은 AWS Glue workflows입니다. 정답인 이유: AWS Glue workflows는 Glue crawlers, Glue jobs, 그리고 triggers를 관리형 serverless 방식으로 orchestration하도록 특별히 설계되었습니다. 하루 한 번 실행되는 ETL 프로세스의 경우, Glue workflows는 별도의 orchestration 플랫폼 없이도 기본적인 dependency 처리, scheduling, retries, 그리고 status tracking을 제공합니다. 따라서 파이프라인이 이미 JDBC ingestion 및 스키마 cataloging을 위해 Glue를 중심으로 구축되어 있을 때 운영 오버헤드와 비용을 모두 낮게 유지할 수 있습니다. 주요 기능: Glue workflows는 crawler와 ETL job을 함께 연결할 수 있고, scheduled 또는 conditional triggers를 사용할 수 있으며, AWS Glue Data Catalog와 직접 통합됩니다. Glue는 Direct Connect를 통해 온프레미스 Oracle 데이터베이스에 대한 JDBC connections를 지원하고, Glue jobs는 Snappy compression이 적용된 partitioned Parquet를 S3에 쓸 수 있습니다. 따라서 Glue workflows는 추가 orchestration 서비스를 도입하는 대신 전체 파이프라인에 일관되게 잘 맞는 선택입니다. 흔한 오해: Step Functions는 강력한 범용 orchestrator이지만, 워크플로가 주로 Glue-native이고 crawler와 ETL job orchestration이 필요한 경우에는 가장 자연스럽거나 비용 효율적인 답은 아닙니다. Glue Studio는 시각적 authoring 인터페이스일 뿐이며, orchestration 메커니즘 자체는 아닙니다. MWAA는 단순한 일일 관리형 ETL 파이프라인에 비해 운영 부담과 비용이 훨씬 큽니다. 시험 팁: 문제에서 데이터 소스 크롤링, 스키마 cataloging, JDBC ingestion, 그리고 S3로의 ETL을 명시적으로 언급하면 먼저 AWS Glue를 떠올리세요. orchestration이 주로 Glue-native 구성 요소 간에 이루어진다면, 보통 Glue workflows가 가장 좋은 답입니다. Step Functions는 Glue가 더 큰 orchestration 패턴의 한 부분일 뿐인 더 광범위한 multi-service 워크플로에 사용하도록 구분하세요.
데이터 엔지니어는 주거용 smart-meter 측정값을 처리하는 smart-utility analytics pipeline을 최적화해야 하며, Apache Parquet 파일이 매일 s3://utility-raw/consumption/ prefix 아래의 Amazon S3 bucket으로 전달됩니다. 매주 월요일 팀은 여러 기간(최근 7일, 30일, 180일)에 대해 reading_date로 필터링된 KPI를 계산하기 위해 ad hoc SQL을 실행합니다. 데이터셋은 현재 하루 약 15 GB씩 증가하며 1년 내에 하루 60 GB에 도달할 것으로 예상됩니다. 솔루션은 데이터 볼륨이 증가하더라도 query 성능이 저하되지 않도록 방지하면서 가장 cost-effective해야 합니다. 어떤 접근 방식이 이러한 요구 사항을 가장 cost-effectively 충족합니까?
정답입니다. reading_date로 partitioning하면 query predicate와 정렬되어 Athena partition pruning이 가능해지므로 최근 7/30/180일에 해당하는 partition만 scan합니다. Parquet를 사용하면 Athena는 columnar read와 predicate pushdown의 이점도 얻어 scan되는 바이트와 비용을 줄입니다. Glue Data Catalog는 table/partition metadata를 제공합니다. 이는 serverless이며 pay-per-scan이므로 주간 ad hoc query에 매우 cost-effective합니다.
오답입니다. reading_date로 partitioning하는 것은 좋지만, Amazon Redshift를 사용하면 비용과 운영 오버헤드가 추가됩니다(S3에서 데이터 loading, 테이블 유지관리, vacuum/analyze, 또는 Redshift Serverless 비용). 주간 ad hoc KPI의 경우 S3의 partitioned Parquet에 대한 Athena가 보통 더 저렴하고 단순합니다. Redshift는 지속적으로 높은 concurrency/latency 요구나 복잡한 warehouse workload가 필요할 때 더 적합합니다.
오답입니다. ingestion_date로 partitioning하는 것은 reading_date 필터와 일치하지 않으므로, 추가적인 indexing/partitioning이 없으면 Spark job이 여전히 많은 데이터를 scan할 수 있습니다. EMR은 cluster 관리와 compute 비용도 발생하며, 이는 주간 ad hoc SQL KPI에 일반적으로 정당화되지 않습니다. Spark는 무거운 transformation/ML에 적합하며, 단순 date-filtered KPI query에 가장 cost-effective한 선택은 아닙니다.
오답입니다. Aurora는 OLTP relational database이며 S3에서 증가하는 Parquet 데이터셋에 대한 대규모 분석 scan을 위해 설계되지 않았습니다. 데이터를 Aurora 테이블로 ETL 및 load해야 하므로 비용과 복잡성이 증가하고, 수백 일치 데이터에 대한 query는 Athena로 partition-pruned Parquet를 scan하는 것만큼 cost-effective하지 않습니다. Aurora는 또한 지속적인 instance/storage 비용이 있습니다.
핵심 개념: 이 문제는 AWS Glue Data Catalog를 통한 partitioning과 함께 serverless query engine(Amazon Athena)을 사용하여 Amazon S3에서 데이터를 cost-effectively 확장 가능하게 query하는 방법을 테스트합니다. 핵심 아키텍처 원칙은 데이터셋이 커질수록 query당 scan되는 데이터를 최소화하는 것입니다. 정답이 맞는 이유: 주간 KPI는 rolling window(7/30/180일)로 reading_date를 기준으로 필터링됩니다. Parquet 데이터셋을 reading_date(예: consumption/reading_date=YYYY-MM-DD/)로 partitioning하면 partition pruning이 가능해져, Athena가 전체 테이블을 scan하는 대신 date predicate와 일치하는 partition만 읽습니다. 일일 볼륨이 15 GB/day에서 60 GB/day로 증가하더라도, partition pruning은 전체 누적 데이터에 비례하여 query 성능과 비용이 선형적으로 악화되는 것을 방지합니다. Athena는 pay-per-query(스캔된 TB 기준)이므로, scan되는 바이트를 줄이는 것이 곧 가장 cost-effective한 접근입니다. 주요 AWS 기능: 1) Parquet + Athena: columnar Parquet는 column projection과 predicate pushdown을 통해 이미 scan 크기를 줄이며, partition과 결합하면 매우 효율적입니다. 2) AWS Glue Data Catalog: Athena가 사용하는 table/partition metadata를 저장합니다. Glue Crawlers, MSCK REPAIR TABLE, 또는 partition projection(대규모에서 수백만 partition 관리를 피하기 위해 종종 최선)을 통해 partition을 추가할 수 있습니다. 3) Partition 설계: ingestion_date가 아니라 reading_date(쿼리 필터)를 사용합니다. 필요하다면 partition 수를 제한하기 위해 year/month/day 같은 hierarchical partition을 고려합니다. 흔한 오해: Redshift는 빠른 SQL을 실행할 수 있지만, 항상 켜져 있는 cluster/serverless 비용과 데이터 loading/maintenance가 추가됩니다. S3 데이터에 대해 주 1회 ad hoc query를 실행하는 경우 Athena가 일반적으로 더 저렴합니다. EMR/Spark는 강력하지만 운영 부담이 크고 단순 SQL KPI에는 cost-effective하지 않습니다. Aurora는 S3의 Parquet에 대한 대규모 분석 scan에 적합하지 않으며 relational schema로 ETL/loading이 필요합니다. 시험 팁: 쿼리가 반복적으로 특정 필드(여기서는 reading_date)로 필터링된다면 그 필드로 partitioning하세요. S3 data lake에서 ad hoc SQL을 위한 가장 cost-effective한 패턴은 종종 partition pruning(및 필요 시 partition projection)과 함께 S3 + Parquet + Glue Catalog + Athena를 사용하여 데이터 증가에 따른 비용과 성능을 제어하는 것입니다.
한 리테일 분석 팀이 Amazon S3 curated bucket에 쓰는 AWS Glue ETL job으로 시간당 약 300만 건의 point-of-sale 이벤트를 처리하고 있으며, 사용자들이 오전 7:00 일일 대시보드에서 데이터 누락을 보고하고 있다. 따라서 데이터 엔지니어는 데이터가 S3에 기록되기 전 transform 단계에서 (1) 8개의 필수 column 중 어느 하나라도 null 값을 포함하면 run을 실패 처리하고 (2) fact order 레코드(OrderId, CustomerId)와 AWS Glue Data Catalog에 등록된 일일 customer snapshot 간 referential integrity를 강제하는 자동화된 data quality check를, 운영 오버헤드를 최소화하여 추가해야 한다. 어떤 솔루션을 선택해야 하는가?
오답. SageMaker Data Wrangler는 data quality/insights report를 생성할 수 있지만, AWS Glue ETL job 내부에서 hard fail/pass gate를 강제하기보다는 interactive data preparation 및 ML workflow에 더 적합하다. 또한 기존 Glue pipeline 외부에 flow, processing job, scheduling 같은 운영 component를 추가하므로 “least operational overhead” 요구사항 및 Glue transform 단계에서 check를 강제해야 한다는 요구사항과 맞지 않는다.
정답. AWS Glue의 Evaluate Data Quality transform은 Glue ETL 내에서 자동화된 rule 기반 data quality check를 수행하도록 목적에 맞게 설계되었다. IsComplete rule로 8개 column의 비-null 요구사항을 강제할 수 있고, ReferentialIntegrity rule로 (OrderId, CustomerId) 참조가 Glue Data Catalog에 등록된 customer snapshot에 존재하는지 검증할 수 있다. 이는 transform 단계에 직접 통합되며, 위반 시 run을 실패 처리하도록 최소한의 custom code로 구성할 수 있다.
오답. Custom SQL/PySpark transform(각 column별 null check + referential integrity를 위한 LEFT ANTI JOIN 로직)은 기능 요구사항을 충족할 수 있지만 운영 오버헤드를 증가시킨다. 작성/테스트/유지해야 할 코드가 더 많고, 대규모에서 성능 이슈 위험이 있으며, reporting/metric 표준화에도 추가 노력이 든다. 문제는 최소 운영 오버헤드를 명시하므로 bespoke validation 로직보다 managed Glue Data Quality rule이 더 적합하다.
오답. Data Wrangler에서 custom Python으로 null check와 referential integrity를 구현할 수는 있지만, Glue 네이티브 솔루션에 비해 추가 orchestration 및 runtime 관리가 필요하다. 또한 기존 Glue ETL transform 단계에 check를 내장하기보다 SageMaker processing job/flow 쪽으로 솔루션이 이동한다. 이는 일반적으로 Glue 내 Evaluate Data Quality를 사용하는 것보다 운영적으로 더 복잡하다.
핵심 개념: 이 문제는 운영 오버헤드를 최소화하면서 ETL 중에 AWS Glue 네이티브 방식으로 data quality를 강제하는지를 평가한다. 핵심 기능은 Amazon S3에 curated data를 쓰기 전에 Glue job의 일부로 rule을 정의하고 실행하며 그 결과에 따라 동작할 수 있는 AWS Glue Data Quality(즉, Evaluate Data Quality transform)이다. 정답이 맞는 이유: 옵션 B는 Evaluate Data Quality transform을 사용하는 AWS Glue ETL job으로 (1) 8개의 필수 column 전반에 completeness(비-null)를 강제하고 (2) fact orders dataset과 AWS Glue Data Catalog에 등록된 customer snapshot table 간 referential integrity를 검증한다. 이는 transform 단계에서 check를 추가하고 rule 위반 시 run을 실패 처리해야 한다는 요구사항과 정확히 일치한다. customer snapshot이 Data Catalog에 있으므로, Glue는 custom validation code를 구축/유지하지 않고도 무결성 check를 위한 governed되고 discoverable한 dataset으로 이를 참조할 수 있다. 주요 AWS 기능: Evaluate Data Quality는 IsComplete(필수 column용) 및 ReferentialIntegrity(소스 dataset의 key가 참조 dataset에 존재하는지 보장) 같은 rule set을 지원한다. Glue Studio/Glue ETL script에 통합되며, 결과/metric을 publish할 수 있고, rule 결과에 따라 job failure 동작을 지원한다. 이 접근은 check를 표준화하고 bespoke 로직을 줄이며 quality 결과를 관측 가능하게 만들어 AWS Well-Architected의 operational excellence와도 부합한다. 흔한 오해: SageMaker Data Wrangler(A/D)는 data preparation과 quality profiling에 자주 연관되지만, 주로 interactive/ML 지향 workflow를 위해 설계되었고 Glue 중심 ETL pipeline에 추가 component(flow, processing job)를 도입하여 운영 오버헤드를 증가시킨다. Custom SQL/PySpark check(C)도 가능하지만, 지속적인 유지보수, edge case의 신중한 처리, 추가 개발/테스트가 필요해 managed rule 기반 transform보다 운영 부담이 크다. 시험 팁: 문제가 “least operational overhead”를 요구하고 pipeline이 이미 Glue에 있다면, custom code보다 Glue 네이티브 managed transform/feature를 우선하라. 또한 요구사항에 Data Catalog table과 integrity constraint가 명시되어 있다면, join과 null check를 수동으로 구현하기보다 Glue Data Quality rule(예: IsComplete, ReferentialIntegrity)을 찾아라.
한 fintech 회사가 결제 이벤트 로그를 12개 shard가 있는 Amazon Kinesis Data Streams data stream으로 스트리밍하고 있습니다. 각 record는 2 KB이며 producer는 전체적으로 초당 약 5,000개의 record를 전송하지만, CloudWatch에서는 두 개 shard가 95% write utilization을 보이는 반면 다른 shard들은 10% 미만입니다. 또한 해당 hot shard들에 대해 PutRecords 호출이 ProvisionedThroughputExceeded를 반환합니다. Producer는 현재 merchantId를 partition key로 사용하고 있으며, flash sale 동안 단일 merchant가 이벤트의 약 70%를 생성하여 stream의 aggregate limit 미만의 총 throughput임에도 hot shard가 발생합니다. 동일한 전체 throughput을 유지하면서 throttling을 제거하려면 data engineer는 어떻게 해야 합니까?
정답. Kinesis는 partition key를 hashing하여 record를 shard에 할당합니다. merchantId를 사용하면 한 merchant가 트래픽을 지배할 때 skew가 발생합니다. “salting”(random/deterministic suffix) 추가 또는 더 높은 cardinality key(예: eventId hash)로 전환하면 해당 merchant의 이벤트가 여러 shard로 분산되어 hot shard와 throttling을 제거하면서 동일한 전체 throughput을 유지할 수 있습니다.
오답. shard를 늘리면 aggregate capacity는 증가하지만 partition-key skew를 본질적으로 해결하지는 못합니다. merchantId가 partition key로 유지되면 flash-sale merchant의 record는 여전히 동일한 shard(또는 resharding 이후에도 소수 subset)로 hash되어 해당 shard는 계속 hot 상태로 throttling되고 다른 shard는 underutilized로 남습니다.
오답. producer를 초당 1,000 records로 throttling하면 ingestion throughput이 감소하여 동일한 전체 throughput을 유지해야 한다는 요구사항을 위반합니다. stream은 이미 aggregate capacity가 충분하며, 문제는 총 capacity 부족이 아니라 shard 간 불균등 분산입니다.
오답. record 크기를 줄이는 것은 shard가 1 MB/s limit에 걸릴 때는 도움이 될 수 있지만, hot shard는 shard당 1,000 records/s limit에도 제약을 받을 수 있습니다. 2 KB record의 경우 지배적인 merchant가 MB/s는 낮더라도 shard당 record-rate limit을 초과할 수 있습니다. 근본 원인은 record 크기가 아니라 partition-key skew입니다.
핵심 개념: 이 문제는 Amazon Kinesis Data Streams의 shard 단위 throughput과 partition key가 shard 할당을 어떻게 결정하는지 테스트합니다. 각 record는 partition key를 hashing하여 shard로 라우팅되므로, key 분포가 불균등하면 stream의 총(aggregate) capacity가 충분하더라도 “hot shard”가 발생합니다. 정답이 맞는 이유: 12개 shard가 있는 stream은 aggregate write capacity가 충분하지만, 한 merchant가 이벤트의 ~70%를 생성합니다. Producer가 merchantId를 partition key로 사용하기 때문에 대부분의 record가 동일한 shard(들)로 hash되어 해당 shard의 write utilization이 ~95%까지 올라가 ProvisionedThroughputExceeded가 발생합니다. 해결책은 hot merchant의 이벤트가 여러 shard로 퍼지도록 partition-key cardinality를 높이는 것입니다. 일반적인 패턴은 논리적 grouping을 위해 merchantId를 유지하되 random 또는 deterministic suffix(예: merchantId + “-” + (hash(eventId) % 128))를 추가하여 record가 shard 전반에 분산되도록 하면서 동일한 전체 throughput을 유지하는 것입니다. 주요 AWS 기능: Kinesis Data Streams는 shard당 limit(일반적으로 write 기준 1 MB/s 또는 1,000 records/s)를 강제합니다. shard가 어느 limit이든 초과하면 PutRecords가 throttling됩니다. Partition key가 분산을 제어하며, Kinesis는 hot key를 shard 간에 자동으로 rebalance하지 않습니다. 기법으로는 random suffix 추가, 더 높은 cardinality key(eventId) 사용, 또는(적절한 경우) explicit hash key 사용으로 라우팅을 제어하는 방법이 있습니다. 흔한 오해: “shard만 추가하면 된다”(옵션 B)고 생각하기 쉽습니다. 하지만 partition key가 merchantId로 그대로라면 hot merchant는 여전히 제한된 일부 shard로 hash되며, resharding은 총 capacity를 늘릴 뿐 hot key가 분산된다는 보장은 없습니다. 또 다른 오해는 record 크기를 줄이면(옵션 D) throttling이 해결된다는 것입니다. 그러나 hot shard는 MB/s가 충분하더라도 records/s limit(1,000 records/s)에 걸릴 수 있습니다. Producer를 throttling하는 것(옵션 C)은 throughput을 낮추므로 요구사항을 만족하지 못합니다. 시험 팁: 일부 shard만 hot이고 나머지가 idle이면 partition-key skew를 의심해야 합니다. 올바른 해결책은 shard scaling보다는 거의 항상 partition key 전략 변경(cardinality 증가 / salting 추가)입니다. 또한 shard limit 두 가지(MB/s와 records/s)를 모두 확인하세요. 작은 record는 종종 records/s limit에 먼저 도달합니다.
한 연구 조직이 로그와 CSV 데이터셋을 저장하는 공유 Amazon S3 데이터 레이크에 대해 Amazon Athena로 일회성, 임시 SQL 쿼리를 실행합니다. 동일한 AWS 계정 내에서 8개의 제품 팀, 2개의 데이터 사이언스 샌드박스, 3개의 내부 애플리케이션이 모두 쿼리를 실행합니다. 조직은 동일한 S3 bucket을 계속 사용하면서도 각 팀 또는 애플리케이션이 자기 것만 보고 관리할 수 있도록 쿼리 실행 리소스, 비용, 저장된 쿼리, 쿼리 기록을 엄격하게 격리해야 합니다. 권한은 IAM 및 리소스 tag 조건으로 강제되어야 하며, S3 데이터 복제는 허용되지 않습니다. 어떤 솔루션이 이러한 요구 사항을 충족합니까?
오답입니다. 팀/애플리케이션별로 별도의 S3 bucket을 생성하는 것은 동일한 S3 bucket을 계속 사용해야 하고 데이터 복제를 피해야 한다는 요구 사항을 위반합니다. 또한 bucket policy로 데이터 액세스를 제한하더라도 Athena 쿼리 실행 리소스, 저장된 쿼리, 쿼리 기록을 직접적으로 격리하지는 못합니다. S3 수준 격리는 데이터 액세스 제어 메커니즘이지 Athena 운영 격리 메커니즘이 아닙니다.
정답입니다. Athena workgroup은 쿼리 실행 구성을 분리하고, 그룹별 제한을 강제하며, 쿼리 기록과 저장된 쿼리를 해당 범위로 제한하도록 설계되었습니다. 각 workgroup에 tag를 지정하고 리소스 tag 조건(ABAC)을 사용하는 IAM policy를 적용하면 각 팀/애플리케이션이 자신의 workgroup만 사용하고 관리하도록 보장할 수 있습니다. 이는 동일한 S3 데이터 레이크를 계속 쿼리하면서도 리소스/비용 제어/메타데이터를 엄격히 격리합니다.
오답입니다. 별도의 IAM role을 생성하면 권한 분리에 도움이 될 수 있지만, role만으로는 Athena 쿼리 기록과 저장된 쿼리에 대한 요구된 격리를 제공하지 않습니다. 여러 role이 명시적으로 제한되지 않으면 동일한 default workgroup을 사용할 수 있으며, 문제는 리소스 tag 조건을 사용한 강제와 workgroup 범위 아티팩트의 격리를 구체적으로 요구하므로 Athena workgroup으로 달성하는 것이 가장 적합합니다.
오답입니다. AWS Glue Data Catalog 리소스 policy(또는 Lake Formation 권한)는 누가 어떤 database/table에 액세스할 수 있는지 제어할 수 있지만, Athena 쿼리 실행 리소스, 비용, 저장된 쿼리, 쿼리 기록을 격리하지는 못합니다. 이 옵션은 메타데이터/table 수준의 데이터 거버넌스를 다루며, 문제에서 요구하는 Athena 사용의 운영 격리를 다루지 않습니다.
핵심 개념: 이 문제는 Athena workgroup, IAM 권한 부여, tag 기반 액세스 제어(ABAC)를 사용한 Amazon Athena 멀티 테넌트 거버넌스를 테스트합니다. Workgroup은 동일한 AWS 계정 내에서 공유 S3 데이터를 계속 쿼리하면서도 쿼리 실행 설정, 쿼리 기록, 저장된 쿼리를 격리하기 위한 Athena의 주요 리소스입니다. 정답이 맞는 이유: 팀/애플리케이션별 전용 Athena workgroup을 생성하면 (1) 쿼리 실행 리소스 및 설정(예: 엔진 버전, 결과 구성, 스캔 바이트 제한), (2) 비용 귀속 및 제어(workgroup별 CloudWatch metric 및 선택적 bytes-scanned 제한), (3) 해당 workgroup 범위로 제한되는 저장된 쿼리 및 쿼리 기록 가시성을 엄격히 격리할 수 있습니다. 각 workgroup에 tag(예: Team=TeamA)를 지정하고 리소스 tag 조건(aws:ResourceTag/Team) 및/또는 principal tag(aws:PrincipalTag/Team)를 사용하는 IAM policy를 적용하면, principal이 자신의 workgroup에서만 쿼리를 시작하고, 쿼리를 나열하며, 저장된 쿼리를 관리하도록 강제할 수 있습니다. 이는 S3 데이터를 복제하지 않으면서 IAM 및 리소스 tag 조건으로 권한을 강제해야 한다는 요구 사항을 충족합니다. 주요 AWS 기능: - Athena Workgroups: 쿼리 실행 구성, 쿼리 기록, 저장된 쿼리를 위한 격리 경계 - IAM + ABAC: "athena:WorkGroup" 같은 조건과 리소스 tagging 조건(aws:ResourceTag/*)을 사용하여 특정 workgroup에 대한 액세스를 제한 - 비용 제어: workgroup별 데이터 스캔 제한(bytes) 및 중앙화된 결과 구성, 그리고 tag를 통한 비용 할당 - 공유 S3 데이터 레이크는 변경되지 않으며, 쿼리 작업의 거버넌스만 격리됨 흔한 오해: S3 bucket으로 격리(옵션 A)하고 싶을 수 있지만, 문제는 데이터 복제를 금지하고 동일한 bucket을 계속 사용해야 한다고 명시합니다. 또 다른 오해는 Glue Data Catalog 권한만으로(옵션 D) Athena 쿼리 기록/비용을 격리할 수 있다는 것인데, 그렇지 않습니다. Glue는 메타데이터/table 액세스를 관리할 뿐 Athena 운영 아티팩트는 관리하지 않습니다. IAM role(옵션 C)은 인증/권한 부여에 도움이 되지만, workgroup과 결합하지 않으면 Athena 쿼리 기록/저장된 쿼리에 대한 격리 경계를 본질적으로 제공하지 않습니다. 시험 팁: 동일 계정 내 여러 내부 테넌트 간에 Athena 쿼리 기록, 저장된 쿼리, 비용을 격리해야 한다는 요구 사항이 보이면 “Athena workgroups + IAM/ABAC”를 떠올리십시오. tag와 IAM 조건을 사용해 테넌트별 액세스를 강제하고, Glue policy는 데이터/메타데이터 액세스를 위한 것이지 Athena 운영 격리를 위한 것이 아님을 기억하십시오.
미디어 플랫폼이 PostgreSQL database에 저장된 재생 로그를 분석해야 합니다. 회사는 Zendesk에서 추적되는 고객 이슈와 로그를 상관 분석하려고 합니다. 회사는 매일 2 GB의 새로운 재생 로그를 수신합니다. 회사는 100 GB의 과거 Zendesk 티켓을 보유하고 있습니다. 데이터 엔지니어는 로그와 티켓을 분석하고 상관 분석하는 프로세스를 개발해야 합니다. 프로세스는 매일 밤 한 번 실행되어야 합니다. 가장 적은 운영 오버헤드로 이러한 요구 사항을 충족하는 솔루션은 무엇입니까?
운영 오버헤드가 높고 불필요하게 복잡합니다. MWAA는 Airflow environment(workers, schedulers, plugins, dependencies) 운영이 필요합니다. 상관 분석에 Lambda를 사용하고 오케스트레이션에 Step Functions를 사용하는 것은 오케스트레이션 책임을 중복시킵니다. 또한 100+ GB를 Lambda로 상관 분석하는 것은 실행 시간/메모리 제한과 분산 조인 필요 때문에 적합하지 않으며, Glue/Spark가 대규모 조인에 더 적합합니다.
AppFlow + Glue는 강력한 수집/ETL 접근이지만, MWAA를 추가하면 1일 1회 야간 파이프라인에 대해 Step Functions 대비 운영 오버헤드가 증가합니다. MWAA는 여전히 environment 관리, 스케일링, DAG 유지보수가 필요합니다. 회사가 이미 Airflow로 표준화했거나 복잡한 DAG 패턴/operator가 필요하지 않다면, Step Functions가 일반적으로 더 낮은 운영 부담의 오케스트레이션 선택입니다.
가장 적은 운영 오버헤드에 가장 적합합니다. AppFlow는 managed Zendesk connector와 S3로의 스케줄 기반 추출을 제공합니다. Glue는 JDBC를 통해 PostgreSQL에서 수집하고 Zendesk 데이터와의 확장 가능한 상관 분석(조인)을 수행할 수 있으며, Data Catalog와 (선택적으로) 증분 처리를 위한 job bookmarks를 사용할 수 있습니다. Step Functions는 서버나 Airflow environment를 관리하지 않고도 재시도 및 오류 처리를 포함한 야간 workflow를 오케스트레이션합니다.
요구 사항에 비해 과도하게 설계되었습니다. Kinesis Data Streams와 Managed Service for Apache Flink는 실시간 streaming 수집 및 stream processing을 위해 설계되었습니다. 문제는 지속적인 상관 분석이 아니라 야간 배치 실행을 요구합니다. 또한 PostgreSQL에서 Kinesis로 가져오는 것은 간단하지 않으며, 종종 커스텀 producer 또는 CDC tooling이 필요해 Glue JDBC 추출보다 운영 부담이 증가합니다.
핵심 개념: 이 문제는 매일 밤 실행되는 상관 분석 작업을 위한, 운영 부담이 가장 낮은 serverless 배치 수집 + ETL/오케스트레이션 패턴을 선택하는지를 평가합니다. 여기서의 주요 managed services는 Amazon AppFlow(SaaS 수집), AWS Glue(managed Spark ETL 및 JDBC 수집), AWS Step Functions(serverless 오케스트레이션)입니다. 정답이 맞는 이유: 옵션 C는 운영해야 할 인프라를 최소화하는 목적 특화 managed services를 사용합니다. AppFlow는 Zendesk에 기본적으로 연결되며, 스케줄에 따라 100 GB의 과거 티켓(이후에는 증분 업데이트)을 Amazon S3로 적재할 수 있습니다. AWS Glue는 JDBC를 통해 PostgreSQL에서 재생 로그를 추출할 수 있으며(일반적으로 DB가 위치한 VPC/subnet/security group에 대한 Glue connection 사용), Zendesk 데이터세트와의 상관 분석 조인을 수행하고 정제된 결과를 S3(또는 warehouse)로 기록할 수 있습니다. Step Functions는 야간 실행을 오케스트레이션합니다: AppFlow 트리거(또는 AppFlow 스케줄링에 의존), Glue job 시작, 재시도/타임아웃 처리, 성공/실패 알림 게시. 주요 AWS 기능: - Amazon AppFlow: managed SaaS 수집, 스케줄링, (지원되는 경우) 증분 pull, S3로 직접 전달; 커스텀 API 코드 필요를 줄임. - AWS Glue: managed ETL, Glue Data Catalog, 증분 처리를 위한 job bookmarks(2 GB/일 로그에 유용), 데이터세트 상관 분석을 위한 확장 가능한 Spark join. - Step Functions: 내장 재시도, 오류 처리, service integrations를 갖춘 serverless workflow; Airflow environment를 운영하는 것보다 운영 부담이 낮음. 흔한 오해: - Airflow(MWAA)는 “managed”이지만 여전히 environment sizing, dependency 관리, DAG 운영, 지속적인 튜닝이 필요하며, 단순한 야간 파이프라인에서는 Step Functions보다 오버헤드가 더 큰 경우가 많습니다. - Kinesis/Flink는 streaming 상관 분석에 매력적이지만, 요구 사항은 1일 1회 야간 배치입니다. streaming은 불필요한 복잡성과 비용을 추가합니다. 시험 팁: “least operational overhead”와 단순한 스케줄 기반 workflow가 보이면, 완전한 serverless 오케스트레이션(Step Functions)과 managed 수집/ETL(AppFlow/Glue)을 우선 고려하십시오. MWAA는 복잡한 DAG 생태계, 많은 task/operator, 또는 Airflow 고유 기능이 필요한 경우에 사용하십시오. 워크로드가 명시적으로 배치인 경우 streaming services는 피하십시오. (참고: AWS Well-Architected Framework—Operational Excellence pillar; Amazon AppFlow, AWS Glue, AWS Step Functions의 managed integrations 및 오케스트레이션 관련 서비스 문서.)
실시간 물류 플랫폼이 운영 오버헤드를 줄이기 위해 자체 관리형 Hadoop ecosystem에서 AWS로 마이그레이션하고 있으며, 가능한 경우 serverless에 관심이 있습니다. 기존 파이프라인은 Apache Spark, Apache Flink, Apache HBase, Oozie workflows를 사용하고, 매일 3.5 PB의 데이터를 변환하며, 개별 ETL 실행은 90초 이내에 완료되어야 합니다. 따라서 마이그레이션 후에도 이러한 프레임워크를 계속 사용하면서 동일하거나 더 나은 성능을 유지해야 합니다— 이러한 요구 사항을 가장 잘 충족하는 AWS extract, transform, and load (ETL) 서비스는 무엇입니까?
AWS Glue는 Data Catalog와 managed job execution을 제공하는 serverless ETL 서비스(Spark 기반)로, batch ETL과 schema discovery에 적합합니다. 그러나 managed Apache HBase 또는 Apache Oozie를 제공하지 않으며, 전체 Hadoop ecosystem을 lift-and-shift하도록 설계되지 않았습니다. Spark, Flink, HBase, Oozie를 함께 유지해야 한다는 엄격한 요구 사항 때문에 serverless 매력에도 불구하고 Glue는 불완전한 선택입니다.
Amazon EMR은 Apache Spark, Apache Flink, Apache HBase와 같은 프레임워크를 사용하는 self-managed Hadoop ecosystem과 가장 밀접하게 부합하는 AWS 서비스입니다. 이는 매우 대규모의 distributed processing을 위해 설계되었으므로, 하루 3.5 PB와 90초 미만의 ETL 목표에는 serverless point solution보다 훨씬 더 적합합니다. 또한 EMR은 provisioning, cluster management, S3 integration, 그리고 scaling 기능을 처리함으로써 self-managed Hadoop과 비교해 운영 부담을 줄여 줍니다. 마이그레이션 중 일부 legacy workflow tooling을 교체해야 할 수 있더라도, EMR은 핵심 open-source processing environment를 유지하면서 동등하거나 더 나은 성능을 달성할 수 있는 가장 강력한 경로를 제공하므로 여전히 최고의 ETL platform 선택입니다.
AWS Lambda는 event-driven functions를 위한 serverless compute로, 짧은 실행 시간과 제한된 memory/runtime 제약이 있습니다. Spark/Flink 같은 분산 big data frameworks를 실행하기에 적합하지 않으며 HBase 또는 Oozie를 호스팅할 수도 없습니다. Lambda는 ETL 단계를 orchestration하거나 trigger하는 데는 사용할 수 있지만, 하루 수 PB 처리와 90초 미만 ETL 실행을 위한 Hadoop/Spark/Flink 실행 환경을 대체할 수는 없습니다.
Amazon Redshift는 SQL analytics에 최적화된 managed data warehouse이며, ELT 패턴(예: COPY, SQL transforms)을 수행하고 ingestion 도구와 통합할 수 있습니다. 그러나 Apache Spark, Flink, HBase, Oozie workflows를 직접 실행하지는 않습니다. Redshift는 정제된 데이터의 target store가 될 수는 있지만, 기존 Hadoop ecosystem 프레임워크와 운영 모델을 유지하는 ETL 서비스는 아닙니다.
핵심 개념: 이 문제는 특정 open-source big data frameworks(Spark, Flink, HBase, Oozie)를 계속 사용해야 하고, 극단적인 처리량/지연 시간 요구 사항을 충족해야 하는 상황에서 적절한 AWS-managed ETL/analytics 서비스를 선택하는지를 평가합니다. 정답이 맞는 이유: Amazon EMR이 가장 적합한 이유는 Apache Spark, Apache Flink, Apache HBase, Apache Oozie를 포함한 Hadoop ecosystem을 최소한의 운영 오버헤드로 실행하도록 설계된 AWS 서비스이면서, 프레임워크 호환성을 유지할 수 있기 때문입니다. “이 프레임워크를 계속 사용”해야 한다는 요구 사항이 핵심 판별 요소입니다. AWS Glue는 serverless ETL이지만 managed HBase 또는 Oozie를 제공하지 않으며, Glue의 실행 모델은 해당 구성 요소들을 그대로 사용하면서 하루 수 PB 규모에서 90초 미만의 초저지연 ETL을 수행하도록 의도된 것이 아닙니다. EMR은 적절한 instance family, storage(예: shuffle을 위한 instance store), scaling 전략을 통해 고성능으로 튜닝할 수 있습니다. 주요 AWS 기능: EMR은 batch/stream processing을 위한 Spark 및 Flink, HDFS/S3-backed 패턴에서 low-latency NoSQL을 위한 HBase, workflow scheduling을 위한 Oozie를 지원합니다. EMR managed scaling, auto scaling, EMR on EKS(Kubernetes 운영 활용), EMR Serverless for Spark를 통해 ops overhead를 줄일 수 있습니다(참고: EMR Serverless는 HBase/Oozie 같은 전체 세트를 커버하지 않으므로 classic EMR/EMR on EKS가 전제됩니다). 성능을 위해 Graviton/compute-optimized instances를 사용하고, Spark executors를 튜닝하며, shuffle을 위해 ephemeral NVMe를 활용하고, source/target 데이터를 Amazon S3에 저장하면서 EMRFS를 사용하십시오. 또한 partitioning과 columnar formats(Parquet/ORC)를 사용해 엄격한 SLA를 충족하십시오. 흔한 오해: “가능한 경우 serverless”라는 문구 때문에 Glue 또는 Lambda를 선택하도록 오도될 수 있습니다. 그러나 HBase와 Oozie 호환성 요구와 극단적인 SLA는 EMR을 강하게 시사합니다. Redshift는 data warehouse이지, 이러한 프레임워크를 위한 범용 ETL runtime이 아닙니다. 시험 팁: 문제에서 Hadoop ecosystem 구성 요소(HBase, Oozie)를 명시하고 이를 계속 사용해야 한다고 하면 기본적으로 Amazon EMR을 선택하십시오. 워크로드가 주로 Spark 기반 ETL이고 AWS-native orchestration이며 HBase/Oozie 같은 Hadoop daemons 요구가 없다면 Glue를 선택하십시오.
미디어 분석 스타트업이 하루 약 200GB의 JSON clickstream 파일을 Amazon S3 landing bucket으로 수집하고 있으며, 파일을 추출하고 5가지 데이터 품질 검사(null 검사, 범위 검증, referential lookup)를 적용하고, 변환(column pruning 및 type casting)을 수행한 뒤, 향후 SQL 쿼리를 위해 처리된 데이터셋을 단일 Amazon RDS for MySQL 인스턴스에 저장하는 일일 스케줄 파이프라인이 필요합니다. 또한 90일 동안 상세한 품질 검사 결과 로그를 저비용 스토리지에 보관해야 합니다. 이러한 요구 사항을 충족하는 가장 비용 효율적인 솔루션은 무엇입니까?
이 선택지는 핵심적인 예약 추출 및 변환 워크플로에 AWS Glue ETL을 사용하며, 이는 Amazon S3의 일일 JSON 파일을 처리하고 JDBC를 통해 정제된 출력을 Amazon RDS for MySQL에 기록하는 데 매우 적합합니다. 또한 AWS Glue Data Quality를 사용하는데, 이는 null check, range validation 및 기타 규칙 기반 assertion과 같은 데이터 품질 규칙을 정의하고 평가하기 위해 특별히 의도된 AWS 네이티브 기능입니다. 품질 결과를 RDS에 저장하는 것은 가장 저렴한 저장 선택은 아니지만, 이 선택지는 명시된 워크로드에 가장 적합한 ETL 및 데이터 품질 서비스를 올바르게 선택했기 때문에 여전히 가장 가까운 정답입니다. 제공된 답안들 중에서 파이프라인, 검증, 대상 데이터베이스 요구 사항을 가장 적은 아키텍처 불일치로 가장 잘 충족합니다.
이 선택지는 데이터 품질 및 변환 로직을 AWS Glue DataBrew에 배치하는데, 이는 RDS로 로드하는 운영형 예약 ETL 파이프라인보다는 대화형 시각적 데이터 준비에 더 초점이 맞춰져 있습니다. DataBrew도 profiling과 변환을 수행할 수 있지만, Glue 중심 ETL 워크플로에서 공식적인 규칙 기반 품질 검사를 위해서는 AWS Glue Data Quality가 더 직접적으로 관련된 서비스입니다. 이 선택지는 품질 결과를 저비용인 S3에 저장한다는 점에서 매력적이지만, 필요한 데이터 품질 구현에 더 적합한 서비스를 포기하게 됩니다. 예약 ETL과 명시적인 품질 규칙에 초점을 둔 시험 문제에서는 Glue ETL과 Glue Data Quality가 더 강력한 정답 패턴입니다.
이 선택지는 처리된 데이터셋을 향후 SQL 쿼리를 위해 단일 Amazon RDS for MySQL 인스턴스에 로드하는 대신 S3에 저장하므로 핵심 요구 사항을 충족하지 못합니다. S3는 로그와 중간 출력을 보관하는 데 비용 효율적이지만, 정제된 데이터셋의 명시된 대상 요구 사항은 충족하지 못합니다. 또한 더 적절한 Glue Data Quality 기능 대신 DataBrew를 품질 검사에 사용합니다. 필요한 대상 시스템을 충족하지 못하므로 정답이 될 수 없습니다.
이 선택지는 변환과 품질 검사 모두에 DataBrew를 사용한 다음, 정제된 데이터와 품질 결과를 모두 Amazon RDS for MySQL에 저장합니다. 이러한 설계는 비용 효율적이지 않은데, 상세한 품질 검사 로그는 더 높은 스토리지 및 백업 비용이 드는 관계형 데이터베이스보다 Amazon S3와 같은 저비용 객체 스토리지에 보관하는 것이 더 적합하기 때문입니다. 또한 규칙 기반 검증 요구 사항에 대해 Glue Data Quality 대신 DataBrew에 의존합니다. 그 결과, 서비스 적합성과 스토리지 비용 최적화 측면 모두에서 더 약한 선택지입니다.
핵심 개념: Amazon S3에서 매일 예약 실행되는 ETL 파이프라인을 가장 잘 지원하고, 명시적인 데이터 품질 검증을 적용하며, JSON 데이터를 변환하고, 정제된 결과를 Amazon RDS for MySQL에 로드하고, 품질 검사 출력을 경제적으로 보관하는 AWS 서비스 조합을 선택하는 것입니다. 정답인 이유: AWS Glue ETL은 S3에서의 예약된 서버리스 추출 및 변환을 위해 설계되었고, AWS Glue Data Quality는 null check, range check, referential integrity 스타일 검증과 같은 규칙을 구현하기 위한 Glue의 네이티브 기능입니다. 주요 기능: Glue jobs는 매일 예약 실행될 수 있고, S3 및 RDS MySQL과 같은 JDBC 대상과 직접 통합되며, Glue Data Quality는 규칙 평가 결과를 생성할 수 있습니다. 흔한 오해: DataBrew는 주로 시각적 데이터 준비 서비스이며, 반복적으로 RDS에 로드해야 하는 운영용 ETL 파이프라인에는 Glue ETL + Glue Data Quality보다 덜 적합합니다. 시험 팁: 문제가 예약된 ETL, 데이터 품질 규칙, 그리고 정제된 데이터를 관계형 데이터베이스에 로드하는 것을 강조하면 Glue ETL과 Glue Data Quality를 우선 고려하세요. 로그의 저비용 보관이 필요하다면 일반적으로 S3가 이상적이지만, 완벽한 선택지가 없을 때는 가장 가까운 답을 선택하세요.
데이터 플랫폼 팀이 AWS Glue Data Catalog를 사용하여 Amazon Athena로 Amazon S3에 있는 시계열 텔레메트리를 쿼리하고 있지만, 단일 테이블에 약 120만 개의 파티션이 year/month/day/hour 기준으로 s3://prod-telemetry/tenant_id={t}/year={YYYY}/month={MM}/day={DD}/hour={HH} 같은 prefix 아래에 구성되어 있어 쿼리 계획 수립이 병목이 되고 있습니다. 데이터를 S3에 유지하면서, 어떤 솔루션이 병목을 제거하고 Athena 계획 수립 시간을 줄일 수 있습니까? (두 개 선택)
정답입니다. Glue partition index는 파티션 수가 매우 많은 테이블에서 파티션 메타데이터 조회 성능을 개선합니다. 쿼리에 partition key(tenant_id, year/month/day/hour)에 대한 predicate가 포함되면, Athena는 인덱스를 사용해 일치하는 파티션을 더 빠르게 찾고 계획 수립 중 일치하지 않는 파티션을 prune할 수 있습니다. 이는 AWS Glue Data Catalog에서 거대한 파티션 목록을 열거하거나 스캔하면서 발생하는 쿼리 계획 수립 병목을 직접적으로 겨냥합니다.
오답입니다. Hive-style bucketing(자주 필터링되는 컬럼 기준으로 파일을 rebucket)은 특정 쿼리 패턴(예: joins/aggregations)에서 shuffle을 줄이고 병렬성을 개선하는 데 도움이 될 수 있지만, 핵심 문제인 AWS Glue Data Catalog의 수백만 파티션으로 인한 Athena 계획 수립 오버헤드를 해결하지는 않습니다. Bucketing은 파티션 내부의 파일 레이아웃을 바꾸는 것이지, 파티션 수나 파티션 메타데이터를 해석해야 하는 필요를 줄이지 않습니다.
정답입니다. Partition projection은 정의된 스키마(date range, enum, integer)로부터 Athena가 파티션을 계산하고 location template을 통해 이를 S3 경로에 매핑하도록 합니다. 이로써 AWS Glue Data Catalog에 120만 개의 파티션 엔트리를 저장할 필요가 없어지고, 계획 수립 중 비용이 큰 파티션 listing을 피할 수 있습니다. 예측 가능한 파티션 패턴과 매우 높은 파티션 수를 가진 시계열 데이터에 대한 모범 사례 기능입니다.
오답입니다. Parquet로 변환하는 것은 columnar 형식이며 predicate pushdown을 지원하고 스캔 바이트를 줄여 런타임과 비용을 개선하므로 Athena에 대한 강력한 최적화입니다. 하지만 파티션 수를 본질적으로 줄이거나 Athena가 계획 수립 중 파티션 메타데이터를 해석해야 하는 필요를 없애지는 않습니다. 병목이 planning(스캔이 아님)이라면 Parquet만으로는 이를 제거할 수 없습니다.
오답입니다. 많은 작은 object를 더 큰 object로 결합하면 S3 요청 오버헤드를 줄이고 split 및 파일 open 작업 수를 줄여 Athena 런타임을 개선할 수 있습니다. 하지만 Glue 파티션 메타데이터의 양이나 계획 수립 시간을 유발하는 파티션 열거는 줄이지 못합니다. 이는 “small files problem”에 대한 최적화이지, “카탈로그에 파티션이 너무 많음”에 대한 해결책이 아닙니다.
핵심 개념: 이 문제는 AWS Glue Data Catalog에 매우 많은 파티션이 있는 테이블에서 Athena 쿼리 계획 수립 동작을 테스트합니다. 약 120만 개의 파티션이 있는 경우 병목은 scan/compute가 아니라 계획 수립 중 메타데이터 및 파티션 열거(enumeration)입니다. 목표는 데이터를 S3에 유지하면서 Athena가 나열/고려해야 하는 파티션 수를 줄이는 것입니다. 정답이 맞는 이유: A (Glue partition index + partition filtering)는 Data Catalog에서 파티션 조회를 가속화하여 계획 수립 병목을 해결합니다. partition index는 파티션 메타데이터를 인덱싱된 형태로 저장하므로, Athena가 거대한 파티션 집합을 스캔/나열하는 대신 predicate(예: tenant_id 및 시간 범위)에 일치하는 파티션을 빠르게 찾을 수 있습니다. partition filtering이 활성화/사용되면 Athena는 더 이른 단계에서 파티션을 prune하여 비용이 큰 전체 파티션 열거를 피합니다. C (Athena partition projection)는 AWS Glue Data Catalog에 수백만 개의 파티션 엔트리를 저장하고 조회할 필요 자체를 제거합니다. 대신 파티션 스키마(tenant_id/year/month/day/hour)와 유효 범위/패턴을 정의하면, Athena가 쿼리 시점에 파티션 값과 해당 S3 경로를 계산합니다. 이는 “partition explosion” 메타데이터 오버헤드를 제거하며, 시계열 레이아웃에서 일반적으로 계획 수립 시간 감소 효과가 가장 큽니다. 주요 AWS 기능 / 모범 사례: - AWS Glue Data Catalog partition indexes: 파티션 수가 매우 큰 경우 파티션 조회 성능을 개선합니다. - Athena partition projection: projection type(integer, enum, date) 및 storage.location.template을 정의하여 파티션 값을 S3 prefix에 매핑하며, 파티션 관리 작업(예: MSCK REPAIR TABLE)을 줄이거나 제거합니다. - Predicate 설계: pruning/projection이 효과적이도록 쿼리에 partition column(tenant_id, year/month/day/hour 또는 파생된 timestamp filter)을 포함하도록 합니다. 흔한 오해: - Parquet로 변환(D)은 scan 효율과 비용을 개선하지만, 계획 수립 시 파티션 열거를 직접적으로 해결하지는 않습니다. - 작은 파일을 결합(E)하면 런타임 성능(S3 GET 감소, split 감소)은 좋아지지만, 파티션 메타데이터 기반 계획 수립 오버헤드는 줄지 않습니다. - Bucketing(B)은 일부 엔진에서 join/aggregation 성능에 도움이 될 수 있지만, 여기서 Athena의 주요 계획 수립 병목은 파일 분포가 아니라 파티션 메타데이터 규모입니다. 시험 팁: Athena/Glue에서 “수백만 개의 파티션”과 “planning time bottleneck”이 보이면 메타데이터 최적화를 떠올리세요: partition projection(카탈로그 파티션 회피)과 partition indexes(카탈로그 파티션 조회 가속). 파일 형식 및 small-file 해결은 보통 scan/런타임에 관한 것이지 계획 수립에 관한 것이 아닙니다.
Practitioner








