What is Continuous Deployment?
Continuous deployment (CD) is the concept that all of your new code changes are released automatically into your production environment once you know it’s safe to do so. That “safe to do so” comes in the form of automated tests that have to pass before deployment can and will occur. While deploying new code all the time sounds sensible and straightforward, as your codebase grows in size and complexity it takes a lot of effort to make sure that it can be done reliably.
Why we do it
At Jana, we’ve invested significant effort in setting up and maintaining continuous deployment. We’ve written thousands of tests across our whole codebase that run each time an engineer pushes any new code. The reason we run so many tests is that it’s very challenging to always know exactly how a change you’ve made (even when it’s very small) will affect all of your other code. You might remove a block of code that you assume to be old and unused, but then it turns out that some other old code referenced it, and required those lines to work properly. If you have a test written to check that functionality, then it will fail and you’ll know that you need to fix your change (or sometimes update a test). Once all tests pass without errors, code can and will deploy automatically. The reason that we’ve prioritized this process is that it makes us much faster and more efficient than we would be otherwise.
Where we are now
Continuous deployment is a goal of many technology companies, and we’re very happy that we’ve been able to to make it happen, even at the scale we’re experiencing. Recently, we’ve experienced a benefit of CD that I don’t think we initially anticipated. We have an amazing (and fast growing) engineering team, but as with any organization our resources are constrained. There are only so many hours in a day, and so many days in a week to get projects done. Where we’ve gotten to now is that our continuous deployment process has made it possible for even non-engineers to deploy code to our production servers. Our marketing team has regular changes that they would like to make to our website http://www.jana.com, but finite engineering resources mean that sometimes those changes don’t happen as fast as the team would like. Because of our test coverage and a CD pipeline that doesn’t require advanced technical knowledge to utilize, our marketers can make changes to our website code without needing an engineer’s help. Every time we see the deploy kickoff because of changes by one of our marketers, we all smile. We’ve spent a lot of time and effort to make our deployment process smooth and reliable, and now we’re seeing huge benefits on a daily basis.
If you want to learn more about how things work at Jana, get in touch. We’re hiring!