Melissa is a technical professional in charge of application development for a large manufacturing organization. In the past few months, she’s had to make some changes to promptly meet the demands of the customer and the business — including regularly updating applications with user feedback and responding to new shifts in the market and changes to business strategy.
Melissa realizes she needs to develop continuous delivery, a software engineering approach where teams constantly produce valuable software in short cycles while ensuring the software can be reliably released at any time. Achieving continuous delivery requires engineering discipline and collaboration to facilitate the complete automation of the delivery pipeline from code commit to production.
Delivering quality applications with increased agility isn’t as simple as “doing” agile or DevOps. No matter where they are on their agile and DevOps journey, technical professionals can use these steps to achieve continuous delivery.
Step 1: Establish a continuous learning culture
To deliver continuous delivery of quality solutions, implement continuous learning practices for streamlining work and reducing waste.
Increase knowledge and skills. Carefully assess the capabilities of the current application development organization, and use this assessment to identify gaps in knowledge, skills, process and practices.
Create communities of practice to support organizational learning and provide critical opportunities to build expertise. Adopt practices and processes that support this continuous learning.
Step 2: Develop agile fluency
As you continue your continuous delivery journey, take three key actions to develop agile fluency. First, establish baseline metrics. How do you know if you are successfully moving toward your goal?
Then, deploy agile methodologies. Identify what resources are needed to educate and train yourself and your peers to begin adoption of agile methodologies. Determine a benchmark for when you’ll know when you have become proficient enough to move to the next step.
Finally, implement bimodal IT. Determine how Mode 1 (predictability) teams can benefit from agile, and how you can prevent bottlenecks and reduce dependencies between Mode 1 and Mode 2 (exploratory) teams.
Step 3: Mature agile practices
Scrum, Kanban and “scrumban” are not enough to implement agile processes and practices. They are management frameworks, each with different goals, that provide no guidance for how to deliver working, consumable software.
Mature your agile practices to prepare for continuous delivery. Agile technical practices provide the insight and guidance to help build quality into the application while receiving constant feedback on the system’s readiness for production deployment.
Use a componentized architecture when creating new applications, and refactor legacy applications to enable those applications to take full advantage of the agile and DevOps practices that are necessary to enable continuous delivery.
Step 4: Automate infrastructure
Development, security and data management, and infrastructure and operations (I&O) teams are under increasing pressure to deliver solutions more quickly. The time when it was acceptable to wait for days, weeks or even months for someone to build and configure an environment is long gone.
DevOps helps those teams increase the frequency of application updates, as it extends agile values and practices. However, successful DevOps teams require the ability to:
- Provision and configure tooling that helps not only development teams but also I&O teams manage and support new architecture.
- Deploy and manage when it comes to implementing and managing your applications. There are an array of questions to ask: Should we use containers? How do we manage them? Do we move our applications and databases to the cloud?
- Secure applications and data. This continues to be one of the key tasks for security professionals. The increased speed of change coupled with moving applications and data to the cloud make protecting your mission-critical assets more challenging.
- Monitor applications. With the increasing adoption of DevOps-oriented lean and agile practices, application performance monitoring is needed to provide rapid quantitative feedback regarding the efficacy of the latest release. The data also needs to be available to support rapid triage of changes in performance and availability associated with these more frequent production updates.
Step 5: Improve delivery cadence
Once technical professionals reach this step, several advanced topics should be considered. The topics require, however, mature agile development and DevOps practices to ensure success.
First, consider adopting an enterprise agile framework. The purpose of enterprise agile frameworks is to make the management of complex agile releases and evolving solutions not only feasible, but also routine and sustainable.
Then, think about applying microservices architecture (MSA) principles. MSA builds distributed applications that support agile delivery and scalable deployment, both on-premises and to the cloud. Once adopted, MSA affects how development teams develop and deploy software.
Adopting agile practices and a DevOps approach can help technical leaders to create a continuous delivery culture that’s more responsive to demanding business needs. Taking these steps, technical professionals can champion continuous delivery within their organization in 2020 and beyond.