CloudMulti-Cloud

The multi-cloud tax, and how to stop paying it

A second cloud can cut your bill or quietly double it. Here's how data-transfer fees, workload placement and day-to-day cost habits decide which one you get.

Cohash Cloud Practice July 2026 updated October 2026 13 min read 9 chapters 3-question check
part 2 of 8 · Cloud calls you'll have to make
The data layer 01 Workloads that read it layer 02 One primary cloud layer 03 Short-list exceptions layer 04 Egress on crossings

the ideaRun each job next to its data. Price every crossing between clouds.

after reading, you can
  • Before you sign for a second cloud, list every data path that would cross over and price each one at twelve months of production volume.
  • Explain data gravity, then write down where each workload lives, why, and what leaving would cost.
  • Spot when a baseline gets split across two clouds, and why that quietly weakens your discounts on both.

The multi-cloud pitch is always about bargaining power. Resilience and best-of-breed services come up too. What never comes up is the question that decides whether you get any of it. For each workload, what does it cost to run here, and what does it cost to leave? Answer that per workload, in numbers, and the second cloud is a tool. Skip it and it's a tax.

in plain wordsPractice guide

Running on two clouds costs extra every time data crosses between them

Multi-cloud means running your systems on more than one cloud provider, say AWS for most things and Google Cloud or Azure for a few. Each provider lets you bring data in for free and charges you by the gigabyte when it leaves. So when an app on one cloud keeps reading data stored on the other, you pay a small fee on every trip, and those trips happen thousands of times a day. Nobody sends you a separate invoice for it. It just shows up as a bigger cloud bill each month, and it grows as the business grows. The fix is mostly planning: decide where each system lives, keep it close to its data, and know what it would cost to move it.

think of it like this

Picture two storage units from rival companies. Moving boxes in is free, but each company charges per box that leaves. Keep your tools in one unit and your materials in the other, and you pay every time you carry something across. Keep each job in the unit that already holds its boxes, and you only pay the day you actually move out.

who should care
  • Owners weighing a second cloud provider
  • Finance teams watching the cloud bill
  • CIOs and IT leaders setting cloud strategy
  • Platform and cloud engineering teams
  • Companies merging two cloud estates
chapter 01

Why it matters to you

We call it a tax because it acts like one. It's charged every time data moves, and it grows quietly until nobody remembers agreeing to it. Usually the second cloud got approved for a good reason, like a service the main provider doesn't have. Then the bill comes in higher than anyone planned, and nobody can say which line grew.

$0.08–0.12Rough list price per GB of data leaving a cloud to the internet
100 GBFree data transfer out to the internet per month from AWS Regions
12 monthsProduction volume to price every cross-cloud data path against

The free allowance sounds generous until you put it next to a data warehouse that replicates nightly. A busy system can pass that in a day. After that every gigabyte is billed, and the meter keeps running for as long as the system runs.

how it worksHow to decide where each workload livesRun this before you sign for a second cloud, and again each quarter for anything that already crosses over.
  1. 01 List the data paths

    Write down every flow that would cross between clouds. Replication, image pulls, backups and monitoring agents all count, since each one moves data out.

  2. 02 Price them at real volume

    Put a cost on each crossing at twelve months of production volume. You may find a few paths that nobody priced when the diagram was drawn.

  3. 03 Place compute next to data

    Run each workload on the cloud that already holds the data it reads. Compute moves easily and big datasets don't, so this usually removes the crossing.

  4. 04 Write down home, reason and exit cost

    Each workload gets a stated home and a reason for it. It also gets the cost of leaving, meaning the engineering effort plus the bill to move its data out.

  5. 05 Put cost in front of the team

    Tag resources, send each team its own costs and alert on spikes within a day. Then the team that caused a jump hears about it while it can still act.

  6. 06 Plan discounts per cloud

    Forecast the steady baseline on each provider and buy discounts against it. Review coverage monthly so a split baseline doesn't leave both clouds on full price.

chapter 02

Egress is the tax collector, so map it before you sign anything

EgressdefinitionData leaving a cloud provider's network. Getting data in is free. Getting it out is billed by the gigabyte. pricing is how cloud lock-in gets enforced. Data comes in free and goes out at roughly $0.08–0.12 per GB at list price, and inter-region or cross-cloud transit charges stack on top of that. Split a chatty system across two providers and you pay that toll on each request, each replication cycle and each backup, for as long as it runs. We keep seeing the same cause. Someone drew the architecture diagram by service preference, and nobody priced it.

