Infrastructure as Code
Infrastructure as Code is the practice of managing and provisioning infrastructure through machine-readable definition files, rather than through manual processes.
IaC brings repeatability, auditability, and scalability to infrastructure management, and is essential for modern DevOps and cloud-native operations.
Level 1 – Initial (Ad Hoc)
Infrastructure is managed manually via scripts, UIs, or CLI tools.
There is little to no version control, documentation, or standardisation.
- Provisioning is inconsistent and error-prone
- Infrastructure changes are made directly in live environments
- No repeatability or history of changes
- Environments drift over time, leading to unreliable deployments
- Recovery from failure is slow and unpredictable
Level 2 – Managed (Emerging Practice)
Some teams begin managing infrastructure using scripts or templating tools, but adoption is fragmented.
- Shell scripts or cloud provider templates are used sporadically
- Infrastructure artefacts may or may not be version controlled
- Naming conventions, tagging, and environments are not standardised
- Some repeatability exists, but fragile and undocumented
- Infrastructure provisioning may still require manual intervention
Level 3 – Defined (Standardised)
IaC is adopted across teams using declarative tools (e.g. Terraform, Bicep, Pulumi, CloudFormation).
Environments are reproducible, traceable, and consistent.
- All infrastructure definitions are version-controlled and peer-reviewed
- Environments can be reliably rebuilt from code
- Standard modules and reusable templates are developed and maintained
- IaC is integrated into CI/CD workflows for consistent provisioning
- Developers and platform teams collaborate on infra-as-code patterns
Level 4 – Quantitatively Managed (Measured & Controlled)
IaC is governed with metrics, policies, and observability.
Infrastructure delivery becomes predictable, fast, and secure.
- Drift detection and change tracking are automated
- Metrics track provisioning time, change failure rate, reusability, and cost efficiency
- Policy-as-code tools (e.g. Open Policy Agent) enforce compliance automatically
- Reusable modules follow versioning and semantic release principles
- Teams monitor usage patterns and optimise environments proactively
Level 5 – Optimising (Continuous Improvement)
IaC is a foundation for scalable, resilient, and self-healing infrastructure.
It continuously evolves to support business agility and platform engineering excellence.
- IaC supports ephemeral environments, dynamic scaling, and autonomous recovery
- Feedback from production drives infrastructure evolution (e.g. autoscaling tuned via usage patterns)
- Teams experiment with advanced provisioning patterns (e.g. GitOps, declarative pipelines)
- IaC practices are democratised across teams via platforms and self-service portals
- Infrastructure contributes to innovation and product velocity, not just operations