80TB 데이터 비용 10배 절감기: DynamoDB에서 Apache Iceberg로의 여정 - Part 2
백엔드
80TB 데이터 비용 10배 절감기: DynamoDB에서 Apache Iceberg로의 여정 - Part 2
두줄요약
DynamoDB+S3 이중 저장을 Iceberg 단일 테이블로 통합해 비용을 약 91.5% 절감했습니다. 조회 성능과 서빙 안정성도 함께 개선하고, 컴팩션과 조회의 균형 중요성을 정리했습니다.
문제 상황
- DynamoDB+S3 이중 저장 구조에서 대규모 데이터 비용과 서빙 안정성 문제가 누적됨
- Athena, Pyiceberg, Spark 조합으로 Iceberg 기반 조회와 처리 성능을 검증하며 병목을 찾아야 했음
원인 분석
- DynamoDB는 데이터량 증가 시 latency 편차가 커지고 대량 조회에 취약함
- Athena는 DPU 제한으로 대기 상태가 생길 수 있고, Pyiceberg 기본 동작은 매니페스트 재조회와 무차별 필터링으로 비효율이 컸음
해결 방법
- S3 기반 Iceberg 단일 테이블로 통합하고 Athena로 조회 성능을 먼저 검증
- Pyiceberg 매니페스트 캐싱, 유저 ID-파일 경로 매핑, 병렬 스레드 처리, Python 3.11 업그레이드로 조회 최적화
- Spark Join은 유저 ID Broadcast 방식으로 개선하고 ACS 모니터링·학습 처리량을 정리
