apache-iceberg

5 개의 포스트

Piqama: 핀터레 (새 탭에서 열림)

핀터레스트는 빅데이터 플랫폼과 온라인 서비스 전반에서 발생하는 다양한 자원 임계치를 효율적으로 관리하기 위해 통합 쿼타 관리 에코시스템인 'Piqama'를 구축했습니다. Piqama는 CPU, 메모리 같은 물리적 자원부터 QPS, 네트워크 대역폭 등 서비스 지표에 이르기까지 광범위한 리소스의 생명주기를 관리하며, 실시간 쿼타 전파와 사용량 예측을 통한 최적화 기능을 제공합니다. 이를 통해 조직 내 리소스 활용도를 극대화하는 동시에 시스템의 안정성과 가용성을 동시에 확보하고 있습니다. ### 통합 쿼타 관리 아키텍처 및 포털 * Piqama는 다양한 플랫폼과 시나리오를 수용할 수 있는 범용 플랫폼으로 설계되어, 서비스별로 고유한 강제 로직을 사용하거나 Piqama의 기본 메커니즘을 선택하여 적용할 수 있습니다. * REST 및 Thrift API를 지원하는 중앙 집중식 관리 포털을 통해 사용자가 쿼타 설정을 시각화하고 검색할 수 있어 운영상의 실수를 최소화합니다. * 전체 시스템 아키텍처는 관리 포털, 실시간 업데이트 디스패처, 그리고 오프라인 거버넌스 및 최적화 도구들로 구성되어 유기적으로 동작합니다. ### 쿼타 생명주기 관리 * **스키마 및 검증:** 워크로드 간의 계층적 관계를 포함한 쿼타 스키마를 정의하며, 플러그형 프레임워크를 통해 할당량이 전체 클러스터 용량을 초과하지 않도록 보수적인 검증을 수행합니다. * **업데이트 승인 및 배포:** 소유권 기반의 권한 모델을 통해 안전하게 쿼타를 수정하며, 핀터레스트의 설정 배포 시스템(PinConf) 등을 활용해 변경된 쿼타 값을 지연 시간 없이 각 클라이언트 시스템에 방송합니다. * **강제 적용 전략:** 리소스 사용량이 할당량을 초과할 경우, 데이터 경로에서 즉각적으로 요청을 차단하거나 서비스의 중요도에 따라 차등적인 제재를 가하는 기능을 제공합니다. ### 거버넌스 및 자동 최적화(Auto-rightsizing) * **데이터 피드백 루프:** Piqama 클라이언트는 실제 사용량 및 강제 적용 통계를 투명하게 수집하며, 이 데이터는 분석을 위해 Amazon S3의 Apache Iceberg 포맷으로 저장 및 사전 집계됩니다. * **예측 기반 조정:** 수집된 통계를 바탕으로 과거 사용 패턴, 유기적 성장, 트래픽 급증 사례를 분석하여 리소스 부족을 방지하고 활용되지 않는 자원을 회수하는 자동 권장 규모 설정 서비스를 운영합니다. * **비용 관리 연계:** 자원 사용량을 실제 비용으로 환산하는 차지백(Chargeback) 시스템을 통해, 예산 범위를 초과한 프로젝트의 자원 우선순위를 자동으로 낮추는 등의 비용 통제 기능을 수행합니다. ### 실제 적용 사례: 용량 기반 및 속도 제한 쿼타 * **빅데이터 플랫폼(Moka):** Apache Yunikorn 스케줄러와 연동하여 각 프로젝트별로 최소 보장 자원(Guaranteed)과 최대 자원(Maximum)을 동적으로 할당하며, 배치 작업의 병렬 실행 수를 제어합니다. * **온라인 저장 서비스:** 실시간 서비스의 안정성을 위해 QPS 및 대역폭 기반의 속도 제한(Rate-limiting) 쿼타를 적용하여 특정 서비스의 폭주가 전체 시스템에 영향을 주지 않도록 관리합니다. 성공적인 쿼타 관리를 위해서는 단순히 상한선을 설정하는 것에 그치지 않고, 실제 사용량 데이터를 기반으로 한 자동화된 우측 최적화(Right-sizing)와 비즈니스 예산을 연계한 거버넌스 체계를 구축하는 것이 중요합니다. Piqama와 같은 통합 에코시스템은 대규모 인프라 운영 환경에서 자원 낭비를 줄이고 운영 효율을 획기적으로 높이는 핵심 도구가 됩니다.

Pinterest의 차세대 DB 인 (새 탭에서 열림)

