For modern enterprises looking to take full advantage of newly-built cloud environments, DevOps promises to revolutionize software delivery. For those aspiring to innovate in ways that keep pace with technological change, it’s a critical enabler of agile business processes. For companies seeking to foster stronger collaborative cultures, DevOps, too, is a game changer.
But what, exactly, is DevOps? It has been called “a movement,” “a set of ideas and practices” and “a mindset.” DevOps brings together development and operations teams, two groups, who have traditionally had competing priorities and often less-than-friendly relationships, within IT organizations.
Its goal is to speed development and delivery, improve the reliability and security of software products and support experimentation and digital transformation. Because these goals have become so critical for business success in the 21st century, DevOps has become something of a buzzword within technology companies. Like most of the trendy jargon in our industry, it can mean different things to different people.
We’ll focus on what it means to us, at Cloudreach, by outlining six phases that make up the DevOps lifecycle. We will also explore the tools, processes and organizational habits that belong to each stage. It’s important to note that these stages aren’t discrete: though we describe them sequentially, in practice they’re all part of a continuous workflow. And, there are no firm barriers between the phases or the people who work within them.
Phase 1: Plan
Roughly equivalent to the requirements-gathering phase in traditional software development, the planning stage of a DevOps pipeline includes everything that happens before developers start writing code.
What distinguishes the DevOps way of planning is a core focus on customers’ needs and experiences. Feedback from all stakeholders is integrated into the earliest stages of planning, and a collaborative approach occurs between product and project managers and developers. Collaboration tools and project management solutions are used to track the project’s progress throughout all of the stages.
Phase 2: Build
In DevOps, the planning and coding phases flow into and inform one another. DevOps practitioners build in small modules, relying on automated tools to maintain version control, enforce consistent style standards and guard against security issues.
In traditional development environments, software testing is a separate phase that’s performed by quality assurance (QA) teams after both individual components and the integrated application are complete. The DevOps approach instead integrates automated testing across all stages of software production. Developers run their own QA scripts early in the build process, an approach known as “shift left.” This makes it possible to correct errors sooner, saving time and improving product quality.
Phase 3: Continuous Integration
Continuous integration (CI) is at the heart of the DevOps methodology. It involves frequently merging the new code written by multiple developers into a single, centralized repository. Each team member’s contributions are added to the main branch of source code on a regular schedule, usually at least once a day. Automated tools are used to fetch the code, prepare the build and test it before forwarding to the appropriate staging environment or repository.
Phase 4: Deploy
What CI is to the central code repository, continuous delivery or continuous deployment (CD) is to the end user-facing production environment. The DevOps methodology calls for new features, updates or other changes to the application to be released into production on an ongoing and frequent basis.
DevOps practitioners use automated provisioning solutions to manage and monitor both test and production environments (a concept known as infrastructure as code). This way they can be confident they’re testing the software in environments configured identically to the production environment and know what works in testing will work in production. Once the code passes this automated testing, it’s ready for deployment. And, DevOps practices rely on automated tools to perform this deployment.
Many leverage blue/green deployment strategies, in which new code releases are automatically applied to half the production environment. If any issues are found, it’s simple to roll back the changes until they are addressed. If not, the remainder of the end users (the other half) receive the updated version.
Phase 5: Operate
Once DevOps software has gone live in production, the operations team will rely on automated tools wherever possible for configuration management, scaling and load balancing.
Phase 6: Continuous Feedback
A DevOps organization will leverage automated solutions for soliciting and collecting customers’ feedback on their experiences, and for capturing metrics describing the software’s performance. This information will inform the DevOps team’s future efforts to further improve the application. It serves as essential input to the planning stage of the pipeline.
All of these phases take place within a collaborative environment where innovation and experimentation are encouraged. And, all are enabled by the use of automated software development toolchains, code sharing platforms and collaboration solutions. Many of these tools are open source and were created within a DevOps environment.
Are you interested in learning more about how adopting a DevOps approach could make your enterprise more agile and accelerate your cloud journey? Discover how our new DevOps as a Service offering is helping enterprises augment their existing resources and boost their DevOps maturity.