Agile development has become the core methodology for software development projects. The majority of technology teams now use Agile to some extent. However, as the speed of business continues to increase, new methods are required to get the work of the development team out of the door and into the hands of your customers – this is where DevOps comes into play.
DevOps is a continuation of Agile. While it has been defined in many different ways, here at Belatrix we prefer the simple definition, first suggested by the developer evangelist, Dustin Whittle, of:
“Developers working together with operations to get things done faster, in an automated and repeatable way”.
Well-known companies from ING to Walmart to Etsy have highlighted the effectiveness of DevOps in reaching their business goals. The Dutch bank, ING, has emphasized the role of DevOps in its digital transformation and how the bank is adjusting to a digital, mobile-first world where its customers have very different expectations than they did just a few years ago.
TechBeacon reported how easy transitioned from its previous Waterfall approach, and now deploys 50 times a day to production, with a fully automated deployment pipeline. A few years ago when Amazon was one of the first companies to make the transition, it reported at the time that it was deploying code every 11.7 seconds.
But it’s not just established, large enterprises that are benefiting. Start-ups are also well positioned to implement and take advantage of DevOps.
A few years ago organizations would consider 3 or 4 releases a year to be normal. The technology team would prepare well in advance, and all hands were on-deck at the time of release.
However, the world has changed. In a digital, mobile-first world, businesses can no longer wait several months to get new features or updates into the hands of ever demanding customers. Software deployment frequency is constantly under pressure to increase. The 2017 State of DevOps report by Puppet highlighted that high performing IT teams deliver 46 times more frequent code deployments, and have 440 times faster lead time from commit to deploy, than their lower performing counterparts. In 2017, high performing technology organizations are deploying on-demand, multiple times a day. This compares to once a week or once a month for low performing organizations.
Product development teams have, for a long while now, realized the importance of having one team responsible for the product, through its entire lifecycle- from the initial ideation phase, through to development, deployment, and ongoing updates and maintenance. DevOps takes this philosophy even further, by focusing on creating cross-functional teams, where developers and operations work side-by-side.
Reducing or removing these organizational silos means the team better understands the consequences of their actions, reduces communication problems, and ultimately improves both the quality and speed of software development.
Indeed, the implementation of DevOps can help in creating a product-centric culture for organizations. But what do we mean by a product-centric culture? We mean an organization which is close to the customer, and values customer insights which feed into the product development process. DevOps enables you to test new ideas quickly, and see if they work- and if they fail, to move on quickly. Ultimately it means the organization is laser-focused on creating great products- and for a software organization, that means creating innovative, easy-to-use software and applications that your customers love.
A fully automated deployment pipeline is the only way to effectively deploy over 1,000 times a year (assuming multiple deployments each day, 365 days a year). In order to achieve this, organizations do need to invest in some tools. Belatrix can provide guidance and advice on tool selection. When choosing which tools to implement it’s important to consider their benefits/ trade-offs, for example if you have a preference towards open source or proprietary, how simple is it to use versus your ability to customize it, and whether you want to host the tool in your own datacenter.
Unfortunately there is no single tool which will enable you to do everything from configuration management (infrastructure as code), to provisioning servers, to automatically deploying code. But here is a brief overview of some of the key tools which you should consider:
The implementation of these tools also means you can assess your organization and your software performance on different metrics, than traditional approaches. Indeed implementing DevOps actually requires organizations to use a different set of metrics to measure performance. For example, by using a continuous testing tool, such as Jenkins, you can continually evaluate code quality. Organizations that have successfully implemented DevOps bring these metrics together, so that stakeholders ranging from the CTO to individual team managers can review performance
Many of the techniques and tools used in DevOps have been around for a long time. Much of DevOps is not “new”. However, one of the main reasons proponents talk of DevOps as a journey, is because the biggest challenge and the biggest change that is required, is the shift in people’s mindset and the cultural change that it entails. And it’s to this topic that this paper now turns.
The biggest challenge to overcome is the cultural shift required While choosing the appropriate tool is important, one of the hardest parts of implementing and then standardizing DevOps is the cultural change that this involves. This cultural change can be amplified, as individuals may fear losing their jobs to automation. Managers and executives need to take the time to explain the impact and ramifications to individuals whose jobs are changing. Companies that have successfully made the change took the time to engage everyone who would be impacted, and explain the benefits as well as the potential challenges. The cultural shift was used as a way to bring teams together. In addition individuals saw this as an opportunity to advance their own skills, and take advantage of additional training that the organizations were offering
In this paper we have referred several times to “DevOps teams”. It’s important to note however that simply merging developers and operations together, and creating another distinct organizational silo, misses the fundamental transition which is needed. As this blog explains well, what is required is the removal of silos, and making sure developers and operations professionals understand how their work (and expertise) impacts the other.
This paper has examined how DevOps can help organizations improve efficiency, breakdown organizational siloes, and get products to market faster. But are we already on the path to what some analysts are calling “NoOps”? The idea behind NoOps is that in order to improve the release of applications, developers never need to speak to operations as they automate everything, from deployment, monitoring, to the management of the application. This represents a continuation of the idea behind DevOps, which is to use automation to get things done faster, and in a more repeatable way. We’re already seeing the start of this with the emergence of “serverless” computing. However, as of today, most organizations are continuing in their Agile and DevOps journeys, and realizing the benefits that both these key methodologies can provide.