Before adopting a second cloud, trace the data paths that would cross the boundary and price them at twelve months of production volume. Cross-cloud replication for a warehouse, image pulls from a registry on the other side, observability agents shipping telemetry home: each is a recurring line item that scales with success. Some crossings are worth it. Most were never examined.

chapter 03

Place each workload next to its data

The cheapest place to run a workload is almost always next to the data it reads. That's data gravitydefinitionThe pull a big dataset has on the apps that use it. In practice it's usually far cheaper to bring the compute to the data than the other way around., and it should drive placement, because compute moves easily and petabytes don't. A sound multi-cloud setup is lopsided on purpose. One primary cloud holds the center of gravity. A short, deliberate list of workloads earns a place elsewhere, say a managed service with no real equivalent, a sovereignty requirement, or a resilience tier with a real failover runbook.

Write the placement rule down as policy so it doesn't depend on someone's memory. Each workload gets a home and a reason for being there. It also gets an exit costdefinitionWhat it would actually take to move a workload off its current cloud: the engineering effort plus the egress bill for getting its data out., which is the engineering effort plus the egress bill to move its data out. Workloads that are cheap to leave are where the real negotiating power sits. The expensive ones are commitments and should be priced that way. When someone says "we could move it if we had to," that's a claim. The exit-cost line is the evidence, and you'll want it at the next renewal.

The cheapest cloud for a workload is usually the one already holding its data.
placement-policy (example output)example output
# every workload declares its home and its exit
workload: order-analytics
home: primary-cloud / eu-west // co-located with lakehouse
cross-cloud paths: 2 detected → 0 after co-location
exit-cost: priced · reviewed quarterly
✓ justified · ✓ egress mapped · ✓ owner named
chapter 04

FinOps belongs in the engineering loop

A cost report nobody can act on is observability theater. FinOpsdefinitionTreating cloud spend as an engineering problem. Resources get tagged, costs land with the team that owns them, and someone acts on them while the numbers are still fresh. works when cost sits in the engineering loop the way latency does. Tag it at the resource, allocate it to the team that owns it, and express it as unit economicsdefinitionSpend divided by a unit of work, per tenant, per pipeline run or per thousand requests, so a team can see what drives it. such as cost per tenant, per pipeline run or per thousand requests. Alert on anomalies within a day instead of finding them at month-end. Multi-cloud makes this harder because each provider bills in its own schema. Without a normalization layer you can't even compare the numbers, let alone act on them.

Commitment management is where the discipline saves real money or wastes it. Reserved instances, savings plans or committed-use discountsdefinitionYou promise the provider a steady amount of usage for a set term, and it cuts the price. Reserved instances and savings plans work much the same way. Move the work elsewhere and you still pay for what you promised., they all assume a stable baseline on one provider. Split that baseline across two clouds without re-modeling coverage and you'll be under-committed on both while running more on-demand than either. Treat coverage like capacity planning. Forecast it per cloud and review it monthly. Use the placement policy to set where the baseline sits, instead of the sales cycle. Do that and the second cloud remains what it was meant to be, a source of negotiating power.

chapter 05

What changed: leaving got cheaper, staying split didn't

Exit fees have come down, partly under pressure from European rules. That helps the exit-cost line in your placement policy. It does much less for a system that runs on two clouds every day, because those crossings still get billed.

Rules and offers that change the exit cost

  1. Mar 5, 2024
    AWS waives data transfer out for customers leaving

    If you're moving everything off AWS, or off one service, ask AWS Support to waive the transfer-out fees. Under the current terms, customers outside the EU get 180 days to finish, so plan the move before you ask.

  2. Sep 12, 2025
    EU Data Act limits egress fees for parallel use

    Run two clouds side by side and a provider can't charge more for egress than the transfer costs it. For EU customers, replication jobs may get cheaper. They still don't go free.

  3. Jan 12, 2027
    EU Data Act ends all switching charges
side by sideThe same second cloud, run as a tax or as a tool. Most of the difference is habit.
Paying the tax
  • Workloads land wherever a team liked the services
  • Chatty systems get split across providers, so every request pays egress
  • Nobody knows what it would cost to leave, so "we could move it" is a guess
  • The cost report arrives at month-end, after the money is spent
  • Finance bought savings plans for one cloud. A year later half the baseline runs on the other one at full price
