What is DevOps, and Why Now?
I thought we were still doing Agile?
Join the DZone community and get the full member experience.Join For Free
Although the term “DevOps” has been around for a decade now, it seems as though we’ve reached an inflection point in terms of industry-wide acceptance and interest. There’s been an increase in DevOps-related conferences, organizations, and books, and a recent report by Evans Data found that 77 percent of the industry has incorporated DevOps into its planning and processes. Nevertheless, there still remains quite a bit of confusion on precisely what DevOps is. This is not surprising, as it’s a culturally rendered term that has a different meaning for everyone.
If you are still early in your DevOps journey, this blog can help by offering a working definition of DevOps, alongside some of the key objectives, features, and benefits.
A 1-Minute History of DevOps
The conditions of possibility for DevOps have materialized, technically, theoretically, and culturally. DevOps emerged originally from what’s been termed a convergence of theories and practical advances in manufacturing (such as the Toyota Production System and the Lean Manufacturing management philosophy) and in software development, such as the Agile movement. Technically, we’ve witnessed a massive paradigm shift in the last 15 years with the emergence of virtualization, truly distributed systems, and the cloud, which have reset expectations at every level both for external and internal customers.
Users and consumers expect everything on demand — for this generation of developers and engineers, that means they expect near-instant access to the resources they need to develop new apps — long waits, downtime, and change controls are unacceptable. They are accustomed to tools that allow easy version control and collaboration. Business apps should behave like mobile apps, and you should pay only for what you use.
To remain competitive, companies must be able to run their business anywhere, anytime, at any scale — and fast. What’s fast? If it takes you more than a minute to implement a code change — yes, a minute — then you’ve got a bottleneck. The world’s most advanced companies ship hot fixes hundreds, even thousands, of times a day, and it’s invisible to users.
The competitive advantages of agility — faster time to market with better, more innovative products and services — are why developers and engineers deserve credit for the lion’s share of value for the world’s most profitable companies. How do you unleash the full value of your developers and engineers? DevOps. When fully realized, DevOps enables non-disruptive innovation at scale, anywhere in the world.
What is DevOps?
We posit the following as a working definition of DevOps:
DevOps is the process of removing all friction between the developer and customer value.
DevOps may be seen as an art, a practice, a movement, and a value system, or some combination of all of these perspectives.
The key terms in our working DevOps definition can be understood as follows:
- Value: typically, the products and services customers use.
- e.g., software or a web site.
- Customer: a value consumer.
- e.g., target audience or end user.
- Developer: value creator and contributor.
- Friction: anything that slows, diminishes, or reduces the value delivery.
- e.g., manual hand-offs, separation of duties, silos of responsibility, or isolation from the entire value stream.
- Process: the methodology to accomplish work
Putting all of the above together implies that DevOps is a dynamic system that expands or shrinks to the capacity of the people who practice it. This is what makes a universal, static DevOps definition so hard to create. It also gives the DevOps movement increasing power: it’s a process that will change and grow over time.
Generally speaking, DevOps attempts to bridge the gaps in traditional organizations that interfere with delivering value to customers. When we realize customers are both internal and external, any portion of the entire value stream can be examined, measured, and improved. By measuring customer impact, we can create rapid, seamless feedback loops to drive continuous learning and improvements — ushering in bi-directional value flow. DevOps works to remove division of responsibility and to enable collaboration and automation — often realized through small, cross-functional teams across traditional silos — thereby achieving both agility and scalability for any organization.
Benefits of DevOps
Traditional engineering team silos and tools end up fostering counter-productive practices.
For example, every utterance of these phrases:
- “It worked on my laptop.”
- “That’s not my problem!”
- “I don’t do that, somebody else does.”
- “You can’t have access to that.”
are cultural indicators that a DevOps approach is needed. The DevOps goal and practice of removing friction identifies cultural and technical debt, the artificial separation of responsibilities, and barriers to automation in the organization.
The relentless pursuit of DevOps results in tangible and essential benefits for improving customer value:
- Rapid release: Automated testing and product release, all the way from the developer source code check-in to the customer in production.
- Fail fast and fix fast: Understanding the health and business impact of a release for customer interactions allows automated deployment (and revert) strategies to reduce risk while increasing customer delivery tempo.
- Closed-loop design and testing: Every change is an opportunity to learn and experiment; every gap or mistake an opportunity to improve testing, instrumentation, and automation. Automated operations allow monitoring systems to trigger healing.
- Democratized access and self-service: Full service, ephemeral environments and stacks exercising the entire value stream can be created ad hoc by developers, testers, and operations to build and test systems.
Agility and scalability of infrastructure, architecture, operations, and culture via governance and best practices are among the key organizational accomplishments of the DevOps process.
DevOps Tools and Best Practices
While the field of DevOps is evolving rapidly, we have crystallized many practices, including the following topics that enable automation, collaboration, and closed-loop feedback:
- Infrastructure as Code: configuration management tools to make infrastructure reproducible.
- Continuous Integration, Delivery, and Deployment: ensures all contributed code can build, test, and deploy together.
- Immutable Infrastructure: allows simplicity and consistency in deployment. It usually takes the form of applications in stateless containers, but anything can be adapted to this methodology. For example, a VM with an application on a read-only filesystem would make it stateless, and therefore, immutable. These conditions make the application reusable because it is possible for the same application build artifact to be used everywhere (such as in testing and in production).
- Microservices and Containers: communication patterns and application packaging enables architectural and deployment benefits, wrought by the rapid innovation of the Kubernetes industry and disruption of the VM-centric deployments.
- Instrumentation: Monitoring, metrics, and logs provide insight on the micro and macro trends, forensics, and health of systems.
Opportunity for Cultural Disruption
While these tools and technologies have been game-changers, perhaps the hardest nut to crack is culture. No matter what tools you use, you must gradually align the people, teams, and departments of your business with a DevOps initiative. Otherwise, most of the business won’t change their practices and processes, constraints and inefficiencies will remain, and any perceived “DevOps” benefits are largely illusory.
As with all significant cultural initiatives or large projects, DevOps requires key stakeholders who identify the need for DevOps, champion the cause, and sponsor the resources to explore, implement, and measure success in a top-down fashion. In The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations, the authors recommend beginning with sympathetic and innovative groups, scoring some fast wins, and then expanding influence from there to build a silent majority to win over the holdouts. Smaller organizations can forego most of that structure by allowing a bottom-up approach to experiment and adopt DevOps benefits.
But talk is cheap — goals must be set, ideally with metrics, so that an action plan can be formed and measured. These action plans will call for cross-team disciplines, coordination, and priorities to unblock conflicts and break through silos. Change is hard, so an ad-hoc approach won’t work. It must be prioritized to pay down the organization's technical and cultural debt.
If all of this looks daunting, remember that the ROI is enormous: accelerated innovation, greater efficiency, improved resiliency and adaptability, increased profits, and better quality of life and work.
If you are just getting started with DevOps, the good news is that there is now a thriving, decentralized, and welcoming DevOps community for you to tap into: new adopters should seek out the nearest DevOpsDays, DevOps Meetup groups, and related conferences to find local practitioners.
Published at DZone with permission of Jordan McMahon. See the original article here.
Opinions expressed by DZone contributors are their own.