AWS Egress $28,000 — GCP Global VPC Cuts Cost 40%
AWS inter-region egress $0.09/GB caused $28k monthly bill.
20+ years shipping production infrastructure and CI/CD at scale. Everything here is grounded in real deployments.
- AWS (200+ services): broadest ecosystem, mature tools, complex pricing. EC2 spot 90% discount, S3 standard $0.023/GB.
- Azure (Entra ID integration): best for Windows/.NET workloads, Hybrid Benefit saves Windows licensing costs. VNet peering, Blob Hot $0.018/GB.
- GCP (GKE, global VPC): container-native, best data/AI tools, automatic sustained-use discounts (20-30% without commitment). Cloud Storage $0.020/GB.
- Performance: GCP global VPC eliminates inter-region egress ($0.08/GB on AWS). For 2PB/month, that's $160k difference. 30-50% lower latency.
- Production trap: choosing a provider without modelling egress costs. Inter-region transfer dominates bills. Always use CDN as first layer.
- Biggest mistake: treating cloud providers as interchangeable. S3 bucket policies (AWS), Blob container ACLs (Azure), IAM roles (GCP) differ significantly — blind porting fails.
Think of GCP, AWS, and Azure as the 'Big Three' utility companies for the digital age. AWS is like the established power giant with a tool for every niche; Azure is the massive corporate provider that integrates perfectly with the office equipment you already own; and GCP is the high-tech, specialised firm that offers the fastest, most advanced smart-grid technology. Understanding the differences helps you decide which 'grid' will power your application most efficiently.
Choosing a cloud provider is no longer just about virtual machines; it's about choosing an ecosystem. AWS, Azure, and GCP each offer a unique philosophy toward infrastructure, data, and developer experience. While they all provide the fundamental building blocks of modern computing—compute, storage, and networking—the way they implement identity, global networking, and managed services varies significantly.
In this guide, we'll break down the architectural nuances of the 'Big Three,' why they were designed with different priorities, and how to navigate their CLI tools to manage resources. By the end, you'll have the technical perspective needed to make an informed multi-cloud or single-cloud decision for your production workloads.
The most important insight that separates senior engineers from the rest? Egress pricing. AWS charges $0.09/GB inter-region. GCP's global VPC eliminates that cost entirely for traffic on its backbone. For a 2PB/month workload, that's $160,000 difference. Not a rounding error — a hiring decision.
Why Cloud Provider Choice Is a Cost Architecture Decision
AWS, GCP, and Azure are cloud platforms that offer compute, storage, and networking services, but their egress pricing and network topology differ radically. The core mechanic: every byte leaving a cloud region incurs a cost, and each provider charges differently for cross-region, cross-VPC, and internet-bound traffic. GCP’s global VPC treats the entire network as a flat fabric, so inter-region traffic uses Google’s backbone at no extra charge beyond standard compute rates. AWS and Azure charge per-GB egress between VPCs and regions, often $0.05–$0.12/GB, which can balloon to $28,000 for 200 TB/month.
In practice, GCP’s single VPC spans regions with internal IPs, eliminating the need for transit gateways or VPC peering costs. AWS requires explicit VPC peering or Transit Gateway attachments, each with per-GB processing fees. Azure uses virtual network peering with similar egress charges. The key property: GCP’s model makes multi-region architectures cost-linear with compute, not super-linear with data movement. For data-heavy workloads like media processing, ML training, or database replication, this difference dominates total cloud bill.
Use GCP when your system moves large volumes of data between regions — think global CDN backends, cross-region analytics pipelines, or disaster recovery replication. Use AWS or Azure when you need specific managed services (Lambda, DynamoDB, AKS) or regulatory compliance zones GCP lacks. The decision isn’t about feature count; it’s about whether your data gravity makes egress the dominant cost driver.
Core Philosophy and Market Position
Each cloud provider started from a different origin, and that history drives their current strengths and weaknesses.
AWS (Amazon, 2006): Launched as an internal infrastructure platform for Amazon's retail operations. The philosophy is 'primitive-first' — offer building blocks that can be composed any way. This leads to breadth over simplicity. AWS has over 200 services, from machine learning (SageMaker) to satellite ground stations (Ground Station). The downside: steep learning curve and complex pricing. Over 80% of enterprises use AWS as their primary cloud.
Azure (Microsoft, 2010): Built to leverage Microsoft's enterprise footprint. The philosophy is 'hybrid-first' — seamless integration with on-premises Active Directory (now Entra ID), Windows Server, SQL Server, and Office 365. Ideal for organizations with existing Microsoft Enterprise Agreements (EAs). The Azure Hybrid Benefit can reduce Windows Server and SQL Server licensing costs by up to 80% compared to other clouds. Second-largest cloud provider, dominant in Fortune 500.
GCP (Google, 2011): Born from Google's internal infrastructure (Borg, Colossus, Spanner). The philosophy is 'data-first' — leverage Google's expertise in AI/ML, big data, and container orchestration. GCP effectively invented Kubernetes (K8s) before open-sourcing it in 2014. The networking layer (global VPC) is unmatched, keeping traffic on Google's private fiber backbone. Third-largest cloud provider but fastest-growing segment in data analytics and AI.
- AWS: Primitive-first, build anything, at the cost of complexity.
- Azure: Enterprise-first, hybrid-cloud, best for Windows/.NET shops.
- GCP: Data-first, AI/ML leadership, best global network.
- AWS has the most services (200+), GCP has the most advanced services (Spanner, BigQuery, GKE).
- Azure's secret weapon: existing Microsoft enterprise agreements (discounts up to 80% for Windows/SQL).
Compute Comparison: EC2 vs Azure VM vs GCE — Spot Instances and Burstable Pricing
Each provider's compute service reflects its design goals. AWS EC2 offers the broadest selection of instance families, including FPGAs (F1), GPU (P4), and Graviton ARM instances. Azure VMs deeply integrate with Windows licenses and offer Reserved Instances with Azure Hybrid Benefit to reduce Windows Server costs. GCE stands out with custom machine types (pick exact vCPU/memory), sustained-use discounts (automatically scale down), and preemptible VMs at up to 90% discount.
- AWS: On-demand, Reserved (1/3 years, up to 72% off), Spot (up to 90% off, 2-min eviction notice), Savings Plans (flexible across families).
- Azure: On-demand, Reserved (same), Spot VMs (up to 90% off, 30-sec eviction), Hybrid Benefit (use on-prem Windows/SQL licenses in cloud).
- GCP: On-demand, Committed Use Discounts (1/3 years, up to 70% off), Preemptible VMs (80% off, 30-sec notice), Sustained Use (automatic 20-30% discount for running >25% of month).
Burstable performance: AWS T-family (t3, t4g) uses CPU credits; Azure B-series uses credits; GCP E2-micro/nano have no burst credits — they're always throttled. T3 unlimited mode allows bursting beyond credit balance at extra cost.
For containerized workloads, GKE runs most efficiently due to Google's Borg lineage; AWS EKS and Azure AKS are close competitors but require more manual tuning for pod density. GKE Autopilot (serverless Kubernetes) eliminates node management entirely — unique among providers.
- AWS: hundreds of instance types → pick the perfect one, or pay for generic.
- Azure: Reserved Instances + Hybrid Benefit = Windows cost leader (up to 80% savings).
- GCP: custom machine types + sustained use discounts = most flexible pricing for custom workloads.
- Preemptible/Spot VMs: GCP's 90% discount best for fault-tolerant batch, but 30-sec eviction notice.
- Kubernetes: GKE Autopilot eliminates node management; EKS and AKS require more operational overhead.
Regions and Zones: Where Your Latency and Your Budget Sleep Together
Cloud providers charge different prices for the same compute in different geographic locations. That’s not a footnote; it’s a fist fight with your finance team. AWS’s us-east-1 is cheap because it’s old and crowded. Azure’s Brazil South is expensive because they had to lay undersea cable. GCP’s us-west1 is a steal if your users are on the West Coast. The real trap? Data egress. Moving traffic between regions costs real money. One misrouted backup job can burn through your monthly margin. You pick a primary region based on user latency, but you pick a DR region based on data transfer costs and regulatory compliance. Always calculate egress in your TCO model before you sign. And don’t assume zones within a region are free—they’re not. GCP charges for cross-zone traffic. AWS gives you a few TB free. Azure’s pricing is a spreadsheet nightmare. Test your inter-zone data movement in a proof of failure, not a proof of concept.
Security in Google Cloud Platform: IAM Is Not a Suggestion, It’s a Fence
GCP’s security model is built on three pillars: IAM for identity, VPC Service Controls for data boundaries, and Cloud Armor for edge defense. The mistake most teams make is treating IAM like a permissions menu. It’s not. It’s an access graph that attaches to every API call. If your service account has roles/compute.admin on a project, that’s not a role—it’s a loaded weapon. GCP enforces resource-hierarchy inheritance: org -> folder -> project -> resource. If you give a folder-level viewer access, every project under it inherits that view. That’s great for org-wide observability, but deadly if you accidentally give iam.serviceAccountUser at the org level. The real production trick: use custom roles with a deny-by-default principle. And don’t forget VPC Service Controls. They prevent data exfiltration even if a service account key leaks. GCP’s Security Command Center will scream at you for unencrypted buckets and overly permissive firewall rules. Listen to it. Or wait for the audit.
Implementing Cloud-Native Projects: Where the Hype Meets Your YAML
Cloud-native isn't a badge of honor. It's a hard constraint on your architecture. GCP, AWS, and Azure all offer managed Kubernetes, but they fundamentally disagree on how you should build stateless, observable systems.
AWS forces you to assemble cloud-native from Lego bricks — EKS, Fargate, App Mesh, and Cloud Map — each with its own IAM policy and bill. You own every piece, which means you also own every failure mode. GCP leans hard into Google's internal dogma: Anthos and GKE with autopilot and built-in config sync. You get less control but faster velocity if your team commits to their way. Azure pitches Azure Kubernetes Service plus Dapr as the magic abstraction layer, betting that microservices complexity needs a framework.
The real test isn't the control plane. It's how your team handles state, secrets, and RBAC across environments. Pick the provider whose native tooling punishes less for your team's weakest skill. I've seen teams burn months on AWS service mesh configs that GKE handles with two annotations. Choose the path of least config resistance.
Conclusion: Your Decision Matrix Ends at Your Team's Weakest Skill
Stop comparing EC2 instance families by the penny. The cloud provider that wins is the one where your worst developer can deploy without opening a support ticket.
For startups running stateless microservices with a small SRE team: GCP. Its default IAM and GKE autopilot hide enough complexity that one senior can cover three juniors. For enterprises with regulatory baggage and a decade of Active Directory: Azure. You'll waste money on licensing, but the compliance path is paved. For teams that need every possible service and have the ops headcount to manage them: AWS. You'll pay more in engineer-hours than compute, but you'll never hit an architectural ceiling.
The decision framework is brutally simple: Count how many of your engineers can honestly explain the difference between a NAT gateway and a VPC endpoint. If the number is less than three, pick the provider that automates that decision away. If it's more, pick the one with the deepest service catalog. Everything else — regions, spot pricing, security — is just noise your finance team will blame you for later.
Ship fast, break things, but don't let your cloud choice be the thing that breaks.
The $28,000 Egress Shock That Sent the CFO to the ER
- Egress pricing varies 3-5x between providers — GCP is cheapest for inter-region (global VPC), AWS most expensive.
- Always model data transfer costs before selecting a primary region. Egress can exceed compute bill by 3x.
- Use CDN (CloudFront/Azure CDN/Cloud CDN) as the first layer of egress control.
- For dynamic traffic, use multi-region databases (Aurora Global, Spanner) to localise reads, not cross-region replication.
- Set up budget alerts on day one. A $28,000 bill without warning is a career-limiting event.
aws ce get-cost-and-usage --time-period Start=2026-04-01,End=2026-04-30 --granularity MONTHLY --metrics "UnblendedCost" --filter "{\"Dimensions\":{\"Key\":\"SERVICE\",\"Values\":[\"AWS Data Transfer\"]}}"aws ce get-cost-and-usage --time-period Start=2026-04-01,End=2026-04-30 --granularity DAILY --metrics "UnblendedCost" --group-by Type=DIMENSION,Key=REGIONKey takeaways
Common mistakes to avoid
5 patternsNot modelling egress costs before choosing a region
Not utilising the 'Free Tier' correctly — leaving resources running
Treating S3-compatible APIs as identical across providers
Assuming IAM roles, policies, and service accounts are interchangeable
Manual resource management via 'ClickOps' — no Infrastructure as Code
Interview Questions on This Topic
Google Spanner vs AWS Aurora Global Database: When would you choose one over the other for a global financial application needing strong consistency?
Frequently Asked Questions
20+ years shipping production infrastructure and CI/CD at scale. Everything here is grounded in real deployments.
That's Google Cloud. Mark it forged?
7 min read · try the examples if you haven't