![]() |
VOOZH | about |
We’re so glad you’re here. You can expect all the best TNS content to arrive Monday through Friday to keep you on top of the news and at the top of your game.
Check your inbox for a confirmation email where you can adjust your preferences and even join additional groups.
Follow TNS on your favorite social media networks.
Become a TNS follower on LinkedIn.
Check out the latest featured and trending stories while you wait for your first TNS newsletter.
The business world can’t stop talking about digital transformation and 2020 is expected to see the rapid scaling of digital initiatives across all sectors. When it comes to DevOps (often intertwined with the concept of digital transformation), however, business leaders are still scratching their heads. What DevOps really means to their business, their technology investments, and their teams, seems difficult to grasp. Yet both are two sides of the same coin. In this article, we’ll see how digital transformation and DevOps relate and what it takes to implement a DevOps approach.
Digital transformation is being driven by customer, partner, and supplier interactions that are increasingly moving into the digital realm. Customers, spoiled by fast and reliable interactions provided by cloud-born innovators like Netflix, Uber, or Monzo (a cloud-born UK bank), now demand the same level of convenience from more traditional enterprises. Today, software has become a key strategic business differentiator, and its fast, reliable, and convenient delivery is at the core of digital transformation.
In simple terms, DevOps is the methodology that enables this fast, frequent, and uninterrupted service delivery, and cloud native technologies make such a methodology possible.
👁 Digital transformation, DevOps, coud native
Implementing a DevOps approach requires a complete shift in terms of technology, processes, and culture — it certainly isn’t easy. Yet, as the yearly “Accelerate State of DevOps 2019” exemplifies, the benefits are staggering: “DevOps elite performers” deploy 208 times more frequently and 106 times faster than low performers, or those using a more traditional approach. They recover from incidents 2,604 faster and have a seven times lower change failure rate.
While these stats seem too good to be true, they are validated year-over-year. So if you ever thought the cost-benefit ratio of DevOps isn’t worth the effort, think again.
Inspired by the Lean Movement in the manufacturing of the 1980s, DevOps is seen as a logical continuation of Agile (2000s). As great as DevOps concepts are, however, they wouldn’t have been feasible without the technological innovation brought to us by the cloud. The cloud, for the first time, enabled developers to create environments on-demand. On-demand cloud services also provided developers with the needed tools at the click of a button. The result: unprecedented developer productivity, a hooked world, and the beginning of a new IT era.
This newly discovered productivity gave rise to a whole new breed of technologies: the so-called cloud native stack. Similar to cloud managed services, cloud native technologies, among other things, provide services like storage, messaging, or service discovery, all available with the click of a button. Unlike cloud managed services, they are infrastructure-independent, configurable, and, in some cases, more secure.
The term cloud native can be a little misleading. While developed for the cloud, they are not cloud-bound. In fact, we are increasingly seeing enterprises deploying these technologies on-premise.
To appreciate the benefits of DevOps, we have to understand how IT traditionally operates. In complex organizations with tightly-coupled, monolithic apps (basically any traditional enterprise with legacy apps), work is generally fragmented between multiple groups. This leads to many handoffs and long lead times. Each time a piece is ready, it’s placed in a queue for the next team. Furthermore, individuals only work on one small project piece at the time, leading to a lack of ownership. Their goal is to get the work to the next group, not to deliver the right functionality to the customer — a clear misalignment of priorities, yet deeply ingrained in the system. Additionally, in traditional IT, there were only a few integration test environments. These are environments where developers can test if their code works with all dependencies such as databases or external services. Ensuring smooth integration early on is key to reducing risk.
By the time code finally got into production, it went through so many developers, waited in so many queues that, if the code didn’t work, it was difficult to trace the origin of the problem. Months had passed and whoever worked on it could hardly remember what they had done. Identifying and fixing the problem was difficult and resource-intensive.
If this sounds like a nightmare, it clearly felt like one. This is especially true for the Ops team who are responsible for smooth deployments. A service disruption can have huge implications for any business. Just think of all the hundreds or thousands of customers complaining on social media — a potential PR disaster — or, depending on the case and business, maybe even making the evening news. Would you like to be responsible for pushing the deploy button?
The main goal of DevOps is to create a workflow from left to right with as little handoffs as possible and fast feedback loops. What does that mean? Work, in our case code, should move forward (left to right) and never back to be fixed again. Problems should be identified and fixed when and where they were introduced. For that to happen, developers need fast feedback loops. Feedback is provided through quick automated tests that will validate if the code works as it should before moving it to the next stage.
To decrease handoffs and increase a sense of ownership, small groups will work on smaller functionalities (vs. an entire feature) and own the entire process: create the request, commit, QA, and deploy — from Dev to Ops or DevOps. The focus is on pushing small pieces of code out quickly. The smaller the change going into production, the easier it is to diagnose, fix, and remediate.
The results are minimized handoffs, reduced risk when deploying into production, better code quality as teams are also responsible for how code performs in production and increased employee satisfaction due to more autonomy and ownership.
To achieve this, you need the right technology, but you must also reorganize your entire IT department. Small groups that own an entire process means developers will have to broaden their skills and radically change the way they work. Experience has shown that the cultural change brought about by DevOps is a lot more difficult than adopting new technologies.
DevOps itself is about culture change: small groups working on small pieces from start to finish while focusing on global goals, which are always prioritized over individual/group goals. DevOps tools are used to reinforce this culture and accelerate desired behavior.
DevOps seems to be mainly about organizational structure and everything mentioned above sounds like common sense. So why did we fragment work and created huge monoliths that are difficult to diagnose and manage in the first place? While smaller code batches and teams who are accountable from start to finish per se isn’t a technology decision, technology has enabled these team structures. Here are some of the key developments that made that transformation possible:
When these technologies come together — namely continuous delivery, microservices, service meshes, call tracing and cloud native monitoring and log collection, etc. — advanced software delivery scenarios become possible.
Canary deployment, for example, is a well-known delivery technique that rolls out new code into production iteratively. First, for a small segment, let’s say 1% of the user base, and then, as all goes smoothly, gradually to the rest of the user base. The old code is still in place as the rollout is executed through a gradual rerouting. The behavior of the new code is constantly monitored and, if it doesn’t increase the error rate, the rollout continues. Otherwise, it’s rolled back for review and bug fixing. That’s a far cry from the scenario described above.
Technology is eliminating numerous bottlenecks making a DevOps approach feasible. Previously, IT departments did the best they could with what they had. Today, however, a traditional IT structure is not sustainable anymore. The world is moving increasingly faster and if IT can’t keep up, chances are your company will be left behind. That’s why we are seeing everyone rapidly jumping on the digital transformation bandwagon. Yet rushing to adopt these new technologies may lead to suboptimal architectures that will have to be rearchitected yet again in the near future. It’s important to follow best practices and avoid shortcuts, as tempting as it may seem.
In part two of this article, we dig a little deeper. We discuss how developers can get fast feedback on code quality, how DevOps-oriented teams and architectures look like, as well as the role of telemetry and security. In short, you’ll get a better sense of what it takes to implement an enterprise-wide DevOps approach.
As usual, a big thanks to Oleg Chunikhin for his support.