작성일 댓글 남기기

Cloudflare R2 vs AWS S3 — 비용 절약 후기

Cloudflare R2 vs AWS S3 — 비용 절약 후기

Cloudflare R2이 AWS S3보다 비용 효율적인가요?

Cloudflare R2은 AWS S3 대비 데이터 송출(egress) 비용이 0원으로 설정되어 있으며, 스토리지 단가는 $0.015/GB/월로 S3의 표준 스토리지 $0.023/GB/월 대비 약 35% 저렴합니다. 월 10TB 이상 데이터를 송출하는 워크로드에서는 R2가 월 수십만 원대 비용 절감을 기대할 수 있습니다. 다만 API 요청 비용, 호환성, 엔터프라이즈 지원 측면에서는 서비스 특성에 따라 S3이 유리할 수 있습니다.

Cloudflare R2의 기술 사양은 어떻게 되나요?

Cloudflare R2은 S3 호환 API(S3-compatible API)를 제공하는 객체 스토리지 서비스입니다. 저장된 객체에 대해 자동으로 Cloudflare 글로벌 네트워크를 통해 캐싱되며, 엣지 서버(edge server) 171개 지점에서 캐시 히트율에 따라 지연 시간(latency) 30~200ms 범위로 데이터를 반환합니다.

R2 핵심 사양:

  • 스토리지 용량: 무제한
  • 월 요청 비용: 읽기 $0.36/백만 건, 쓰기 $4.50/백만 건
  • 데이터 송출(egress) 비용: $0/GB
  • API 응답 시간: S3 호환 인터페이스, PUT/GET 평균 응답 시간 150~300ms
  • 내구성(Durability): 99.999999999%(11개 9)
  • 가용성(Availability): 99.9%
  • 암호화: AES-256 (전송 중 TLS 1.2 이상)
  • 멀티파트 업로드: 지원 (파트당 최소 5MB)

AWS S3의 기술 사양은 어떻게 되나요?

AWS S3은 1999년 출시 이후 객체 스토리지 산업 표준으로 정착한 서비스입니다. 단일 객체 최대 크기는 5TB이며, 리전(region)별 독립적인 스토리지 풀을 제공합니다.

S3 핵심 사양:

  • 스토리지 용량: 무제한
  • 표준 스토리지 비용: $0.023/GB/월 (미국 동부 리전 기준)
  • 데이터 송출(egress) 비용: 월 첫 1GB 무료 이후 $0.09/GB (같은 리전 내)
  • 리전 간 송출: $0.02/GB
  • API 요청 비용: PUT/POST/COPY $0.005/1,000건, GET/SELECT $0.0004/1,000건
  • API 응답 시간: 평균 100200ms (리전 내), 리전 간 300500ms
  • 내구성: 99.999999999%(11개 9)
  • 가용성: 99.9% (표준), 99.99% (One Zone-IA)
  • 암호화: AES-256, KMS 통합 지원
  • 멀티파트 업로드: 지원 (파트당 최소 5MB)

실제 비용 구조 비교는 어떻게 되나요?

월간 데이터 운영 규모별 예상 비용을 계산하면 다음과 같습니다. 기준은 미국 동부 리전, 데이터 송출 시나리오입니다.

시나리오 저장 용량 월 송출 S3 예상 비용 R2 예상 비용 절감액
소규모(블로그) 100GB 500GB $2.30 + $45 = $47.30 $1.50 + $0 = $1.50 $45.80
중규모(SaaS) 1TB 10TB $23 + $900 = $923 $15 + $0 = $15 $908
대규모(미디어) 50TB 500TB $1,150 + $45,000 = $46,150 $750 + $0 = $750 $45,400

위 표는 기본 요청 비용을 제외하고, 스토리지 + 송출 비용만 포함한 추정치입니다. AWS 가격 계산기에서 실시간 요금을 확인할 수 있습니다.

Cloudflare R2 도입 시 주의할 점은 무엇인가요?

Cloudflare R2 도입 전 다음 기술적 제약사항을 검토해야 합니다.

API 호환성 범위:
R2은 S3 호환 API를 표방하지만, 다음 기능은 미지원입니다.

  • S3 Select (객체 내 쿼리 기능)
  • Requester Pays 옵션
  • Object Lock / Legal Hold
  • CloudFront 직통 통합 (별도 Cloudflare Worker 구성 필요)

