Putting It All Together- The Basic Theory of Terraform Architecture
By: Raphael Socher
Tags: Hashicorp, Terraform Cloud, Startup, DevOps, Terraform

Photo by Maarten Deckers on Unsplash

If you’re in the DevOps space, it’s hard to ignore the power of Terraform. And, if you’re not in the DevOps space, but working in a technical capacity, you may not be as familiar with Terraform. A basic Google search for “Terraform” pulls Elon Musk’s latest quest to “Terraform mars” — but I assure you, it’s worthwhile to at least give yourself a basic understanding of Terraform, even if you’re not deep into the countless DevOps subreddits, Slacks, and Discord servers. Why? Because if there’s one thing I can tell you after spending time writing, editing, and learning about Terraform: it’s here to stay.

This article won’t give you the technical overview necessary to spin up your own configuration. If you’re looking for that, we have plenty of other guides such as “Best Terraform Tutorial Guides” — a comprehensive overview that should get you ready to deploy infrastructure on cloud. Instead, I’ll take you through some of the basic core components of Terraform — at least enough to have an interesting conversation or understand some of the fascinating debates currently happening online about the future of infrastructure.

Are you looking to get guidance on Terraform? Interested in connecting with Terraform experts? Join our InfraCode Slack to connect with others and gain access to advice, events, and more.​

DevOps: People and Processes That You Can’t Avoid

In a not so distant past, DevOps was created. DevOps=Development+Operations (obviously), but what it implies is far more interesting — that both people and processes in a business cannot exist in siloes. They rely on each other. A process doesn’t exist without an actual, real, live person to figure out how to implement it. Enter DevOps.

Infrastructure is the perfect example of a process that not only has redundancies to improve upon, but as companies begin to move to the cloud, infrastructure also implicates scale. And, any basic businessperson can tell you that once you begin to look at scaling, processes suddenly become more complex, redundant, and difficult to replicate manually. Enter Terraform.

The Beauty of Infrastructure as Code

Terraform is essentially a layer on top of infrastructure which eliminates the need for constant manual management. The implications of that are huge. Firstly, Terraform allows for processes to be both sped up and more efficient — a winning combination in the world of DevOps (and let’s be honest — any manager’s dream). Secondly, those same developers that were manually repeating infrastructure processes now have time to focus on application development, product, their favorite hobby…you name it. Lastly, cloud vendor lock-in is (hopefully) becoming obsolete, as Terraform has pushed forward cloud-agnostic infrastructure provisioning. In layman’s terms, Terraform has made it possible for infrastructure to be spun up when you want it, where you want it, and how you want it (in theory).

Of course (and in the spirit of 2020), there are limitations and disappointments associated with Terraform (as cool as it may be). For example, the little guys (small and medium businesses) are being left out of the equation as they struggle to transition to the brave, new cloud-agnostic world. And, as with any new tool, Terraform’s documentation and tutorials aren’t exactly for the faint of heart. That’s where we, at InfraCode, have tried to fill the gap with easy-to-understand Terraform tutorial guides to get newcomers and organizations up-to-speed with using Terraform (without having to waste precious operational hours going through difficult-to-understand documentation guides).

What’s the current debate happening in the DevOps community?

The current debate happening in the DevOps community focuses around Terraform tooling and whether Hashicorp’s tools are currently meeting the needs of, specifically, small and medium enterprises. While no one is debating the utility of Infrastructure as Code for DevOps, there is a fundamental shift happening in terms of tools being created around Terraform.

As with any new product, there was an initial boom in supplementary tools to support Terraform. Some were eager to implement Terraform, without setting up a DevOps-friendly strategy early-on, neither considering the scope nor scale of their resources. Organizations weren’t truly reflecting on the best cloud provider for their infrastructure. With their hearts in the right place, organizations began to jump into Terraform and Infrastructure as Code. But, all of these decisions were easy to implement, but are now proving to be difficult to go back and change.

A partial explanation for why these infrastructure decisions are burdensome to change: Terraform tooling. Current Terraform tooling offerings, such as Gruntwork, require organizations to unknowingly buy into an entire ecosystem. And, as with most software, vendor lock-in ends with high prices, low competition, and customer frustration.

Even more importantly, current Terraform tools don’t meet the needs of small and medium organizations. Terraform Cloud? Underwhelming at best. Gruntwork? You’re forced to buy into an ecosystem. Scalr? A security nightmare (Reddit users said it themselves).

There is a huge gap in the Terraform ecosystem right now, with actual organizational needs not being met with the current tool available. The current debate focuses on the ease-of-use, practicality, and usability of those tools in the long-term.

Are you looking to get guidance on Terraform? Interested in connecting with Terraform experts? Join our InfraCode Slack to connect with others and gain access to advice, events, and more.​