Uncategorized

Unanticipated Benefits of Continuous Deployment

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.

Until we figure out making robots write our code, I think this is the best we can do.

Until we figure out having robots write our code, I think this is the best we can do.

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 62140036automatically. 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.

Katie from our marketing team writing and deploying code to jana.com.

Katie from our marketing team writing and deploying code to jana.com.

If you want to learn more about how things work at Jana, get in touch. We’re hiring!

Discussion

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s