데이터 · 2026년 11월 11일
클라우드플레어, D1 서버리스 데이터베이스 제어 평면 수백만 개 규모로 확장
클라우드플레어는 자체 서버리스 SQL 데이터베이스 D1의 제어 평면 구조를 재설계하여 수백만 개의 데이터베이스를 지원하도록 만들었다. 이 변경은 중앙 집중식 병목 현상을 피하고, 재시도 및 멱등성을 구현하며, 최종 일관성을 활용하는 방식으로 이루어졌다.
D1 제어 평면 아키텍처는 트랜잭션 메타데이터를 위해 포스트그레스, 분석을 위해 클릭하우스, 전역 복제 라우팅 데이터를 위해 워커스 KV를 기반으로 구축되어 있다. 쿼리 처리는 중앙 집중식 관리 작업과 분리되어 엣지에서 수행되며, 분산 메타데이터 캐싱, 연결 풀링, 비동기 워크플로우, 주기적 건강 체크를 통해 확장성을 높이고 장애에서 복구한다. 2022년에 발표된 D1은 SQLite 위에 구축된 서버리스 SQL 데이터베이스로, 클라우드플레어의 전역 네트워크에서 애플리케이션에 가깝게 실행되도록 설계되었다. 지난 1년간 일일 활성 데이터베이스 수는 18배 증가했다.
클라우드플레어는 데이터베이스별 지연 시간을 가진 30초 간격의 하트비트를 사용하여 각 D1 내구성 객체를 데이터베이스 존재 및 계정 한도의 진실 원천인 포스트그레스와 조정한다. 이 메커니즘은 실패한 생성 또는 삭제 작업을 스스로 수정하도록 만든다. 고아 객체는 삭제된 것으로 표시되고, 최선 노력 업데이트가 실패하면 워커스 KV 라우팅 메타데이터가 복구된다. 클라우드플레어의 풀 스택 소프트웨어 엔지니어 데이비드 라반과 수석 엔지니어 람브로스 페트로우는 하트비트가 약간 오래된 데이터를 허용할 수 있어 하이퍼드라이브의 여러 캐싱 계층이나 포스트그레스 읽기 리플리카로 제공될 수 있다고 설명한다. 이 하트비트 흐름은 내구성 객체가 데이터베이스 생성과 삭제에 대해 진실 원천인 포스트그레스를 반영하도록 스스로 수정할 수 있게 한다.
클라우드플레어는 D1 쿼리를 중앙 집중식 포스트그레스 데이터베이스에서 분리하기 위해 엣지 API 워커에서 아이볼 워커를 거쳐 관련 D1 내구성 객체로 직접 요청을 라우팅한다. 엣지 API 워커는 인증, 인가, 속도 제한, 요청 검증을 처리하고, 아이볼 워커는 D1 바인딩에 인코딩된 데이터베이스별 인가를 신뢰하여 쿼리 경로에서 중복 검사를 피한다. 라반과 페트로우는 하이퍼드라이브 캐싱이 이미 있음에도 워커스 KV를 사용하는 이유에 대해, 워커스 KV가 단순한 캐시가 아닌 내구성 데이터 저장소라고 설명한다. 항목이 KV의 엣지 캐시에서 빠지면 읽기는 포스트그레스가 아닌 KV 자체의 저장소에서 제공되어 포스트그레스를 데이터 평면에서 제외한다. 재앙적인 캐시 정화 시나리오에서 수백만 개의 데이터베이스가 라우팅 정보를 가져오려 하면 메타 안정 실패가 발생할 수 있다.
클라우드플레어는 비동기 사용량 업데이트를 통해 D1 저장소 한도를 강제하며, 이는 포스트그레스의 쓰기 스파이크를 보호하기 위해 큐에 쌓이고 배치 처리된다. 수백만 개의 데이터베이스를 가진 계정에 대해 비용이 높은 스캔과 쓰기 경쟁을 피하기 위해 증분 저장소 델타를 통해 사전 집계된 계정 합계를 유지한다. 내구성 객체는 하이퍼드라이브의 단기 캐시를 통해 이 합계를 확인하고 계정 한도를 초과하는 쓰기를 차단한다.
레딧 사용자 이삭 코간은 인상적인 아키텍처이지만 대부분의 이점은 가까운 엣지 저장소에서 실행되는 프로세스 내 데이터베이스라는 점이며 나머지는 그 주위의 오케스트레이션이라고 평했다. 클라우드플레어는 방대한 전역 데이터센터 존재를 활용하여 전통적으로 소규모 업체에는 불가능한 규모의 경제를 실현할 수 있다고 덧붙였다. 이전 인기 있는 레딧 스레드에서 여러 사용자는 D1이 신뢰할 수 없으며 프로덕션 워크로드의 가용성과 안정성에 대한 우려를 제기했다.
클라우드플레어 D1은 총 저장소 5GB, 일일 500만 행 읽기, 일일 10만 행 쓰기를 포함하는 영구 무료 티어를 제공한다. 무료 티어 이상에서 저장소는 GB당 월 0.75달러, 읽기는 백만 행당 0.001달러, 쓰기는 백만 행당 1달러이다. D1에는 컴퓨트 또는 데이터 전송 요금이 없다.