Pinterest는 기존의 파편화된 배치 기반 DB 적재 시스템을 개선하기 위해 Iceberg와 CDC(Change Data Capture) 기술을 결합한 통합 프레임워크를 구축했습니다. 이 시스템은 데이터 지연 시간을 24시간 이상에서 수 분 단위로 단축하고, 변경된 데이터만 처리하는 방식으로 인프라 비용을 획기적으로 절감했습니다. 이를 통해 분석, 머신러닝, 규정 준수 등 현대적인 데이터 요구사항에 기민하게 대응할 수 있는 고성능 데이터 생태계를 마련했습니다. ### 통합 CDC 프레임워크의 계층 구조 * **CDC 레이어**: Debezium 및 TiCDC를 활용해 MySQL, TiDB, KVStore의 변경 사항을 1초 미만의 지연 시간으로 포착하여 Kafka에 기록합니다. * **스트리밍 레이어**: Flink 작업이 Kafka의 이벤트를 실시간으로 처리하여 S3에 위치한 'CDC Iceberg 테이블'에 추가 전용(Append-only) 방식으로 저장합니다. * **배치 레이어**: Spark 작업이 주기적으로(15~60분) CDC 테이블의 최신 변경 사항을 읽어 `Merge Into` 구문을 통해 최종 'Base Iceberg 테이블'에 업서트(Upsert)를 수행합니다. * **부트스트랩 및 유지보수**: 초기 데이터 로드를 위한 전용 파이프라인과 소형 파일 압축(Compaction) 및 스냅샷 만료 관리를 위한 유지보수 작업을 포함합니다. ### CDC 테이블과 베이스 테이블의 이원화 관리 * **CDC 테이블**: 모든 변경 이력을 담은 시계열 원장으로, 5분 미만의 지연 시간을 유지하며 원천 데이터의 변경 로그를 보존합니다. * **베이스 테이블**: 온라인 DB의 현재 상태를 그대로 반영하는 스냅샷 테이블입니다. CDC 테이블로부터 최신 레코드를 추출하여 정합성을 맞춥니다. * **동기화 로직**: `ROW_NUMBER()` 함수를 활용해 기본 키(PK)별로 가장 최신 업데이트(최근 타임스탬프 및 GTID 기준)를 식별한 후, 삭제 유형은 제거하고 나머지는 업데이트 또는 삽입합니다. ### 성능 및 비용 최적화 전략 * **Merge-on-Read (MOR) 방식 채택**: Copy-on-Write(COW) 방식은 업데이트 시 대규모 파일을 다시 작성해야 하므로 스토리지와 계산 비용이 높습니다. Pinterest는 비용 효율성을 극대화하기 위해 MOR 방식을 표준 전략으로 선택했습니다. * **기본 키 해시 버킷팅(Bucketing)**: 베이스 테이블을 PK의 해시값(예: `bucket(100, id)`)으로 파티셔닝하여 Spark가 업서트 작업을 병렬로 효율적으로 처리할 수 있도록 설계했습니다. * **증분 처리 효율성**: 매일 전체 테이블을 덤프하던 방식에서 변경된 데이터(통상 5% 미만)만 처리하는 방식으로 전환하여 연산 리소스 낭비를 차단했습니다. 방대한 양의 데이터베이스를 데이터 레이크로 통합할 때는 Iceberg의 `Merge Into` 기능을 활용한 증분 업데이트가 필수적입니다. 특히 읽기 성능과 쓰기 비용 사이의 균형을 위해 MOR 전략을 사용하고, 쓰기 병목을 해소하기 위해 기본 키 기반의 버킷팅을 적용하는 것이 실무적으로 매우 효과적인 접근임을 보여줍니다.

Amazon S3 테이블을 (새 탭에서 열림)

