Matt Asay
Contributing Writer

Making cloud infrastructure programmable for developers

analysis
Feb 20, 20247 mins

With so much to figure out with AI, it makes sense to simplify with familiar development techniques, especially infrastructure as code and Python.

developer programmer
Credit: Shutterstock

Most developers donโ€™t use infrastructure as code (IaC), argues AWS tech lead Chris Munns. But to those top 10% to 15% of developers who do use modern development technologies such as IaC go the spoils. Even if the audience for IaC remains relatively small, interest in Python and artificial intelligence is accelerating adoption, as Pulumi CEO Joe Duffy notes in an interview. In enterprises that see tech as a competitive advantage, developers are digging deep into infrastructure. IaC is their tool of choice to do this successfully.

The new IT normal

In the days when developers had to request resources from IT, they were largely insulated from the worlds of databases, key-value stores, message queues, networking, and other hard-core โ€œinfrastructureโ€ concerns. Developers owned application code, enterprise architects owned application infrastructure, and IT owned servers, configuration, and scale.

Then distributed computingโ€“a wave that began with virtual machines, swelled with containers, then tidal-waved with Kubernetesโ€“pushed developers into the deep end of cloud infrastructure. As trite as the phrases โ€œshift leftโ€ and โ€œyou build it, you own itโ€ have become, they reflect the much deeper responsibilities that the average developer carries today. Not only are developers writing applications, but theyโ€™re also doing everything else that was once in the land of infrastructure specialists.

Standing up compute resources and frameworks takes time and know-how, and itโ€™s been a constant state of thrashing for both developers and the platform teams enabling them to find the right abstraction for exactly what that developer interface should be to cloud resources. JavaScript made the web browser programmable and set off a renaissance of web applications and mobile experiences thatโ€™s still underway. Weโ€™re on the cusp of a similar breakthrough in making cloud infrastructure truly programmable to developers.

The first waves of infrastructure as code

Infrastructure as code (IaC) is all the rage today, but itโ€™s actually not new. The concept dates back more than 50 years and describes basic principles of automating infrastructure. Just as software-oriented architecture (SOA) evolved application architecture from monolithic applications into microservices patterns, IaC has been the slow-burn movement that is challenging what the base building blocks should be for how we think of cloud infrastructure.

IaC really got on the map in the 2010s, when Puppet, Chef, and Ansible introduced IaC methods for the configuration of virtual machines. Chef was well-loved for allowing developers to use programming languages like Ruby and for the reuse and sharing that came with being able to use the conventions of a familiar language.

During the next decade, the IaC movement entered a new era as the public cloud provider platforms matured, and Kubernetes became the de facto cloud operating model. HashiCorpโ€™s Terraform became the IaC poster child, introducing new abstractions for the configuration of cloud resources and bringing a domain-specific language (DSL) called HashiCorp Configuration Language (HCL) designed to spare developers from lower-level cloud infrastructure plumbing. AWS CloudFormation and Azure Resource Management were two other top contenders in this wave of IaC.

Were domain-specific languages a wrong turn?

In that evolution to DSLs, Pulumi CEO Joe Duffy believes the IaC movement took a wrong turn. โ€œI spent years in the programming language community,โ€ he says, โ€œand we had a saying that โ€˜every domain-specific language is destined to grow up to be an accidentally and poorly designed general-purpose programming language.โ€™ โ€ The complexity of the cloud breaks DSLs, YAML, and markup languages.

Duffy says the general problem with DSLs is how they take developers and platform engineering teams away from managing cloud infrastructure with familiar programming language conventions. โ€œCertainly if you look at IaC, it has been slowly recreating the wheel,โ€ argues Duffy, โ€œfrom language richness, abstraction and reuse, package managers, testing tools, static analysis, editors and their facilities like statement completion, interactive error checking and documentation, refactoring, and so much more. The trappings are a walled garden which actively prohibits developers from tapping into the capabilities of the cloud while simultaneously hobbling infrastructure team productivity.โ€

Using familiar languages with cloud infrastructure

