Automated Deployments and Automation in General is Essential

It’s 02:00 in the morning, and I’ve been up for more than 14 hours now. I’m still manually deploying the latest services and application. It’s my first time deploying these services and apps because usually, other team members do it. We finish the deployment at 05:30 in the morning. We are all tired we go home and rest. We come in at around 11:00. There are some issues with various apps and services. We immediately start investigating. Deep into our investigation, we realise that missing steps caused most of the issues during the deployment. It’s simple things like updating the config or restarting the service. Surely there must be an easier way???

There is an easier way, and we all know what the easy way is. It’s automation. As suggested by¬†Pragmatic Programmer book, we must take advantage of automation as much as possible. Yet we are manually deploying code, WHY? In my last team, the excuse was that we don’t have time to create automation scripts. OR Our suite of services and applications are too complicated to be automated. Fair enough, this might be true in the beginning, maybe there is no time to put together automation scripts because we are trying to complete functionality ASAP. So we let it slip. On our first deployment, we deploy everything within an hour; therefore, we convince ourselves that we don’t need automation.

STOP, don’t fall into this trap, you will pay for it later, just like we did at my previous company.

My suggestion is to set time aside for automation, add this as a practice during development, similar to unit testing or CI (Continuous Integration). What I’ve started doing is automating whatever task I repeatedly do. For example, the images throughout my blog have a filter added to them and are the same size. Also, they have been uploaded automatically to my server. I created a script, which does this.