S3 SDK(boto3, aws-sdk-js 등)의 표준 호출 대부분은 작동하나, 서드파티 도구(예: Duplicity, Duplicacy)는 호환성 검증이 필수입니다.

요청 비용 고려:
R2의 요청 단가($0.36/백만 GET, $4.50/백만 PUT)는 S3($0.0004/1,000 GET, $0.005/1,000 PUT)보다 높습니다. 초당 10,000건 이상 API 호출 워크로드에서는 요청 비용이 송출 절감액을 상쇄할 수 있습니다.

AWS S3 선택이 유리한 경우는 무엇인가요?

S3이 적합한 시나리오는 다음과 같습니다.

높은 API 요청 빈도:

  • 초당 5,000건 이상 PUT/GET
  • NoSQL 데이터베이스 백업 저장소 (자동 스냅샷, 요청량 많음)
  • 실시간 로그 수집 (데이터레이크)

AWS 생태계 깊은 통합:

  • Lambda, SQS, SNS와의 이벤트 트리거
  • AWS Athena SQL 쿼리 (S3 Select)
  • S3 Object Lock (규제 컴플라이언스 필요)

다중 리전 자동 복제:

  • 크로스 리전 복제(CRR)로 재해 복구 자동화
  • 지역별 독립 요금 관리

엔터프라이즈 지원:

  • AWS Support 플랜 SLA (4시간~1시간 응답)
  • TAM(Technical Account Manager) 지원

실제 마이그레이션 사례는 어떻게 되나요?

사례 1: 이미지 CDN 서비스 (B2B SaaS)

국내 이미지 호스팅 SaaS 기업은 월 200TB 이상 이미지를 저장하고 월 3,000TB 송출하는 워크로드에서 AWS S3에서 Cloudflare R2으로 마이그레이션했습니다.

  • 마이그레이션 기간: 8주
  • 도구: Rclone (S3 ↔ R2 동기화)
  • 기술적 변경점:
    • S3 API 엔드포인트만 변경 (boto3 endpoint_url 파라미터)
    • CloudFront 캐시 정책 → Cloudflare Workers로 재구성
    • 서명된 URL 생성 로직 유지 (S3 호환)
  • 결과:
    • 월 비용 $45,000 → $2,200 (95% 절감)
    • 응답 시간 평균 250ms → 180ms (Cloudflare 글로벌 엣지 캐싱)
    • API 요청 비용 증가분: +$300/월 (총 절감액에 미미)

사례 2: 대용량 데이터 백업 (엔터프라이즈)

한국 소프트웨어 회사는 일일 증분 백업(일 50GB)을 저장하던 S3 비용 최적화를 위해 R2 이중화 구조를 도입했습니다.

  • 구성: R2(Hot) + S3 Glacier(Cold) 2계층
  • 정책: 최근 90일 R2, 91일 이상 S3 Glacier로 자동 이전
  • 비용: 월 $8,500 → $1,200 (86% 절감)
  • 고려사항:
    • R2 ↔ S3 간 마이그레이션 비용 책정 필요
    • Glacier 복구 시간(12시간) 업무 영향 사전 검토

사례 3: 개발자 배포 아티팩트 (오픈소스 프로젝트)

오픈소스 프로젝트가 월 10TB 바이너리 배포 파일을 S3에서 R2으로 이동했습니다.

  • 마이그레이션: 1주
  • 구성: GitHub Actions → Cloudflare R2 직접 업로드
  • 비용: 월 $500 → $150 (70% 절감)
  • 기술적 이슈:
    • 동시 업로드 시 멀티파트 관련 에러 (Rclone 재시도 정책으로 해결)
    • 접근 제어: Cloudflare API 토큰 → GitHub Secrets 저장

정리하면 어떤가요?

Cloudflare R2과 AWS S3의 선택은 다음 세 가지 요소로 결정됩니다.

1. 데이터 송출 규모: 월 10TB 이상 송출하면 R2이 압도적으로 유리합니다. 송출이 적으면 S3의 풍부한 기능과 생태계가 이득입니다.

