CertNote/ 출퇴근 학습 노트
로드맵
KOEN
CLF-C02 · FoundationalCloud Practitioner - Foundational
DVA-C02 · AssociateDeveloper - Associate
SAA-C03 · AssociateSolutions Architect - Associate
SOA-C02 · AssociateCloudOps Engineer - Associate
SAP-C02 · ProfessionalSolutions Architect - Professional
DOP-C02 · ProfessionalDevOps Engineer - Professional
SCS-C03 · SpecialtySecurity - Specialty
MLA-C01 · AssociateMachine Learning Engineer - Associate
AIF-C01 · FoundationalAI Practitioner - Foundational
DEA-C01 · AssociateData Engineer - Associate
  • Week 1
    • 1.데이터 엔지니어링이란
    • 2.배치 vs 스트리밍
    • 3.AWS 데이터 서비스 조감도
    • 4.데이터 포맷과 모델링
    • 5.Week 1 종합 복습
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
    • 1.S3 데이터 레이크 레이아웃과 파티셔닝 전략
    • 2.AWS Lake Formation 중앙 권한 관리
    • 3.오픈 테이블 포맷: Iceberg, Hudi, Delta Lake
    • 4.S3 스토리지 관리와 비용 최적화
    • 5.Week 6 종합: 데이터 레이크 복습
  • Week 7
  • Week 8
  • Week 9
  • Week 10
MLS-C01 · SpecialtyMachine Learning - Specialty
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← DEA-C01/Week 6/Day 5

기준: DEA-C01 시험 가이드·오류 제보

DEA-C01· AssociateWeek 6 · Day 5읽기 약 14분
핵심 정리
  • 레이크 설계는 레이아웃(어디에 어떻게 둘까) → 테이블 포맷(어떻게 바꿀까) → 권한(누가 볼까) → 스토리지(얼마에 둘까) 네 층의 결정이고, 한 층의 선택이 다른 층을 제약한다.
  • 스캔량 문제는 파티션·컬럼형 포맷, 카탈로그 병목은 파티션 프로젝션·인덱스, 파일 수 문제는 컴팩션으로 푼다. 증상이 비슷해도 처방이 다르다.
  • 행 단위 수정·삭제·시간 여행이 필요하면 오픈 테이블 포맷이다. Athena SQL 로 쓰려면 Iceberg, 업서트·증분 중심이면 Hudi, Spark 자산이면 Delta Lake.
  • 컬럼·행·셀 단위 통제와 교차 계정 공유는 Lake Formation 이다. 등록·IAMAllowedPrincipals 회수·S3 직접 권한 제거가 갖춰져야 실제로 강제된다.
  • 자주 읽으면 Standard, 패턴을 모르면 Intelligent-Tiering, 뚜렷이 식으면 수명주기 전환. Athena 로 읽을 데이터와 테이블 포맷의 파일은 복원이 필요한 아카이브 계층으로 보내지 않는다.

Day 5 - Week 6 종합: 데이터 레이크 복습

네 층으로 보는 레이크

이번 주는 S3 기반 데이터 레이크의 레이아웃, Lake Formation 권한, 오픈 테이블 포맷, 스토리지 비용 최적화를 따로 봤다. 실제 설계에서는 넷이 한 테이블 위에 동시에 걸린다.

┌─ 권한 ─────────── Lake Formation: 등록 · LF-Tags · 데이터 필터 · 교차 계정 공유
├─ 테이블 포맷 ──── Hive 테이블(경로 = 테이블)  |  Iceberg · Hudi · Delta(메타데이터 = 테이블)
├─ 레이아웃 ─────── 존(raw/clean/curated) · 파티션 · 파일 크기 · Parquet/압축
└─ 스토리지 ─────── 스토리지 클래스 · 수명주기 · Intelligent-Tiering · 버전 관리
층묻는 질문이번 주의 도구잘못 고르면
레이아웃쿼리가 얼마나 적게 읽게 할까존, 파티션, 컬럼형 포맷, 컴팩션전체 스캔, 작은 파일 폭증
테이블 포맷쓰는 도중·쓴 뒤의 일관성과 변경을 어떻게 다룰까Iceberg, Hudi, Delta Lake반쯤 쓰인 데이터 노출, 행 삭제 불가
권한누가 어느 컬럼·행까지 볼까Lake FormationPII 노출, 권한 정책 폭증
스토리지같은 데이터를 얼마에 보관할까스토리지 클래스, 수명주기검색 요금 폭탄, 조용히 빠지는 데이터

