Today, the end user landscape has evolved demanding enterprises to adapt to a frequent release cycle or fall behind to competition. This business demand has caused the IT teams to process requirements with higher agility and velocity to stay aligned to the business goals. This high velocity approach to processing business requests has resulted in frequent deployments, increased change requests and as a success criterion adoption of extreme agile principles and enterprises adopting early automation, test driven development has been on a high. These are all the positives to emerge out of the business and end user demand, however the operations team still look at this as a more frequent nightmare as compared to the quarterly releases of the past.
The reason for this view is fairly simple. The bottlenecks in the release cycle such as manual activities, wait times, inadequate pre-production environments, less than perfect hand-off between teams, delayed code drops, non integrated toolset, insufficient control processes between all teams in the application engineering value chain and toss over the fence mindset all lead to this last minute rush to release and effectively a less than perfect (to be blunt, a brittle) release and deployment sequence. In fact, from our experience with over 20 different enterprises, we see that more than 70% of the release problems traced one of the above stated bottlenecks as the root cause for less than perfect releases.
In reviewing the bottlenecks and hiccups in the process, the common theme across them all is a glaringly evident disconnect in the communication, process and ecosystem between the business, engineering (development, test) and IT operations teams. While enterprise aim to serve the business and end users with the frequent releases and increased velocity, it becomes quintessential of them to adopt continuous delivery as the means to get there through the right mix of quality engineering and devOps before the wedge between the players in the application engineering value chain widens further.
So, how does this whole thing work? How do we get our happy hours back? How do we ensure continuous delivery without compromising on quality and stability? Let me explain.
To streamline the processes and the entire deployment value chain, the few tweaks below will be big wins.
Align Release Management and Business Goals
It sounds fairly simple and it is. The basic idea is to align the way you plan, build, release and deploy applications. Two things to consider here; One, A trend shift™ approach is necessary – focus has to be remain on the right (production and release) with a continuous feedback loop to planning and business phases and two, kill the silos in your IT organization – make it one large happy family. Here are some additional do's and don'ts.
- Focus on quick wins
- Insist and make incremental changes
- Emphasize on continuous improvement
- Don't go big bang when it comes to changes
- Avoid massive rollouts
Define Critical Success Factors
To begin with, understand what the business wants? What was committed to / by the marketing teams? Gain visibility into these areas and ensure you have a tracking mechanism for the metrics and you have the needed horsepower to stick to the plan and minimize the gap between plan and actual. Here are a couple dos and don'ts.
- Align the success factors across the various players in the value chain
- Architecture visual for signoff by everyone involved
- Collaboration and clearly assigned roles and responsibility
- Impact analysis and plan B
Automate, Automate, Automate!
According to my formula for continuous delivery – The manual activities in the lifecycle are inversely proportional to the ability of an enterprise at continuous delivery. In other words, minimize your manual activities, eliminate wait times, collaborate and ensure smooth hand-off and collaboration between teams. Here are some additional areas to focus on:
- Continuous Development – Test Driven / Acceptance Test Driven Development – Plan, Test, Develop, Repeat
- Continuous Testing – Begin with Automated Unit Testing, Early Automated Functional Testing, Early Performance Engineering and Security Engineering
- Continuous Integration – Build automation, Continuous Integration and deployments on Pre-Prod environments
- Continuous Deployment – Have prod like environments that can be created on demand, where all of the tests can be run. Build configuration and environment parameterization at the start of the cycle (plan)
- Continuous Feedback and Monitoring – Understand application production behavior, enables teams to be proactive by building an automated feedback loop into plan phase
Scaled Pre-Production Environments
One of the biggest challenges is an inadequate pre-production environment. Most pre-production environments are vastly different from production. A stronger pre-prod environment that can scale and be utilized by all teams in the value chain is much needed. Here are some additional things to consider:
- Integrated pre-prod environments
- Integrated and collaborative engineering and ops teams (TestDevSupOps)
- Automated and on-demand environments with ability to auto deploy
- Efficient and effective tool utilization and cross skilled teams
- Orchestration engine that can control / orchestrate all tools in the value chain
- Enforce release repositories with version control (Store builds, Binaries in the pre-prod environments for quick rollback if needed)
Monitoring, Metrics and More
- End to end lifecycle metrics are to be tracked, measured, analyzed and used as continuous improvement feedback
- Continuous monitoring and feedback to understand the application behavior
- Real User experience monitoring to understand customer patterns
- Automated feedback loop into the plan phase
In the world of complex architectures and enterprise applications, it is imperative to adopt these principles to ensure continuous delivery of application releases with stability and the highest levels of quality. Frequent releases will not be a hassle or buzz killers if these principles of process, collaboration and orchestration engineering are followed with a pinch of quality intelligence and metrics!