Zero-downtime deployment with Terraform
As discussed in the previous recipe, changing certain properties of resources described in the Terraform configuration can lead to their destruction and subsequent recreation. Resources are destroyed and recreated in the order in which they depend on each other (if they do). The default behavior when recreating a resource involves first destroying the old one and then creating a new one, and for certain resources in a production context, during this time period, this will lead to downtime, that is, a service interruption. This downtime will be greater or smaller depending on the type of resources that have to be destroyed and then recreated.
For example, in Azure, a VM takes much longer to destroy and rebuild than a Web App or a Network Security Group (NSG) rule.
In Terraform, there is a mechanism that allows for zero downtime and therefore avoids this service interruption when deleting a resource.
In this recipe, we...