층 사이의 간섭: 따로 배운 것이 만나는 지점

나흘 동안의 내용은 서로 충돌하는 곳에서 문제로 나온다.

만나는 두 주제무슨 일이 생기나올바른 처리
파티션 프로젝션 × 다중 엔진프로젝션은 Athena 에서만 동작한다. Redshift Spectrum·EMR 은 카탈로그의 파티션만 본다여러 엔진이 읽는 테이블은 파티션을 카탈로그에도 등록
파티션 프로젝션 × 희소한 데이터규칙이 계산한 빈 위치를 전부 나열해 느려진다절반 넘게 비면 일반 파티션
수명주기 만료 × 파티션 메타데이터S3 객체는 사라졌는데 카탈로그에 빈 파티션이 남아 계획 단계가 느려진다만료에 맞춰 ALTER TABLE DROP PARTITION
수명주기 전환 × AthenaGlacier Flexible Retrieval·Deep Archive 객체는 오류 없이 건너뛴다조회 대상은 Glacier Instant Retrieval 까지만
수명주기 × Iceberg메타데이터가 가리키는 파일이 만료·아카이브되면 쿼리가 실패한다파일 수명은 스냅샷 만료·고아 파일 삭제로 관리
작은 파일 × 스토리지 클래스128KB 미만 객체는 기본적으로 전환되지 않고, IA 에서는 128KB 로 과금된다컴팩션을 먼저, 전환은 그다음
Iceberg DELETE × GDPR이전 스냅샷이 삭제된 행의 파일을 계속 붙잡는다DELETE → 컴팩션 → 스냅샷 만료(+ 비현행 버전 정리)
Iceberg 컴팩션 × 스토리지 비용컴팩션 직후에는 옛 파일과 새 파일이 함께 있어 용량이 는다컴팩션 뒤 스냅샷 만료까지 수행
버전 관리 × 덮어쓰는 ETL잡이 돌 때마다 이전 출력이 비현행 버전으로 쌓인다NoncurrentVersionExpiration
Lake Formation × S3 직접 권한S3 권한이 있는 사용자는 필터를 우회해 파일을 직접 읽는다분석가의 S3 직접 권한 제거
Lake Formation × 테이블 포맷읽기 권한은 관리하지만 VACUUM·MERGE·OPTIMIZE 권한은 관리하지 못한다쓰기·유지보수는 전용 역할에 IAM 으로
Lake Formation 필터 × Athena 결과 재사용행·컬럼 권한이 걸린 테이블은 쿼리 결과 재사용 대상이 아니다캐시 절감을 기대하지 않는다

"쿼리가 느리다·비싸다"를 가르는 순서

같은 증상에 처방이 넷이다. 무엇이 병목인지부터 가른다.

① 스캔한 데이터량이 큰가?
   ├─ 필요 없는 날짜까지 읽는다 ──────────► 파티션 키로 필터 (파티셔닝·프루닝)
   └─ 필요 없는 컬럼까지 읽는다 ──────────► Parquet/ORC + 필요한 컬럼만 SELECT
 
② 스캔량은 작은데 계획 단계가 긴가?
   ├─ 파티션이 수만 개 ───────────────────► 파티션 프로젝션 / Glue 파티션 인덱스
   └─ 빈 파티션·옛 파티션이 쌓였다 ───────► 파티션 메타데이터 정리
 
③ 파일 수가 많은가?
   ├─ Hive 테이블의 작은 파일 ────────────► 다시 써서 병합, 쓰는 쪽 버퍼 확대
   └─ Iceberg 의 작은 파일·삭제 파일 ─────► OPTIMIZE / Glue 테이블 최적화
 
④ S3 가 SlowDown 을 돌려주는가?
   └─ 파일 과다 + 동시 쿼리 ──────────────► 병합, 쿼리 분산
  • ①은 데이터 스캔량(= Athena 비용)의 문제이고 ②③은 시간의 문제다. "비용을 줄여라"면 ①, "카탈로그 조회가 병목"이면 ②다.
  • 파티션을 더 잘게 쪼개는 것은 ①을 풀면서 ②③을 만든다. 일 단위 조회가 대부분이면 시간 단위로 쪼개지 않고 파일 안을 타임스탬프로 정렬한다.

닮은 것끼리 한 번에 구분하기

