What DevOps and triathlons have in common: Connecting the dots
Comment (1) Visits (8296)
There’s a lot of debate in the IT industry about whether a cloud is required when conquering the land of DevOps. Before I dive into this topic, let me start with an analogy to motivate our discussion.
So what does a triathlon have to do with DevOps?
The major disciplines in the implementation of an effective DevOps continuous delivery pipeline are all about build, deployment and test automation. Most enterprises I’ve seen have achieved some level of maturity with respect to automation within those three disciplines but miss connecting the dots.
Think again about the triathlon: even if you have optimized your performance in swimming, biking and running, if you spend too much time in the transition area, you’ll never be successful. In the end success and measurable outcomes are what drive thinking about adopting DevOps principles.
Principles to think about on your DevOps journey
For deployment automation, DevOps requires you to integrate the isolated and usually optimized arts of application deployment and infrastructure provisioning. You want to deploy and test frequently against production-like systems, but a continuous delivery pipeline is as weak as the weakest link in the chain.
While development departments have adopted agile development practices widely and would be capable of deploying frequently, the infrastructure department is often still working in a waterfall approach, where one step can’t begin until the previous one is complete.
Cloud for connecting the dots
Why would you think of cloud technology at all? Because it abstracts the infrastructure or platform you need into a service, and you don’t have to wait for someone to connect the dots inside the infrastructure before you can move on. You simply get an environment into which you can “throw” your application.
Cloud service design and implementation is all about connecting (or orchestrating) steps in a standardized and encapsulated way in order to provide the final service to the development department. Tons of automation scripting and configuration management systems have existed in IT operations, but did they help to bridge the gap? No, because most IT operation departments haven’t come to the point where they internally connected the dots between the various domains of expertise efficiently. Configuration management tools like Chef or Puppet are great at configuring systems but not at provisioning complete platform stacks from scratch that provide a full stack release deployment. Actually both are perfect partners adding value to each other. Cloud computing, though, is helping to transform the IT operations department into connecting the different dots into a world of services right from the beginning and forces them to bundle existing skills and automation assets together.
So doesn’t that sound like a natural fit to transfer the principles of “deploying and testing frequently against production-like systems” into reality? Cloud services provide the following:
Testing against production-like systems requires you to start your tests from a well-defined baseline of platform services if you want to avoid the risk of an evolving infrastructure. I see full-stack release deployments comprising application deployment and infrastructure provisioning as a unified approach getting more and more popular.
Is cloud necessary?
Swim, bike, run or build, deploy, test—isn’t the approach to optimize the whole similar? Becoming a successful triathlete is all about optimizing the single disciplines constantly and connecting the dots efficiently.
So are you willing to become a successful triathlete, or do you want to stick with being a runner only?