Skip to main content
Cloud

Migrate the operating model, not just the workloads

Cloud programmes rarely stall on technology. They stall when workloads move but tickets, change windows and environment requests stay the same. Sequence by capability and run the landing zone as a product.

NinetyX Cloud Practice2 min read
On this page (3 sections)
  1. Sequence by capability, not by application
  2. Make the landing zone the product
  3. Budget for the operating model

The lift-and-shift phase of a cloud programme is the easy part. The workloads run, the invoices arrive, and then the organisation discovers that nothing about how it operates has actually changed — the same tickets, the same change windows, the same three-week wait for an environment.

You do not finish a cloud migration. You finish migrating the operating model, and the workloads follow.

Sequence by capability, not by application

A migration plan organised as a list of applications produces a list of lift-and-shifts. A plan organised around capabilities — identity, networking, a landing zone, a delivery pipeline, an observability baseline — produces a platform that the applications then move onto. The second plan is slower to show its first migrated workload and far faster to show its tenth.

  1. Establish the landing zone: management groups, policy, network topology, identity.
  2. Stand up the delivery pipeline and infrastructure-as-code workflow.
  3. Migrate a low-risk workload end to end to prove the path.
  4. Only then migrate at pace, because the path is now repeatable.

Make the landing zone the product

The landing zone is not scaffolding you throw away after migration — it is the product the platform team maintains for the life of the estate. Express it as code so it is reviewable and reproducible. A management-group hierarchy in Terraform is a few lines:

management_groups.tf
resource "azurerm_management_group" "platform" {
  display_name = "Platform"
  parent_management_group_id = azurerm_management_group.root.id
}

resource "azurerm_management_group" "landing_zones" {
  display_name = "Landing Zones"
  parent_management_group_id = azurerm_management_group.root.id
}

resource "azurerm_management_group_policy_assignment" "require_tags" {
  name                 = "require-cost-center"
  management_group_id  = azurerm_management_group.landing_zones.id
  policy_definition_id = data.azurerm_policy_definition.require_tag.id
}
Note:

A policy that requires a cost-centre tag at the landing-zone level is worth more than any dashboard. It makes untagged spend impossible to create rather than merely visible after the fact.

Budget for the operating model

The line item most transformation plans miss is the cost of running the platform after migration: the platform team, the guardrails they maintain, the FinOps loop that keeps spend honest. That is not overhead on top of the migration. It is the thing the migration existed to build.

Share

NinetyX Cloud Practice

Cloud & Platform Engineering

Engineers who design landing zones on Microsoft Azure and Google Cloud and plan the migrations into them. They write about the operating model as much as the architecture.

Where to next

Plan a landing zone your team can run

We design the management hierarchy, policy, network topology and identity as infrastructure as code, committed to your repositories and deployed through your pipelines.

See the Multi-Cloud Consulting services