헷갈리는 쌍구분
파티션 프루닝 vs 파티션 프로젝션프루닝 = 조건에 맞는 파티션만 읽음(스캔량). 프로젝션 = 파티션 목록을 카탈로그 대신 규칙으로 계산(메타데이터 조회)
파티셔닝 vs 버킷팅파티셔닝 = 값의 종류가 적은 키로 경로를 나눔. 버킷팅 = 값이 아주 많은 키를 해시로 정해진 수의 파일에 모음
Hive 스타일 파티션 vs Iceberg 숨은 파티셔닝Hive = 경로의 key=value, 쿼리가 파티션 컬럼을 알아야 함. Iceberg = 변환 함수로 정의, 원래 컬럼으로 필터
컴팩션 vs 스냅샷 만료컴팩션 = 읽기 성능 회복. 스냅샷 만료 = 스토리지 회수(시간 여행 범위 축소)
Copy-on-Write vs Merge-on-ReadCoW = 쓸 때 재작성, 읽기 빠름. MoR = 변경분 따로 기록, 쓰기 빠름·읽을 때 병합
명명형 리소스 vs LF-Tags명명형 = 이름으로 하나씩. LF-Tags = 태그 조건으로 묶어서, 새 리소스에 자동 적용
데이터 위치 권한 vs SELECT위치 권한 = 그 경로를 가리키는 테이블을 만들 자격. SELECT = 데이터를 읽을 자격
LF-Tag vs IAM·리소스 태그서로 다른 체계. 호환되지 않는다
Standard-IA vs Glacier Instant Retrieval둘 다 즉시 읽힘. IA = 월 1회 수준·최소 30일, GIR = 분기 1회 수준·최소 90일·더 낮은 저장 단가
Glacier Instant vs Flexible RetrievalInstant = 바로 GET. Flexible = 복원 요청 후 분~시간
Intelligent-Tiering vs 수명주기IT = 접근 여부로 이동, 검색 요금 없음, 객체당 모니터링 요금. 수명주기 = 나이로 이동, 전환 요청 비용
Snapshot vs Incremental 블루프린트Snapshot = 전체 재적재, 스키마가 자유롭게 변해도 됨. Incremental = 북마크 컬럼 이후의 새 행만

Week 6 숫자·기본값 한 장

영역항목값
S3프리픽스당 요청 처리초당 최소 3,500 PUT/COPY/POST/DELETE, 5,500 GET/HEAD
S3나열 한 번이 돌려주는 객체1,000개
레이아웃권장 파일 크기128MB~1GB
레이아웃Parquet 행 그룹 / ORC 스트라이프 기본 크기128MB / 64MB
GluegroupFiles 자동 활성 조건입력 파일 50,000개 초과
AthenaCTAS·INSERT INTO 가 한 번에 쓰는 파티션100개
Athena Iceberg스냅샷 보존 기본값432,000초(5일), 최소 1개 유지
Glue ETL테이블 포맷 기본 지원Glue 3.0 이상(--datalake-formats)
S3 클래스최소 보관 기간IA·One Zone-IA 30일 / Glacier Instant·Flexible 90일 / Deep Archive 180일
S3 클래스최소 과금 크기IA·One Zone-IA·Glacier Instant 128KB
S3 클래스아카이브 객체당 오버헤드40KB(32KB 는 Glacier 단가, 8KB 는 Standard 단가)
복원Flexible RetrievalExpedited 1~5분 / Standard 3~5시간 / Bulk 5~12시간
복원Deep ArchiveStandard 12시간 이내 / Bulk 48시간 이내
수명주기버킷당 규칙 수1,000개
수명주기기본 전환 제외128KB 미만 객체
Intelligent-Tiering자동 계층 이동30일 미접근 → Infrequent, 90일 → Archive Instant
Intelligent-Tiering선택형 아카이브 계층90일·180일부터, 최대 730일까지 설정

통합 시나리오: 주문 데이터 레이크

요구사항: RDS 주문 DB 를 데이터 레이크로 적재하고, 분석가에게는 PII 컬럼을 가린 채 자기 지역 행만 보여 주며, GDPR 삭제 요청에 대응하고, 비용을 최적화한다.

[RDS] --(Lake Formation Incremental database 블루프린트)--> s3://lake-raw/orders/dt=.../
   --(Glue ETL: 검증·MERGE)--> s3://lake-clean/orders/ (Iceberg 테이블)
   --(Glue: 집계)--> s3://lake-curated/revenue/ (Athena/QuickSight 소비)
