Automated Deployments and Automation in General is Essential

It’s 02:00 in the morning, I’ve been up for more than 14 hours now. I’m still manually deploying latest services and application. It’s my first time deploying some 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 most issues are caused by missing steps 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, we all know what the easy way is. It’s automation. As suggested by Pragmatic Programmer book, it’s essential that we take advantage of automation as much as possible. Yet we are manually deploying code, WHY? Well in my previous team the excuse was, we don’t have time to create automation scripts. OR Our suite of services and applications are too complicated to be automated. Fair enough, in the beginning, this might be true, 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, in fact, 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. Example, the images throughout my blog have a filter added to them, they are the same size and were uploaded automatically to my server. I created a script, which does this.

How have you used automation for your benefit? Please kindly share your experience below in the comments section?