If your company produces software of any kind, you’ve probably at least heard the term DevOps. You may be aware that it’s often mentioned as being an offshoot of the Agile movement, or that it lines up with a lot of the Lean Software Development principles. But what exactly is DevOps, and how can it benefit your business?
What is DevOps?
DevOps is, at its core, a development and organization strategy that’s designed to make the release of software quicker and more efficient. The name comes from the core of the DevOps philosophy: integrating the Development and Operations teams so that they can work collaboratively and projects can move quickly through the product service lifecycle.
To understand this, some contrast may be helpful. In traditional approaches you have one team that works on a product prior to its release (development) and then a separate team that cares for it after release (operations). With DevOps those teams are integrated and parts of the development pipeline are automated to facilitate quickly pushing small changes from code to live release. Having one team that covers the entire code-to-live pipeline rather than having two teams that split the work allows new software versions to be published more quickly. Because they come more quickly, each new version typically contains fewer changes, meaning that users get more frequent and more stable updates.
If you’re coming from the perspective of a traditional setup, the biggest practical change when switching to DevOps is likely to be that your operations team will start using many of the same techniques your engineers are already using to do their systems work. Switching to DevOps also may mean you need to hire more “full stack” engineers who are capable of working on every stage of a project rather than just being pure code or pure server specialists (for example).
How can DevOps be used?
Let’s take a look at a real-life example to see how the DevOps philosophy can be effectively applied even at a giant company: Standard Bank. Standard Bank is a the largest bank in Africa, and it’s over 150 years old. As you might imagine, up until recently that meant that it was dealing not only with legacy systems but also with legacy mindsets among the staff – people who were used to doing things the old way, with a clear wall between development and operations.
The company wanted to move to a more fast-paced, agile method of software iteration, but it needed both the tools to implement that system and (more importantly) the cultural shift to get its mostly old-school staff to buy in.
The bank started by pulling together a small group of tech staffers who were excited about and had researched DevOps. That group defined some goals for their company’s new culture, and then got in touch with the folks from Chef, who provide DevOps tools and processes to business clients that help to automate the software delivery pipeline. After a little DevOps training with Chef, Standard Bank’s digital team was allowed to pick its own pilot project.
They picked internet banking, and formed an integrated digital team with no Dev/IT separation. In less than three months, they delivered a product that would have taken Standard Bank more than six months using its conventional development approach. More important, though, the new automated development pipeline and the new integrated, teamwork-focused culture have allowed Standard Bank to start pushing internet banking updates in minutes. Previously, it took the bank months to release updates for that platform.
Benefits of using DevOps
Obviously, the DevOps approach isn’t the perfect fit for every company or situation. But there are some fairly universal benefits to this system that make it appealing everywhere from giant companies like Standard Bank all the way down to nascent startups.
More deploys means a more quickly-improving product
Under a traditional development structure, pushing a single update might take weeks, or even months. But in a DevOps system, small updates can go from concept to live very quickly thanks to the integrated teams and the automated development pipeline. That means that your team can iterate on ideas very quickly. When something works, they can follow up with supportive updates that build and improve on that success. When something fails or underperforms, it can be spotted, improved, and re-released very quickly.
The end result of that faster iteration is an improved product. And the end result of that, of course, is happier customers!
No more tension between stability and features
Another problem with the traditional development structure can be that because updates are relatively infrequent, each release must balance the desire for new features with the need to keep your product stable. The more new things you add to a release, after all, the more there is that could go wrong. That means there’s always a tension between adding additional features and holding them back for the next round of updates to ensure your software’s stability isn’t compromised.
A DevOps approach eliminates this tension, because updates are small and far more frequent. In a scheme where you’re updating your app once each day, for example, you’re almost never going to include more than a single new feature in an update, meaning that it things go south you can quickly revert to the previous version without disabling other features, and without any confusion about which part of the new update caused the trouble.
More effective, happier employees
DevOps eliminates a lot of the waiting that’s associated with traditional development structures, because everyone on the team can be plugged in at any stage of the process. Instead of finishing their part of the project and then passing it off, team members can be active participants at multiple stages along the development pipeline.
That might seem like more work – and it does require a little more employee expertise – but many employees actually find this approach more satisfying. The variety of being able to tackle different challenges at various stages of a release makes each day more exciting. It also eliminates the monotony that can be fostered in a traditional development environment where each employee does the same kinds of tasks day after day.
DevOps isn’t perfect for every company, of course, and it does have its critics. But if you’ve need frequent updates, have trouble making release deadlines, are seeing increasing delivery costs, or haven’t automated your development-to-delivery pipeline, then DevOps could be the right choice for you.