โ€œTreating developers with kid gloves when it comes to the cloud is a mistake I see all the time,โ€ offers Duffy. โ€œIaC is exciting because it turns the entire cloud into a programmable, composable set of building blocks that can be used to build richer and more powerful applications.โ€ As an industry, weโ€™ve moved beyond single machine application servers and single machine operating systems to distributed computing in the cloud, orchestrated by Kubernetes. But where DSL approaches to IaC are trying to mask that infrastructure complexity from developers, Pulumi is letting developers use the built-in conventions in the programming languages they already use as the primary interface to cloud.

โ€œI feel strongly about standing on the shoulders of giants wherever we can,โ€ stresses Duffy. โ€œThere are enough hard problems to solve out there. We donโ€™t need to create artificial ones just for fun.โ€

Pulumiโ€™s approach to IaC is multilanguage infrastructure, with support for Node.js (JavaScript, TypesScript), Python, Go, .Net (C#, F#, VB), and Java. The catalog of supported Pulumi providers spans more than 150 different infrastructure providersโ€“and not just the big clouds, but companies like Cloudflare, Snowflake, MongoDB, Confluent, and many more.

โ€œUsing languages [developers] already know removes a huge mental hurdle from doing IaC,โ€ says Duffy. โ€œIt turns the cloud resources into programmable building blocks that can be stitched together just like any other objects in their favorite language.โ€ Whatโ€™s the catch? As he continues, โ€œThe hard part then becomes learning about those specific building blocks, which arguably is the inherent โ€˜real complexityโ€™ of the problem domain. Essentially, using a familiar language removes all of the accidental complexity, eliminates the fog, and lets folks just focus on solving real problems.โ€

A language-first approach to infrastructure

When we think about application infrastructure domains in mature languages, like Java with J2EE and the vast Java capabilities for handling concurrency and multithreaded code, developers have decades of hard-fought experience leveraging the primitives of their favored languages. This basic desire from developers and platform teams to use the language conventions they are already familiar with is especially strong with Python and AI, according to Duffy. Where DSLs have to bend and twist to deal with complexity, mature languages like Python solve these scale issues out of the box.

โ€œThe cloud is a giant supercomputer and AI is the biggest consumer of that supercomputer we have ever seen,โ€ declares Duffy. โ€œIn this world, being able to program the supercomputer flexibly and deal with complexity that emerges at that scale is exactly why we created amazing programming languages to begin with.โ€ Developers donโ€™t really want to futz with infrastructure. โ€œAlthough infrastructure powers all of these new AI experiences, itโ€™s not what most AI engineers get out of bed in the morning thinking about,โ€ Duffy argues. โ€œUsing Python turns it from a messy, grungy afterthought into a beautiful and elegantly programmable thing, just like any other software.โ€

This battle between DSLs versus general programming languages in the IaC space is not new. In 2020,ย I wrote about new models of declarative programming languagesย and how they contrasted to imperative languages in this IaC domain. Whatโ€™s new in this IaC declarative versus general-purpose language battle is the AI gold rush. Python is the shovel that tens of millions of developers are using, and thereโ€™s a special incentive in this moment to be able to reason with infrastructure through the lens of your primary language.

Matt Asay

Matt Asay runs developer marketing at Oracle. Previously Asay ran developer relations at MongoDB, and before that he was a Principal at Amazon Web Services and Head of Developer Ecosystem for Adobe. Prior to Adobe, Asay held a range of roles at open source companies: VP of business development, marketing, and community at MongoDB; VP of business development at real-time analytics company Nodeable (acquired by Appcelerator); VP of business development and interim CEO at mobile HTML5 start-up Strobe (acquired by Facebook); COO at Canonical, the Ubuntu Linux company; and head of the Americas at Alfresco, a content management startup. Asay is an emeritus board member of the Open Source Initiative (OSI) and holds a JD from Stanford, where he focused on open source and other IP licensing issues. The views expressed in Mattโ€™s posts are Mattโ€™s, and donโ€™t represent the views of his employer.

More from this author