Issues with Configuring Infrastructure Manually

This lesson will cover the disadvantages of configuring infrastructure manually.

Working with environments

Frequently, it seems that every environment (Dev, QAT, Staging, Production, etc.) has its own personality. You may be working to test a feature on QAT and hear “oh, that never works on QAT. We will have to check that on staging” or “Production is the only environment with a load balancer, so that’s why we never spotted the bug before.” When humans are responsible for keeping environments in sync, things fall between the cracks and environments tend to drift apart. It is also a lot of manual work to constantly apply changes to each environment. Maintaining environments with different infrastructure causes several issues, including only being able to find bugs in a certain environment and make development hard as you are never testing being unable to test against production-like infrastructure.

Manual infrastructure configuration drawbacks

Configuring infrastructure manually is very error-prone. If you want to try out a new infrastructure configuration, you have to change the environment by hand. If the change is correct, you have to remember what steps were involved in making that change and then manually apply them to your other environments. If you do not like the change, you have to remember how to roll the environment back to its original state. Since the process is manual, the changes are often not made the same to each environment which is one of the reasons that environments end up differing and have their own personalities.

Configuring infrastructure manually is very error-prone

Time consumption

It is very time-consuming to make changes manually. If you have several environments and the change is quite complex, it can take days to roll that change to each environment.

Destroying infrastructure

If you have an unnecessary environment, destroying it can be very painful. For starters, you have to destroy the infrastructure in the correct order, as you often cannot destroy a piece of infrastructure if another piece depends on it. You end up becoming a human dependency tree calculator. More often than not, you will think that you have finished destroying the environment only to get a bill from your cloud provider the following month for a piece of infrastructure that you accidentally left running.