80TB 데이터 비용 10배 절감기: DynamoDB에서 Apache Iceberg로의 여정 - Part 1
아키텍처
80TB 데이터 비용 10배 절감기: DynamoDB에서 Apache Iceberg로의 여정 - Part 1
두줄요약
80TB 이중 저장 구조를 S3 기반 Iceberg 단일 테이블로 통합해 비용을 1/10로 낮추는 과정을 정리했습니다. Rowgroup, 버켓, 컴팩션, 파티션 조합으로 조회 파일 수를 크게 줄였습니다.
문제 상황
- ACS 신용대안평가용 80TB 데이터가 DynamoDB와 S3에 이중 저장되어 월 약 1만 8천 달러 비용 부담 발생
- DynamoDB는 서빙에는 빠르지만 저장·쓰기 비용이 크고, S3는 저렴하지만 대규모 유저 조회 성능이 부족
- 일 3억 건 수준의 insert-only 데이터가 계속 쌓이며 분석과 서빙을 함께 만족할 단일 저장 구조 필요
해결 방법
- DynamoDB+S3 이중 저장을 S3 기반 Apache Iceberg 단일 테이블로 통합
- Parquet Rowgroup을 32MB로 조정하고 유저 기준 정렬로 필요한 데이터만 최소 단위로 읽는 구조 설계
- 1분 단위 적재 데이터를 5분 단위로 컴팩션하고, 버켓과 연도 파티션을 조합해 조회 대상 파일 수를 축소
성능/운영 포인트
- 실시간 단건 조회 평균 5초 이내 응답 속도 목표
- 전체 이력 조회 시 최대 11개 파일만 병렬 읽기로 처리 단순화
- 분석용 Athena/Spark와 서빙용 Python을 함께 쓰는 통합 관리 구조
적용해볼 점
- 저장소 변경보다 읽기 단위 최소화와 파일 수 제어가 성능에 더 중요할 수 있음
- 대용량 insert-only 데이터는 컴팩션과 파티셔닝 전략이 운영 비용에 직접 영향
- 분석과 서빙을 동시에 만족해야 하는 경우 단일 테이블 설계 검토 가치 존재
