What is DevOps
DevOps is an amalgamation of culture, process and tools that enables organizations to deliver applications continuously, frequently, and at high velocity. It also seeks to increase value generation by shortening the feedback loop between the business and its customers.
DevOps aims to improve collaboration between development and operations teams, which have historically operated in siloes.
“A model where teams work together to produce consistent, high-quality software that delivers business value using a set of processes that are integrated at every step together.”
DevOps views the software delivery process holistically, making it possible to quickly identify bottlenecks, risks, and inefficiencies. Processes like Continuous Integration, Continuous Delivery, and Continuous Deployment have arisen from this perspective, codifying processes that were previously done on an ad-hoc basis.
DevOps makes use of software tools such as Jenkins, Puppet, and Docker to replace repetitive and error-prone manual processes with automation, which improves efficiency and velocity.
The team gathers requirements from stakeholders and Subject Matter Experts (SMEs) and converts them into a requirements document or backlog of tasks. The planning must consider aspects like resource allocation, cost estimation, capacity planning, and project scheduling. Ideally, Project Managers and Developers will collaborate with Operations and Security to get multiple viewpoints on the project.
The specifications outlined in the planning stage are converted into a design plan. Rapid prototyping is often done during this phase, resulting in code that can serve as a starting point for the build phase.
Developers code and build the application or feature, with operations teams providing support in the form of environments and tools. In a DevOps environment, developers want to create working software as fast as they can, in order to get feedback and iterate quickly.
Developers / QA test for bugs in order to fix any issues before the feature or application is released to the public. Types of testing might include unit testing, integration testing, acceptance testing, etc. In a DevOps organization, testing should be mostly if not completely automated with tools like Selenium and Cucumber.
When it comes to large enterprises, test environments tend to sprawl and get out of control. Manual configuration management and change control processes are tedious, ineffective, and error-prone. It’s helpful to have a test environment management tool to increase visibility and test team efficiency.
The team generates a release plan and establishes a predictable delivery pipeline while also confirming that the software works as optimally in a production environment as it did in the development environment. In order to orchestrate release processes, track dependencies, and manage approvals, particularly for complex releases, often a release management tool is used.
The feature or application is released into production. Ideally, the deployment will be fully automated in a Continuous Deployment model. If not, a deployment tool that can plan, approve, rehearse, and coordinate go-live activities is the next best thing.
The software is monitored to ensure that it is being operated correctly, and any bugs or defects discovered in production must be reported and responded to in a timely manner.
It’s important to hold a post-release review and collect feedback on the process while it’s still fresh. However, this phase should not just take place at the end — rather, it should be integrated throughout the entire SDLC. The concept of continuous improvement is an important aspect of DevOps that aims to create a culture where anyone on the team can suggest improvements at any time. The key is to make ongoing iterative improvements to the development process, workflow, toolset, etc.
Value Stream Management is crucial during this stage because it allows you to gather the metrics necessary to evaluate performance, identify bottlenecks, and drive process improvements.“To successfully implement continuous delivery, you need to change the culture of how an entire organization views software development efforts.” – Tommy Tynjä
Origin of DevOps
In the early 2000’s, there was a building sense of frustration amongst those in the IT industry, caused largely by friction between siloed teams with separate objectives, leadership, and goals. Many sensed that there was a better way to work.
One pivotal moment in the early life of DevOps occurred when system administrator Patrick Debois, already fed up with the needless conflicts between developers and system admins, bumped into developer Andrew Shafer at the Toronto Agile Conference in 2008. The ensuing conversation resulted in the creation of the Agile Systems Administration Group, which aimed to foster collaboration between their respective professions.
At the O’Reilly Velocity Conference in 2009, John Allspaw and Paul Hammond gave a presentation entitled, “10 Deploys a Day: Dev and Ops Cooperation at Flickr.” The idea of dev and ops cooperation was gaining steam, and Debois was inspired to host his own event in Belgium later that year. That event, called DevOpsDays, cemented the term “DevOps” and served as a launching point for the movement.
In 2012, the State of DevOps report was launched by Alanna Brown at Puppet. It is an annual barometer for DevOps trends, attitudes, and adoption within the industry. Leaders like John Willis, Gene Kim, and Jez Humble have also been instrumental to guiding and shaping the growth of DevOps through the years.
From all indicators, DevOps has not yet hit its high water mark and continues to grow.
Why DevOps is so important
Software is fundamental to nearly every industry, and every company is now a software company — whether it wants to be or not. Every organization wants to get ahead on its digital transformation journey. In a society built around instant gratification, customer demands often have to be addressed in days and hours, not months. Translated into business terms, this means listening to the customer’s needs but also providing solutions at a pace that makes the customer more successful. This focus drives the need for development speed.
With the growing number of tools and methods available today, it can be challenging — especially for large, complex enterprises — to deliver software at scale and improve the customer experience at the same time. DevOps provides the means for achieving these lofty goals, allowing businesses to move faster and more effectively in order to deliver value to the customer. It’s a fundamentally smarter way of working.