본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

Cloudflare R2 동작 원리 (How R2 works)

원문 보기 위키 갱신

Cloudflare R2는 이그레스(egress) 요금이 없는 S3 호환 객체 스토리지 서비스로, Cloudflare의 글로벌 네트워크 위에 구축돼요. 강한 일관성(strongly consistent)을 제공하고 높은 데이터 내구성(data durability)을 갖도록 설계됐어요.

출처: 문서

본문

R2는 인터넷을 통해 자주 접근해야 하는 비정형 데이터를 이그레스 요금 없이 저장하고 제공하기에 이상적이에요. 웹 자산 제공, AI 모델 학습, 사용자 생성 콘텐츠 관리 같은 워크로드에 잘 맞아요.

아키텍처

R2의 아키텍처는 여러 구성 요소로 이루어져 있어요:

  • R2 Gateway: 모든 API 요청의 진입점으로, 인증과 라우팅 로직을 처리해요. 이 서비스는 Cloudflare Workers를 통해 Cloudflare의 글로벌 네트워크 전체에 배포돼요.
  • Metadata Service: Durable Objects 위에 구축된 분산 계층으로, 객체 메타데이터(예: 객체 키, 체크섬)를 저장·관리해 스토리지 시스템 전반에서 객체의 강한 일관성을 보장해요. 메타데이터 접근을 빠르게 해주는 내장 캐시 계층도 포함돼요.
  • Tiered Read Cache: 분산 스토리지 인프라 앞에 위치한 캐싱 계층으로, Cloudflare Tiered Cache를 사용해 클라이언트에 더 가까운 곳에서 데이터를 제공함으로써 객체 읽기를 빠르게 해줘요.
  • Distributed Storage Infrastructure: 암호화된 객체 데이터를 영구적으로 저장하는 기본 인프라예요.

R2 Architecture

R2는 여러 클라이언트 인터페이스를 지원해요: Cloudflare Workers Binding, S3 호환 API, 그리고 Cloudflare Dashboard와 Wrangler CLI를 구동하는 REST API가 있어요. 모든 요청은 R2 Gateway를 통해 라우팅되며, Gateway가 Metadata Service와 Distributed Storage Infrastructure와 조율해 객체 데이터를 검색해요.

R2에 데이터 쓰기

R2에 쓰기 요청(예: 객체 업로드)이 들어오면 다음 순서로 진행돼요:

  1. 요청 처리: 요청은 사용자와 가까운 에지의 R2 Gateway에서 수신되고, 여기서 인증돼요.
  2. 암호화와 라우팅: Gateway가 Metadata Service에 접근해 암호화 키를 가져오고, 버킷에 설정된 location 내 어떤 스토리지 클러스터에 암호화된 데이터를 쓸지 결정해요.
  3. 스토리지에 쓰기: 암호화된 데이터가 분산 스토리지 인프라에 기록·저장되고, 내구성(durability)을 위해 리전 내(예: ENAM)에서 복제돼요.
  4. 메타데이터 커밋: 마지막으로 Metadata Service가 객체 메타데이터를 커밋해 이후 읽기에서 객체가 보이게 해요. 이 커밋이 끝난 뒤에만 클라이언트에 HTTP 200 성공 응답이 전송되어, 확인되지 않은 쓰기가 방지돼요.

Write data to R2

R2에서 데이터 읽기

R2에 읽기 요청(예: 객체 가져오기)이 들어오면 다음 순서로 진행돼요:

  1. 요청 처리: 요청은 사용자와 가까운 에지의 R2 Gateway에서 수신되고, 여기서 인증돼요.
  2. 메타데이터 조회: Gateway가 Metadata Service에 객체 메타데이터를 요청해요.
  3. 객체 읽기: Gateway가 계층형 읽기 캐시에서 암호화된 객체를 가져오려 해요. 캐시에 없으면 객체 데이터를 보유한 리전 내 분산 스토리지 데이터 센터 중 하나에서 객체를 가져와요.
  4. 클라이언트에 제공: 객체가 복호화되어 사용자에게 제공돼요.

Read data to R2

성능

작업 성능은 버킷의 지리적 위치, 요청 출처, 접근 패턴 같은 요인에 영향을 받을 수 있어요.

크로스 리전 요청의 업로드 성능을 최적화하려면 버킷에서 Local Uploads를 활성화해요.

읽기 성능을 최적화하려면 custom domain을 사용할 때 Cloudflare Cache를 활성화해요. 캐싱이 활성화되면 읽기 요청이 R2 Gateway를 우회해 Cloudflare 에지 캐시에서 바로 제공될 수 있어 지연 시간이 줄어요. 캐시된 데이터는 최신 버전을 즉시 반영하지 않을 수 있다는 점에 유의해요.

Read data to R2 with Cloudflare Cache

더 알아보기

  • Consistency — R2의 일관성 모델 알아보기
  • Durability — R2의 내구성 보장에 대해 더 알아보기
  • Data location — R2가 데이터를 어디에 저장할지 결정하는 방식과 관할권 제한에 대해 알아보기
  • Data security — R2의 데이터 보안 속성 알아보기