The Pressure to Go Fast
Rapid business change fueled by software innovation is transforming how software delivery organizations define, develop, test, and release business applications. For these software organizations to keep their competitive advantage in today’s complex and volatile digital marketplace, they must become more Agile, adaptive, and integrated into the business and embrace digital transformation business practices. Unfortunately, most current software delivery practices can’t keep pace with the demands of the business.
Long software delivery cycles are a significant impediment to business technology innovation. Agile development teams have shortened development cycles, but Agile by itself is insufficient as it does not remove the cultural and technical barriers between development and operations. DevOps principles and practices developed in response to this problem, facilitates cooperation, and coordination among teams to deliver software faster and with better quality.
The goal of scaling “DevOps” for the enterprise is to prioritize and optimize deployment pipelines and reduce lead times to deliver better business outcomes. Creating new and optimizing existing deployment pipelines in large IT organizations is key to improving their efficiency and effectiveness in delivering software at the speed that the business requires.
Long Lead Times
Every enterprise IT organization is unique in that it will have different bottlenecks and constraints in its deployment pipelines. I recommend conducting a value stream mapping exercise to identify specific problem areas. Starting and Scaling DevOps in the Enterprise by Gary Gruver is a great book and provides a good framework for getting started. The following are the some of the most common areas found that generate the longest lead times.
DevOps culture strives to break down the organizational silos and transition more to product teams. This is because the current siloed organizational structure provides headwinds to the objective of short lead times and continuous flow. Organizational silos are artifacts of the industrial era designed specifically for batch and queue processing which drives up lead times with handoffs from one team or organization to another. Each handoff is potentially a queue in itself. Resolving ambiguities require additional communication between teams and can result in significant delays, high costs, and failed releases.
You need to strive to reduce the number of handoffs by automating a significant portion of the work and enabling the teams to continuously work on creating customer value — the faster the flow, the better the quality, resulting in lower lead times.
2. Approval Processes
Approval processes were originally developed to mitigate risk and provide oversight to ensure adherence to auditable standards for moving changes into production, however, the approval process within most large enterprises is slow and complex and is often comprised of a set of manual stovepipe processes that use email and Microsoft office tools to track, manage, and, more often than not, wait on people for approval of a software change. Lack of proper data or insufficient data leads to hasty or faulty approvals or bounce backs further frustrating software delivery teams, reducing quality, and impeding deployments.
Continuous delivery practices and deployment pipeline automation enables a more rigorous approval process and a dramatic improvement in speed. Releasing into production might need approval from the business, but everything up to that point could be automated dramatically reducing lead times.
3. Environment Management and Provisioning
There is nothing more demoralizing to a dev team than having to wait to get an environment to test a new feature. Lack of environment availability and/or environment contention due to manual processes and poor scheduling can create extremely long lead times, delay releases, and increase the cost of release deployments.
Creating environments is a very repetitive task that should be documented, automated, and put under version control. An automated and self-service process to schedule, manage, track, and provision all the environments in the deployment pipeline will greatly reduce lead times and drive down costs while increasing the productivity of your Dev and QA teams.
4. Manual Software Deployments
Machines are far better and much more consistent at deploying applications than humans. Yet there still are a significant number of organizations that still manually deploy their code. Automating manual deployment can be a quick win for these organizations. This approach can be delivered rapidly without major organizational changes. It is not uncommon for organizations to see deployment lead times reduced by over 90%.
The more automated this process is, the more repeatable and reliable it will be. When it’s time to deploy to production, it will be a non-event. This translates into dramatically lower lead times, less downtime and keeps the business open so that it can make more money.
5. Manual Software Testing
Once the environment is ready and the code is deployed, it’s time to test to ensure the code is working as expected and that it does not break anything else. The problem is that most organizations today manually test their code base. Manual software testing drives lead times up because the process is very slow, error-prone, and expensive to scale out across large organizations.
Automated testing is a prime area to focus on to reduce lead times. Automated testing is less expensive, more reliable and repeatable, can provide broader coverage, and is a lot faster. There will be an initial cost of developing the automated test scripts, but a lot of that can be absorbed by shifting manual tester resources to test development engineers to focus on automated API-based testing. Over time, manual testing costs and lead times will go down as quality goes up.
The velocity and complexity of software delivery continue to increase as businesses adapt to new economic conditions. Optimizing and automating deployment pipelines using DevOps practices will dramatically reduce lead times and enable the delivery of software faster and with better quality.
To learn more about how to optimize your deployment pipelines, listen to our popular on-demand webcast with Gary Gruver, where he talks about how to start your DevOps journey and how to scale it in large enterprises where change is usually difficult. He shares his recommendations from his new book on scaling DevOps and answers audience questions on how to adopt those best practices in their organizations.