vali_111 - Fotolia
If you've been fortunate enough to attend one of the mega-conferences, like Amazon re:Invent or Oracle OpenWorld, or perhaps if you've been privy to the Twitter feeds of big tech vendors, such as Amazon, Google or Microsoft, then you've inevitably become aware of the fact that the two technical titans driving modern digital transformation are cloud computing and DevOps.
As these two technologies have independently emerged, they have also managed to converge, with the latest digital transformation trend being DevOps in the cloud. Given the distinctly different nature of the two concepts, the term DevOps in the cloud almost seems like a misnomer. But DevOps in the cloud is indeed a real thing, and infrastructure as code is making it possible.
To understand why DevOps in the cloud might seem like an unusual combination, it's important to understand what the two terms individually mean. DevOps, when boiled down to its basics, is all about writing code and delivering software to the end user with as few human interactions and manual interventions as possible.
"I believe the patterns or the common sort of view that most everyone in this space has is that it is about completely automating your software," said Ken Owens, Cisco Systems' chief technology officer of cloud platforms.
The topic of DevOps and DevOps transitions can take off into innumerable tangents, as advocates discuss everything from continuous integration to the dissolution of department silos, but all of that discussion comes back to the fundamental concept of software developers writing code and delivering features to the end user with as few human hurdles in the delivery pipeline as possible.
Understanding the cloud
Cloud computing, on the other hand, is a drastically different concept from DevOps, which is why one might not initially see the value in a concept such as DevOps in the cloud. Cloud computing, at its heart, is simply the utility-based consumption of hardware resources. Organizations like Amazon, Microsoft and Google provide hardware that can be paid for based on the amount of memory used and the number of clock cycles consumed. It's a concept that's not dissimilar to a homeowner being charged only for the electricity they use when they plug an appliance into a wall.
Of course, cloud computing has evolved to include a variety of platform-as-a-service, software-as-a-service and infrastructure-as-a-service products that provide value beyond just the simple ability to provide on-demand microprocessing power, but, at its core, utility-based consumption is what cloud computing is all about. So, given the great divide between the two concepts, why has DevOps in the cloud become such a driver of digital transformation?
The symbiosis comes from the fact that, while the two concepts are very different, they share the same common set of objectives. Both DevOps and cloud computing promise speed, efficiency, agility and predictability.
In terms of speed, DevOps promises to push updates and feature enhancements out to users as quickly as possible. For the cloud, speed comes from the fact that new environments can be spun up and spun down at the click of a button.
For efficiency, DevOps promises to automate and reduce the noise between operations and development teams. For cloud, efficiency means only provisioning the resources you need, when you need them.
With DevOps, automation creates predictable processes and procedures, while in the cloud, reliable tools and service-level agreements with cloud computing vendors make the entire act of provisioning and consuming hardware predictable. So there is indeed a symbiosis of goals in both the DevOps and cloud computing spaces.
But what exactly is it that makes it possible for the two concepts to actually come together? The point of contact between the DevOps and cloud computing worlds is an important digital transformation technology known as infrastructure as code.
Making DevOps in the cloud work
If you have ever looked at one of Amazon's web-based configuration dashboards, you'll know that every single action Amazon Web Services performs can be accessed with a mouse click. Whether there is a need to spin up a new Elastic Compute Cloud (EC2) image, trigger a serverless Lambda call or provision a new Simple Storage Service (S3) data bucket, all of these actions can be performed from a web-based administrative console.
The corollary to this point is that any action that can be triggered through an administrative web-based console can also be triggered by a piece of source code, a batch file, a JShell script or even a Perl program.
"We are now in this brave new world of infrastructure as code, and software is driving the production environments," said Roy Feintuch, CTO and co-founder of Dome9 Security. "Everything is now template based and software based,"
Roy FeintuchCTO and co-founder, Dome9 Security
All of the resources that are available in the cloud computing space can be accessed programmatically by a DevOps team. Infrastructure is no longer managed within a data center but, instead, it has become a resource accessible through an API, as though it were no different from a database, network socket or a folder on the file system.
"Software is now driving configuration," said Feintuch. "So instead of having a network or a physical box or a metal device, you now have API calls provided by the cloud provider."
Thinking about infrastructure as code
In the end, it is this infrastructure as code concept that makes DevOps in the cloud possible. As DevOps pipelines are created, developers can write scripts that not only compile code and perform unit and regressions tests, but also that successfully pass all of the required tests and can be moved into production. As that move happens, new resources such as S3 data buckets, EC2 instances and even low-level computing resources, such as processors and memory, can be allocated.
"It's really a mind shift in how software development occurs because now the application developer kind of owns all of it," said Owens.
The DevOps team can not only script the continuous development of applications, but with DevOps in the cloud, it is possible to programmatically create the various resources a soon to be deployed application will need.
The goals of DevOps and cloud computing are very similar, with great emphasis being placed on speed, efficiency and predictability. By accessing cloud computing resources by treating them as infrastructure as code, the two very dissimilar worlds of DevOps development and cloud computing have managed to merge, helping DevOps in the cloud to drive digital transformation.
Is Amazon down? Here's how to keep your cloud apps running
Case study on how to make DevOps in the cloud work for you
Common DevOps in the cloud security vulnerabilities to avoid