We have long heard promises in developer circles about a DevOps pipeline in which all the tools are connected in a perfect serial fashion. But, DevOps looks more like a continuous loop than a straight line. In fact, DevOps cannot work properly as a serial pipeline at scale because the whole end-to-end process must be based on a parallel architecture, which introduces ongoing complexities.
Such inherent complexity is a necessary, but overlooked, aspect of DevOps for development and operations teams. Let’s define DevOps as a set of practices to reduce the time between committing a change to a system and the change being placed into normal production, while still ensuring the highest quality software. Due to the pressures of expedience, scarce technical skills and limited resources, we are often tempted to provide simplified versions of our dev and test environments. This may sound strange, but the truth is that we need all that complexity.
The biggest myth about DevOps is not only that everything canbe simplified, but that everything should be simplified. This is especially true when it comes to the application environments used for development and testing. Let’s face it, the real-world data center is a complex place, so our replicas of real-world environments must reflect similar levels of complexity to achieve successful results.
The goal of DevOps should be to shorten the systems development lifecycle, while still frequently delivering new features, fixes and updates in close alignment with business objectives. In the software world, we cherish terms like speed, agility, rapid releases, and even the notion of “failing fast.” We also strive to deliver greater simplicity, especially when it comes to user experiences. These are admirable goals, but they mask the diligence and close attention to detail that’s needed to create, test, certify, and launch robust software and equipment that will survive and thrive in complex environments.
Re-creating the complexity of a real-world environment helps development teams produce more robust software because the complexity gets baked directly into product, security, and compliance testing. Oversimplifying our environments is the equivalent of winging it, which is another way of saying improvising, or doing something without the proper level of preparation.
Think of the products you trust with your privacy, or even your life. Would you prefer to share your private health information or ride in a self-driving car that was created by dev and test teams that were just winging it? Or, would you appreciate knowing that your software-based products were created and tested by well-prepared teams that did not oversimplify their environments?
Managing Complexity Through Environment-as-a-Service
Creating real-world replicas of networking and software environments can be hard, especially when it’s done manually. An environment-as-a-service approach is good news for anyone who’s ever had to wait for days, weeks, or even months for access to the application and infrastructure resources they need to create replicas of their own complex environments.
The solution involves turning development and test environments into cloud services. A service-based architecture can be delivered by pulling together all the necessary components, including infrastructure, tools and applications, and then rendering them into a fully automated test environment.
Such a service-based model makes it simpler for users to set up and tear down their own environments dynamically on an as-needed basis. This approach improves resource utilization, while cutting costs by eliminating the need for extensive IT support to provide the necessary infrastructure and toolsets to line-of-business users and sales engineers.
Our industry is still developing new technologies to plug some important gaps in the full spectrum of DevOps tools. Ongoing market consolidation is likely to accelerate the path toward greater standardization over the next several years.
As the speed of business becomes increasingly complicated and fast-paced, our development tools and testing systems must keep pace by reflecting similar levels of complexity and agility. Along the way, we should seek to refine our internal DevOps practices byabstracting away the underlying infrastructure complexity. In this way, developers can focus on doing excellent coding and developing better applications.
Lior Koriat has served as Quali’s (News - Alert) CEO since 2008. Prior to joining Quali, Lior was founder and CEO of Intellitech Engineering Mechanical & Aviation Ltd. He has over 20 years of experience in system and software engineering in the fields of avionics, robotics, communications, control, real-time and embedded applications, algorithms and audio/video streaming. He holds a Bachelor’s degree with honors in computer science and economics from Tel Aviv University.