Idiot Proof Deployments
Deploying sophisticated software onto the internet is not easy. It involves lots of fine, intricate steps being executed in exactly the right sequence, and if any one of a thousand steps is not done in precisely the right order, the whole thing will fail. Knowing this, what do we do? We put a bunch of people on standby just in case anything goes wrong, and make sure that everyone is on a conference call and in a too-massive-to-communicate-effectively chat room at 2:00 am so that they can be Johnny-on-the-spot if something goes to wrong. Here’s a tip: If you are so nervous that something will go wrong that you need to have dozens of sleep-drunk people around ready to fix something they might have broken (or harass someone else who may have broken it) then you have too many damn humans involved in a process that needs to be fully automated.
Back to basics, so that we can convince yourselves that it’s really this easy. Back in the day, when you “deployed” a website, it was by FTP’ing static files. You connected to your server, and when you were ready, you dragged the files from the left side (your machine) to the right side (the remote machine). Presto! Your changes are live and you can go home! Total time of execution, around 5 minutes ’cause you were on dial-up and decided to use MASSIVE 25kb GIFs in your black-background-with-pink text ultra cool cyber web space site. You grew up, got a job at a large enterprise running a J2EE/Oracle stack, and for the first time learned of something called a “build process“. This build process – all by itself – took 15 minutes, and once you’ve built you are nowhere close to getting deployed. What’s even more depressing is that that’s usually the only thing that ever gets fully automated, mainly because we have to build all the time (hint).
From there on out it’s copy and pasting configurations no one else knows about, logging into administration consoles that you’ve only used a few times before, and hacking away at a command line like you were in a movie with Halle Berry. This is going to lead to a bad time, and it doesn’t have to be this way. If a computer is good at anything, it’s good at performing a thousand intricate steps flawlessly every time it’s asked to. All it needs is to be told what to do. If you’re not sure what to tell it to do, then you’ve got a another problem entirely, and having a dozen people on the phone at O-dark-hundred ain’t the way to figure it out.