If you hang around IT people long enough—especially those in software development there’s a good chance you’ve heard the Systems Development Life Cycle (SDLC) described as a supply chain. It’s an easy analogy to make, especially when you consider how well the different phases of manufacturing (e.g., design, assembly, transportation, and retail) match up with the stages of the SDLC (e.g., design, development, testing, and production).
The analogy fits so perfectly, in fact, it got me thinking about supply chain optimization and whether the lessons learned there could be applied to the SDLC. What I discovered was that if the supply chain is a good analogy for the SDLC, supply chain optimization is an even better one for DevOps.
Two Concepts Born of a Similar Necessity
I can remember a time in the business world when the term “supply chain” didn’t even exist. In the late 80s and early 90s, the manufacturing process was seen more as a collection of discrete steps happening in silos, rather than the well-oiled and interconnected production machines running today. In fact, the idea of a supply chain was born out of necessity, as businesses were looking for new ways to keep up with customer demand for their products.
Before the advent of the supply chain, companies had a myopic view of manufacturing efficiency. For example, from a pure parts-and-labor perspective it might make sense for an organization to manufacture 1,000 of a particular product at a time, even if the market demand for it barely cracks 100 in a given cycle. Yes, the manufacturing step was efficient in and of itself, but it created unnecessary lead time and inventory costs that negatively impacted other steps down the line.
Companies had all of this excess inventory but still couldn’t react quickly to changing customer demands. That’s when they realized a more holistic view of the entire manufacturing process was necessary, and thus, the supply chain concept was born.
“Understanding the impact of holistic improvement, constraint reduction, and automation will pay back in spades as we look to optimize the software supply chain”
Similarly, the idea of DevOps came about as a way to improve communication, integration and collaboration between development and operations teams that had been working in their own silos.
Three Ways to Improve Speed, Quality and Cost
Once the concept of the supply chain took off, it wasn’t long before organizations began investigating ways to optimize it. Thankfully for those of us interested in DevOps, the lessons they learned can be applied directly to the SDLC in support of the ultimate goal— which is getting innovative, high-quality software to market faster and at lower cost.
Lesson 1: Don’t Optimize in a Vacuum
In the example above, it was clear that while manufacturing 1,000 products at a time was technically efficient, it actually tied up production resources that could’ve been used more effectively and created costly inventory overstock. An analog in the SDLC would be Agile development, which seeks to optimize the early-stage coding process. However, when Agile methodologies are incorporated with no consideration for how they will affect downstream processes, they can create bottlenecks in the testing stages that actually push production dates further out. So the lesson here is to optimize at a macro level, even if it means being less efficient in an individual stage.
Lesson 2: Find Your Constraints, and Weed Them Out
Once organizations began examining the supply chain as a unified process, it was easy for them to see where the constraints were— often in manufacturing—and take action to reduce or eliminate them. In the SDLC, development and operations teams are often constrained by limited access to the systems and resources they need to do their jobs. Service virtualization is a tool IT teams can use to not only find these constraints, but weed them out by modeling and simulating the behavior and performance characteristics of dependent systems and services.
Lesson 3: Leverage Model-based Automation
Supply chain optimization took a leap forward when organizations began creating models of the entire process and leveraging them to test different scenarios and make data-based decisions about how to meet customer demands. The right release automation tool will enable manifest-driven deployment across the SDLC, which provides reusable and repeatable processes to simplify and streamline application releases. This kind of automation makes it easy for IT teams to address the inevitable changes that occur during development, without having to sacrifice software quality or time-to-market.
With the evolution of DevOps so firmly grounded in the principles of manufacturing, from such seminal sources as Goldratt, Deming and the ‘Toyota Way,’ it is apparent that we can learn a lot about software development in general, and DevOps in particular, from the history of supply chain optimization. We ignore these lessons at our peril; but conversely, understanding the impact of holistic improvement, constraint reduction, and automation will pay back in spades as we look to optimize the software supply chain.