Any successful DevOps initiative is, by nature, multifaceted.
In the organizational and cultural sense, for example, DevOps demands close collaboration between various IT teams. And, in the technical sense, code must progress through multiple -- and ongoing -- phases within the overall software delivery cycle.
Embracing a DevOps culture change is critical to successful adoption -- and there is no shortage of best practices or team-building exercises to aid organizations on that journey. But a clear understanding of the more technical components of DevOps methodology, including the various phases that comprise it, is also essential for effective implementation.
IT organizations will define and approach these phases -- also known as DevOps pipeline stages -- in a way that's unique to their specific goals and requirements. The toolchains they use to underpin these phases will also vary. But, in general, a DevOps project progresses through the following phases, and might involve some combination of the following tool sets:
- Plan: Atlassian Jira or Confluence.
- Code and build: For coding, tools include various IDEs, as well as repositories like GitHub. The build phase includes automation tools such as Puppet and Chef.
- Test: Selenium, Cucumber and Tricentis.
- Release and deploy: Docker and Kubernetes.
- Operate and monitor: New Relic and Datadog.
Use the TechTarget video above to further explore these core DevOps pipeline stages. Discover the specific tasks they entail, what software developers and IT operations teams aim to accomplish in each, and why these phases happen continuously as opposed to intermittently. Walk away with an understanding of the DevOps infinity loop, and how one build cycle always works to inform the next.
DevOps is often considered an organizational culture or mindset focused on collaboration between development and IT operations teams to build and manage software in a rapid, iterative manner. DevOps is also a methodology consisting of distinct steps or phases. This DevOps pipeline is repeated on a continuous basis, sometimes daily. The exact technologies and practices that define each phase vary between organizations.
Here, development and IT operations teams, business leaders and other stakeholders define application requirements and set project goals.
Code and build
Developers get to work writing applications or updates within an editor. This can be as simple as a text editor or as detailed as an integrated development environment. All code is checked into a centralized source code repository such as GitHub, then code is pulled from the repository and compiled into a binary artifact, which is published to a repository and subjected to integration and unit tests.
A code build undergoes a mix of automated and manual tests. In this critical stage, developers determine whether there are any significant issues or flaws, including security vulnerabilities in an application. Tests can be performed in a dedicated testing environment or in a staging environment that more closely mirrors production.
Release and deploy
At this stage in the DevOps pipeline, a build is released in beta to a limited group of users to validate it versus the current build. DevOps teams execute packaged code into the production environment with real capacity and data. Once validated, the new builds can become the production version. With continuous deployment, code progresses through the previous DevOps stages and then deploys automatically once clear. But not every DevOps organization can deploy code without manual intervention. So, they deliver production-ready code and oversee the deployment.
Operate and monitor
IT operation admins get to work managing production applications and their underlying resources. IT operations teams should continually monitor application performance and health to ensure everything runs smoothly in production. Ongoing monitoring data can be passed back to the development team and other stakeholders to provide guidance for the subsequent build cycle.
In a DevOps model, the pipeline stages outlined aren't linear, but rather occur as part of an ongoing cycle, sometimes referred to as the DevOps infinity loop. Monitoring infrastructure and application performance as well as the end-user experience, for example, leads to the development of new software features and the cycle continues.