What is DevOps?
DevOps is a set of development practices that combines integration of software development (Dev) and IT operations (Ops) with automation. DevOps breaks down the barriers between Dev and Ops teams to shorten the time it takes to build, test, and release software of high quality. A DevOps pipeline utilizes continuous integration and continuous delivery (CI/CD) to quickly deliver new software features and enhance business growth.
DevOps requires a culture that encourages efficient application development and faster release of new applications and new software features. The collaborative relationship between Dev and Ops extends to every phase of the DevOps lifecycle from initial software planning to build, test, provisioning, configuration, deployment, and ongoing management.
History of DevOps
Traditionally, enterprises have had separate software Dev and IT Ops teams that work independently, often leading to disconnects that result in complex, manual, slow, and error-prone processes. The problems encountered in developing, testing, and deploying software create friction and mistrust between teams. This friction can be exacerbated by continuous delivery (CD) where developers are incentivized to deliver features rapidly, which is at odds with the IT operations goal of ensuring stability. The only way IT ops can achieve stability in such an environment is by limiting changes, not ideal in a modern, fast-moving, digital world.
DevOps stems from the movement that began with lean thinking and agile development. Agile practices emphasize self-organization and continuous adjustment to working practices. Over time, agile broadened to include speed and quality in operations. DevOps builds on this foundation, avoiding the delays between traditional product development and IT operations through empathy, communication, and joint responsibility for successful delivery of applications and services.
Key characteristics of DevOps
DevOps is not prescriptive in how it should be practiced, but high-functioning DevOps teams tend to share several characteristics.
DevOps is first and foremost a culture that includes not only engineers and IT staff, but all stakeholders from CIOs and CFOs to salespeople and end users. A shift in organizational mindset encourages developers and IT operators to understand each other’s roles better so they can adjust their work to accommodate the other party and collaborate more effectively. Successful DevOps practices strive to eliminate areas of friction so that everyone shares the same goals.
DevOps training and process
Translating the DevOps culture into practice requires attention to training and to establishing joint processes between Dev and Ops so they have a forum for communication and sharing of expertise. Enterprises have traditionally struggled with slowdowns related to capacity provisioning, disparity of development and production environments, and complex compile/test processes. Rapid and reliable software delivery requires consistency and repeatability, with processes that are streamlined to eliminate unnecessary manual effort.
Automation and DevOps tools
High-performing teams utilize a shared set of DevOps tools to help crystallize and streamline collaborative processes to create a common understanding of software delivery from start to finish. The right DevOps tools and platform stacks help you break down silos and automate time-consuming processes for faster, more efficient delivery of applications and services. Containers are ideally suited to DevOps and microservices architecture, making applications more portable and easier to deploy. As the de facto standard for container orchestration, Kubernetes makes it possible to deploy and run complex applications with high levels of stability and reliability by clustering physical or virtual services. Learn more about containers and Kubernetes.
What are the benefits of DevOps?
Faster time to market
Software plays a key role in helping businesses understand and deliver what their customers need. A mature DevOps practice allows teams to avoid miscommunication and delays and makes it simpler to ship software. Microservices can be deployed, upgraded, scaled, and restarted independently, enabling frequent updates and faster delivery of new features.
Lower risk and smoother deployments, at scale
Coordinating the development, deployment, scaling, securing, patching, and availability of modern applications is riddled with potential sources of failure. A DevOps practice is made up of a collaborative culture with automation for packaging, deployment, monitoring, and management of software. DevOps teams identify and eliminate roadblocks and establish a more robust, streamlined, repeatable, and mature release process.
When code breaks in production or causes downtime, DevOps is well prepared to diagnose and recover from it. With significant automation and monitoring powering most release and management processes, a DevOps team can quickly collaborate to trace the source of the failure and rollback changes or issue fixes.
Higher customer satisfaction and better product-market fit
DevOps methods compliment agile development and CI/CD with the functionality required to put continuous learning into practice, allowing teams to iterate software rapidly, and respond more quickly to customer feedback. Releasing features and bug fixes rapidly not only leads to higher customer satisfaction but also to rapid feedback and faster identification of the capabilities that customers care about most.
Security threats have never been greater; the average total cost of a data breach today is almost $4 million and increasing over six percent a year. DevSecOps—the marriage of DevOps and cybersecurity—allows developers to embed security into their code and to enable security testing throughout an application’s lifecycle.
DevOps vs. traditional approaches
DevOps introduces new processes and a different mindset into your organization. The following are some of the key differences that distinguish DevOps from more traditional approaches:
|Collaboration oriented. Successful DevOps relies on the ability of teams to collaborate closely and develop and deliver software quickly and reliably.||Silo driven. Traditional approaches rely on IT to deploy and manage software in production with minimal assistance or insight from developers.|
|Structured and automated. DevOps relies on automation to provide speed, consistency, and repeatability in provisioning and configuration. Code that works in a Dev environment is guaranteed to work in production. Failure recovery is faster; repeatable automation makes rollback and recovery easier.||Snowflake-driven and mostly manual. Traditional approaches rely on an ad hoc combination of scripting and manual processes—with unique “snowflake” servers—to provision and configure infrastructure. This makes it hard to get right, repeat reliably, or accomplish quickly.|
|Self-service oriented. DevOps-driven organizations establish frameworks for collaboration, integration, and automation so Dev and Ops staff can act independently without getting in each other’s way.||“IT ticket” oriented. Traditional IT Ops teams perform repetitive, manual, and complex provisioning and configuration without taking advantage of automation, creating significant delays.|
|Business focused. Dev and Ops teams take joint responsibility for software delivery, making the business successful together.||Function focused. Traditional teams perform functions separately with little responsibility for overall success, leading to finger-pointing and organizational friction.|
|Designed for change. The DevOps pipeline is automated, repeatable, fast, and built to handle rapid change.||Change averse. Traditional approaches avoid changing production deployments, indirectly encouraging the organization to go slow.|
Things to keep in mind if you’re considering DevOps
Because DevOps advocates a new approach to software delivery through a combination of culture, processes, and tooling, getting started can be a little overwhelming. Here is a checklist that may help you as you think through and plan your DevOps practice.
Customize for your needs.
DevOps should be structured to meet the unique needs of your organization, taking into account organizational structure, current software lifecycle, sources of delay, and opportunities for automation.
Aggiornamenti sugli argomenti importanti
Invest in DevOps tools, processes and automation.
Establish new processes and use new DevOps tooling to enable automation. DevOps training can help teams learn to work together, establish new processes, and use new tools effectively. Consider standardizing on one platform and one build pipeline across the entire organization.
Encourage team building and a DevOps culture.
Align incentives and goals among Dev and Ops teams to establish trust and a spirit of collaboration. Technologies should be used within the context of a cultural philosophy rooted in collaboration and joint responsibility.
Understand that organizational dynamics can become a roadblock.
Implementing new processes and tools may cause disruption, especially with compliance, security, and audit functions. It’s critical that the whole organization—from executives to end users—are willing stakeholders.
Recognize integration overhead and complexity issues.
Purchasing point solutions for each part of a DevOps practice can result in significant overhead and complexity and make achieving a seamless experience difficult. Even worse, if each team uses a different platform and tooling, you'll end up with a portfolio management nightmare.
Start with a real application, a dedicated team and tackle something small that still demonstrates business value. Build up to more complex, business-critical applications as you learn how to apply DevOps.
Consider legacy workloads.
DevOps isn’t just for new workloads. Consider modernizing existing workloads by leveraging DevOps principles and automation. Legacy workloads can derive significant benefits in terms of release cadence, reliability, and stability.
Treat DevOps as a journey.
DevOps is a philosophy, and your DevOps practice needs to grow and evolve in order to keep delivering applications quickly and reliably. If it doesn’t, you risk creating opportunities for competitors to gain advantage.
Related products and services
DevOps tools are part of a set of technologies for building cloud native applications. VMware tools and services are purpose-built for developers to boost feature velocity and for operations teams to deliver world-class uptime.
VMware Tanzu Build Service
Automate container creation, management, and governance at enterprise scale.
VMware Tanzu Application Platform
Build and deploy software quickly and securely on any compliant public cloud or on-premises Kubernetes cluster.
VMware Tanzu for Kubernetes Operations
Streamline operations across multi-cloud infrastructure with an enterprise-ready Kubernetes runtime.
VMware Tanzu Application Catalog
Get a curated catalog of production-ready open source software, customizable for your needs.