Cloud & infrastructure

The Real Cost of Cloud Egress and Data Movement

A glass network representing connected computing resources
AI-generated illustration.
Inside this article
  1. How cloud providers bill data movement
  2. How routine cloud traffic adds up
  3. How network services add charges
  4. Unexpected cloud data transfer charges
  5. How to reduce cloud data transfer costs

When a cloud bill rises, internet egress – data sent from a cloud provider to users or external services – is an obvious suspect. But data also moves between availability zones, which are separate locations within a region, and between regions. It can also pass through a network address translation (NAT) gateway, which lets private resources reach external networks, or a content delivery network (CDN), which serves content from locations near users. Each path has different charges, and one workload can use several.

Costs depend on how much data moves and where it goes. Repeated cross-zone calls, replication, and extra routing services add up. Trace the traffic paths and reduce unnecessary distance and data volume while keeping the redundancy and performance the workload needs.

How cloud providers bill data movement

Cloud providers divide data movement into categories. Internet egress sends data outside a provider’s network. Inter-zone transfer crosses separate availability zones within one region. Inter-region transfer moves data between geographic regions. Cross-cloud and on-premises transfers send data to another provider or a private data center.

Network services can add separate charges. A request might incur a data-transfer charge and separate charges for a NAT gateway, a load balancer, a transit service, a private endpoint, or a content delivery network (CDN). Those services are not all billed as “egress,” even when they help route or deliver the same data.

The boundaries matter. “Inside the cloud” does not mean “free”: providers can charge for traffic between zones or regions. Nor does free inbound transfer make a full request free. The response, later retrieval, or replication may still incur charges. Google Cloud, for example, lists fees for traffic between virtual machines in different zones and for responses sent out to users. Provider rules vary by service and route, so a general internet-egress rate does not describe every transfer on a bill.

How routine cloud traffic adds up

High availability often spreads services across multiple zones so a failure in one zone does not stop the whole service. That design can send data between application servers, databases, caches, and other dependencies in different zones. Multi-region recovery adds another stream when databases or object stores copy data to another region, or when an application reads from a distant region.

Those transfers help keep services available and support recovery, so check whether each path meets an availability or recovery requirement. If a service in one zone repeatedly calls a dependency in another, the same workload may generate cross-zone traffic on every request. Keeping closely communicating services near one another can reduce that flow while preserving multi-zone coverage. Any locality change still needs testing to confirm that traffic shifts safely when a zone fails.

Network routing can create less obvious costs. A service deployed across several zones might send outbound traffic through a NAT gateway located in only one zone. Resources in other zones then cross a zone boundary to reach it. AWS guidance describes this trade-off: a NAT gateway in each zone can avoid some cross-zone transfer, but each gateway adds its own charges. Whether that layout saves money depends on traffic volume and the gateway costs.

Small exchanges also accumulate. A microservice architecture may send many requests between services, and each request may trigger further calls. Retries and polling add more traffic; large responses increase the bytes per exchange. A request that looks small in isolation can become a significant recurring cost at production scale. Measure total bytes and request patterns, rather than estimating transfer from the size of a single response.

Data pipelines can move the same information through several stages. A job may read a dataset from object storage, pass it to a processing service, and write results elsewhere. Analytics queries, backups, logs, and replication can add further reads. A dataset’s stored size alone does not show its transfer cost: reading a terabyte once is different from repeatedly scanning and exporting that terabyte.

A technician examining a server rack
AI-generated illustration.

How network services add charges

A single workload can cross several billing meters. Traffic might leave a private subnet through a NAT gateway, pass through a load balancer, and then reach a CDN or an internet destination. The bill can include data transfer alongside per-hour, per-request, or data-processing fees for those services. Private endpoints and transit services also have their own pricing and constraints.

CDNs change where content is delivered from. When a CDN serves a cached copy near a user, it can reduce repeated requests to the origin server and improve response times. But CDN delivery, cache fills (copies the CDN retrieves from the origin to store), and requests to check for a cached copy can each have separate charges. Dynamic or uncached content may still travel from the origin, and low cache-hit rates weaken the savings. Compare the full route and usage pattern before treating a CDN as a cost reduction.

A price table also needs context. Published rates depend on region, destination, service, volume tier, billing unit, and account terms. GB and GiB are different units, so comparing prices without matching units and conditions can mislead. Free allowances cover specified traffic, not every network service or internal transfer.