결정선택이유놓치기 쉬운 것
수집Incremental database 블루프린트크롤러·잡·트리거로 된 증분 워크플로우가 자동 생성북마크 방식은 새 행만 본다. 주문 상태가 UPDATE 되는 원천이면 DMS CDC 가 필요하다
Raw날짜 파티션, 원천 포맷 그대로재처리의 기준불변으로 유지
CleanIceberg 테이블MERGE INTO 업서트, DELETE, 시간 여행Athena DML 은 Merge-on-Read 라 OPTIMIZE 가 필수
GDPRDELETE → OPTIMIZE → VACUUM스냅샷이 만료돼야 물리적으로 지워진다Raw 존의 원본에도 같은 고객 데이터가 있다
권한위치 등록 + 데이터 필터컬럼 제외와 행 필터를 한 필터로IAMAllowedPrincipals 회수, S3 직접 권한 제거
스토리지Raw 는 수명주기 전환, Clean·Curated 는 Standard접근 빈도 차이Iceberg 프리픽스에는 전환·만료 규칙을 걸지 않는다
-- GDPR 삭제 요청 처리 (Iceberg on Athena)
DELETE FROM lake_clean.orders WHERE customer_id = 'GDPR-REQ-2026-001';
OPTIMIZE lake_clean.orders REWRITE DATA USING BIN_PACK;
VACUUM lake_clean.orders;
# 분석가용 셀 수준 필터: PII 컬럼 제외 + 자기 지역 행만
aws lakeformation create-data-cells-filter --table-data '{
  "TableCatalogId": "111122223333",
  "DatabaseName": "lake_clean",
  "TableName": "orders",
  "Name": "apne2-no-pii",
  "RowFilter": {"FilterExpression": "region = '\''ap-northeast-2'\''"},
  "ColumnWildcard": {"ExcludedColumnNames": ["customer_name", "phone"]}
}'
 
# 필터를 지정해 SELECT 부여
aws lakeformation grant-permissions \
  --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:role/RegionAnalyst \
  --permissions "SELECT" \
  --resource '{"DataCellsFilter": {"TableCatalogId": "111122223333",
               "DatabaseName": "lake_clean", "TableName": "orders", "Name": "apne2-no-pii"}}'

💡 관련 이론: 이 시나리오에서 놓치기 쉬운 곳은 Raw 존이다. Clean 의 Iceberg 테이블에서 고객 행을 지워도 Raw 의 원본 파일에는 그 고객이 남아 있다. Raw 는 불변이 원칙이지만 삭제 요청만큼은 예외 절차가 필요하다. 그래서 PII 는 Raw 에 들어오는 단계에서 토큰화하거나, Raw 의 보존 기간을 짧게 잡는 설계가 함께 검토된다.

안티패턴 모음

  • 시간·사용자 단위로 과하게 파티셔닝: 파티션마다 수 KB 파일이 생긴다. 스캔량은 줄었는데 쿼리는 더 느려진다.
  • 파티션 추가를 MSCK REPAIR TABLE 로 매일 실행: 전체 경로를 다시 훑는다. 추가된 파티션만 ALTER TABLE ADD PARTITION 하거나 프로젝션을 쓴다.
  • Lake Formation 권한을 주고 S3 버킷 정책은 그대로: 통제가 두 군데에 남아 더 넓은 쪽으로 샌다.
  • 컬럼을 가리려고 테이블 사본을 만든다: 사본마다 ETL·저장 비용·동기화 문제가 생긴다. 데이터 필터가 대신한다.
  • Iceberg 테이블을 만들고 유지보수를 걸지 않는다: 삭제 파일과 스냅샷이 쌓여 느려지고 비싸진다.
  • 모든 버킷에 일괄 "30일 후 IA": 자주 읽는 Curated 와 작은 파일이 많은 프리픽스에서 오히려 비용이 는다.
  • 버전 관리만 켜고 비현행 버전 규칙이 없다: 보이지 않는 용량이 무한히 쌓인다.
  • 조회 대상 데이터를 Deep Archive 로 전환: 오류 없이 결과에서 빠진다.

시나리오 → 정답 판별표

