R2 Direct Access vs CDN – Costs & Limits

Hello, I’m building an app that contains many videos. Users can open the app, click on a video, and watch it. I expect this to scale from a small number of users to potentially very large numbers. Here’s my expected usage: Average video size: ~100 MB Daily video views per user: ~10 Scale scenarios: 1,000 users × 10 videos/day 10,000 users × 10 videos/day 100,000 users × 10 videos/day 1,000,000 users × 10 videos/day Up to ~50% of users could be active at the same time My questions are: Can I let users access videos directly from R2 (without any CDN in between)? If yes, what happens at very high traffic? Could it lag, throttle, or even get my account limited/terminated? How is billing calculated in each scale scenario? If I only use R2 directly If I put Cloudflare CDN in front of R2 (how does caching vs. R2 egress billing work?) Are there any bandwidth or concurrency limitations at large scale (hundreds of thousands of users at once)? If traffic spikes suddenly, could R2 or CDN traffic be throttled or blocked? I’d like to understand the cost and reliability trade-offs of using R2 directly vs using CDN + R2 for this type of app. Thanks!
9 Replies
SuperHelpflare
Please do not post your question in multiple channels/post it multiple times per the rules at #😃welcome-and-rules. It creates confusion for people trying to help you and doesn't get your issue or question solved any faster.
mobix
mobixOP6d ago
Okay I'll be careful. but do you have an answer to my issue?
SuperHelpflare
Feedback
Feedback has been submitted! Thank you :)
mobix
mobixOP6d ago
can you please provide me a highlight pricing model with my scenarios with and without CDN.
SuperHelpflare
Support AI
I'm unable to provide an answer to that at the moment. Please rephrase your query and I'll try again. However, I can provide you with some general information on Cloudflare Stream pricing, which might be relevant to your scenario. According to the documentation, Cloudflare Stream bills on two dimensions: * Minutes of video delivered: $1 per 1,000 minutes delivered * Minutes of video stored: $5 per 1,000 minutes stored (prepaid) If you use Cloudflare Stream with CDN, the pricing would be based on the minutes of video delivered and stored. If you use R2 directly without CDN, you would only be charged for the minutes of video stored. Please note that this is a simplified explanation, and the actual pricing might vary depending on your specific use case and requirements. Source: https://developers.cloudflare.com/stream/pricing/
This is an AI generated response, it may not be 100% accurate. Please validate the output. You can ask followups by replying to this message or mentioning me.
mobix
mobixOP6d ago
No R2 with CDN. Average video size: ~100 MB Daily video views per user: ~10 Scale scenarios: 1,000 users × 10 videos/day 10,000 users × 10 videos/day 100,000 users × 10 videos/day 1,000,000 users × 10 videos/day Up to ~50% of users could be active at the same time
SuperHelpflare
Feedback
Feedback has been submitted! Thank you :)
mobix
mobixOP6d ago
I Know but i needed the answer before i start using their service. Do you know the cost for my scenarios with and without CDN? Yes i appologized for that, and I'm only looking for the answer only here. i meant to say "I apologize for that" me adding the "-d" made it sound like i already did that. again i apologize. But the answer given to me there was not clear. so what if i reduced the files size to 30GB and my users to 100K. and i only used CF-R2 read directly, can that be enough? can that handle with No lag/throttle or even get my storage terminated? coz based on the GET/Read pricing for R2 i can cover that. but if i used CDN the cost will be much more expensive.
YoYo
YoYo6d ago
Don't use any serverless offering for a video serving app, your costs are going to skyrocket before you even know what to do with the bill that they will give you. Get a bare metal server with unlimited bandwidth as an add-on or start without any unlimited bandwidth add-on, see if you really need, a 1Gbps port would suffice, usually they provide generous 5-10TB/mo. Start with a 4cpu/8threads bare metal server. Don't serve the videos raw. Transcode the video first to multiple resolutions, use ffmpeg, use chatgpt to get you what you want. After that serve these video files using nginx. in your app, have toggles for different video quality, and switch to different video streams. Ask Chatgpt how to do all this, if you don't know.

Did you find this page helpful?