Skip to main content

☁️ AWS, Azure & GCP: A Practical Comparison

Week 13: Cloud & Deployment — course module banner illustration

You've built and tested a full-stack app — now it needs a home on the internet that stays up, scales, and doesn't surprise you with the bill. This week is about that home: the cloud. We start by getting your bearings among the three giants, so the acronyms stop being intimidating and start being tools.

Week 13 · Monday: Cloud Platforms Overview · Lecture 1

🎯 Learning Objectives

By the end of this lesson, you will be able to:

  • Explain the difference between IaaS, PaaS, SaaS, and where serverless and containers fit
  • Map the core service categories (compute, storage, database, serverless, CDN) across AWS, Azure, and GCP
  • Reason about cloud geography — regions, availability zones, and edge locations — when placing an app
  • Compare the three providers' pricing levers (on-demand, reserved, spot, free tier) at a high level
  • Apply a decision framework to pick a provider for a given project instead of guessing
  • Recognize developer-friendly PaaS options (Render, Railway, Fly.io, Vercel) that sit alongside the big three

Estimated Time: 55 minutes

Practice: Map a small full-stack app onto each provider's services and justify a choice.

In This Lesson

Why the Cloud?

Before the cloud, launching a web app meant buying physical servers, renting rack space in a data center, wiring networking, and hoping you guessed your capacity right. Guess too low and your site fell over on launch day; guess too high and you paid for idle metal for years. The cloud replaced that capital expense (buy hardware up front) with an operating expense (rent exactly what you use, by the second).

Think of it like transportation. Owning servers is like owning a fleet of trucks: huge upfront cost, you maintain them, and they sit idle most nights. The cloud is like calling a truck the moment you have cargo and paying only for that trip — and being able to summon a hundred trucks in minutes when a big shipment lands.

📖 The three you'll keep hearing about

AWS (Amazon Web Services) — the pioneer, launched 2006, broadest catalog and largest ecosystem. Azure (Microsoft) — deepest enterprise and Windows integration, strongest hybrid story. GCP (Google Cloud Platform) — data, analytics, and machine-learning heritage, clean developer ergonomics. All three offer the same fundamentals; the differences are in depth, defaults, and culture.

IaaS, PaaS & SaaS — the responsibility split

The most useful mental model in cloud computing is who manages what. Every cloud offering falls somewhere on a spectrum from "you manage almost everything" to "you manage almost nothing." The classic analogy is pizza:

  • On-premises is making pizza at home — you buy every ingredient, own the oven, and cook it yourself.
  • IaaS is buying the frozen pizza — the kitchen and oven are yours, but the dough and toppings come prepared.
  • PaaS is delivery — you provide the table and drinks; someone else makes and delivers the pizza.
  • SaaS is dining out — you just show up and eat.
Responsibility split across On-Prem, IaaS, PaaS, and SaaS On-Prem IaaS PaaS SaaS You manage everything You: OS, runtime, app, data Cloud: hardware, network, virtualization You: app + data Cloud: OS, runtime, scaling, patching You: just use it Cloud: the entire application
As you move right, the cloud provider takes over more layers. Solid boxes are your responsibility; dashed boxes are the provider's.
ModelYou manageExampleGood when
IaaSOS, runtime, app, dataEC2 VM, Compute EngineYou need full control of the machine
PaaSApp code + data onlyApp Engine, Render, Elastic BeanstalkYou want to ship code, not babysit servers
SaaSNothing — you just use itGmail, Stripe, Auth0The problem is already solved by someone else

💡 Where do serverless and containers fit?

Containers (Docker, run on Kubernetes/ECS/Cloud Run) are a packaging and portability layer — they can sit at the IaaS level (you run the cluster) or feel like PaaS (managed platforms like Cloud Run run them for you). Serverless functions (Lambda, Cloud Functions) are the far end of PaaS: you upload a function, the provider runs it on demand and scales it to zero when idle. You manage only the code. Serverless is a consumption model as much as a compute model — no traffic means no bill.

Meet the Big Three

All three are enormous, mature, and reliable. Their reputations come from where they started.

AWS — the pioneer

Amazon Web Services launched in 2006 out of Amazon's own internal infrastructure. First-mover advantage gave it the broadest catalog (hundreds of services) and the largest community, so almost every tutorial, Stack Overflow answer, and Terraform module you find will have an AWS example. The trade-off: the sheer breadth can be overwhelming, and the console has a reputation for complexity.

Azure — the enterprise partner

Microsoft Azure launched in 2010 (originally "Windows Azure"). Its superpower is integration with the Microsoft stack that big companies already run — Active Directory, Office 365, Windows Server, SQL Server. If your organization is a "Microsoft shop," Azure feels like home and often comes with licensing discounts.

GCP — the data powerhouse

