Landing Zones That Survive Year Two: AWS Control Tower vs. Azure LZ vs. Google Cloud Foundations
Sources
- AWS Control Tower pricing — free to use, underlying services billed
- AWS Control Tower customers — Liferay, Deutsche Börse Group quotes
- 6,000 AWS accounts, three people, one platform: Lessons learned (ProGlove) — AWS Architecture Blog, Feb 2026
- Account Factory for Terraform (AFT) — AWS Control Tower User Guide
- aws-ia/terraform-aws-control_tower_account_factory — AFT source (GitHub)
- What is an Azure landing zone? — Cloud Adoption Framework (Microsoft Learn)
- Azure Well-Architected Framework pillars — Microsoft Learn
- Azure Blueprints retirement timeline — Microsoft Learn
- Carne Group boosts infrastructure and cyber resilience with Azure Site Recovery and Backup — Microsoft Customer Stories
- Preparing for what's next: Building landing zones for successful cloud migrations (Actavo, SoftwareOne) — Microsoft Azure Blog
- Landing zone design in Google Cloud — Cloud Architecture Center
- Google Cloud Well-Architected Framework — Cloud Architecture Center
- google/stellar-engine — landing-zone IaC for Assured Workloads (GitHub, Apache-2.0)
- How UC Riverside is securing the path to federal grants with Google Public Sector — Google Cloud Blog, April 2026
- AWS Config pricing — configuration items and rule evaluations
- Azure Monitor pricing — Log Analytics ingestion plans and tiers
Every cloud provider will happily sell you a landing zone. None of them will tell you the part that matters: landing zones don't fail at launch — they fail at month 14, when the second platform team has arrived, the first customization framework has been deprecated, and the governance bill has quietly compounded. This guide compares the three providers' landing-zone models as they actually behave in production, with named deployments, real cost math, and the failure points nobody puts in the reference diagram.
The three definitions diverge more than the marketing admits. AWS Control Tower orchestrates existing services (Organizations, Service Catalog, IAM Identity Center, Config) into a governed multi-account structure and calls the result a landing zone. Microsoft's Azure landing zone model splits into a centralized platform landing zone plus per-team application landing zones, deployed from Azure Verified Modules accelerators. Google doesn't even lead with the term — Google Cloud's landing zone design calls it a cloud foundation: a modular configuration of resource hierarchy, identity, network, and policy that you assemble yourself from Terraform blueprints.
That divergence is not cosmetic. It determines who owns the toil when the foundation drifts, which automation framework you'll be forced to migrate off of, and which line item eats your Year Two budget.
The Pattern: Three Layers, Three Very Different Owners
Strip the branding away and every landing zone is the same three-layer pattern:
LAYER 1 — RESOURCE HIERARCHY (the blast-radius boundary)
AWS: Organization -> OUs -> accounts (account = hard boundary)
Azure: Management groups -> subscriptions (subscription = boundary)
GCP: Organization -> folders -> projects (project = boundary)
LAYER 2 — POLICY & IDENTITY (the guardrails)
AWS: SCPs + Control Tower controls (preventive/detective via Config)
Azure: Azure Policy + RBAC/Entra ID, assigned at management-group scope
GCP: Organization policies (constraints) + IAM, inherited down the tree
LAYER 3 — AUTOMATION (the part that rots)
AWS: Account Factory / AFT / CfCT (three overlapping frameworks)
Azure: ALZ accelerators (Bicep/Terraform AVM) — after Blueprints died
GCP: Cloud Foundation Fabric / Stellar Engine / terraform-example-foundation
WHO OWNS YEAR-TWO DRIFT:
AWS: you own drift detection (Config rules, aggregators)
Azure: you own drift detection (Policy compliance state)
GCP: org policies are enforced at the API — drift is mostly impossibleThe structural difference that drives everything else: AWS and Azure treat accounts and subscriptions as soft boundaries — the boundary is only as strong as the policy you attach to it, and detective controls (AWS Config, Azure Policy in audit mode) tell you about violations after they exist. GCP's resource hierarchy is enforced at the API layer — an organization policy constraint like gcp.resourceLocations rejects the create request before the resource exists. You trade flexibility for the guarantee that a mis-tagged resource never lands in the wrong folder.
name: organizations/01234567890/policies/gcp.resourceLocations
spec:
rules:
- values:
allowedValues:
- in:us-east1
- in:europe-west1The Architecture in Practice
The provider diagrams differ in vocabulary but converge on the same production topology: a central platform layer that owns identity, connectivity, and policy, vending standardized workload containers to teams.
flowchart TB
subgraph P[Platform layer - owned by central platform team]
ID[Identity & access
IAM Identity Center / Entra ID / Cloud Identity]
NET[Connectivity
hub VPC / vWAN / Shared VPC]
LOG[Org-level logging
CloudTrail sinks / Log Analytics / log sinks]
POL[Policy & guardrails
SCPs+Config / Azure Policy / org policies]
end
subgraph A[Workload containers]
A1[Account / subscription / project]
A2[Account / subscription / project]
A3[Account / subscription / project]
end
V[Vending machine: Account Factory, AFT,
ALZ accelerators, project factory]
P --> V
V --> A1
V --> A2
V --> A3
A1 -.->|inherit policies| POL
A2 -.->|route via hub| NET
A3 -.->|audit logs to org sinks| LOG
A1 -.->|SSO| IDWhere they stop converging is Layer 3, the automation — and that's where the Year Two stories live.
AWS: The Account Factory Conveyor Belt
Control Tower itself is free; you pay for the services it configures — CloudTrail, Config, CloudWatch, Service Catalog, SNS, S3 — as its pricing page states plainly. The landing zone it builds is genuinely fast to stand up: AWS's customer page quotes Liferay CTO Igor Arouca on a 70% reduction in account-provisioning time, and Deutsche Börse Group on using Account Factory to hand teams pre-configured accounts with guardrails already attached. Those numbers match what we see in the field: the first month is a triumph.
Year Two is where the conveyor belt jams, and the ProGlove write-up is the most candid production account of it. In 6,000 AWS accounts, three people, one platform (AWS Architecture Blog, February 2026), ProGlove's platform team describes running account-per-tenant at industrial scale: three platform engineers keeping six thousand accounts alive through full automation. Their hard-won lessons are the ones the reference architecture omits:
- Observability must be centralized, but carefully. Cross-account CloudWatch has improved (they name the Observability Access Manager), but centralized telemetry must not reintroduce the very blast-radius risks that accounts were created to isolate.
- Cross-account identity is the real workload. IAM roles and trust policies spanning 6,000 accounts become a source of operational risk if not designed deliberately — this is the account-per-tenant tax.
- Account-per-tenant is a platform investment, not a checkbox. You buy hard isolation and clean cost attribution by paying in platform automation forever.
Then there's the framework churn. If you automate account vending on AWS today you choose between Account Factory for Terraform (AFT), the console's Account Factory Customizations, and the CloudFormation-based Customizations for Control Tower (CfCT) — three overlapping mechanisms for the same job. AFT is maintained in the open on GitHub and still actively developed (a July 2026 release added automatic customization re-application), but it runs its own pipeline infrastructure — Lambda, Step Functions, DynamoDB, CodePipeline — that your platform team now owns. Choose one and plan the migration off it. Assume any customization framework has a five-year shelf life.
module "aft_account_request" {
source = "./modules/aft-account-request-framework"
control_tower_parameters = {
AccountEmail = "payments-prod@yourcorp.example"
AccountName = "payments-prod"
ManagedOrganizationalUnit = "prod-ou"
SSOUserEmail = "platform-team@yourcorp.example"
SSOUserFirstName = "Platform"
SSOUserLastName = "Team"
}
account_tags = {
environment = "prod"
cost_center = "payments"
owner = "team-payments"
}
}The honest AWS summary: fastest launch, strongest ecosystem of worked examples, and the highest ongoing automation tax of the three. Budget the platform team before you budget the tooling.
Azure: Platform Landing Zones and the Blueprints Ghost
Microsoft's current model, documented in the Cloud Adoption Framework, is the cleanest conceptual split of the three: one platform landing zone (the centralized foundation — identity, connectivity, management, governance subscriptions) and many application landing zones (subscriptions where teams deploy inside platform guardrails). Implementation is via accelerators built on Azure Verified Modules, in Bicep or Terraform, with GitHub or Azure DevOps pipelines. The Azure Well-Architected Framework that governs workload design inside those landing zones rests on five pillars: Reliability, Security, Cost Optimization, Operational Excellence, and Performance Efficiency.
The most instructive Azure story isn't Microsoft's; it's the framework churn visible from the outside. Azure Blueprints — the original landing-zone deployment mechanism — is in phased retirement: since July 31, 2026 no new blueprint definitions can be created; from October 31, 2026 existing definitions and assignments freeze; December 31, 2026 assignments become read-only; and on January 31, 2027 the API stops responding entirely and anything not exported is deleted. Microsoft's own migration success stories still describe customers deploying self-service landing zones with Azure Blueprints — a mechanism that now has a hard deletion date. If your landing-zone story predates 2024, your Layer-3 automation has a deadline.
The named deployments show what survives. Carne Group, Europe's largest independent third-party asset manager ($1 trillion in AUM), built a distinct Terraform-based landing zone for each product, migrated all compute out of a third-party datacenter in about six months under DORA pressure, then modernized in place — Azure Policy for boundaries, Azure Monitor for telemetry, and a deliberate lift-and-shift-first strategy to keep cutover risk low. Actavo (via FastTrack for Azure and partner SoftwareOne) used the landing-zone process as a forcing function for scope: Head of IT Gavin Scott's takeaway was that the landing zone "focused everybody in terms of what are the deliverables." The Microsoft customer story also documents two anonymized-but-detailed migrations — a US manufacturer that migrated hundreds of VMs in four weeks and its first subsidiary's mission-critical workloads by week eight, and a German enterprise standing up a compliant environment in eight weeks ahead of a datacenter exit. The pattern that works on Azure: treat the platform landing zone as a product with an owned roadmap, and use application landing zones as the unit of team onboarding.
The Azure trap is the opposite of AWS's: the accelerator deploys beautifully, management-group hierarchies and policy assignments included, and then nobody budgets the operations. Platform landing zones need a platform team exactly like an internal developer platform does — if the subscription vending process has no owner after go-live, drift accumulates in Azure Policy exemptions nobody reviews.
Google Cloud: The Foundation You Assemble Yourself
Google's landing-zone guidance is the least productized: a landing zone (Google prefers "cloud foundation") is a modular configuration — resource hierarchy (organization → folders → projects), identity federation, Shared VPC networking, org policies, logging sinks, billing — assembled from reference Terraform. The Google Cloud Well-Architected Framework organizes recommendations into pillars (security, reliability, performance, cost, operations, sustainability) plus cross-cutting perspectives.
The structural advantage is enforcement semantics. Organization policy constraints are evaluated at the API on every create/update — resource locations, service restrictions, IAM member domains — so a non-compliant resource is rejected rather than detected. Cloud Asset Inventory, the inventory that feeds most GCP governance tooling, is free of charge; you pay only for storage of exported data. The trade: GCP gives you no Console-driven "landing zone in an hour." You pick a blueprint and own its pipeline. The two that matter:
- Cloud Foundation Fabric (GoogleCloudPlatform) — lean Terraform modules plus the FAST blueprint for end-to-end foundations, meant to be forked and owned. This is the commercial-sector default.
- Stellar Engine (google) — an Apache-2.0 fork of Fabric aimed at Assured Workloads (FedRAMP High, DoD IL4/IL5), with NIST 800-53r5 control mappings baked in. Open-sourced in March 2026, it turns the compliance artifact problem into IaC: the deployable landing zone and the Authorization to Operate documentation ship together.
The named deployment: UC Riverside. The university's CISO Dewight Kramer describes a "compliance tax" that forced researchers to decline federal grants rather than build compliant environments. UCR partnered with Google Public Sector to build its Secure Enclave on Stellar Engine — compliance controls pre-configured into the infrastructure, with research teams set to onboard through 2026 and higher-assurance environments planned over the following 18 months. It's the clearest example of a landing zone functioning as a business enabler rather than an IT gate.
The GCP trap is the fork you never merge. Fabric and Stellar Engine are designed to be forked into your own repositories — which means you own upstream merges. Teams that fork FAST and never re-sync accumulate a bespoke foundation that no consultant can operate. Budget merge days like you budget on-call.
Cost Realism: The Year-Two Governance Bill
Nobody prices a landing zone at design time, and that is the second failure mode. The governance plane has a meter running the day you deploy. All figures below verified against live pricing pages on 2026-09-22 — re-check before you quote them, pricing changes.
AWS Config: the meter that never sleeps
AWS Config charges per configuration item recorded: $0.003 per continuous CI and $0.012 per periodic CI (one per resource per day), per rule evaluation, plus conformance-pack evaluations. The pricing page's own worked example: 100 resources at ~10 CIs/day under continuous recording is 1,000 CIs/day = $3.00/day, versus periodic recording's 100 CIs/day = $1.20/day. Control Tower's detective controls record continuously. Do the multiplication at real estate scale:
| Environment (accounts × ~50 resources) | Continuous recording | Periodic recording |
|---|---|---|
| 200 accounts — 10,000 resources | $300/day ≈ $9,000/mo ≈ $108,000/yr | $120/day ≈ $3,600/mo ≈ $43,800/yr |
| 600 accounts — 30,000 resources | $900/day ≈ $27,000/mo ≈ $324,000/yr | $360/day ≈ $10,800/mo ≈ $129,600/yr |
That is before rule evaluations and conformance packs. A 600-account estate recording everything continuously is a six-figure Config line item, and this is exactly how "free" Control Tower turns into a governance bill bigger than the workloads it protects. The mitigation is deliberate: select recording strategies (continuous only on critical resource types), scope recorder channels, and treat every new Control Tower control library as a pricing decision. The largest published optimizations cut Config bills by six figures annually by targeting what gets recorded.
Azure Monitor: ingestion-tier discipline
Azure Monitor Logs bills by ingestion plan: $2.30/GB pay-as-you-go for Analytics Logs (the plan everything defaults to), $0.50/GB for Basic Logs, $0.05/GB for Auxiliary Logs, with commitment tiers from $1.96/GB (100 GB/day) down to $1.48/GB (50,000 GB/day). Retention: 31 days interactive included, then $0.10/GB/month interactive; long-term at $0.02/GB/month.
| Central platform Log Analytics ingestion | Analytics Logs PAYG | Same volume as Basic Logs |
|---|---|---|
| 5 GB/day | $345/mo | $75/mo |
| 20 GB/day | $1,380/mo | $300/mo |
| 100 GB/day | $6,900/mo (or $5,880/mo at the 100 GB/day commitment tier) | $1,500/mo |
A platform landing zone centralizing platform logs (diagnostics from connectivity subscriptions, firewalls, identity sign-in logs) hits 20 GB/day almost immediately — and DORA-driven retention demands make the long-term archive a second meter. The mitigation: workspace design and table-level plan choices (Azure Monitor lets you set Basic Logs per table) decided at foundation time, not after the first invoice.
GCP: the quiet meter
Google's governance plane is nearly free at inventory level — Cloud Asset Inventory carries no charge, org policies are enforced in-line, and log sinks cost only what their destinations cost (BigQuery storage, Cloud Storage). The GCP surprise arrives in the same place as the other two: centralized logging destinations and, more sharply, Assured Workloads (Stellar Engine's companion), which carries its own per-project premiums depending on the compliance regime. Foundation tooling itself — Fabric, Stellar Engine — is open source and free; the toil is yours.
Comparison: Which Foundation for Which Team
| Dimension | AWS Control Tower | Azure Landing Zone | Google Cloud Foundation |
|---|---|---|---|
| Time to first compliant account/subscription/project | Fastest — console-driven, under an hour to landing zone | Fast — accelerator with pipelines, hours to days | Slowest — fork a Terraform blueprint, own the pipeline |
| Boundary semantics | Account = hard-ish boundary, drift detection is yours | Subscription = boundary, Policy is advisory-capable | Project = API-enforced org policies |
| Automation framework risk | High churn (AFC/AFT/CfCT overlap; plan the migration off) | Blueprints dying Jan 2027 → Deployment Stacks + AVM accelerators | Fork-and-own (Fabric/Stellar) — upstream merges are your chore |
| Year-Two cost surprise | AWS Config at scale (six figures/yr at 600 accounts continuous) | Log Analytics ingestion + retention if defaulted | Log-sink destinations; Assured Workloads premiums |
| Best fit | SaaS/reg orgs needing account-per-tenant; teams that want worked examples | Microsoft-stack enterprises; regulated finance (DORA-style) with IaC culture | Platform-mature teams; compliance-heavy public sector |
When NOT to Use Each
- Skip the full multi-account landing zone if you have fewer than ~5 teams. The hierarchy is a bet on future organizational complexity. A startup with one product team pays pure overhead: vending machines, OU design, and cross-account IAM for an org chart that doesn't exist yet. One account, SCPs on the root, revisit at 50 engineers.
- Skip Control Tower's control library wholesale if you can't afford Config. Enable the detective controls your compliance regime actually requires, not the full catalog. A control is a subscription.
- Skip the Azure platform landing zone accelerator if nobody will own it after deploy. The accelerator is a starting state, not an operating model. No owner = policy exemptions rot = the foundation becomes a liability you're afraid to touch.
- Skip the GCP fork-your-own-foundation route if you have no Terraform platform capability. Fabric assumes you can read, merge, and maintain its modules. If you can't, hire that capability or pick a different cloud — an unmaintained fork is worse than no foundation.
- Nobody should build a landing zone for a single workload. The entire pattern amortizes governance across many teams. One workload = one account/project with policies. Don't build an empire for one citizen.
The Verdict
There is no best landing zone — there is only the one your org can operate in month 14. AWS wins the launch and owns the most candid post-mortem literature: ProGlove's three engineers per 6,000 accounts is the honest ratio, and AFT is the automation with the strongest current investment. Azure has the cleanest conceptual model (platform + application landing zones) and the clearest cautionary tale (a whole generation of Blueprints-based foundations hits a January 2027 deletion deadline). Google has the best enforcement semantics and the least hand-holding; Stellar Engine with the UCR-style compliance-as-infrastructure play is the most interesting 2026 development in the space, precisely because it treats the paperwork as code too.
The pattern that survives Year Two is the same on all three clouds: a funded platform team, an automation framework with a planned migration path, governance priced at design time, and a hierarchy that matches your org chart as it is, not as the reference architecture wishes it were. If you can name the person who owns the foundation's roadmap, you're ahead of most of the market. If you can't, you don't have a landing zone — you have an expensive group of unused accounts.
References & Further Reading
- AWS Control Tower — product overview and documentation; multi-account governance orchestration.
- 6,000 AWS accounts, three people, one platform: Lessons learned (AWS Architecture Blog, Feb 2026) — ProGlove's account-per-tenant production lessons: automation, observability, cost.
- Account Factory for Terraform — AWS Control Tower User Guide — GitOps account provisioning on top of Control Tower.
- AWS Config Pricing — configuration-item and rule-evaluation rates used in the cost math.
- What is an Azure landing zone? — Microsoft Cloud Adoption Framework — platform vs. application landing zones, accelerators, design areas.
- Azure Blueprints retirement timeline — phased retirement July 2026 → January 2027; migration to Deployment Stacks and template specs.
- Carne Group customer story (Microsoft) — Terraform-based landing zones per product, DORA-driven migration.
- Landing zone design in Google Cloud — Cloud Architecture Center — cloud foundation elements, resource hierarchy, deployment options.
- google/stellar-engine (GitHub) — Apache-2.0 landing-zone IaC fork of Cloud Foundation Fabric for Assured Workloads with NIST 800-53r5 mappings.
- How UC Riverside is securing the path to federal grants (Google Cloud Blog, April 2026) — named Stellar Engine deployment, the "compliance tax" eliminated by infrastructure.
- Azure Monitor pricing — Log Analytics ingestion plans and commitment tiers used in the cost math.
- Google Cloud Well-Architected Framework — pillars and perspectives governing foundation design.