DevOps is an evolving philosophy and framework that encourages faster, better application development and faster release of new or revised software features or products to customers.
The practice of DevOps encourages smoother, continuous communication, collaboration, integration, visibility, and transparency between application development teams (Dev) and their IT operations team (Ops) counterparts.
This closer relationship between “Dev” and “Ops” permeates every phase of the DevOps lifecycle: from initial software planning to code, build, test, and release phases and on to deployment, operations, and ongoing monitoring. This relationship propels a continuous customer feedback loop of further improvement, development, testing, and deployment. One result of these efforts can be the more rapid, continual release of necessary feature changes or additions.
Some people group DevOps goals into four categories: culture, automation, measurement, and sharing (CAMS), and DevOps tools can aid in these areas. These tools can make development and operations workflows more streamlined and collaborative, automating previously time-consuming, manual, or static tasks involved in integration, development, testing, deployment, or monitoring.
Along with its efforts to break down barriers to communication and collaboration between development and IT operations teams, a core value of DevOps is customer satisfaction and the faster delivery of value. DevOps is also designed to propel business innovation and the drive for continuous process improvement.
The practice of DevOps encourages faster, better, more secure delivery of business value to an organization’s end customers. This value might take the form of more frequent product releases, features, or updates. It can involve how quickly a product release or new feature gets into customers’ hands—all with the proper levels of quality and security. Or, it might focus on how quickly an issue or bug is identified, and then resolved and re-released.
Underlying infrastructure also supports DevOps with seamless performance, availability, and reliability of software as it is first developed and tested then released into production.
There are a few common DevOps methods that organizations can use to speed and improve development and product releases. They take the form of software development methodologies and practices. Among the most popular ones are Scrum, Kanban, and Agile:
Followers of DevOps practices often use certain DevOps-friendly tools as part of their DevOps “toolchain.” The goal of these tools is to further streamline, shorten, and automate the various stages of the software delivery workflow (or “pipeline”). Many such tools also promote core DevOps tenets of automation, collaboration, and integration between development and operations teams. The following shows a sample of tools used at various DevOps lifecycle stages.
DevOps practices reflect the idea of continuous improvement and automation. Many practices focus on one or more development cycle phases. These practices include:
DevOps proponents describe several business and technical benefits, many of which can result in happier customers. Some benefits of DevOps include:
Many DevOps methods for streamlining software development and deployment have an early basis in agile software development and lean programming. But DevOps originally evolved from several grassroots movements to harmonize the activities of developers and their operations team counterparts.
The early 2000s saw the need to maintain availability of popular websites such as Google and Flickr against massive hits. This need led to the use of software reliability engineers (SREs)—operations people working closely with developers to ensure that the sites would keep running after code was released into production.
In 2009, Flickr engineers John Allspaw and Paul Hammond presented their own DevOps-like methodology at a conference. Their presentation was entitled “10+ Deploys per Day: Dev and Ops Cooperation at Flickr.” The same year, Patrick Debois organized the first “DevOps Day” in Belgium. A #DevOps hashtag was also incorporated and gained momentum as more DevOps Days were held around the world.
Over the coming years, industry and open-source tools and frameworks were developed and proposed to further the goals of DevOps.
NetApp helps promote better business outcomes with DevOps: Operations teams deliver automated infrastructure with less engineering, and developers create in reliable and predictable environments with less friction. With NetApp® technology, you can confidently deliver the services and capabilities your organization needs to maximize developer productivity in both on-premises and cloud environments.
NetApp makes it easy for developers, testing, QA, and operations teams to consume infrastructure resources (such as persistent storage volumes) as code, all from within familiar tools in the DevOps pipeline. Examples include NetApp storage APIs and IAC integrations with tools such as Puppet, Ansible, Docker, Kubernetes, and OpenShift.
But NetApp doesn’t just make it easy for developers to consume storage as code. NetApp technology also allows operations to confidently provision and deliver resources to development and testing personnel. Developers and testers can then accelerate coding and test cycles by self-provisioning fast, time-saving storage features, such as snapshots or clones. With these features, copies of real-time production data or code sets can be provisioned as code in mere seconds or minutes to speed development and QA workflow. Learn more about why NetApp is made for DevOps.
NetApp commitment to the community extends into thePub. This developer community encourages collaboration, shares tips and tricks, and debates ideas around the latest DevOps practices and protocols.
DevOps culture focuses on small interdisciplinary teams that can work independently and are jointly responsible for the user experience delivered by a software product.