Google Cloud Platform launched publicly in 2013, built on the same infrastructure that runs Search and YouTube. Its strengths are data analytics (BigQuery), machine learning (Vertex AI, TensorFlow origins), and Kubernetes (which Google created). Developers often praise its cleaner, more consistent tooling.

🌍 Who runs on what (and why it's telling)

Netflix runs largely on AWS even while competing with Amazon in streaming. Walmart leans on Azure partly to avoid funding a retail rival. Spotify and many data-heavy startups favor GCP for BigQuery. The lesson: real companies pick based on economics, existing relationships, and specialty strengths — not on a single "best" ranking.

Cloud Geography: Regions, Zones & Edges

Your app doesn't live "in the cloud" abstractly — it lives in a specific building in a specific country. Understanding the geography vocabulary is essential for latency, compliance, and reliability.

  • Region — a geographic area (e.g. us-east-1 in Virginia, europe-west1 in Belgium) containing multiple data centers.
  • Availability Zone (AZ) — an isolated data center within a region, with its own power, cooling, and networking. Deploying across multiple AZs survives a single data-center failure.
  • Edge location — a smaller point of presence (used by CDNs) that caches content close to users, far more numerous than regions.
graph TD A["Region (e.g. us-east-1)"] --> B["Availability Zone A"] A --> C["Availability Zone B"] A --> D["Availability Zone C"] B --> E["Compute + Storage"] C --> F["Compute + Storage"] D --> G["Compute + Storage"] A --> H["Edge locations cache content worldwide"]

⚠️ Region choice has real consequences

Pick regions close to your users (latency), where the law requires data to live (GDPR, data residency), and where the services you need are available (new services roll out region by region). Prices also vary between regions — us-east-1 is often the cheapest on AWS, while some regions cost noticeably more.

Core Service Map

Here's the single most useful table in this lesson. The same fundamental building blocks exist on every provider — only the names change. Learn the categories and the names translate themselves.

Compute

CategoryAWSAzureGCP
Virtual machinesEC2Virtual MachinesCompute Engine
Containers (orchestrated)ECS / EKSAKSGKE
Managed containersApp Runner / FargateContainer AppsCloud Run
Serverless functionsLambdaFunctionsCloud Functions
Traditional PaaSElastic BeanstalkApp ServiceApp Engine

Storage & Database

CategoryAWSAzureGCP
Object storageS3Blob StorageCloud Storage
Block storage (disks)EBSManaged DisksPersistent Disk
Managed SQL databaseRDS / AuroraSQL DatabaseCloud SQL / AlloyDB
NoSQL documentDynamoDBCosmos DBFirestore
In-memory cacheElastiCacheCache for RedisMemorystore
Data warehouseRedshiftSynapseBigQuery

Networking & Delivery

CategoryAWSAzureGCP
CDNCloudFrontFront Door / CDNCloud CDN
Load balancerELB (ALB / NLB)Load Balancer / App GatewayCloud Load Balancing
DNSRoute 53Azure DNSCloud DNS
Secrets managementSecrets ManagerKey VaultSecret Manager

✅ The same app, three dialects

A React frontend on object storage + CDN (S3+CloudFront / Blob+Front Door / Cloud Storage+Cloud CDN), a Node API on managed containers (App Runner / Container Apps / Cloud Run), talking to a managed Postgres (RDS / SQL Database / Cloud SQL). Learn that pattern once and you can deploy it anywhere.

Pricing Levers

Every provider charges for roughly the same things — compute time, storage volume, and data transfer out — and gives you the same levers to reduce the bill. (We go deep on cost in a later lesson; here's the shape.)

LeverWhat it isTypical saving
On-demandStandard pay-as-you-go rate, no commitmentBaseline (0%)
Reserved / committed1- or 3-year commitment to steady usage~30–70%
Spot / preemptibleSpare capacity that can be reclaimed anytime~70–90%
Free tierAlways-free limits + 12-month intro creditsGreat for learning
💡 Rule of thumb: the biggest surprise on a cloud bill is almost never compute — it's egress (data transferred out to the internet). Serving media through a CDN and keeping traffic in-region is the cheapest architectural habit you can build.

Provider-specific flavors

  • AWS: Savings Plans (flexible commitment), Reserved Instances, Spot Instances.
  • Azure: Reservations, plus Hybrid Benefit to reuse existing Windows/SQL licenses.
  • GCP: automatic Sustained Use Discounts (no commitment needed) and Committed Use Discounts, with per-second billing.

Developer-Friendly PaaS: The Fourth Option

Here's a secret the big three won't advertise: for most side projects, MVPs, and small teams, you may not need AWS, Azure, or GCP directly at all. A generation of developer-first platforms wrap that same infrastructure in a dramatically simpler experience — you connect a Git repo, they build and deploy on every push.

PlatformSweet spotUnderlying idea
VercelNext.js / frontend + edge functionsGit push → global deploy in seconds
RenderFull-stack apps, managed Postgres + RedisHeroku-style simplicity, modern pricing
RailwayQuick backends + databasesProvision a DB in one click, usage-based
Fly.ioContainers close to users, globallyRun your Docker image in many regions

These are still cloud — many run on top of AWS or GCP under the hood — but they trade raw control for speed and developer happiness. The rule: start simple, and only reach for the big three directly when you outgrow the abstraction or need a service they don't offer.

Choosing a Provider

There is no universally correct answer, but there is a sensible framework. Ask these questions in order:

graph TD A["Start: which cloud?"] --> B{"Small project or MVP?"} B -->|Yes| C["Use a PaaS: Vercel, Render, Railway, Fly"] B -->|No| D{"Already a Microsoft shop?"} D -->|Yes| E["Azure fits your licenses and identity"] D -->|No| F{"Heavy data or ML workload?"} F -->|Yes| G["GCP: BigQuery and Vertex AI shine"] F -->|No| H["AWS: broadest services, largest community"]

✅ Honest guidance

  • Learning full-stack? Pick one provider and go deep. The concepts transfer; the muscle memory doesn't.
  • Startup shipping fast? Start on a PaaS. You can migrate later — and most projects never need to.
  • Team's existing skills often matter more than any feature comparison. The best cloud is the one your people can operate confidently at 3 a.m.

Practice & Quiz

🏋️ Exercise 1: Translate the architecture

Goal: A colleague describes an app on AWS: "It's a React SPA on S3 + CloudFront, a Node API on Lambda behind API Gateway, data in DynamoDB, and images in S3." Rewrite that same architecture using GCP service names.

💡 Hint

Go category by category: object storage + CDN, serverless functions + API gateway, NoSQL document DB, object storage again. Use the Core Service Map table.

✅ Solution

React SPA on Cloud Storage + Cloud CDN; Node API on Cloud Functions behind API Gateway (or Cloud Run); data in Firestore; images in Cloud Storage. Same pattern, GCP dialect.

🏋️ Exercise 2: Pick a lane

Goal: For each scenario, name a sensible provider (or PaaS) and one sentence of justification.

  1. A weekend portfolio site built with Next.js.
  2. An internal tool for a company that already uses Office 365 and Active Directory.
  3. A startup whose whole product is analyzing terabytes of event data.
✅ Solution
  • 1 → Vercel: zero-config Next.js deploys and a generous free tier.
  • 2 → Azure: native Active Directory / Office 365 integration and license benefits.
  • 3 → GCP: BigQuery makes large-scale analytics fast and cheap to query.

🎯 Quick Quiz

Question 1: In which model does the cloud provider manage the operating system and runtime, leaving you responsible only for your app code and data?

Question 2: AWS S3, Azure Blob Storage, and GCP Cloud Storage are all examples of which service category?

Question 3: Which cost item most often causes a surprise spike on a cloud bill?

Best Practices & Pitfalls

✅ Do

  • Learn service categories first; the vendor names translate themselves
  • Start on a PaaS for small projects and migrate only when you must
  • Choose regions for latency, compliance, and price, in that order
  • Deploy across multiple availability zones for anything that must stay up
  • Set a budget alert on day one, before you deploy anything

❌ Don't

  • Chase a mythical "best cloud" — fit to your needs and team skills
  • Adopt multi-cloud early "for flexibility"; it multiplies complexity before you need it
  • Forget that free-tier trials expire — set a reminder before the 12 months lapse
  • Ignore egress costs when designing where data flows

⚠️ Vendor lock-in is a spectrum, not a wall

Using a managed database or object store creates some lock-in, but the productivity gain is usually worth it. Keep lock-in low where it's cheap (use standard Postgres over a proprietary API when you can) and accept it where the managed service is genuinely better. Rewriting everything to stay "portable" is a cost most teams never recoup.

Summary

🎉 Key Takeaways

  • The cloud swaps capital expense for operating expense — rent what you use, scale on demand
  • IaaS → PaaS → SaaS is a spectrum of how much the provider manages; serverless and containers slot in along it
  • AWS = broadest & largest ecosystem, Azure = enterprise/Microsoft, GCP = data & ML
  • Every provider offers the same core categories (compute, storage, DB, serverless, CDN) under different names
  • For small projects, developer-friendly PaaS (Vercel, Render, Railway, Fly) is often the smartest start

📚 Additional Resources

🚀 What's Next?

Now that you can navigate the providers, the next lesson zooms in on the exact services a real web application stitches together — compute, managed databases, object storage, CDN, DNS, load balancers, and secrets: Cloud Services for Web Apps.

🎉 The map is in your hands

The acronyms aren't scary anymore — they're just three dialects of the same language. Next, we build a real architecture with them.