Eltherion
SaaS & Platform Engineering7 min read

Cloud egress costs: architecture patterns and tradeoffs

Cloud egress is billed per GB and grows with usage, so it hits products that serve media, files or exports first. This article covers when to accept egress, when to push data to the edge, and when to redesign data flow to cut bills and latency.

By , founder of Eltherion · Editorial standards · Updated

turned on monitoring screen

Cloud egress costs are the controllable line item that quietly erodes gross margin as your product scales. Data leaving a public cloud to the internet is billed per GB: on AWS, after 100 GB a month free across services, internet egress from US East (N. Virginia) starts at $0.09/GB for the first 10 TB, with lower rates at higher tiers (AWS EC2 pricing). Teams that treat it as an operational afterthought also pay in latency and lose control of multi-region traffic. The decision is architectural, not purely financial.

Direct answer: measure origin egress first, then fix it in this order: cache cacheable responses at a CDN edge, shrink what you send (compression, deltas, aggregation), keep heavy consumers in the same region and cloud as the data, and only then consider replication or private interconnects. Edge caching and data reduction need the least engineering and usually come first; replication and peering pay off only for large, steady flows. Price each step with your own billing data before you build anything.

Stakes: egress grows with usage, so it grows fastest for products that serve media, files or analytics exports. At the AWS first-tier rate of $0.09/GB, 10 TB a month of internet egress from one region costs roughly $900 a month (10,000 GB × $0.09) before any CDN or request charges, and serving the same users across regions adds inter-region transfer on top. Latency matters too: an API call that crosses regions pays the round trip every time, which makes caching behaviour harder to reason about.

Operational risk: surprises and opaque billing. Data warehouses and managed databases can bill for cross-region or cross-cloud reads, and a misconfigured pipeline that copies full datasets to a BI tool every night shows up only when the invoice arrives. You need patterns that make costs visible and predictable.

Cloud egress costs: four architectural patterns

Pattern 1, CDN-first edge caching. Put Cloudflare, Fastly or CloudFront in front of the origin and serve static and cacheable responses from the edge. Every cache hit is a request your origin does not pay egress for; on AWS, transfer from AWS origins to CloudFront is waived (CloudFront pricing), so the bill moves to the CDN's own delivery pricing. Compare your CDN's published per-GB or flat-rate pricing with your origin egress rate and your expected cache hit ratio before you decide.

Pattern 2, regional replication and local read replicas. For low-latency reads on heavy datasets, replicate to a read replica in the region where the reads happen (RDS read replicas, Neon, PlanetScale and similar). You pay replication transfer and extra storage once per change instead of cross-region transfer on every read, so it wins when the same data is read many times. On AWS, inter-region transfer from US East is typically $0.02/GB (AWS EC2 pricing).

Pattern 3, cut the data. Send deltas instead of full files, compress payloads, and aggregate on the server before export. Telemetry and analytics exports often carry far more than the consumer uses; switching from full snapshots to incremental changes, or from verbose JSON to a compact binary format, can shrink the transfer by an order of magnitude and cut downstream processing too. Measure the before and after payload size on your own data.

Pattern 4, locality and peering. Host heavy consumers in the same cloud and region as the data they read: warehouse compute next to its storage, analytics consumers in the same cloud as the warehouse. Cross-cloud egress is billed at internet rates, and even inside AWS, traffic between Availability Zones in the same region is billed at $0.01/GB in each direction (AWS EC2 pricing). Private interconnects (AWS Direct Connect, Google Cloud Interconnect) lower per-GB rates for steady high-volume flows but add port fees and provisioning time.

Tradeoff example: a product serving user-uploaded images from S3 in us-east-1. Without a CDN, every image view is billed as internet egress from S3. With a CDN in front, only cache misses reach the origin, so origin egress falls in proportion to the hit ratio, and the remaining cost is the CDN's delivery and request pricing. Whether that is cheaper overall depends on the CDN contract; the latency gain for users far from us-east-1 holds either way.

Treat egress as architecture: the right pattern reduces bills and p99 latency together; the wrong pattern buys you neither predictability nor scale.

What this means for a CTO or technical founder

Instrument egress as a first-class metric. Tag buckets, services and regions so your billing export shows egress by source, and track origin egress separately from CDN delivery. A simple rule: if egress is a visible and growing share of your cloud bill, try edge caching and payload reduction before you hire for bandwidth optimization.

Make the trade-offs explicit: performance, cost and operational complexity. If you need low latency for users on several continents, regional replicas plus a CDN is the pattern that cuts both egress and latency. If the problem is occasional large exports (backups, analytics dumps), compress them, send deltas, or move the consumer next to the data; that usually needs no new infrastructure.

Don't build everything in-house. Custom edge proxies and replication systems make sense only when your egress bill is large enough to pay for the engineers who run them. Use a payback test: the U.S. Bureau of Labor Statistics puts the May 2025 median wage for software developers at $135,980 a year before benefits (BLS); compare that cost with the monthly egress you expect to remove. Below that line, use a CDN, regional managed databases and provider peering.

Key takeaways

1. Instrument and tag egress so you know which buckets, regions and services drive spend.
2. Try CDN-first caching and payload reduction before regional replication.
3. Invest in replication, peering or a custom proxy only when the savings you can measure exceed the engineering cost to build and run it.
4. For scheduled heavy exports, compress, send deltas, or move the consumer next to the data.
5. Make egress a product metric owned by the platform team, not a surprise on the finance report.

Closing: Cloud egress costs are not a nuisance tax—they’re an architectural lever. When you treat egress as a signal, the work you do to reduce it simultaneously tightens latency budgets and reduces operational surprises. Flip the decision: design for locality and smart caching first, and treat replication, peering, or custom proxies as targeted instruments to squeeze predictable savings out of scale.