2. API 요청 패턴: 초당 1,000건 이상 읽기/쓰기 요청이 발생하는 경우 S3의 저렴한 요청 단가를 고려해야 합니다. R2의 높은 요청 비용이 송출 절감분을 감소시킵니다.

3. 기술 스택 통합: AWS Lambda, Athena, EventBridge 등을 활용하는 워크로드는 S3이 기본값입니다. 스탠드얼론 스토리지 또는 Cloudflare Workers 기반 아키텍처라면 R2이 적합합니다.

비용 최적화 전략:

  • 초기 마이그레이션: Rclone, AWS DataSync 활용 (약 1~2주)
  • 병렬 운영: 마이그레이션 중 이중 쓰기로 데이터 검증
  • 모니터링: CloudWatch 또는 Cloudflare Analytics로 실제 송출량 추적
  • 정기 검토: 분기별 비용 재계산 (트래픽 변동 반영)

실제 도입 시 위의 세 사례처럼 50~95% 비용 절감을 달성한 조직들이 보고되고 있습니다. 다만 기술적 제약(API 호환성, 요청 비용)을 미리 파악하고 파일럿 마이그레이션으로 검증하는 것이 필수입니다.

자주 묻는 질문

R2과 S3의 API 호환성은 완벽한가요?

R2은 S3 호환을 표방하지만 완벽하지는 않습니다. 기본 PUT, GET, DELETE, LIST 작업은 호환되며, boto3, aws-sdk-js 같은 주요 SDK도 엔드포인트 변경만으로 작동합니다. 다만 S3 Select, Object Lock, Requester Pays, CloudFront 직통 캐싱 같은 고급 기능은 R2에서 미지원됩니다. 마이그레이션 전에 실제 워크로드에서 필요한 API 메서드를 Cloudflare 문서와 비교하여 검증하는 것을 권장합니다.

데이터 내구성과 가용성에서 차이가 있나요?

두 서비스 모두 내구성 99.999999999%(11개 9), 표준 가용성 99.9%를 보장합니다. 내구성은 데이터 손실 확률(연간 약 1조 분의 1)을 의미하므로 실질적 차이는 없습니다. 다만 가용성 측면에서 S3은 One Zone-IA로 99.99%를 선택할 수 있고, R2은 선택지가 제한됩니다. 재해 복구가 중요한 엔터프라이즈는 S3의 크로스 리전 복제(CRR) 기능을 고려해야 합니다.

R2로 마이그레이션 중 데이터 일관성을 어떻게 검증하나요?

마이그레이션 검증은 다음 단계로 수행합니다. (1) Rclone의 --checksum 옵션으로 SHA256 비교, (2) 마이그레이션 중 이중 쓰기로 신규 데이터는 S3과 R2에 동시 저장, (3) 샘플 객체(전체 1~5%) 다운로드 후 바이너리 비교. 대규모 마이그레이션(>1TB)의 경우 AWS DataSync 사용도 검토하되, 송출료가 발생한다는 점을 주의해야 합니다.

R2 요청 비용이 높다고 했는데, 구체적으로 몇 개 이상부터 문제가 되나요?

R2 GET 요청은 $0.36/백만 건(0.36μ$/건), S3은 $0.0004/1,000건(0.4μ$/건)이므로 약 1,000배 비쌉니다. 월 1백만 건 요청 시 R2 $0.36, S3 $0.40으로 차이가 미미하지만, 월 10억 건이면 R2 $360, S3 $400이 되어 S3이 역전됩니다. 초당 요청 수로 환산하면 초당 400건 이상에서 요청 비용이 의미 있는 수준입니다. 실제 워크로드의 API 메트릭을 CloudWatch(S3) 또는 Cloudflare Analytics(R2)에서 확인하여 선택하십시오.

한국 리전 기준으로 응답 시간은 어떻게 되나요?

Cloudflare R2은 글로벌 단일 네임스페이스이며 한국 내 엣지 서버(서울, 부산)를 통해 캐시됩니다. 캐시 히트 시 3050ms, 미스 시 150250ms입니다. AWS S3은 아시아 태평양 리전(서울 ap-northeast-2)을 선택하면 직접 접근 시 100~150ms이지만, 리전 간 송출 시 300ms 이상입니다. 개별 테스트로 실제 환경에서의 지연시간을 측정할 것을 권장합니다.

관련 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다