DevOps is a relatively new and innovative method for building and delivering quality software.
DevOps has come a long way since it emerged more than 10 years ago. Systems administrators wanted to keep up with more efficient Agile product development teams, which were creating production-quality software more frequently. Teams were getting better at delivering software, but bottlenecks remained in the rest of the value stream, in areas like up-front planning and the deployment and management of systems in production. Back then—and even now for many organizations—these bottlenecks caused friction between development and operations teams. Andrew Clay Shafer and Patrick Debois have been credited with coining the term DevOps in 2008, and the concept took hold with the first DevOpsDays event in Belgium in 2009.
Implementing DevOps is not just about tools; it is also about the way people work and the processes they use. DevOps breaks the historical silo between the engineering teams creating an application or service and those responsible for running that service in production. Processes and work align to the entire lifecycle of the products and services and all that is needed for their delivery and operation.
Ideally, one team manages all aspects of the service, including security and testing functions. In larger organizations there may still be some functional specialization, but it remains critical that the process and communication are focused on the end-to-end delivery of the entire service. This product-centric view can be based on something as simple as a microservice or a more complex set of deliverables that comprise a release (the circumstances and the end customer often make that determination). Over time the goal is to continue to make smaller changes and to iterate more rapidly.
The new processes and teams leverage as much automation as possible and technologies that facilitate the end-to-end connection of the product lifecycle, including the all-important feedback loop from the customer to the team.
DevOps is important because it has the potential to help an organization differentiate itself from competitors by responding more rapidly to business demands. DevOps is a new and better way of building software with improved collaboration end-to-end, not only between development and operations teams, but also collaboration with disciplines such as security (sometimes referred to as DevSecOps), testing (quality assurance or QA), version control, and cross-team collaboration capabilities such as ChatOps. DevOps results in a better software product and more successful implementations.
At its core, DevOps is a best practice. It was conceived on the premise that application and service delivery organizations work best when software development teams are really collaborating and doing continuous integration and continuous delivery (CI/CD). That means that at the end of every iteration, no matter how short, the software is production-ready—even if it isn’t always deployed in production each time.
Large organizations undergo DevOps transformations to solve a common and fundamental problem with enterprise software creation. When developers create new software, they are coding and testing it in a developer environment, which is offline and lets them troubleshoot bugs, tweak code, and refine requirements without endangering their business, government agency, or medical or educational institution.
However, when it's time to deploy the new software or code into the real-world environment, issues arise, because the developer environment is not exactly the same as the ever-evolving production environment. This can cause some real heartburn or even heartbreak. Deployment failures can lead to problems that cost a lot of time and money to fix. Historically this issue was made worse by large numbers of changes being rolled up into infrequent releases.
The operations teams are responsible for ensuring that products run reliably in production with the right checks and balances in place to ensure reliable deployment. Friction can arise between operations and the development teams trying to iterate and get their code changes into production as fast as possible.
A DevOps-based delivery pipeline is all about getting developers and operations staff to:
Work together better
Think and act on the same wavelength
Remove barriers and siloed structures
Focus on QA, version control, configuration management, and release management as a connected, continuous delivery activity, often referred to as a value stream
By integrating development and operations teams and adding automation, organizations can improve collaboration, work culture, and ultimately productivity. DevOps integration is based on automating infrastructure and workflows, allowing for the continuous delivery of applications into production, and constantly measuring application performance.
Automation is a key best practice of organizations that use a DevOps model. Automate as many tasks as possible, especially:
Code-functional, user, and security testing
Workflows, including stage gates and releases
Infrastructure implementations and changes
Validation of configuration management changes
DevOps offers a large competitive advantage via automated code functions that occur throughout the software development lifecycle. However, automation only happens if the teams know that automation capabilities are available, and that many previously manual functions are increasingly automated, such as ITIL change management. Automation can significantly improve the developer experience by freeing developers from administrative tasks.
Another DevOps best practice is for developers to write software in small chunks that can be integrated, tested, monitored, and rolled out within hours. This improves on the old way of spending weeks or months to write and test large volumes of software code. Development teams can be more responsive to the needs of the business, and there’s less chance of a major outage caused by a larger release with many changes. Also, it’s easier to revert a small change if something goes wrong in production. This best practice applies whether you’re using new cloud-native technologies or more traditional infrastructure.
Not all projects can be delivered in more frequent small chunks; sometimes it’s still logical to group changes together into larger or less-frequent releases in a larger DevOps lifecycle. However, DevOps teams will operate on the principle that their code is instantly deployable.
While most companies have gained considerable experience in Agile development and are experimenting with or fully investing in DevOps principles, some believe that DevOps isn't ready for prime time in larger organizations. This belief stems from a number of factors, including the requirement that adopting DevOps can require major changes in organizing people, processes, and technology. The other factor is that almost all large enterprises are subject to a wide range of regulations, especially when systems touch financials, personally identifiable information (PII), or healthcare data. The regulatory environment for large organizations is why they have strong controls in IT operations for releasing application updates. These controls are ripe for automation, as they have been based on manual processes.
As DevOps implementations continue, and as experience and automation grow, DevOps will be used more often for addressing real-world issues and business problems. And when people see how they can balance speed and agility with regulation and control, they’ll be more than ready to create truly new software functionality. Successful DevOps practices rely on a core appreciation of this reality and can make people more productive, because the “plan, build, run” systems operate more efficiently.
You can spread DevOps methodology across your organization intelligently, taking the risk out of working quickly, and minimizing friction between IT operations and development teams. Large enterprises that rely on strong controls for business continuity can leverage emerging technologies such as value stream management (VSM) to help them make the transition.
A well-run DevOps team iterates quickly and provides benefits in some very basic ways: smaller and more frequent software releases delivered on time or ahead of schedule and with fewer problems in production. Even if bugs are found in production, they are fixed more quickly, and the team learns and improves by leveraging the data available through collaboration and value stream management.
Good DevOps teams deploy code many times faster than lower-performing peers, and they experience fewer failures. The transition to DevOps encourages a continuous improvement mindset across the organization, because everyone involved has access to information about the complete lifecycle. Also, the emerging AI capabilities in DevOps will lead to even more efficiencies through automation and improved reliability.
There is an obvious business case for DevOps, but rolling it out may be a leadership challenge you didn't expect. It takes good preparation and persistence for companies to go from waterfall to Agile software development and on to adopting DevOps. However, the rewards can be impressive.
Many DevOps best practices help improve stability. One example is the focus on making smaller changes that are unlikely to cause major outages; they can be quickly and often automatically reverted if something goes wrong. The continuous integration process of DevOps helps to ensure that code changes are appropriately combined and tested, and the application of policies and tools can eliminate issues as early in the cycle as possible.
The 2019 Puppet State of DevOps report shows that a strong DevOps foundation makes security simpler and more reliable to implement. Security becomes a part of the DevOps team in the same way as code development, testing and operations. Collaboration improves, and security is inherent in the process.
Working in smaller iterations and in combined end-to-end teams means that changes can be implemented more quickly, and the teams become more responsive to the needs of the business. The overall time from the initial idea through to the change appearing in production can be significantly shortened, meaning a faster time to value.
The benefits of DevOps are all heightened by improved collaboration and communication. Developers get direct feedback on the performance of their work in production, and operators have more insight into what is being delivered and why. All those involved, including security and quality assurance, have the opportunity to share and refine their policies through the support of the entire team.
It isn’t easy getting developers and operations teams to work together, to quickly build, and to release code into production. DevOps is heavily reliant on cultural and process changes, along with the availability of the right DevOps tools. Many IT, engineering, and business unit leaders at large organizations understandably get anxious when planning for such a transition. However, the business case for DevOps is compelling, and products like ServiceNow DevOps simplify the workflow. There's simply no reason for any organization to shy away from a DevOps deployment.
Expand DevOps success across the enterprise. Take the risk out of going fast and minimize friction between IT operations and development.