시나리오정답
날짜로 필터하는데 Athena 가 테이블 전체를 스캔한다날짜 파티셔닝 + 파티션 키 조건
파티션 수만 개, GetPartitions 가 병목, Athena 만 사용파티션 프로젝션
파티션 수만 개, Athena 와 Redshift Spectrum 이 함께 사용카탈로그 파티션 유지 + Glue 파티션 인덱스
스트리밍 적재로 수 KB 파일이 수십만 개쓰는 쪽 버퍼 확대 + 컴팩션
S3 의 Parquet 테이블에서 특정 행을 SQL 로 수정Iceberg 테이블 + UPDATE/MERGE INTO
어제 배치가 잘못 적재됐다. 그 전 상태를 조회Iceberg 시간 여행
삭제한 데이터가 실제로 S3 에서 없어져야 한다컴팩션 + 스냅샷 만료
테이블 수천 개에 부서별 권한을 확장 가능하게LF-Tags
같은 테이블을 지역별로 다른 행만 보이게데이터 필터(행 필터)
기존 Glue 잡은 IAM 그대로, 새 분석가만 세밀 권한하이브리드 액세스 모드
다른 계정이 복사 없이 테이블을 조회Lake Formation 교차 계정 공유 + 리소스 링크
접근 패턴을 알 수 없는 Clean 존Intelligent-Tiering
90일 지난 Raw 를 싸게, 하지만 재처리 때 바로 읽어야Glacier Instant Retrieval
7년 보관 의무가 있는 감사 로그수명주기로 Deep Archive 전환 + 만료
버킷 요금이 객체 목록 합계보다 훨씬 크다불완전 멀티파트·비현행 버전 정리 규칙, Storage Lens

다음 주는 레이크 옆에 놓이는 분석 스토어, Redshift·Athena·DynamoDB·RDS/Aurora 와 워크로드별 스토어 선택을 다룬다.

📖 용어

  • 메달리온 아키텍처 : 데이터를 bronze(원본)·silver(정제)·gold(집계) 단계로 나누는 레이크 구성 방식. raw·clean·curated 존과 같은 개념이다.
  • 프루닝과 프로젝션 : 조건에 맞는 파티션만 읽는 것과, 파티션 목록을 규칙으로 계산하는 것. 이름은 닮았지만 푸는 문제가 다르다.
  • 스냅샷 격리 : 읽는 쪽이 시작 시점의 스냅샷만 보아 쓰기와 서로 막지 않는 일관성 방식.
  • 셀 수준 보안 : 컬럼 제한과 행 필터를 함께 걸어 행에 따라 보이는 컬럼까지 통제하는 것.
  • 데이터 메시 : 도메인별 계정이 데이터를 소유하고 중앙에서 카탈로그와 권한을 관리하는 분산 구조.
  • 폭포수 모델 : 수명주기 전환이 위 클래스에서 아래 클래스로만 흐르는 규칙.
  • 조기 삭제 요금 : 최소 보관 기간을 채우기 전에 삭제·전환할 때 남은 기간만큼 부과되는 요금.
  • 토큰화 : 민감한 값을 의미 없는 대체 값으로 바꿔 저장하는 기법. 원본과의 대응은 별도 저장소에 둔다.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

RDS 주문 데이터를 증분으로 데이터레이크에 적재하고, 이후 행 수준 삭제(GDPR)와 MERGE 업서트가 가능하도록 clean 존을 구성하려 한다. 가장 적합한 조합은?

문제 2

분석가에게 PII 컬럼을 숨기고 자기 지역 행만 노출하려 한다. Lake Formation에서 사용할 기능 조합으로 옳은 것은?

문제 3

데이터레이크에서 자주 읽히는 curated 존과 거의 읽지 않는 raw 존의 스토리지 전략으로 가장 적절한 것은?

문제 4

다음 중 데이터레이크의 "schema-on-read" 특성을 가장 정확히 설명한 것은?

문제 5

데이터레이크 테이블의 파티션이 수만 개로 늘어 Athena 쿼리 시 Glue Data Catalog 조회가 병목이 되었다. 카탈로그에 파티션을 일일이 등록하지 않고 해결하는 방법은?

이전S3 스토리지 관리와 비용 최적화Week 6 · Day 4다음 Amazon Redshift: 분산/정렬 키와 워크로드 최적화Week 7 · Day 1

참고 공식 자료

  • DEA-C01 공식 시험 안내(새 탭에서 열림)
  • Amazon S3 공식 문서(새 탭에서 열림)
  • Amazon Athena 공식 문서(새 탭에서 열림)
  • AWS Lake Formation 공식 문서(새 탭에서 열림)
  • AWS Glue 공식 문서(새 탭에서 열림)
  • Amazon RDS · Aurora 공식 문서(새 탭에서 열림)

이 페이지

  • 네 층으로 보는 레이크
  • 층 사이의 간섭: 따로 배운 것이 만나는 지점
  • 쿼리가 느리다·비싸다"를 가르는 순서
  • 닮은 것끼리 한 번에 구분하기
  • Week 6 숫자·기본값 한 장
  • 통합 시나리오: 주문 데이터 레이크
  • 안티패턴 모음
  • 시나리오 → 정답 판별표
  • 용어
  • 연습 문제