A practical approach to DevOps transformation
- By Branko Primetica
- Oct 04, 2016
While many federal agencies are discussing how they might leverage DevOps, few are fully adopting it. The reasons vary widely: They may not understand what DevOps really is; how to transition from a traditional waterfall approach; how to overcome cultural aversion; or simply how to comply with reporting requirements.
At its simplest, DevOps is the integration of development and operations teams to deploy solutions in a more automated and repeatable manner. Currently, in many cases, IT solutions are handed from a development team to an operations team -- only to see the deployment falter because the infrastructure requirements were not defined up front or the operations team was not ready for the deployment. In addition, lack of automation means that development efforts are not repeatable, require significant resources and extend development and deployment timelines.
Transitioning to a DevOps environment primarily involves organizational and process transformation, with less than 25 percent of the effort related to technology.
The first step in the transition is crafting a DevOps transformation plan, which addresses goals, key players along with their responsibilities, processes that will be affected and a high-level timeline with key milestones. This plan will keep the entire transformation team coordinated.
The next step is to develop a foundational DevOps methodology. Within government, DevOps will typically come into play from the requirements phase through the operations and maintenance phases of the systems development life cycle (SDLC). Begin with an assessment of the time it takes an IT solution to move from one stage-gate review to the next to identify bottlenecks. Then the development and operations teams should create an integrated process that eliminates those bottlenecks -- including processes and guidelines for continual integration, feedback and coding.
The traditional waterfall-based solution development lifecycle should be modified to:
- Involve business, security, development and production teams from the beginning to properly define functional, technical and infrastructure requirements.
- Inform the production team of development progress so that issues are defined early on, and the production environment is ready to go once development and testing is completed.
- Establish a process for continual feedback.
With the foundational methodology in place, the next step is to select an integrated support toolset. Audit the existing toolset and development/operations requirements to determine which DevOps support tools will be used. Examples of these requirements include:
- Scheduling peer reviews, release management and automating DevOps processes
Automating testing at each quality control gate.
- Building a continual integration and testing environment for delivering code.
- Creating a configuration management database that integrates release and change management data.
- Monitoring infrastructure, including databases supporting multiple versions of the same client.
- Selecting a social collaboration tool.
At this point, the DevOps methodology should be tested on a new development project. This exercise will help refine the process by identifying gaps or bottlenecks. Once the process is refined, relevant documentation (such as the agency’s SDLC, governance, project management guidelines) should be updated.
During this whole transformation effort, it is imperative that continual communication be maintained with all stakeholders. This includes working with both operations and development teams on the new methodology, cross-training the whole team so that problems can be fixed expeditiously, and instruction on automating and scripting processes.
The actual transition to DevOps should start with new development projects. Applying it to existing projects first means adding budget and resources to write automated test cases.
The transition process does not stop with a successful deployment. It is critical to measure the effectiveness of the DevOps environment through key performance indicators such as faster times to deployment, lower failure rates and shortened mean times for recovery. This information will show where the transformation was successful and where it can be refined to optimize efficiencies. With continual improvement DevOps teams can better meet requirements going forward.
Branko Primetica is a partner and chief strategy officer of eGlobalTech.