Using the tool
  • One primary cloud holds the data. The few exceptions each have a written reason
  • Each workload runs next to the data it reads
  • Every exit cost priced, re-checked quarterly
  • Teams see their own unit costs and hear about spikes within a day
  • Commitments get forecast per cloud every month. Discounts follow what actually runs

Read the exit offers carefully. AWS's waiver covers moving off AWS. Ongoing transfers fall under the normal allowance. So a nightly replication job between two clouds keeps paying. The EU parallel-use rule caps those fees at cost. It doesn't make them free.

chapter 06

What to do now

What to do now, by who you are

Business ownerbefore you sign
  • Ask for the cross-cloud data paths and their twelve-month cost before you approve a second provider. If nobody has it, the decision isn't ready.
  • Ask what each important system would cost to move. A number on paper is what gives you leverage in the next renewal.
  • Agree which cloud is the primary one. Everything else should need a written reason.
Financethis quarter
  • Pull data transfer out as its own line on each provider's bill. Then you can see whether it's growing faster than the business.
  • Check discount coverage on each cloud separately. Low coverage on both usually means the baseline got split.
  • Ask for unit costs per customer or per transaction, so a rising bill can be traced to what drives it.
Platform and cloud engineeringthis month
  • Map every flow that crosses between clouds, including image pulls, backups and monitoring agents.
  • Move the worst offenders next to their data. Usually that means moving the compute, since the data is too big to move.
  • Write the placement policy and give each workload a named owner. For every one, note its home, why it's there and what leaving would cost.
Engineering teamsevery sprint
  • Tag new resources when you create them. Untagged spend can't be sent to anyone, so nobody fixes it.
  • Watch your own unit cost the way you watch latency. When it jumps after a release, look at that release first.
chapter 07

Harden so the next one hurts less

Habits that keep the tax off your bill

  1. 01
    Make the placement policy part of the review

    New workloads don't get built until they have a home, a reason and an exit cost. Put it in the architecture review checklist so nobody has to remember.

  2. 02
    Block untagged resources

    Have the deployment pipeline refuse resources without an owner and cost tags. It's annoying for a week. After that, every dollar on the bill has a team behind it.

  3. 03
    Normalize the bills from each provider

    Each cloud bills in its own format. Load them into one schema so you can compare a workload on one provider with the same workload on the other.

  4. 04
    Alert on anomalies within a day

    Set daily anomaly alerts on spend per team and on data transfer out. A runaway replication job caught on day one costs a day. Caught at month-end it costs a month.

  5. 05
    Review commitments monthly, per cloud

    Forecast the steady baseline on each provider and compare it with what you've committed to. Buy or let commitments lapse based on the placement policy, not on where the sales cycle happens to be.

  6. 06
    Re-price exit costs every quarter

    Data grows, so the cost of leaving grows too. Re-run the numbers quarterly, and plan around the EU rule change if your company buys cloud services in the EU.

  7. 07
    Test the failover you're paying for

    If a workload sits on a second cloud for resilience, run the failover runbook on a schedule. A resilience tier that has never failed over is just a second bill.

chapter 08

If the costs or outages pile up

If the costs or outages pile up

Maybe the bill jumped and nobody can explain it, or an audit found spend with no owner, or a failover didn't work when you needed it. Work through these in order. Cutting things before you know what they do usually causes an outage of its own.

  1. 01Stop the bleedingfirst week
    • Find the biggest data transfer out lines on each provider's bill. Then track down the system behind each one, because nobody fixes a line they can't name.
    • Pause or slow anything that isn't needed daily, like a test copy replicating every hour. Ask the owner first, then change it in a planned window.
  2. 02Find the crossingsfirst month
    • Map every flow between clouds and price it at current volume. Sort by cost, because often a handful of flows drive most of it.
    • Check discount coverage per cloud and mark where the baseline moved without the commitments following it.
  3. 03Re-place and repairthis quarter
    • Move the costliest workloads next to their data, one at a time, with a rollback plan for each.
    • Fix the failover runbook if it failed. Then run it again in a test, so you know it works before the next outage.
  4. 04Re-model commitmentsnext renewal
    • Size commitments to the new baseline on each cloud. Don't renew on last year's numbers.
    • If you're leaving a provider, ask about its exit waiver before you start moving data.
  5. 05Report and learnafter the fix
    • Show finance and leadership what changed and what it saves per month. They fund the next fix faster once they've seen the numbers.
    • Add the gap you found to the architecture review, so the next workload can't repeat it.
