- 프롤로그: 2022년 9월, R2가 모든 것을 바꿨다
- 1. AWS S3 — 여전히 기본값, 그리고 여전히 비싼 송신
- 2. Cloudflare R2 — 디스럽터, 그리고 2026년 현재의 위상
- 3. Backblaze B2 — 조용한 강자, 11년차
- 4. Wasabi — "예측 가능한 청구서"의 모델
- 5. Bunny.net — CDN-퍼스트의 스토리지
- 6. Tigris Data — 글로벌 분산 S3, 2024년 신생주자
- 7. R2 Data Catalog — Iceberg가 오브젝트 스토리지 위에 올라왔다
- 8. Google Cloud Storage / Azure Blob — 패리티 제품의 현실
- 9. iDrive E2, Storj, Filebase — 디센트럴라이즈드의 변두리
- 10. "1TB 저장 + 10TB/월 송신" 비용 매트릭스
- 11. "그래도 S3"인 경우들 — 솔직한 디시전 프레임워크
- 12. 마이그레이션 함정들
- 13. Iceberg + S3-compatible 스토리지 — 2026년의 진짜 메가트렌드
- 14. 안티 패턴: R2/B2가 잘못된 선택일 때
- 에필로그: 결정 체크리스트
- 참고 / References
프롤로그: 2022년 9월, R2가 모든 것을 바꿨다
2022년 9월 22일. Cloudflare는 R2 오브젝트 스토리지를 일반 출시(GA)했습니다. 그날 발표문의 핵심 문장은 단 한 줄이었습니다. "Zero egress fees." 송신 요금 없음.
이게 왜 충격이었는지 이해하려면 그 전까지의 클라우드 경제학을 알아야 합니다. AWS S3는 저장 비용 자체는 GB당 $0.023 (Standard 기준) 정도로 합리적입니다. 하지만 데이터를 인터넷으로 내보내는 순간 GB당 $0.09가 붙습니다. 즉, 1TB를 저장하는 비용은 한 달 $23이지만, 그 1TB를 한 번 인터넷으로 내보내면 $90이 추가로 듭니다. 저장은 미끼고, 진짜 수익은 송신에서 나오는 구조입니다.
Cloudflare의 마티유 프린스 CEO는 이 모델을 "데이터 인질극(data hostage)"이라고 불렀고, R2는 이그레스를 완전히 무료로 만들었습니다. "당신의 데이터를 가져가는 것에 우리가 돈을 받지 않는다"는 메시지는 단순했지만, 그 파장은 4년이 지난 2026년 지금까지도 클라우드 스토리지 업계를 흔들고 있습니다.
이 글에서는 2026년 5월 현재의 오브젝트 스토리지 시장을 9개 서비스로 나눠 비교합니다. 단순 가격표가 아니라, "1TB 저장 + 월 10TB 송신"이라는 실제 워크로드에서 어떤 차이가 나는지, 언제 R2가 옳고 언제 틀린지, S3에서 옮길 때 빠지기 쉬운 함정은 무엇인지를 다룹니다.
1. AWS S3 — 여전히 기본값, 그리고 여전히 비싼 송신
S3는 2006년 출시 이후 사실상 오브젝트 스토리지의 표준 API가 되었습니다. 2026년 현재 거의 모든 경쟁자가 "S3-compatible API"를 표방하는 이유입니다.
2026년 5월 기준 S3 표준 가격
저장 (Standard, us-east-1):
처음 50TB/월 : $0.023/GB
다음 450TB/월 : $0.022/GB
500TB 이상/월 : $0.021/GB
요청 비용:
PUT, COPY, POST : $0.005 per 1,000 requests
GET, SELECT 등 : $0.0004 per 1,000 requests
송신 (Data Transfer Out to Internet):
처음 10TB/월 : $0.09/GB
다음 40TB/월 : $0.085/GB
다음 100TB/월 : $0.07/GB
150TB 초과/월 : $0.05/GB
* 2021년부터 매월 100GB 무료 송신 제공 (실무에 큰 의미 없음)
왜 S3가 여전히 기본값인가
- IAM, KMS, CloudTrail, VPC Endpoint 등 AWS 생태계와 깊이 통합
- Glacier Deep Archive (
$0.00099/GB) 같은 콜드 티어 라인업 - Athena, Redshift Spectrum, EMR 등 분석 도구와의 native 통합
- S3 Object Lambda, S3 Express One Zone (저지연 변종) 같은 확장
- 컴플라이언스 인증 가짓수가 압도적
S3의 "이그레스 락인" 본질
AWS는 단순히 S3 송신만 비싼 게 아닙니다. EC2 → 인터넷, RDS → 인터넷, NAT Gateway 트래픽까지 모두 같은 $0.09/GB 구조입니다. 즉, AWS에서 데이터를 "한 번이라도" 외부로 빼내려면 통행세를 내야 합니다.
2022년 R2 출시 이후, Cloudflare가 "Bandwidth Alliance"라는 무료 송신 파트너십(나중에 R2로 흡수)을 만든 것도 이 락인을 깨려는 시도였습니다. AWS는 2024년 3월에야 "EC2/S3에서 다른 클라우드로 데이터를 영구 이전할 때는 송신 무료"라는 제한적 정책을 발표했지만, 평상시 운영 트래픽에는 적용되지 않습니다.
2. Cloudflare R2 — 디스럽터, 그리고 2026년 현재의 위상
R2의 핵심 약속은 단순합니다. 저장 비용은 받고, 송신 비용은 안 받습니다.
2026년 5월 기준 R2 가격
저장 (Standard):
$0.015 / GB-월
송신 (egress):
$0 — 인터넷 어디로든 무료
요청 비용:
Class A (PUT, POST, LIST, DELETE):
$4.50 per 1,000,000 requests
Class B (GET, HEAD):
$0.36 per 1,000,000 requests
Infrequent Access 티어 (2024년 출시):
저장: $0.01 / GB-월
Class A: $9.00 per 1,000,000
Class B: $0.90 per 1,000,000
최소 30일 보관
데이터 검색 요금: $0.01 / GB
무료 한도:
저장: 10GB/월
Class A: 1,000,000/월
Class B: 10,000,000/월
R2의 진짜 매력은 가격이 아니다
R2가 시장을 흔든 이유는 단순히 송신 무료여서가 아니라, Cloudflare 네트워크 위에 직접 올라간다는 것입니다.
- Workers에서 R2 버킷을 코드처럼 import하여 직접 호출 (네트워크 hop 없음)
- Cloudflare CDN과의 통합이 native (별도 origin 설정 불필요)
- 295개 이상의 PoP에서 가까운 곳으로 자동 라우팅
- S3-compatible API라 boto3, aws-sdk-js, MinIO 클라이언트 그대로 사용 가능
2024-2025년 사이 R2가 추가한 것들
- R2 Data Catalog (Iceberg) — 2024년 후반 공개, 2025년 GA. R2 버킷 위에 Apache Iceberg 테이블을 native로 호스팅하는 매니지드 카탈로그. Spark, DuckDB, ClickHouse 등에서 직접 쿼리.
- Event Notifications — R2 PUT/DELETE 이벤트를 Queues로 라우팅하여 서버리스 ETL.
- Super Slurper / Sippy — S3에서 R2로 한 번에 / 점진적으로 마이그레이션하는 툴.
- Location Hints — 어느 지역 PoP에 우선 저장할지 힌트 제공 (지역 컴플라이언스용).
R2 비용 계산 예시: 1TB 저장 + 10TB/월 송신
저장: 1TB * $0.015/GB = $15.00
송신: 10TB * $0 = $0.00
요청: Class A 100k + Class B 5M = $0.45 + $1.80 = $2.25
-----------------------------------------------
월 합계: ≈ $17.25
같은 워크로드를 S3로 돌리면 $23 (저장) + $900 (송신 10TB) + 요청 비용 = 약 $925. 약 54배 차이입니다.
3. Backblaze B2 — 조용한 강자, 11년차
Backblaze는 2015년 B2 Cloud Storage를 출시했습니다. R2보다 7년 먼저 "저장 비용이 싸고, 송신도 (일정 한도 내) 무료"라는 모델을 들고 나왔습니다. 다만 마케팅이 조용해서 R2 등장 전까지는 백업/아카이브 시장에 머물렀습니다.
2026년 5월 기준 B2 가격
저장 (Standard):
$0.006 / GB-월 (= $6 / TB-월)
송신 (egress):
처음 3x 저장량까지 무료
예: 100GB 저장 시 월 300GB 무료 송신
초과분: $0.01 / GB
요청 비용:
Class A (Upload): 무료
Class B (Download): 처음 2,500/일 무료, 이후 $0.004 per 10,000
Class C (List, Head): 처음 2,500/일 무료, 이후 $0.004 per 1,000
Cloudflare/Fastly/Bunny CDN과의 송신: 완전 무료 (Bandwidth Alliance 잔존)
B2의 핵심 셀링 포인트
- 저장 비용이 S3 대비 4배 저렴 (
$0.006vs$0.023) - Cloudflare CDN과 결합 시 송신 0원 — B2 origin에 Cloudflare CDN을 붙이면 사용자에게 가는 트래픽은 전부 무료
- S3 API 호환 (2020년부터)
- Veeam, Synology, Restic 등 백업 솔루션 ecosystem 완비
- 미국 회사, SOC 2, GDPR, HIPAA 인증
B2의 약점
- 리전이 적음 (us-west, us-east, eu-central 정도)
- 분석/람다/이벤트 같은 확장 서비스 거의 없음
- 글로벌 PoP이 없어서 단일 리전 latency 한계 (CDN으로 보완 필수)
4. Wasabi — "예측 가능한 청구서"의 모델
Wasabi는 2017년 출시 후 "송신 무료 + 정액 저장"이라는 라디컬한 단순함을 내세웠습니다.
2026년 5월 기준 Wasabi 가격
저장:
$6.99 / TB-월 (Pay-As-You-Go)
$5.99 / TB-월 (Reserved Capacity Storage, 1년 약정)
송신: 무료 (단, "API 호출량과 송신량이 저장량을 초과하지 않을 것"이라는 fair-use 조항)
요청 비용: 무료
최소 저장 기간: 90일 (90일 이내 삭제해도 90일치 청구)
Wasabi의 특이점
- 모든 요청 무료: PUT/GET/LIST/DELETE 모두 무료
- 송신 무료 (fair-use 조건부)
- 그러나 "fair-use"가 강해서, 자주 다운로드되는 hot 데이터에는 부적합
- S3 API 호환
- 90일 최소 보관 요건이 가장 큰 함정 — 임시 데이터에 쓰면 비쌈
- 글로벌 리전 12개 정도 (us, eu, ap, au)
Wasabi 1TB 저장 + 10TB 송신 시나리오
저장: 1TB * $6.99 = $6.99
송신: 10TB > 1TB 저장량 → fair-use 위반 가능성
→ Wasabi가 Reserved Capacity Storage 플랜으로 전환 권유하거나
계약 재협상 요청할 수 있음
요청: 무료
-----------------------------------------------
월 합계: $6.99 (이상적), 단 정책 위반 시 별도 협상
→ Wasabi는 송신량이 저장량의 1배 이내인 백업/아카이브에 최적이고, 비디오 호스팅처럼 송신이 큰 워크로드에는 R2/B2가 낫습니다.
5. Bunny.net — CDN-퍼스트의 스토리지
Bunny.net은 슬로베니아 회사로, 원래 CDN으로 유명했습니다. 2020년경 Edge Storage를 추가했고, 2026년 현재 "CDN과 통합된 스토리지"라는 포지셔닝이 명확합니다.
2026년 5월 기준 Bunny 가격
Edge Storage (오리진용, 11개 리전):
HDD: $0.01 / GB-월
SSD: $0.02 / GB-월
Replication 추가 리전: 각각 +50% 비용
Edge Storage 송신: 무료 (Bunny CDN으로 통하는 경우)
Bunny CDN 송신 (사용자에게 전달):
High Volume (HQ Tier): $0.005 / GB ~ $0.01 / GB
Standard Tier: $0.01 / GB ~ $0.06 / GB (지역별)
미국/유럽: 가장 저렴
아프리카/오세아니아: 가장 비쌈
요청 비용: 무료
Bunny의 정체성
Bunny는 R2/B2/Wasabi와 직접 경쟁한다기보다, CDN 백엔드 스토리지에 특화되어 있습니다. 비디오 스트리밍, 이미지 호스팅, 게임 패치 배포 같은 use case가 강점입니다.
- 오리진 스토리지는 거의 무료에 가깝게 저렴
- CDN 송신은 지역별 종량제 (다만 R2 무료보다는 비쌈)
- Bunny Stream (비디오 인코딩/HLS), Bunny Optimizer (이미지 변환) 등 미디어 특화 기능
- S3-compatible 인터페이스 제공 (Bunny SDK 별도 존재)
Bunny가 R2보다 나은 시나리오
- 비디오 스트리밍처럼 adaptive bitrate streaming이 필요한 경우 (Bunny Stream의 HLS 변환)
- 이미지 변환을 Origin에서 처리하고 싶은 경우 (Bunny Optimizer)
- CDN 캐시 hit ratio가 높아 송신 종량제가 부담되지 않는 정적 사이트
6. Tigris Data — 글로벌 분산 S3, 2024년 신생주자
Tigris Data는 Fly.io의 인프라 위에서 운영되는 비교적 신생 오브젝트 스토리지 서비스입니다. 2024년 GA 이후 2025-2026년 사이 빠르게 주목받았습니다.
Tigris의 정체성
- 글로벌 분산 by default: 업로드한 객체가 자동으로 여러 리전에 복제되고, 가장 가까운 리전에서 서빙
- Fly.io의 머신 위에서 직접 운영되어, Fly 앱과 같은 데이터센터 안에서 접근 시 latency 극소
- S3-compatible API
- 기본 가격 모델: 저장 + 요청, 이그레스 무료
2026년 5월 기준 Tigris 가격
저장 (Standard):
$0.02 / GB-월
송신 (egress):
무료
요청 비용:
Class A (PUT 등): $0.0045 per 1,000
Class B (GET 등): $0.0004 per 1,000
글로벌 복제: 기본 포함 (별도 비용 없이 여러 PoP에 자동 복제)
Tigris가 R2와 다른 점
- R2는 단일 권역에서 시작해 PoP 캐싱, Tigris는 객체 자체를 여러 리전에 복제
- Fly.io 앱이 일본/싱가포르/시드니 등 여러 리전에 분산되어 있을 때, 각 리전에서 latency 거의 0에 가깝게 같은 객체에 접근 가능
- 단점: 저장 비용이 R2(
$0.015)보다 약간 비쌈 ($0.02) - 글로벌 분산 ML inference, 멀티 리전 게임 서버 같은 use case에 강점
7. R2 Data Catalog — Iceberg가 오브젝트 스토리지 위에 올라왔다
2024년 말 Cloudflare는 R2 Data Catalog를 발표했고, 2025년 GA가 되었습니다. 이게 왜 중요한지 이해하려면 잠시 데이터 레이크하우스 트렌드를 짚어야 합니다.
Iceberg가 무엇이고 왜 모든 클라우드가 도입하나
Apache Iceberg는 Netflix가 만든 오픈 테이블 포맷입니다. Parquet/ORC 파일들을 "테이블"처럼 다룰 수 있게 메타데이터 레이어를 추가합니다.
- 스키마 진화 지원 (컬럼 추가/삭제/타입 변경)
- 트랜잭션 (ACID) 지원
- Time travel (특정 시점의 스냅샷 조회)
- 파티션 prune (쿼리 최적화)
2024-2025년 사이 AWS S3 Tables, Snowflake Open Catalog, Databricks Unity Catalog가 모두 Iceberg 지원을 발표했습니다. 오브젝트 스토리지 위에 트랜잭션 데이터베이스를 올린다는 발상이 업계 표준이 된 셈입니다.
R2 Data Catalog의 약속
- R2 버킷 위에 native Iceberg 테이블 생성/관리
- DuckDB, Spark, ClickHouse, PyIceberg 등에서 직접 접근
- 송신 무료 → 분석 쿼리할 때마다 발생하는 데이터 송신이 0원
- AWS Glue Data Catalog과 호환되는 REST 카탈로그 API
실제 코드 예시
# PyIceberg로 R2 Catalog의 테이블을 쿼리
from pyiceberg.catalog import load_catalog
catalog = load_catalog(
"r2",
**{
"type": "rest",
"uri": "https://catalog.cloudflarestorage.com/v1/<account-id>",
"warehouse": "my-warehouse",
"credential": "<r2-api-token>",
}
)
table = catalog.load_table("analytics.events")
df = table.scan(
row_filter="event_date >= '2026-05-01'",
selected_fields=["user_id", "event_name", "event_date"],
).to_pandas()
송신 무료라는 점이 분석 워크로드에서 결정적입니다. S3에서 분석 쿼리를 돌리면 데이터를 컴퓨트 쪽으로 옮길 때마다 송신 요금이 발생하지만, R2에서는 그게 0원입니다.
8. Google Cloud Storage / Azure Blob — 패리티 제품의 현실
GCP와 Azure도 오브젝트 스토리지를 제공합니다. 다만 송신 정책은 S3와 비슷합니다.
GCS (2026년 5월 기준)
저장 (Standard, us-central1):
$0.020 / GB-월
송신:
같은 리전 내: 무료
같은 대륙: $0.01 / GB
대륙 간: $0.05 ~ $0.15 / GB
GCS는 BigQuery와의 native 통합이 강점입니다. Iceberg/BigLake가 GCS 위에서 동작하고, GCP를 이미 쓰고 있다면 데이터 응집도가 높아집니다.
Azure Blob Storage (2026년 5월 기준)
저장 (Hot, East US):
$0.0184 / GB-월
송신:
같은 리전 내: 무료
대륙 간: $0.05 ~ $0.087 / GB
Azure는 엔터프라이즈 컴플라이언스(특히 Microsoft 365와의 통합)와 ADLS Gen2 같은 분석 변종에 강점이 있습니다.
GCP/Azure가 R2/B2를 못 따라잡는 이유
세 가지가 있습니다.
- 포트폴리오 보호: 송신 무료로 가면 BigQuery/Synapse 같은 다른 서비스의 가격 구조도 흔들림
- 컴퓨트와 묶인 가격: GCS 송신이 무료여도 Compute Engine 송신은 따로 청구됨
- 거버넌스 비용: 엔터프라이즈 인증/SLA가 R2/B2보다 비쌈
9. iDrive E2, Storj, Filebase — 디센트럴라이즈드의 변두리
iDrive E2
미국 iDrive의 S3 호환 스토리지. 2026년 현재 $0.004 / GB-월 정도의 매우 저렴한 가격에 송신도 기본 무료입니다. 다만 인증/SLA가 B2/Wasabi 대비 약합니다.
Storj
P2P 분산 스토리지. 사용자 노드(스토리지 노드)에 객체를 샤딩(Reed-Solomon erasure coding)하여 분산 저장. 2026년 기준 저장 $0.004 / GB-월, 송신 $0.007 / GB 수준.
- 장점: 검열 저항, 분산 redundancy
- 단점: latency가 일관되지 않음, 메타데이터 카탈로그 부담
Filebase
IPFS/Sia/Storj/Skynet을 백엔드로 쓰는 S3 호환 게이트웨이. 분산 스토리지의 진입 장벽을 낮추는 어댑터 역할.
이 세 가지는 "Web3 친화적" 정체성이 강해, 일반 SaaS 워크로드의 메인 스토리지로는 아직 권장하기 어렵습니다. 다만 백업의 백업 같은 cold redundancy에는 의미가 있습니다.
10. "1TB 저장 + 10TB/월 송신" 비용 매트릭스
직접 비교가 가능하도록 같은 워크로드로 모두 환산했습니다.
서비스 저장 송신 요청 합계 (월)
---------------------------------------------------------------------
AWS S3 (Standard) $23.00 $900.00 ~$5 ≈ $928
AWS S3 (Intelligent-Tiering) $23.00 $900.00 ~$5 ≈ $928
Cloudflare R2 $15.00 $0.00 ~$2 ≈ $17
Cloudflare R2 Infrequent $10.00 $100.00 ~$10 ≈ $120
(10GB 검색 요금)
Backblaze B2 (단독) $6.00 $90.00 ~$5 ≈ $101
(3TB 무료 후 7TB * $0.01)
Backblaze B2 + Cloudflare CDN $6.00 $0.00 ~$5 ≈ $11
Wasabi $6.99 Free* Free ≈ $7
(* fair-use 위반 가능)
Bunny Edge Storage + CDN $10.00 $50~100 Free ≈ $60-110
(지역 mix)
Tigris Data $20.00 $0.00 ~$2 ≈ $22
GCS (Standard) $20.00 $500~1500 ~$5 ≈ $525-1525
Azure Blob (Hot) $18.40 $500~870 ~$5 ≈ $525-895
iDrive E2 $4.00 $0.00 Free ≈ $4
Storj $4.00 $70.00 ~$2 ≈ $76
같은 워크로드에서 S3 $928과 B2+CDN $11은 84배 차이입니다. 이게 R2가 시장을 흔든 이유고, 4년이 지난 지금도 AWS가 송신 가격을 못 내리는 이유이기도 합니다.
11. "그래도 S3"인 경우들 — 솔직한 디시전 프레임워크
R2/B2가 항상 옳은 건 아닙니다. 다음 경우에는 S3가 합리적입니다.
S3가 옳은 경우
- AWS 내부에서만 데이터가 움직이는 경우: EC2 → S3 → Athena → Redshift는 송신 요금이 들지 않음. 외부로 안 나가면 S3의 저장 비용만 부담.
- S3 Select / S3 Object Lambda를 쓰는 경우: 객체 안의 일부만 읽거나, 읽는 동안 변환을 적용하는 native 기능. R2에는 없음.
- 매우 높은 IOPS가 필요한 경우: S3 Express One Zone (μs 단위 latency) 같은 변종은 R2의 일반 티어보다 빠름.
- 컴플라이언스 인증: FedRAMP High, IL5, ITAR 같은 정부/방산 요구사항은 AWS GovCloud의 S3만 만족.
- 데이터 라이프사이클 관리가 복잡한 경우: S3 Intelligent-Tiering이 자동으로 hot/warm/cold/archive 사이를 옮겨줌. R2는 단일 티어 + Infrequent Access 정도.
R2가 옳은 경우
- 사용자가 자주 다운받는 정적 자산: 이미지, 비디오, 게임 패치, 모델 weight 배포.
- 분석 쿼리가 자주 발생하는 데이터 레이크: Iceberg 테이블 위에서 DuckDB/ClickHouse가 반복 쿼리.
- CDN의 origin: Cloudflare CDN과 zero-hop으로 연결.
- Workers 기반 서버리스 앱: Workers binding으로 R2를 마치 로컬 디스크처럼 사용.
B2가 옳은 경우
- 백업/아카이브: Veeam, Restic, Synology, Arq 같은 backup 솔루션의 target.
- 저장 비용 자체를 최소화하고 싶은 경우:
$0.006/GB은 R2($0.015)의 40% 수준. - 자체 CDN과 결합: Cloudflare/Fastly/Bunny와 결합 시 송신 완전 무료.
Tigris가 옳은 경우
- 글로벌 멀티 리전 앱: Fly.io 위에서 여러 리전에 분산된 서비스.
- ML 모델 weight 글로벌 배포: 각 리전에서 latency 거의 0에 가깝게 같은 weight 로드.
Wasabi가 옳은 경우
- 송신이 저장량 이하인 백업/아카이브: 1TB 저장하고 월에 1TB 미만 송신하는 경우.
- 예측 가능한 정액 청구가 중요한 경우: 회계가 송신 변동을 싫어할 때.
12. 마이그레이션 함정들
S3에서 R2/B2로 옮길 때 빠지기 쉬운 함정들입니다.
함정 1: 마이그레이션 자체의 송신 비용
1TB를 S3에서 R2로 옮기려면 S3 → 인터넷 송신이 발생합니다. $90. 100TB면 $9,000.
→ Cloudflare의 Super Slurper는 R2가 S3에서 직접 pull하여 이그레스를 발생시키지만, AWS의 송신 요금은 그대로 청구됩니다. 다만 2024년 3월부터 AWS의 "다른 클라우드로 영구 이전" 무료 정책을 활용할 수 있는데, 영구 이전임을 입증해야 하고 사후 검증이 있습니다.
함정 2: S3 SDK 호환성의 미묘한 차이
R2/B2/Wasabi 모두 "S3 API 호환"을 표방하지만, 실제로는 일부 기능이 빠져 있습니다.
- R2: SSE-C (서버 측 암호화, 고객 제공 키) 미지원, S3 Select 미지원, Versioning은 2024년 추가
- B2: Multipart upload의 part size 최솟값이 다름 (S3 5MB → B2 5MB지만 일부 차이)
- Wasabi: 일부 LIST API의 페이지네이션 동작이 다름
→ 마이그레이션 전에 SDK 호환성을 실제로 테스트해야 합니다.
함정 3: pre-signed URL의 만료/서명 정책
S3 pre-signed URL은 IAM 정책 기반인데, R2는 API token 기반입니다. URL 생성 코드를 다시 짜야 할 수 있습니다.
함정 4: 데이터 라이프사이클의 부재
S3에는 "30일 후 IA로, 90일 후 Glacier로"라는 자동 라이프사이클이 있습니다. R2/B2에는 이게 약합니다.
→ Backup tooling 쪽에서 직접 cold 티어로 옮기는 로직을 짜야 합니다.
함정 5: 옵저버빌리티 격차
S3는 CloudTrail, S3 Server Access Logs, S3 Inventory 같은 풍부한 로그 도구가 있습니다. R2도 Logpush로 로그를 송신할 수 있지만, retention과 쿼리 측면에서 CloudTrail보다 약합니다.
13. Iceberg + S3-compatible 스토리지 — 2026년의 진짜 메가트렌드
이 글에서 가장 강조하고 싶은 트렌드입니다. 2026년 현재, "값싼 오브젝트 스토리지 + Iceberg 테이블 + 쿼리 엔진 분리"의 조합이 데이터 웨어하우스를 대체하고 있습니다.
전통적인 데이터 웨어하우스
Snowflake, BigQuery, Redshift는 컴퓨트와 스토리지가 한 벤더 안에 묶여 있고, 데이터를 그 안에 적재합니다. 이그레스가 사실상 불가능에 가깝습니다.
레이크하우스 아키텍처
원시 데이터 (CSV, JSON, Avro)
↓ 변환 (dbt, Spark)
Iceberg 테이블 (Parquet + 메타데이터)
↓ 저장
오브젝트 스토리지 (R2, S3, GCS)
↓ 카탈로그
Iceberg Catalog (REST, Glue, Unity, R2 Data Catalog)
↓ 쿼리
컴퓨트 엔진 (DuckDB, ClickHouse, Trino, Spark, Snowflake)
스토리지와 컴퓨트가 완전히 분리되어 있고, 같은 데이터에 대해 여러 엔진이 동시에 접근할 수 있습니다.
R2 Data Catalog가 게임 체인저인 이유
- 이그레스 무료 → 쿼리할 때마다의 데이터 송신 비용 0원
- DuckDB 같은 임베디드 엔진과 결합 시 인프라 비용이 거의 0에 수렴
- Iceberg 표준을 따르므로 vendor lock-in 없음
- 같은 카탈로그를 Spark, Trino, ClickHouse가 동시에 쿼리 가능
실제 사례
- Mother Duck (DuckDB 클라우드)이 R2 Data Catalog 위에서 SQL 분석 제공
- Estuary (CDC 파이프라인)이 R2 Iceberg를 sink로 지원
- Hex / Definite (분석 노트북)에서 R2 카탈로그 native connector
이 트렌드의 핵심은 **"분석 컴퓨트와 스토리지를 묶어 파는 사업 모델이 흔들리고 있다"**는 것입니다. Snowflake/Databricks는 이미 Iceberg 카탈로그(Polaris, Unity)로 응전했지만, 송신 무료 스토리지와의 결합에서는 R2가 우위입니다.
14. 안티 패턴: R2/B2가 잘못된 선택일 때
마지막으로, "송신 무료니까 다 옮기자"가 답이 아닌 경우들입니다.
안티 패턴 1: 매우 작은 객체를 매우 많이 저장
R2의 Class A 요청은 $4.50 / 1M입니다. 1KB짜리 파일 10억 개를 PUT하면 $4,500이 듭니다. 차라리 DynamoDB나 SQLite 한 파일에 모아 저장하는 게 쌉니다.
안티 패턴 2: hot read-modify-write 워크로드
오브젝트 스토리지는 객체 단위 atomicity만 보장합니다. 같은 객체를 초당 수십 번 업데이트하는 워크로드는 PostgreSQL/Redis/DynamoDB가 맞습니다.
안티 패턴 3: S3 Select가 필수인 분석
객체 안의 일부분만 읽어오는 S3 Select는 R2/B2에 없습니다. Iceberg 같은 컬럼형 포맷으로 전환하지 않은 raw JSON/CSV에서는 S3 Select가 비용 면에서 더 나을 수 있습니다.
안티 패턴 4: 컴플라이언스가 송신 비용보다 비싸지는 경우
금융/의료 일부 워크로드는 FedRAMP/IL5/ITAR/HIPAA 같은 인증을 요구합니다. R2도 SOC 2와 GDPR/CCPA를 갖췄지만, FedRAMP High나 IL5는 AWS GovCloud만 만족합니다.
안티 패턴 5: 단일 벤더 의존이 위험할 때
Cloudflare는 2024년과 2025년 사이 두 번의 큰 글로벌 장애를 겪었습니다. R2는 영향을 받지 않은 사례도 있었지만, "Cloudflare 네트워크 전체가 멈춘다면" R2도 멈춥니다. 멀티 클라우드 redundancy가 필요한 워크로드라면 R2 + B2 (또는 + S3) 듀얼 라이트를 고려해야 합니다.
에필로그: 결정 체크리스트
오브젝트 스토리지 선택 시 답해야 할 질문들입니다.
체크리스트
- 월 송신량은 저장량의 몇 배인가? (1배 이하면 Wasabi, 1-5배면 B2+CDN, 5배 이상이면 R2)
- AWS 다른 서비스(EC2, Lambda, Athena)와 묶여 있는가? (그렇다면 S3 유지)
- CDN을 따로 쓰고 있는가? (Cloudflare/Bunny면 B2와 결합 가능)
- Iceberg/데이터 레이크하우스로 가고 있는가? (그렇다면 R2 Data Catalog 적극 고려)
- 컴플라이언스가 FedRAMP High/IL5/ITAR 등을 요구하는가? (그렇다면 AWS GovCloud)
- 글로벌 멀티 리전 분산이 필수인가? (그렇다면 Tigris Data)
- 작은 객체를 매우 많이 저장하는가? (그렇다면 PUT 비용 비교 필수)
- 백업/아카이브 위주인가? (그렇다면 B2 또는 Wasabi)
- 멀티 벤더 redundancy가 필요한가? (그렇다면 R2 + B2 이중화)
송신 비용을 보는 새 관점
2022년 이전, 송신 요금은 "어쩔 수 없는 통행세"였습니다. 2026년 현재, 그것은 "선택"입니다. 매월 송신 청구서가 저장 비용의 10배가 넘는다면, 이건 기술 결정이 아니라 비즈니스 결정입니다.
R2가 2022년에 던진 질문은 단순했습니다. "당신의 데이터를 인질로 잡는 것이 정말로 클라우드 비즈니스의 본질입니까?" 4년이 지난 지금, 그 질문은 더 이상 가설이 아니라 시장 가격의 기본 전제가 되었습니다.
안티 패턴 요약
- 송신이 없는 워크로드에 R2를 강제하지 말 것 (S3 안에서 끝나면 S3가 답)
- 작은 객체 폭증을 R2/B2로 받지 말 것 (Class A 요금이 폭발함)
- Wasabi에 hot 송신 워크로드를 올리지 말 것 (fair-use 위반)
- 마이그레이션 비용을 무시하지 말 것 (1회성이지만 적지 않음)
- R2 단일 의존이 위험한 비즈니스라면 듀얼 라이트 패턴 채택
다음 글 예고
다음 글에서는 이 결정 프레임워크를 실제 코드로 옮기겠습니다. AWS S3에서 R2로 100TB를 마이그레이션하는 실전 시나리오 — rclone, AWS DataSync, Cloudflare Super Slurper, 직접 Lambda + Workers 파이프라인 — 각 방식의 비용과 시간을 측정한 결과를 다룹니다. 이어서 R2 Data Catalog 위에 DuckDB로 100GB 분석 쿼리를 돌리는 실전 워크북도 준비 중입니다.
참고 / References
- Cloudflare R2 announcement (May 2022)
- Cloudflare R2 pricing
- Cloudflare R2 Data Catalog
- AWS S3 pricing
- AWS free egress for migration (March 2024)
- Backblaze B2 pricing
- Wasabi pricing
- Bunny.net Edge Storage
- Tigris Data pricing
- Apache Iceberg specification
- Storj decentralized cloud storage
- Google Cloud Storage pricing
- Azure Blob Storage pricing
- iDrive E2 pricing
- Cloudflare Super Slurper (S3 to R2 migration tool)
현재 단락 (1/298)
2022년 9월 22일. Cloudflare는 R2 오브젝트 스토리지를 일반 출시(GA)했습니다. 그날 발표문의 핵심 문장은 단 한 줄이었습니다. "Zero egress fees....