AWS가 Amazon S3 Tables를 위한 '인텔리전트 티어링(Intelligent-Tiering)'과 '복제(Replication)' 기능을 새롭게 출시했습니다. 이번 업데이트를 통해 사용자는 데이터 액세스 패턴에 따라 스토리지 비용을 자동으로 최적화하고, 별도의 복잡한 아키텍처 없이도 여러 리전 및 계정 간에 Apache Iceberg 테이블 복제본을 일관되게 유지할 수 있습니다. 결과적으로 대규모 정형 데이터 관리의 비용 효율성과 글로벌 데이터 가용성이 획기적으로 향상되었습니다. **S3 테이블 인텔리전트 티어링을 통한 비용 최적화** * 데이터 액세스 빈도에 따라 Frequent Access, Infrequent Access(40% 저렴), Archive Instant Access(IA보다 68% 저렴) 등 세 가지 저지연 계층으로 데이터를 자동 이동합니다. * 30일 동안 접근이 없으면 IA 계층으로, 90일이 지나면 AIA 계층으로 전환되며, 이 과정에서 애플리케이션 코드 수정이나 성능 저하가 발생하지 않습니다. * 테이블 압축(Compaction), 스냅샷 만료, 미참조 파일 제거와 같은 유지 관리 작업은 데이터의 액세스 계층에 영향을 주지 않고 수행됩니다. * 특히 압축 작업은 Frequent Access 계층의 데이터만 대상으로 실행되어, 활발하게 쿼리되는 데이터의 성능은 높이고 차가운(Cold) 데이터에 대한 불필요한 처리 비용은 줄입니다. * AWS CLI의 `put-table-bucket-storage-class` 명령을 사용해 테이블 버킷 수준에서 기본 스토리지 클래스를 설정할 수 있습니다. **리전 및 계정 간 S3 테이블 복제 지원** * 수동 동기화 없이도 AWS 리전 및 계정 간에 일관된 Apache Iceberg 읽기 전용 복제본(Read Replica)을 생성하고 유지합니다. * 소스 테이블에서 발생한 모든 업데이트를 시간 순서대로 복제하며, Iceberg 테이블의 핵심인 스냅샷의 부모-자식 관계를 그대로 보존합니다. * 소스 테이블이 업데이트된 후 몇 분 이내에 복제본에 반영되며, 각 복제본은 소스와 독립적인 암호화 설정 및 데이터 보존 정책을 가질 수 있습니다. * 전 세계에 분산된 팀들이 로컬 리전에서 복제된 데이터를 쿼리하게 함으로써 네트워크 지연 시간을 최소화하고 데이터 보호 및 규정 준수 요건을 충족합니다. 대규모 Iceberg 데이터셋을 운영하는 조직은 인텔리전트 티어링을 통해 운영 부담 없이 스토리지 비용을 절감하고, 복제 기능을 활용해 글로벌 규모의 데이터 메쉬 아키텍처를 보다 쉽게 구축할 수 있습니다. 특히 데이터가 늘어남에 따라 수동으로 비용을 관리하기 어려운 환경에서 이 두 기능은 필수적인 관리 도구가 될 것입니다.

Amazon CloudWatch, 운영, (새 탭에서 열림)

Amazon CloudWatch가 운영, 보안 및 규정 준수 데이터를 통합 관리하고 분석할 수 있는 새로운 기능을 도입했습니다. 이 업데이트를 통해 데이터 중복과 비용을 줄이면서 여러 소스의 로그를 자동으로 정규화하고, Apache Iceberg 호환 형식을 통해 외부 분석 도구와의 연동성을 극대화했습니다. 이제 사용자는 복잡한 파이프라인 없이도 통합된 환경에서 운영 지표와 비즈니스 데이터를 실시간으로 상관 분석하여 심도 있는 인사이트를 얻을 수 있습니다. **데이터 수집 및 정규화의 간소화** * AWS Organizations와 통합되어 CloudTrail, VPC Flow Logs, AWS WAF, Route 53 리졸버 로그 등 여러 리전 및 계정의 AWS 로그를 자동으로 수집합니다. * CrowdStrike, Okta, SentinelOne, GitHub 등 타사 보안 및 생산성 도구의 로그를 수집할 수 있는 사전 구축된 커넥터를 제공합니다. * OCSF(Open Cybersecurity Schema Framework) 및 OTel(Open Telemetry) 형식을 기본 지원하여 데이터 일관성을 확보하며, Grok 프로세서를 통해 커스텀 파싱과 필드 연산을 수행할 수 있습니다. **Iceberg 호환성을 통한 데이터 개방성 및 비용 절감** * Amazon S3 Tables를 통해 Apache Iceberg 호환 형식으로 로그 데이터에 접근할 수 있는 기능을 도입했습니다. * CloudWatch 내부뿐만 아니라 Amazon Athena, Amazon SageMaker Unified Studio 등 Iceberg를 지원하는 모든 외부 도구에서 별도의 데이터 복제 없이 직접 분석이 가능합니다. * 통합 데이터 저장소 구조를 채택함으로써 여러 도구에 동일한 데이터를 중복 저장할 필요가 없으며, 복잡한 ETL 파이프라인 유지보수에 드는 운영 오버헤드를 줄였습니다. **강력한 로그 분석 및 시각화 도구** * 자연어 기반 쿼리를 비롯해 LogsQL, PPL, SQL 등 다양한 쿼리 언어를 단일 인터페이스에서 사용할 수 있습니다. * 새로운 'Facets' 인터페이스를 통해 소스, 애플리케이션, 계정, 리전 및 로그 유형별로 직관적인 필터링이 가능합니다. * 지능형 파라미터 추론 기능을 지원하여 여러 AWS 계정과 리전에 걸친 방대한 로그 그룹에 대해 효율적인 교차 쿼리를 실행할 수 있습니다. **실용적인 권장사항** 운영 로그와 보안 로그가 서로 다른 도구에 분산되어 있어 상관 분석에 어려움을 겪거나, 로그 분석을 위해 복잡한 ETL 프로세스를 운영 중인 조직에 이 기능을 적극 추천합니다. 특히 CloudWatch의 통합 관리 뷰를 통해 전체 데이터 소스를 한눈에 파악하고, OCSF 정규화 기능을 활용하여 보안 분석의 표준화를 시작하는 것이 좋습니다.

