Library · Cloud
AWS vs Azure vs OCI vs GCP - an honest matrix.
The problem
Cloud comparisons are usually written by whoever profits from the answer. We deploy to all four (portably, via Terraform), so our only stake is this: the architecture matters more than the logo, and the logo should be chosen for reasons you can write down.
What actually differs
- AWS - the broadest catalogue and region coverage; the default when a client has no prior footprint and wants the largest hiring pool and community answer-base. The cost: a console and pricing model that reward dedicated attention.
- Azure - the natural home for organisations living in Microsoft identity (Entra/AD), Office and Teams; enterprise agreements often make it the commercially path-of-least-resistance. Integration with that world is genuinely first-class.
- OCI - aggressive compute and egress pricing that makes it a serious contender for compute-heavy, bandwidth-heavy workloads; a smaller catalogue, which for boring architectures (ours) is rarely the constraint people assume.
- GCP - the strongest data/analytics and Kubernetes story (GKE remains the reference implementation); favoured when analytics and AI dominate the roadmap.
What does not differ (much)
For the platform we ship - containers, managed PostgreSQL, Redis, object storage, a load balancer (the reference diagram) - all four are excellent. This is the quiet argument for boring architecture: it makes the cloud decision reversible, which converts a bet into a preference.
The decision procedure we run
- Team gravity. Existing skills and identity systems outweigh feature checklists - the cloud your team can operate at 2am wins.
- Region and data residency. Where must data live; where are your users; what latency is acceptable.
- Priced workload, not list prices. Model YOUR shape (compute hours, storage, egress) on each - egress especially punishes assumptions; this is where OCI surprises people.
- Managed-service fit. The two or three services you will lean on hardest - compare those, ignore the other two hundred.
- Write it down. The choice becomes an ADR with a revisit condition, like every decision we keep.
Tradeoffs of multi-cloud itself
Portability-by-design (our approach): Terraform + containers + managed Postgres keeps the exit real at near-zero daily cost. Active multi-cloud (same workload on two clouds): double the operational surface for redundancy few products need - we recommend it rarely and say so.
Related: Cloud Engineering · Migration checklist · Observability · Terraform ADR