What is DevOps?
Before we go into depth about the three phases required to fully operate as a DevOps organization, you must first understand DevOps, which has become an increasingly important framework in organizations. DevOps refers to a set of best practices that empower both the operations and development teams to perform more efficiently, exceed organizational goals, and drive long-term business strategy.
Regarding the steps to achieve DevOps, I often find myself asking our clients, "What part of DevOps are you focusing on right now?" The response I usually get is, "Well, all of it." And while this is a valid answer, there are three key parts of the framework that you must consider when making the transition. Continuous Integration, Continuous Delivery, and Continuous Deployment are the three steps to becoming a mature DevOps organization. Let's take a closer look at each of them and how they can assist you in your DevOps journey:
Commit early; commit often. Build early; build often. Test early; test often. Merge early, merge often. That's it. Teams should constantly commit, build, test, and merge code. In a Scrum Team, these units of work are the Stories which the Product Owner will accept as complete, but they may require manual intervention to merge. Breaking down work into small increments is critical to ensuring Continuous Integration best practices. The first step in creating a solid CI/CD pipeline is to work with your teams, at least once per day, to simplify their tasks, as well as the development and testing processes, into consumable pieces. While you may already have a great DVCS tool, building and testing automation tools that support these practices are critical as well. With the Atlassian product suite, teams can easily manage these processes, even down to assigning who buys the doughnuts when the build breaks.
While often confused with Continuous Deployment, Continuous Delivery focuses on environments. Continuous Delivery means that if the merged code passes its automated tests, it can automatically deploy to a production-like Staging environment. Typically, additional steps, such as integration testing and security testing, will also take place in the Staging environment. Change Requests are filed, and if approved, the code is pushed to Production, along with other changes that may or may not be related. While changes are automatically delivered to Stage, changes are "manually" deployed to Production. As the organization matures with Continuous Delivery, automating the creation of Change Requests when code is delivered to the Staging environment means faster approvals and delivery to Production. When implementing DevOps, some organizations end their journey here. Regulatory compliance, including SOX, may prevent organizations from moving beyond the Continuous Delivery step, even though they still consider themselves a DevOps organization.
Continuous Deployment refers to code being in the hands of end-users continuously and in a safe and sustainable way. The series of commits, builds, tests, and merges (all throughout the process), means that code can go from the commit phase to functioning in Production in just minutes, as opposed to days or weeks. Real-time monitoring, test coverage that challenges your code base, and lightweight release notes all play a role in Continuous Deployment, which is why teams must be aware of their test coverage metrics and embrace testing as part of their day-to-day responsibilities.Teams can no longer support the "throw-it-over-the-wall" model when development is deployed to Production. In fact, the most successful teams support their code in Production, in addition to developing new functionality for their end-users. How? Because ownership of the business objective to the value delivered to the client is supported not only by the process and tools, but also by the teams' dedication to relentless improvement.
DevOps: A Systems Approach
Struggling with embracing true DevOps? Because each of these steps builds on one another, it becomes critical to take a step back and review the system as a whole. While many organizations want to get to DevOps, common pitfalls may include lack of Test-Driven Development, extreme separation of duties, Story sizing, or even lack of tooling integrations. If you're struggling to advance from Continuous Integration to Continuous Delivery to Continuous Deployment, it may be time to review your entire development, testing, delivery, and deployment processes to ensure that they support the DevOps journey. At Praecipio Consulting, we guide organizations to embrace a true DevOps framework and help them implement the right tools and processes in order to support a full DevOps deployment, regardless of the industry.