Infrastructure as Code
A key part of any solution is the infrastructure that runs it. We're most often leveraging the cloud and we have many options available to automate the provisioning and updating of the resources we need to run our software.
Infrastructure as code is considered a key practice in enabling DevOps and we can use tools like ARM templates or Bicep, Azure CLI, PowerShell, or Terraform to leverage automation and remove manual steps from our infrastructure management processes. This has a number of benefits:
- changes to environments can go through the same code review process as our code (GitOps), enabling anyone to propose changes but also limit who has direct access to production environments
- all environment changes are auditible through source control history
- environments can be torn down when not needed and recreated easily
- environments can be migrated to different locations and recreated in new cloud subscriptions without effort
- dev/test/prod environments can be more consistent since they were generated the exact same way