Getting software products and services to market faster and with good quality is the holy grail.
At this moment in software technology, we are witnessing a perfect storm of advances to accelerate product delivery like never before. Cloud unleashes innovation with elastic capacity and infrastructure, and containerized applications run anywhere, scale automatically, and restart themselves. Agile and lean practices, design thinking, and DevOps methods are all common terms.
These elements don’t magically change what has been true for decades: Getting software products and services to market faster and with good quality is the holy grail—one that requires continual transformation and modernization.
The different methodologies of software dev
Those of us working in software development have seen various methodologies transform how products are created and delivered. For example, Agile development—with its motivated teams delivering minimum viable products—has helped organizations get small changes out quickly so that teams can learn what works and doesn’t in the market. Shift Left testing has pushed teams to test the harder, most-important things first. Test-driven-development has helped ensure that when a new feature is developed, there’s a test plan to go with it.
Now, enter DevOps. With its focus on the automation and continuity of building, deploying, and testing applications, going live becomes repeatable and reliable. Add value stream management—one of the newest methods‚ and DevOps includes fully visible and optimized delivery pipelines.
Like many things in life, small changes can make a big difference. For software delivery teams trying to transform, one change leads to another and another. Still, the Agile mantra rings in our ears: How can we do better?
Automation is the norm
As an IBM Cloud offering manager for UrbanCode—deployment automation and orchestration software products—I frequently talk with DevOps teams. These are the people who automate the software delivery process. The sharpest and most motivated teams are figuring out how to balance the challenge of a lack of resources with the need to move faster.
Their initial investment is in continuous integration and continuous delivery (CI/CD) automation to reap significant time savings in less than six months (on average). For most organizations, automating the CI/CD process is now a “given.”
Adding testing to the CI/CD process is a good place to go next. But there are many places to look at for automation. Automating the build of development environments is another example.
I recently talked with a customer who has fully automated the provisioning of development environments using UrbanCode Deploy. UrbanCode Deploy, now a containerized solution, brings continuous delivery of any application to any environment, with automated, repeatable deployment processes across environments, a strong integration with UrbanCode Velocity, Jenkins, GitLab, Kubernetes, ServiceNow, WebSphere, Microsoft—you name it.
My customer’s average environment includes servers, operating system, tools, software, service accounts, databases, DNS entries, load balancers, firewalls, and more. The delivery timeframe for this customer’s environment used to be months and it now takes just a couple hours. This type of automating is game-changing.
Still, the mantra: “How can we do better?”
How am I doing?
As I have learned in Agile development training: the heart of agile is measurement. We can’t improve what we don’t measure. If I can look into what’s going on with my software delivery process and measure it, I then can connect the dots to figure out where to invest to make it better. In the words of Eric Minick: “Consider using DevOps metrics that focus on deploying code that fulfills business needs and measures the full code lifecycle.”
Test time: Take a look at the images below
Can you tell who is just working and who is working smart? Where are the delivery bottlenecks? Where is value getting stuck? Which teams are doing especially well, which teams can we learn from? What teams are struggling and might need help? Where do we need to invest in automation or training?
Difficult or impossible? Without value stream management in place, it’s impossible to discern where value or waste are being created, where teams are struggling, and where to invest more resources.
Actionable data points, insights, and views
UrbanCode Velocity helps teams understand if DevOps is working by providing actionable data points and insights. Transformation leaders can use data analytics reporting and dashboarding to realize the value of hidden continuous delivery data by making it visible and actionable. With historical data quickly gathered, it’s easier to know which teams are working most efficiently and where bottlenecks in the delivery process exist. In other words—where to focus.
UrbanCode Velocity also provides a single view for all of a teams’ Pipelines. Now you can see exactly where various versions of components are in multiple pipelines and orchestrate them.
Release managers will find in UrbanCode Velocity a lightweight release management capability perfect for frequent releases.
UrbanCode Velocity goes beyond traditional Agile views to provide end-to-end value stream transparency through a unique drill-down visualization of the most granular components of given release. Velocity provides an easy answer to the “Where’s my new feature?” question in the delivery process. Velocity also helps to identify time-wasting Works in Progress to ensure the release is moving quickly.
IBM Cloud DevOps and UrbanCode
Our customers have seen the value UrbanCode products have brought to teams who are automating and transforming software delivery. Both UrbanCode Deploy and UrbanCode Velocity are now also available as containers and certified to work with Red Hat OpenShift and IBM Cloud Pak for Applications.
Visit the IBM Cloud DevOps page and click the yellow "Let's Talk" button to get a free, 15-minute consultation with the IBM DevOps team, and let's talk in person at our next event: DevOps Enterprise Summit: Las Vegas 2019.