We have spoken several times about the Big Bang event that a deployment is. This is something that I always try to avoid when I set up a new system: releases should be smooth events that can be done at any time without effort and you should be able to roll back within minutes with little to no effort.
This might be a gigantic task, but once you provide a solid foundation to your engineers, marvelous things happen: they start being more efficient. If you provide a solid base that will give them confidence that within a few clicks (or commands) that they can return the system to a stable state, you will have removed a big part of the complexity of any software system.
Let's talk about statistics. When we are creating a deployment plan, we are creating a system configured in series: it is a finite list of steps that will result in our system being updated:
- Copy a JAR file into a server
- Stop the old Spring Boot app
- Copy the properties files
- Start the new Spring Boot...