DevOps deployments offer compelling advantages in agility. The key to a successful deployment may depend on which approach to DevOps you choose.
It's tempting for traditional industries to look toward DevOps as a method for improving agility; however, similar to the private vs. public cloud argument, the DevOps methodology is not about technical capability. Successful DevOps is an organizational challenge. I break DevOps into three categories: developer-driven, operations-driven, and a Platform 2.5 type of environment.
A developer-driven operation is the DevOps example that gets the most attention. Some people refer to this model as infrastructure as code.
As a technology-focused company, Netflix is the best example of a DevOps culture. The application developer controls the infrastructure; more specifically, the management plane of the application dictates the infrastructure. Take high availability (HA) as an example.
Applications are designed to continue operating even if the underlying infrastructure fails. If a VM hosting an application frontend fails, the management plane of the application just spends up another instance. If the object-store hosting the configuration state of the application fails, the application management plane switches to a redundant data source.
In traditional infrastructures, developers are customers of the infrastructure team. Infrastructure teams provide highly available infrastructures that developers write applications that ignore the underlying infrastructure. Instead of creating an infrastructure control plane within the application, developers write to the individual operating system (OS). The infrastructure team ensures that the OS is on highly resilient infrastructure. Application availability is dependent on highly redundant infrastructure managed by the infrastructure group.
The gap in application design approaches exposes the challenge of moving to a developer-driven model of DevOps. Today, the vast majority of enterprise applications are designed for traditional infrastructures. There are very few application requirements for developer-driven DevOps in the traditional enterprise. There are even fewer developers that understand infrastructure well enough to deploy an application that controls a greenfield infrastructure, much less a mature data center with thousands of interfaces into the data center.
An operations-driven model of DevOps is one in which the infrastructure adopts development tools to manage the infrastructure. Traditional operation teams acquire development skills and implement automation and configuration management tools such as Puppet, Chef, and Ansible. Sample use cases for these tools include managing the configuration of networks and automating server builds.
While this is a major improvement over manually configuring the infrastructure, it's a far cry from the developer-driven infrastructure that powers Netflix. The operations teams take on a developer mindset and as a result better understands the development mindset. However, the goal is the elimination of barriers between an idea and execution. Operations-driven DevOps doesn't usually remove the barrier between the developer and the infrastructure.
Platform 2.5 environment
When IT leaders look at DevOps, the objective is to improve agility. An approach that has been gaining momentum is a Platform 2.5 type of environment. From a technology perspective, this can be data centers segmenting a portion of the infrastructure that allows developer-driven DevOps. From a practical perspective, this could be as simple as giving developers infrastructures based on Docker containers; developers could use the Docker APIs to develop and manage applications. Developers can build Platform 3.0 applications that control a subset of the infrastructure. Ultimately, the infrastructure team controls the underlying infrastructure.
Some of the challenges with this type of environment include ensuring capacity management of the underlying infrastructure and performance monitoring and troubleshooting. On the plus side, it's a safe environment to experiment with a new operating model. As organizations work their way through operating issues, the lines between organizations begin to blur. For those desiring a developer-focused and driven infrastructure, it's a way forward without disrupting existing operations.
I have yet to see a large non-tech focused enterprise transform their entire operations to a developer-driven infrastructure; I still question if it's the right operating model. While Netflix has proved that it can manage its infrastructure at scale using the method, I don't know if there's enough talent in the industry to sustain this model.
What do you think?
Is developer-driven operations a model that offers value? Or, has your organization focused on automation and configuration management? Tell us in the discussion.
- Mobile is driving DevOps
- What is DevOps? CloudBees and Perfecto Mobile offer different and compelling answers
- Why 2016 is going to be the year of DevOps (ZDNet)
- The secret of DevOps success? It's not about the technology (ZDNet)
Note: TechRepublic and ZDNet are CBS Interactive properties.