Continuous Deployment, Delivery & Integration - DevOps 101
It may be an overused pun by now, but programmers have their own language(s). Beyond the basics of learning to code in Ruby, Go, Javascript or other programming languages, there are also unique processes used by development teams to build, ship and improve products that are used by millions of people around the world.
So, for those of you who may be interested in joining a development team, we're deciphering the buzzwords in this DevOps Primer on Continuous Deployment, Continuous Delivery and Continuous Integration.
If you're interested in becoming a developer, or you're already part of a small dev team, this post will help break down key devops deployment processes so you can get better results, faster.
What Is Continuous Deployment?
For those looking for a simple Continuous Deployment definition, here goes: Continuous Deployment is a software development practice where all code changes, whether they are new features or bug fixes, are automatically built and pushed to multiple staging environments - including production. It's similar to Continuous Delivery, which we'll discuss in greater detail below, but doesn't rely on someone manually green-lighting and pushing code changes to the servers.
Pros of Continuous Deployment
The major advantage of using Continuous Deployment is that it provides greater reliability and a more efficient workflow - a key advantage when you're working with a 'move fast and break things' team mentality. Using Continuous Deployment tools to automate tasks like code minifying, asset building and review that historically required a lot more manual involvement frees up the team to continue coding, saving time and resources. And should a deployment prove to be problematic, these deployment tools make it much easier to rollback to a stable previous version.
Cons of Continuous Deployment
Of course, bugs happen. Or maybe you work with a manager who prefers a more old-school, 'check and double-check everything before it's shipped' approach. Not that long ago, most software companies released product updates on a yearly basis, giving development and QA teams plenty of time to test, fix, and test code again before shipping to users. Continuous Development is generally not willingly embraced by managers that still hold this mindset, as they'd prefer to ship a perfect product every time.
What Is Continuous Delivery?
The goal of Continuous Delivery is to always have code available to deploy at any given moment. Smaller sprints means a faster turnaround in identify and fixing bugs resulting in a more stable code base. Continuous Delivery software utilizes automation to make the process itself more efficient, but does require human intervention at a key point in the process.
Pros of Continuous Delivery
Instead of waiting week or months for new features, as happens with the traditional waterfall method, continuous delivery shortens the time to days, if not hours. And having a more stable code base is music to any programmer's ears.
Cons of Continuous Delivery
Unlike Continuous Development, requires a developer to approve the releases and then push the changes into production. The reliance on human intervention can cause a bottleneck - and for products in competitive markets, this can put teams at a significant disadvantage.
Continuous Integration
The idea behind Continuous Integration is to further increase speed to market by automating the testing process after each code change. With this process, developers define a set of tests where in order to continue with deployment, the code should pass all tests as defined.
Usually the tests are separated in two parts, the UI testing and the unit testing. The UI, or user interface, testing focuses more on how things should work from a user's perspective. Does the button work? Does the content make sense? Are all the links active? Unit testing focuses more on low level code testing that is necessary for developers. Unit testing is typically run after each code change to ensure everything works as it should.
But according to a report in SD Times, the majority of developers aren’t using Continuous Delivery. Small development teams can find Continuous Integration overwhelming and too much work to set up. If you’re a development agency focused on Wordpress, Shopify, or other platforms, without the right tools, Continuous Integration may be more trouble than it’s worth.
Continuous Deployment vs. Continuous Integration vs ... Well, what should you choose?
Obviously, we're biased, because making code deployment easier is what we do. But we'll be honest, for a lot of teams deployments can be a lot more stressful and a lot less easy than they would be if they were using a trusted process. Staying up biting your nails until midnight might seem like fun when you're shipping V1, but are you going to feel as enthusiastic about late night coffee runs when you're shipping V6.2? Likely not.
Those extra steps - like minifying code, updating assets on a CDN, installing dependencies, compiling, running a test suite, etc. - those all take time and attention you might not be able to provide if you're not using code deployment tools that automate these processes. Your team may not need a full Continuous Integration process, and the additional complexity that requires, but if you'd like a deployment process that's easier, faster and simpler - DeployBot is here to serve. So you can deliver stable code, and create happier users, with a lot less stress.