DevOps: Sustaining the Buzz
Many articles, books, and blogs are written daily regarding DevOps. They all highlight the importance of DevOps in software delivery and its value for customers. We just ended the earth week (April 22-27), which got me wondering as to how something as vibrant as DevOps could be sustained. DevOps is not built on just one advancement that changed how we release software. Many developments over the past ten years collectively formed DevOps.
How shifting right with DevOps made Agile so meaningful?
Agile makes smaller increments of working software a higher priority than a complete set with all features that released at the end. We get customer feedback at the end of short iterations and adapt to requirements for the next version based on what the customer actually required. Sometimes, a trial of a small sample of working software can result in a complete shift in priorities for the customer and may end up in short detours. However, what comes out at the end of the release is working software that the customer actually cares about and appreciate.
This agile shift to the right brought developers closer to the customer and bridged the gap between what we called " the cost of quality". There is an internal cost of quality where we develop a product that is different from what our product owner defined and an external cost of quality where we develop a product based on a definition from the product owner which doesn't actually translate well what they really wanted. Agile if done right and meaningfully will take both costs of quality out.
With DevOps, agile shifts far right to the customer and every software feature experience is not only delivered to the end customer faster but also provides feedback to the developers about which features aren't working or are worth being included, while also stating which features are great. DevOps if done right will enable products to tell us what they want to be. The combination of artificial intelligence and end-user experiences built on a good DevOps pipeline will tell us intuitively what's the next critical feature to work on. In short, DevOps shifts agile to the right (closer to the customer) and completes the value chain with the right feedback loops and creates tremendous opportunity for the business.
How hyper converged Infrastructure on Cloud made DevOps powerful?
Cloud Native is a way of architecting your product so that it is fully enabled with DevOps practices of CI and CD. Each application is designed as loosely coupled microservices and is independently deployable on a public cloud infrastructure service inside a unit of infrastructure called a container. Every software change is delivered as a fast-paced, small, frequently delivered change, deployed on a containerized unit of infrastructure independent of other software services deployed. Software is designed with high cohesion, which means that all related software functions coexist inside one service and hence are deployed as a single container. We ensure that we deploy these containers using an orchestrator that can help with scale up, scale down and load balance the services by spinning up new containers in a runtime environment. In this model, every change to the software is delivered as a unified unit of DevOps deployment that is complete and immutable. This immutable change set contains the product that delivers the core features, changes to data or database, all dependencies and configurations required to run the code, infrastructure provisioned with all resources required including network and security. In short, every change is automatic and creates a seamless experience for the customer.
The combination of artificial intelligence and end-user experiences built on a good DevOps pipeline will tell us intuitively what the next critical feature to work on would be
The automation, tools, technologies, and innovations that help create this end to end DevOps experience wouldn’t be possible without a strong hyper converged infrastructure delivered as a cloud service. In order to create this experience, many new ways need to be learned and improved with containers, orchestration, service mesh and all security considerations. The small units of deployments allow benefits of changing one service independent of others, testing features in small sets before rolling out to larger sets, scale individual services up or down, secure communication across services as defined instead of exposing higher attack surface for any malicious attacks and constantly improve this model for improving customer experience or cost reasons.
What are the current challenges with DevOps?
DevOps practices work well for pure cloud-native applications that are designed and coded as microservices. The challenges are when we are transforming a traditional legacy monolithic application stack to a cloud-native way of delivery or even some brownfield applications that exist in traditional architectures but requires the addition of more features.
The buzz of DevOps is mesmerizing and it is real for the most part as we all have experienced Netflix, Amazon, Uber, Facebook as customers. The challenge that most companies who have been in software business since the last 30 plus years face is that they have applications that were designed for legacy infrastructures and DevOps Cloud native stack just can't easily port those applications to microservices. This needs to be done with a good business model and a good plan to prevent high costs of exploration around the transformation and impact to the customers. We must build some core domain applications in the new business model and create a compelling experience for the customers. Once that is learned and established, the journey becomes easier.
Another point is that the technologies that have dominated this area come with many associated tools to support these pipelines. It can be hard to learn, adapt and stabilize the pipeline without the investments needed. We are surrounded by new technologies that have enabled this transformation, like Docker (containerization), Kubernetes (orchestration), Istio (service mesh). They are evolving and maturing too, however DevOps CI pipelines have been fairly mature, CD still has many areas that need improvements especially around software networking.
There are no free lunches and none of these adoptions come free of cost. If teams are not constantly asking questions about how these pipelines create value for core business applications, they may get tempted to do more than necessary . This may create a tipping point where developer productivity and business value may have a diminishing return.
How to sustain and adopt DevOps meaningfully?
We know that software innovation will fuel the growth for most companies and many have embarked on this transformation journey. When you are planning DevOps changes to drive the transformation, make sure that you consider a few critical things.
Firstly, build a strategy that leverages your current core competency and domain strengths. Secondly, you must understand while adding the transformation steps on how it creates value or what problem it solves. Understand and adopt the new business model that enables the transformation. Finally, don't go solving everything and don’t look for big bangs. This transformation requires a fast stream of new and real compelling customer experiences. This will help us learn fast, gain confidence around the transformation and also helps build a new cultural DNA for the company that sustains.
DevOps buzz can be overwhelming if we decide to go all the way in with all stages of changes. Consider creating those new micro experiences for both our developers and our customers. Remember “happy developers create happy customers” so, it is an important measure of DevOps success.
Empower your DevOps team to create meaningful changes across teams as these are crucial for the right culture shift. Measure everything from the code changes, product deployments, feature update and developer responses around new DevOps change.
In the world today, DevOps will be a complex multifaceted team that unifies developers, architecture, supply chain, new business model and operations. It is this team that is looking at the flow of value across the entire software delivery chain so it must be positioned and empowered correctly.