Problems in the Past

Learn about major deployment issues in the past.

We'll cover the following

Nonuniform servers

In the past, it was common just to create infrastructure. One of the sysadmins would get a server and install and configure everything. Once that was done, others would be able to use it. This had several consequences:

  • The process took anywhere from hours to days or even months.
  • All the servers were different, and over time, organization ended up in such a state that no one knew for sure what was in each of the servers.
  • Everything took so long that we’d order more than we needed to avoid a long waiting time when our needs would increase. It was a mess, and it was painful.
Configuration server

Over time, people realized that it was a bad idea to secure shell (SSH) into a server and “fix it.” We had undocumented and unreliable infrastructure, so we thought it would be good to document everything. That created more overhead while not resulting in improvement. The only tangible effect was an increase in the effort and even less reliable infrastructure. We expected that the documentation would be accurate, while, in reality, the documentation could become inaccurate in a matter of days, or even hours. It was enough that one person does something somewhere without updating Wiki pages, and the whole idea would turn into a miserable failure.

Defining scripts

From there, the industry started using scripts. In other words, instead of reading instructions and copy/pasting commands and configurations, we’d define (almost) everything as scripts. The instructions become a list of entries like, “To do this, execute that script.” But this method also had problems because scripts were not idempotent, and they would work only on brand-new servers. They were suitable for installing something but not for upgrading.

Infrastructure scripts

So then we started creating more elaborate scripts with many if and else statements. “If this does not exist, then do that. If that does exist, and if it looks like this, then do something else.” This was also not an ideal solution because over time, the number of permutations become so big that maintaining the scripts became more difficult than just SSH-ing into a server and doing everything manually.