Tonight I tried to make romantic dinner conversation with my wife regarding the benefits of continuous website deployment. I know it’s hard to believe, but this topic did not have the desired effect. While extremely exciting for me, I came to the realization that what I was saying was filled with far too many nerdy details to keep most people interested… including my wife. She’s asleep now, but I want to show her, you, and this plate of pasta that continuous deployment is something everyone actually can be excited about.
So what exactly is continuous deployment?
A lot of developers, especially freelancers and those in small agencies, still use a very old and possibly dangerous method of making changes to clients’ websites. Just about every developer is guilty of it, there’s no denying that. We download files off a server, via File Transfer Protocol (FTP); make the necessary change; and then overwrite the old file on the website. This isn’t usually an issue, but when it is, it’s almost always bad.
About 8 years ago, this was my primary method of interacting with a website, and I remember exactly what changed my mind about using FTP. I was making some pretty hefty changes to a client’s website; instead of uploading the new copy of the website, I accidentally downloaded the website again… completely overwriting ALL of my changes–and hard work.
With continuous deployment we remove that risk, or worse, the risk of destroying files ON the web server by forcing developers and development teams to follow a workflow. Changes are made in way that all previous versions of every file are always available (using a version control software like Git or Mercurial). Once a new change is detected by the continuous deployment service, they are sent to a server to be tested and approved by the client and production team. Upon approval of all changes, they can be deployed to the live server quickly, without the risk of overwriting the wrong file, uploading a bug or a plethora of other possible issues.
That sounds romantic, but what are the benefits for your company?
There are actually quite a few benefits, but I really want to focus on 3 key benefits that I believe everyone can get behind:
In today’s world downtime is no longer measured in units of time, but rather in lost revenue. If something goes wrong with a website, it takes time to correct the issue, and that time converts in to lost revenue potential. Continuous deployment helps eliminate the vast majority of problems that arise which result in website downtime.
User Acceptance Testing
Continuous deployment allows for true user acceptance testing. When a change is made, it’s ‘deployed’ to a test site. The test site has a copy of the data from the live website, and also contains the new changes that haven’t been approved yet. Once tested and approved, the development team can merge those changes into the live site with little-to-no downtime.
Ability to Rollback
If something makes it up to the live website that doesn’t belong, or isn’t ready, the original version isn’t gone. The implementation of version control allows the development team to quickly and easily rollback to a previous version at a moment’s notice, and continuous deployment makes it just as easy to deploy those old versions.
Ok, sounds expensive…
Continuous deployment has been something implemented by large companies for quite a long time, until recently it was a painstakingly difficult and moderately expensive process to implement. But now it’s 2015, and thankfully there’s a cheap and easy solution available for any size time.
When my business partner and I started Kudu, I said from the start I wanted to do it right. For me, that meant implementing this kind of workflow for clients whenever possible. For several personal projects I had been using a service called Beanstalk, but it wasn’t as flexible as I wanted it to be. Recently, they launched a service called dploy.io, which allowed Kudu to use the version control system of our choice, or even integrate it with a client’s existing codebase, and still have all the benefits of continuous deployments.
Thanks to dploy.io and continuous deployment, I now have options instead of enjoying more pasta after lulling my wife to sleep with tech talk. Next time, I can test the topic in a text and, if she likes what she hears, I can deploy my full lexicon of tech geek over a romantic dinner.
Developers used to overwrite files directly on a client’s website server… this was generally considered a bad idea. With continuous deployment, we eliminate the risk that comes from having a human working directly in that environment, minimizing possible downtime. Also, we create an effective way to implement user acceptance testing, so that all changes can be previewed in a clone of the actual website. Finally, we safeguard everything with the ability to easily rollback to a previous version.