Published example Price or rule What it applies to
AWS internet data transfer out First 100 GB per month free; then $0.09 per GB for the first 10 TB per month An AWS EC2 pricing example. The allowance is subject to eligibility and exclusions, and other service rules can apply.
AWS same-region, cross-zone transfer $0.01 per GB in each direction for listed services Applies to specified services and paths; same-zone private transfer can have different treatment.
Google Cloud VM traffic across zones $0.01 per GiB Applies to virtual machines in different zones of the same region under the pricing page’s stated conditions.
Google Cloud internet transfer out $0.12 per GiB for a listed North America destination tier The rate changes with destination, volume tier, and networking option.

These are examples of published list prices, not a provider comparison or a forecast of a particular bill. Effective prices can differ under contracts and discounts, and transfer charges can vary by product. Check the current price for the exact service and route before budgeting.

Unexpected cloud data transfer charges

A transfer charge on the bill does not necessarily mean data reached the public internet. Cross-zone replication or a call between services in different zones can generate charges while staying within one region. Billing records and network telemetry help distinguish that traffic from internet egress.

One logical exchange can appear in several places on a bill. A service may charge for bytes transferred while a network appliance charges for processing or operation. Some providers also show separate inbound and outbound line items for a regional transfer even when only one side is charged under the applicable rule. Identify the service, usage type, and route before adding line items together or assuming they represent separate data volumes.

Cross-cloud moves require the same care. A large migration has a transfer cost, but running both environments during a transition can add ongoing synchronization and application traffic. The UK Competition and Markets Authority’s cloud-market investigation examined modeled switching costs and noted that a temporary integrated multi-cloud period can raise costs beyond a one-time data copy. Its analysis concerns specific scenarios, not a universal estimate for every migration.

The impact of egress also varies with architecture. In the same investigation, Google submitted a hypothetical digital-bank comparison in which its modeled single-cloud design transferred more data than a multi-cloud design because of replication assumptions. That example shows why a provider count alone does not predict cost. A carefully designed multi-cloud workload can move less data than a heavily replicated single-cloud workload, while another architecture can incur substantial cross-cloud charges.

Faster transfer paths need cost checks, too. Research presented at the USENIX NSDI conference on the Skyplane system found that application-layer overlays could improve inter-region bulk-transfer throughput, while warning that naïve use of overlays could produce unacceptable egress costs. A route that improves speed should be evaluated for both performance and price.

How to reduce cloud data transfer costs

Start with billing exports and network telemetry. Break transfer charges down by service and location, including region and zone, then group them by usage type and workload. Network flow logs can help reveal which source and destination exchange the bytes. Connect those records to a specific activity. Examples include user delivery and replication, as well as batch export, retries, and log shipping. Then calculate cost per useful unit, such as a request, job, or customer transaction, so a growing workload does not hide behind a stable monthly total.

Next, keep compute close to the data it reads most. If a service repeatedly retrieves data from a distant region, moving the compute, the data, or the read pattern can cut transfer and latency. For frequently accessed data, caching or local replicas may help. Include legal rules, requirements about where data is stored, and recovery and availability needs in the decision. Removing a copy of the data can reduce charges while weakening recovery.

Reduce the bytes sent before changing the network. Filter records at the source, select only the fields a query needs, compress suitable payloads, and send incremental updates rather than full copies when the workload supports them. Query pushdown, which runs filtering or aggregation where data is stored, can avoid shipping rows that the consumer will discard. These choices trade network use against compute and storage work, so validate them against real workloads.

For high-volume traffic, map the route through zones and network services. If a shared NAT gateway creates cross-zone traffic, compare zone-local gateways, private endpoints, or another routing design. Compare gateway, endpoint, and processing charges. Test what happens when a zone fails. Availability-zone affinity, which directs a service toward dependencies in the same zone where practical, can reduce routine cross-zone traffic while retaining multi-zone capacity. It must not prevent healthy traffic from reaching surviving zones during an outage.

For large, steady transfers, compare internet routes with dedicated private connections or provider interconnects, which link your network directly to a cloud provider. Include fixed fees and capacity in the comparison. Also weigh latency and redundancy, along with provisioning time and operational overhead. A private connection can provide a useful path for sustained data movement, but it is not automatically cheaper for every volume or route.

About this article

Created with AI assistance using published sources. Illustrations are AI-generated. Redbag does not claim hands-on testing or exclusive reporting. Check the linked sources for changing product details.

Our approach ↗

Keep connecting the dots.