네이버 TV (새 탭에서 열림)

네이버의 실시간 거래 리포트 시스템은 대규모 데이터를 다양한 조건으로 빠르게 조회하기 위해 Apache Iceberg와 StarRocks의 Materialized View를 핵심 기술로 활용합니다. 단순히 데이터를 적재하는 수준을 넘어, 데이터의 최신성(Freshness)과 저지연(Low-Latency) 응답 속도, 그리고 시스템 확장성을 동시에 확보하는 것이 이번 기술 여정의 핵심 결론입니다. 이를 통해 복잡한 다차원 필터링이 필요한 비즈니스 환경에서도 사용자에게 즉각적인 분석 결과를 제공하는 데이터 레이크하우스 아키텍처를 구현했습니다. **실시간 거래 리포트의 기술적 도전 과제** * 대규모로 발생하는 거래 데이터를 실시간에 가깝게 수집하면서도, 사용자가 원하는 다양한 검색 조건에 즉각 응답해야 하는 성능적 요구사항이 있었습니다. * 데이터의 양이 방대해짐에 따라 기존의 단순 조회 방식으로는 응답 속도가 저하되는 문제가 발생했으며, 데이터의 신선도와 쿼리 성능 사이의 트레이드오프를 해결해야 했습니다. * 다차원 필터링과 집계 연산이 빈번한 리포트 특성상, 인덱싱 최적화와 리소스 효율성을 동시에 고려한 설계가 필요했습니다. **Iceberg와 StarRocks를 활용한 저지연 쿼리 전략** * **Apache Iceberg 기반 데이터 관리**: 데이터 레이크의 스토리지 포맷으로 Iceberg를 채택하여 ACID 트랜잭션을 보장하고, 대규모 데이터셋에 대한 효율적인 스키마 진화와 파티션 관리를 수행합니다. * **StarRocks의 구체화 뷰(Materialized View) 도입**: Iceberg에 저장된 원본 데이터를 직접 조회하는 대신, StarRocks의 Materialized View를 활용해 자주 사용되는 쿼리 결과를 미리 연산하여 저장함으로써 조회 속도를 비약적으로 향상시켰습니다. * **증분 업데이트 및 동기화**: 실시간으로 유입되는 데이터를 Materialized View에 효율적으로 반영하기 위해 Spark와 StarRocks 간의 연동 최적화를 진행하여 데이터의 최신성을 유지합니다. **아키텍처 구성 요소 및 운영 최적화** * **Spark**: 대용량 거래 데이터의 가공 및 Iceberg 테이블로의 수집을 담당하는 컴퓨팅 엔진으로 활용됩니다. * **StarRocks**: 고성능 OLAP 엔진으로서 Iceberg 외부에 위치하며, Materialized View를 통해 복잡한 조인(Join)과 집계(Aggregation) 쿼리를 가속화합니다. * **확장성 확보**: 데이터 노드와 컴퓨팅 리소스를 분리하여 운영함으로써 트래픽 증가에 유연하게 대응할 수 있는 구조를 설계했습니다. 대용량 실시간 분석 시스템을 구축할 때 Apache Iceberg만으로는 쿼리 성능의 한계가 있을 수 있으므로, StarRocks와 같은 고성능 OLAP 엔진의 구체화 뷰를 결합하는 레이크하우스 전략이 효과적입니다. 특히 데이터의 최신성이 중요한 금융 및 거래 리포트 분야에서 이와 같은 기술 조합은 인프라 비용을 절감하면서도 사용자 경험을 극대화할 수 있는 강력한 대안이 됩니다.