chapter 09

How this tends to play out

How this tends to play out

01 Analytics jobs cloud B 02 Cross-cloud query billed per GB 03 Warehouse cloud A
scenario 01High risk
A software company with analytics on the wrong cloud
the setup
A software company keeps its data warehouse on cloud A. The analytics team liked cloud B's tools, so their jobs run there and query the warehouse across the boundary.
what happens
Every query and every refresh pulls data out of cloud A. The transfer line grows each month with the customer base, and nobody connects it to the analytics jobs until finance asks.
what to do
Move the analytics jobs to cloud A, next to the warehouse. If cloud B's tools really matter, price that crossing at twelve months of volume and decide with the number in front of you.
01 Steadyworkloads 02 Split acrosstwo 03 Low coverage on both clouds 04 On-demandbill
scenario 02Medium risk
A group that merged two cloud estates
the setup
After an acquisition, a manufacturer runs on two providers. Each side kept its own savings plans, and workloads have been moving between them for a year.
what happens
The steady baseline is now split. Coverage is low on both clouds, more runs at full on-demand price, and the commitments bought before the merger don't match what either side runs today.
what to do
Pick the primary cloud and write the placement policy. Forecast the baseline on each side, then size the next commitments to it and let the rest lapse.
01 Residencyworkload second cloud 02 Its own data same cloud 03 Placementpolicy exit cost priced 04 Cross-cloudegress
scenario 03Low risk
A regional bank with one deliberate exception
the setup
A regional bank runs almost everything on one primary cloud. One workload sits on a second provider because of a data residency requirement, and it's written down with a reason and an exit cost.
what happens
The workload reads its own data on the second cloud and only sends small summaries back. Almost nothing crosses over, so the egress bill stays tiny.
what to do
Keep the exception on the list and re-price its exit cost each quarter. If a new feature starts pulling data across, it goes back through the architecture review first.

Our cloud strategy work starts with that placement map. We list each workload, the data it reads and the paths that cross between clouds, and we price the exit before anything moves. Our cloud strategy page explains how an engagement runs, or you can start with an assessment.

key takeaways

What to take from this

  1. 01

    Price every cross-cloud data path at twelve months of production volume before you commit to it.

  2. 02

    Let data gravity set placement: one center of gravity, plus a short list of workloads that earn an exception, each with a written exit cost.

  3. 03

    Put cost in the engineering loop. Each team sees its own unit economics and hears about anomalies within a day, and commitment coverage gets modeled per cloud.

  4. 04

    Exit waivers and the EU Data Act make leaving cheaper. They don't make running split across two clouds free.

fact-checked October 2026 against vendor and official documentation · where to go next
  1. Cloud strategy
  2. Book a 30-minute working session with a senior engineer
01Is multi-cloud a bad idea?

No. It gets expensive when it happens by accident. A second cloud makes sense for a service the main provider doesn't offer, a data residency rule or a failover someone actually tests. Write each exception down with its reason and exit cost, and you'll know what it costs before the bill tells you.

02How do I know if we're already paying the tax?

Look at the data transfer out lines on each provider's bill. If they're growing faster than the business, or nobody can name the system behind the biggest one, something is crossing between clouds that nobody priced. Your cloud team can often find the top few flows in a week.

03Don't the free exit offers solve this?

Only for the day you leave. AWS waives data transfer out when you move all your data off AWS or off one service, and you ask AWS Support for it. Day-to-day transfers between two clouds still get billed. In the EU, the Data Act caps parallel-use egress fees at cost, which helps but doesn't make them free.

04We buy cloud services in the EU. Does the Data Act change what we pay to leave?

Yes. From January 12, 2027, a provider can't charge you for switching to someone else. Until then it can only pass on costs tied directly to the switch, wherever the provider is based, as long as it sells to customers in the EU. Ask your account team what they'd charge you today, then re-price the exit cost of those workloads before you renew.

next step

Tell us what you're running. We'll tell you what we'd do first.

A 30-minute working session with a senior engineer. No slides.

useful to bring
  • The platform and the version you're on
  • Where you need to get to, and by when
  • What's custom: rules, plugins, integrations
  • Any audit finding or deadline driving it