Hidden Egress Costs in Cloud OLAP Deployments
Egress fees, not storage, are where cloud OLAP budgets spiral out of control.

Cloud OLAP budgets rarely blow up because of storage. They blow up because of egress: the fees attached to moving data out of a region, across a boundary, or off the platform entirely. Storage is the line item engineers forecast well because it's predictable and linear. Egress is the line item that isn't, because it's tied to query behavior, architecture choices, and traffic patterns that nobody maps out in advance.
The numbers back this up. Flexera's 2025 State of the Cloud Report found that 84% of organizations name cloud spend management as their top challenge, with budgets overshooting by 17% on average. Flexera's follow-up found wasted cloud spend climbed back to 29%, reversing five straight years of improvement in a single cycle, a shift the report ties to AI complexity and the adoption of new IaaS and PaaS services. Separately, a Backblaze survey found close to 95% of IT leaders had run into surprise cloud charges that threw off a budget or delayed a project.
Why does the gap persist year after year? Cloud billing splits storage, compute, data transfer, API calls, and retrieval into separate line items, each priced on its own, each accumulating independently of the others. Storage is the number teams size correctly because it's the number they actually plan for. Data access is what wrecks the estimate. Gartner puts egress fees at 10 to 20% of total cloud spend for data-intensive workloads, and that share grows as the data does. Teams pricing out OLAP capacity think in compute hours and terabytes stored. They aren't pricing the transfer charges baked into nearly every architectural choice they've already made.
What egress is and what the major providers charge for it
Egress is three separate charges, and each behaves differently. It's three, and each behaves differently.
Internet egress covers data leaving a cloud region for the public internet, the most visible category and the one most engineers actually budget for. Cross-region transfer covers data moving between two regions inside the same provider: a lower per-GB rate, but analytics workloads tend to generate a lot of it. Cross-AZ transfer, data moving between availability zones within one region, is the quietest of the three and the one that gets left out of cost models most often.
Here's roughly where the major providers sit as of 2026:
AWS charges $0.05 to $0.09 per GB for standard internet egress depending on volume, with 100 GB free each month. Azure runs about $0.087 per GB, with a 5 GB free tier, though inter-region rates dropped 30 to 50% for European customers in 2024 and 2025. GCP tiers its pricing: $0.12/GB for the first TB, $0.11/GB for the next 9 TB, and $0.08/GB beyond 10 TB, with intercontinental transfers running $0.08 to $0.23/GB depending on the route. OCI gives 10 TB free monthly, then drops to roughly $0.0085/GB, a fraction of what the others charge past their free tiers. And a handful of storage providers, Cloudflare R2, Backblaze B2, and Wasabi among them, charge no egress at all, which matters as context when architecture decisions get made.
Inter-region transfer typically runs about $0.02 per GB, cross-AZ about $0.01 per GB. Those numbers look trivial in isolation. At OLAP data volumes, they aren't. A SaaS company pushing 50 TB a month out to customers is paying around $4,250 a month in egress alone. Push that to 100 TB and the bill clears $9,000 monthly. A Kafka cluster running steady at 30 MB/s throughput on AWS, using cross-AZ replication for durability, generates roughly $88,000 a year in cross-AZ charges by itself, before a single byte leaves the region. Standard internet egress across the major hyperscalers costs between $0.087 and $0.12 per GB. That's the ceiling most teams are working against, and it's higher than most people assume until they see the invoice.
How S3-routed OLAP architectures convert every query into a transfer event
Separating compute from storage is standard now for managed OLAP. Data sits in S3 or an equivalent object store, and compute nodes pull it on demand rather than keeping everything local. It's efficient, it scales well, and it's also where egress quietly compounds.
Here's the mechanism: in a naive setup, any query that can't be served from cache triggers a read from S3. In plenty of managed services, that read crosses an AZ boundary or a region boundary, and each crossing is billable. So query volume becomes a direct multiplier on egress cost. More queries mean more S3 reads mean more transfer charges, and the cost curve doesn't flatten as data grows. It steepens.
S3 retrieval costs and S3-to-compute transfer costs sit on different billing lines than internet egress, but they all move in the same direction, upward, with query frequency.
AI and agentic workloads make this worse. Agents probe data constantly, often in parallel, often asking near-identical questions repeatedly. Without a caching layer sitting in front of storage, every one of those probes is a separate transfer event. And it's not only queries. A 2 TB nightly backup replicating to a second region runs about $1,200 a month in inter-region fees, a cost most teams don't notice until someone actually opens the quarterly bill. Clusters spread across AZs for redundancy pay $0.01 per GB on every inter-node exchange, and at typical OLAP scan volumes that adds up fast.
The architecture decides whether egress is controllable or not, not how carefully anyone uses the system afterward. That's the line between teams who forecast their cloud bill accurately and teams who guess.
ClickHouse Cloud's egress pricing structure and the January 2025 policy change
One clear case study: managed OLAP vendors have started charging directly for egress where they didn't before. ClickHouse Cloud introduced egress fees in January 2025, according to an analysis by Quesma. Before that, egress on the platform wasn't billed at all.
Under the new structure, public internet egress runs $0.1152 per GB, inter-region egress runs $0.0312 per GB, and intra-region transfer plus Private Link or Private Service Connect traffic carries no charge. Existing customers got six months of grandfathering, ending July 23, 2025.
Exporting a full dataset out of ClickHouse Cloud now costs $115.20 per TiB. Quesma's analysis calls this a "divorce fee," a cost that makes switching providers meaningfully more expensive after January 2025 than before it.
The published billing examples show how this scales. A basic setup with 10 GB of public internet egress and 5 GB cross-region adds $1.31 to a $66.52 base bill, barely noticeable. A mid-size example with 100 GB internet egress and 10 GB cross-region adds $11.52 and $0.31 to a bill running $499 to $1,474 a month, still a small slice. But an enterprise example with 1 TB internet egress and 500 GB cross-region adds $115.20 and $15.60 to a bill between $2,669 and $9,714 a month. At that point, egress becomes a real fraction of the total because the volume is high enough to matter.
ClickPipes ingestion adds its own economics on top: $0.04 per GB ingested plus $0.20 an hour per compute unit, a separate cost layer that interacts with whatever egress budget already exists. Storage runs $25.30 per TB per month across every tier, a bit above AWS retail S3 pricing of roughly $23 per TiB in us-east-1, a gap that reflects snapshots being excluded from storage pricing starting in January 2025.
The worked examples in the documentation assume fairly light egress volumes. Real-time analytics, observability pipelines, and AI-agent query patterns tend to run well past those assumptions, and that's exactly where the actual bill starts to diverge from the example bill.
Hidden egress triggers engineers routinely miss in OLAP deployments
Some of the biggest egress line items aren't hiding in the query layer at all. They're sitting in infrastructure choices nobody revisits once they're made.
Take VPC endpoint gaps. Workloads without an S3 gateway endpoint route their traffic over the public internet path and get billed as internet egress, even though the traffic never should have left the cloud's internal network in the first place. Adding a single S3 gateway endpoint costs nothing and can cut egress by 30 to 50% overnight in the right setup.
Observability tooling is another quiet source. Observability and logging tools move data out of the VPC to reach their own ingestion endpoints. A fleet of instances running verbose logging can push hundreds of gigabytes a day out that door, and at $0.05 to $0.09 per GB, that adds up fast. This cost almost never appears in an OLAP cost model, because nobody thinks of logging as a transfer cost.
API calls carry their own charge, separate from the per-GB transfer rate. GET, PUT, LIST, and DELETE operations on object storage are billed per call, and backup jobs, integrations, and monitoring agents can rack up millions of them monthly without anyone noticing until the bill arrives.
Multi-region replication for analytics adds both replication transfer and duplicated storage cost. An AI pipeline pulling 500 GB of training data daily from object storage across regions runs about $300 a month in transfer alone, a cost that scales linearly with how often the pipeline runs.
There's a ClickHouse-specific wrinkle: when inserting over the native protocol with non-inlined values, the client pulls metadata from the server to pack the data correctly. If that metadata ends up larger than the actual INSERT payload, the server sends out more data than it takes in, according to ClickHouse's own billing documentation. That's egress generated by the insert path itself, not by any query.
And the backup example bears repeating, because it's the one that catches organizations most often: a 2 TB nightly backup replicating to a second region runs about $1,200 a month, a cost that tends to go unnoticed until someone runs the quarterly numbers. Multi-region OLAP deployments, generally, cost meaningfully more than single-region setups, a premium that rarely makes it into the initial budget.
The regulatory shift's effect on egress pricing and vendor negotiation
Regulation is starting to reshape this landscape, though not evenly. The EU Data Act bans cloud switching charges and egress fees outright starting January 12, 2027, following a transition period that began in January 2024.
Providers have already started adjusting ahead of the deadline. AWS eliminated egress charges for customers switching providers, effective March 2024. GCP made adjustments to its egress offerings. Azure cut inter-region transfer costs 30 to 50% for European customers.
But look closely at which categories moved and which didn't. Cross-AZ traffic, NAT Gateway processing, and CDN origin pull costs, the categories doing the most damage in OLAP workloads, were largely untouched by the 2024-2025 changes. Data transfer overall still runs 15 to 25% of the average cloud bill. The headline reductions landed on the most visible category, internet egress, and left the architectural sources of cost mostly alone.
For organizations outside the EU, there's still a strategic angle here. Why would that be, if the rule doesn't apply to them? Because the EU ban sets a precedent: regulators now consider today's egress pricing model indefensible on principle, not just in one jurisdiction. That gives buyers everywhere a stronger hand in negotiation, since providers know the practice is getting outlawed somewhere and probably won't want to fight that battle market by market.
The underlying mechanism hasn't changed, though. Cloud egress pricing works like a one-way valve: cheap to bring data in, expensive to take it back out, which creates a built-in incentive to just leave the data where it already sits. Teams evaluating managed OLAP platforms in 2026 are negotiating inside a transition period. Regulatory pressure hasn't yet reached the cost categories doing the most damage.
Architectural approaches that reduce egress accumulation in OLAP deployments
None of this is unfixable. Most of the fixes are architectural, not behavioral, which is good news because architecture is something a team actually controls.
Start with caching. A cache-mesh setup that keeps hot data in memory means repeated queries never route through S3 at all, which kills the per-query transfer event at its source instead of trying to manage it after the fact. For agentic workloads specifically, compute-on-shared-data designs let multiple isolated, read-only compute nodes query the same dataset without each one triggering its own independent S3 read. That maps directly onto the pattern Flexera's 2026 report flagged as a primary driver of wasted spend: AI workloads generating unpredictable, high-frequency access patterns.
Pricing structure matters too. When a platform charges by compute-hour instead of per query, a curious analyst or an aggressive AI agent asking the same question fifty different ways doesn't generate fifty separate billing events. The egress risk gets bounded by the architecture itself, not by how disciplined anyone is about usage.
Schema and compression choices function as real cost levers, not just performance tweaks. Compression cuts the raw bytes moving on every read, and at $0.1152 per GB for internet egress, a better compression ratio directly lowers the invoice. Materialized views and projections let queries read pre-aggregated data instead of scanning raw tables, shrinking both the GET volume and the transfer bytes involved. Primary key and sort order choices determine how much data a query has to scan in the first place. Get that wrong at scale, and every query pulls far more data than it needs to.
A handful of operational fixes carry outsized weight for the effort involved. Adding S3 gateway VPC endpoints where they're missing keeps that traffic off the public internet path entirely. Auditing logging and observability agents for verbosity catches egress that nobody classified as egress. Co-locating compute and storage in one region, where latency and compliance requirements allow it, avoids the multi-region premium that occurs by default rather than by deliberate choice. And for ClickHouse Cloud specifically, routing connections through Private Link or Private Service Connect avoids the intra-region charge entirely, per the platform's own billing documentation.
Migration egress is another cost to budget for explicitly. At $115.20 per TiB, moving a dataset running into hundreds of terabytes out of ClickHouse Cloud turns into a five- or six-figure line item before anyone touches a line of migration code. That's not a hidden cost anymore once you know the rate. It's a number that belongs in the plan from day one.

