Is Infrastructure as Code & DevOps The Same?

Yesterday I wrote about Digital Transformation and DevOps in the context of how public cloud has created a platform to enable both types of transformations broadly across all types of industries and organizations. One of the items we covered in that piece was a very important view of why public cloud has been the root of significant digital transformations:

“Public Cloud is a platform to enable software development teams to transform in ways that weren’t possible before public cloud was available. Public cloud is the first infrastructure environment that allows all aspects of traditional IT operations to be implemented and managed via software code. Enabling this approach to running development and IT operations is the true value that the cloud brings to organizations.” – Mark Estes

It is really important to emphasize that public cloud is the first infrastructure environment that allows all aspects of traditional IT to be implemented and managed via software code. Prior to public cloud, most organizations had to procure physical hardware, image the OS, install the physical gear in the data center, etc. There was no publicly available API for the procurement and integration of these physical processes before public cloud. If you look at this same step for users of Microsoft Azure today, for example, there are two ways that this physical procurement of infrastructure works in public cloud:

 

 

On the left I can manually go into the Azure Portal, select the type of server and service that I would like to launch. While this, with a few clicks of a mouse, has greatly sped up the process of getting access to this server versus traditional methods of acquiring physical gear, it is still being done manually by me through the portal. Instead of going into the Azure console, I can also make API calls to create a similar server with all of the same characteristics similar to the software code on the right. All of the major public cloud services support most, if not all, of their public cloud services via APIs (AWS | Azure | Google Cloud | Digital Ocean | IBM). Transforming all aspects of traditional infrastructure into code via APIs is what is meant by Infrastructure as Code (IaC).

As we covered yesterday, DevOps should be defined as transforming the Software Development and IT Infrastructure Operationculture to implement tightly coupled patterns continuously optimized for the support of agile software development. But what about organizations that want to use public cloud efficiently but don’t have a software development organization? These organizations can still take advantage of Infrastructure as Code (IaC) to ensure optimized operations. This is a common area where DevOps and IaC are transposed as most DevOps teams uses IaC as the basis for how infrastructure is managed in conjunction with agile software development processes.

Pets versus Cattle

If we look back at how IT Infrastructure Operations traditionally managed servers (once servers were physically installed in the data center) before public cloud, you would find that these servers were treated like pets. They were given unique names and were part of your IT family. When OS vendors released patches, IT teams would install the patches to the running OS’s, and servers were maintained over time. Public cloud allowed these teams to now treat these public cloud instances more like cattle:

IT Operations teams can now use the public cloud APIs combined with immutable servers to ensure consistency across their infrastructure via APIs. This allows for self-healing infrastructure and the ability to quickly get rid of poorly performing virtual servers. If organizations have “gone to cloud” but are using the related management consoles to launch and manage the underlying infrastructure as something other than software code they have probably not optimized their public cloud deployments.

One of the first benefits that public cloud users get from turning their infrastructure into code is the ability to start/stop the related infrastructure at will. For example, non-production servers should only be turned on during business hours. If you are leaving them on 24×7 because it takes too much time to rebuild and relaunch through the management console you are paying more than 3X more than you should (168 hours in a week vs. 50 hours per work hour week assuming 10 hr work days).

Even if you don’t have software development teams you should be using Infrastructure as Code techniques in your public cloud deployments unless you just can’t stand to say goodbye to your pets. How are you using Infrastructure as Code? Contact us to continue the discussion or with any questions you have on this concept.