DEV Community

Cover image for Terraform with AWS- Day1: Why Terraform Matters & How It Really Works
Amit Singh Deora
Amit Singh Deora

Posted on

Terraform with AWS- Day1: Why Terraform Matters & How It Really Works

What Is Infrastructure as Code (IaC)?

Infrastructure as Code (IaC) means you write code to create and manage your cloud infrastructure.

Infrastructure as Code simply means:

Using code to create and manage cloud resources
instead of clicking buttons on the cloud console.

Normally, to create a server or a database on AWS, you open the console and click through 10–20 screens. With IaC, you just write something like:

Example:
resource "aws_instance" "demo" {
ami = "ami-12345"
instance_type = "t2.micro"
}

Why IaC approach is good to go:

Repeatable
Consistent
Version-controlled
Automated
Error-free
Team-friendly

And this is exactly the reason DevOps engineers love IaC.

Tools Used for IaC

You’ll find many IaC tools out there, but they fall into two categories:

Multi-Cloud Tools

  • Terraform ⭐ (most popular)
  • Pulumi

Cloud-Specific Tools

  • AWS CloudFormation, CDK, SAM
  • Azure ARM, Bicep
  • GCP Deployment Manager Terraform is universal, meaning it works with AWS, Azure, GCP, Kubernetes, and dozens of other platforms.

That’s why almost every DevOps roadmap begins with Terraform.

Why Do We Even Need Terraform?

Good question — because AWS already gives us a beautiful console, right?
So why write code?

To understand this, let’s imagine a very common architecture.

The Problem: Manual Infrastructure Doesn’t Scale
Let’s consider a simple 3-tier application:

  • Web tier
  • App tier
  • Database tier
    To deploy this, you need to create:

  • VPC

  • Subnets

  • EC2 instances

  • Auto Scaling Groups

  • Load Balancers

  • RDS Database

  • Route 53

  • Security groups

  • And more…
    👉 Doing this manually takes ~2 hours per environment

Now multiply that:
1 Application = 6 environments

(dev, staging, prod)

2 hours × 6 = 12 hours per app

And in real companies?

They don’t run 1 or 2 apps.
They run hundreds.

This makes manual provisioning:

  • Time-consuming
  • Expensive
  • Error-prone
  • Inconsistent
  • Impossible to track

Let’s break down the real-world issues 👇

Challenges of Manual Cloud Provisioning

  1. Too slow
    Teams wait for infrastructure → delayed releases.

  2. Too many people required
    Hiring a large infra team = huge cost.

  3. Too many human errors
    Wrong AMI, wrong subnet, wrong IP → outages.

  4. No consistency
    Dev ≠ Staging ≠ Prod
    This leads to the classic:
    “It works on my machine!”

  5. No version control
    No history, no audit, no rollback.
    This is where Terraform shines.

Terraform: The Ultimate Solution

Terraform allows you to:

  • Write infrastructure code once
  • Reuse it for any number of environments
  • Keep everything consistent
  • Automate deployments
  • Eliminate human errors
  • Track all changes through Git
  • Destroy environments automatically to save cost And all this with just a few .tf files. Terraform brings speed, safety, repeatability, and control to cloud infrastructure.

How Terraform Actually Works

Terraform uses a declarative language called HCL (HashiCorp Configuration Language).
You write.tf files to describe what you want.

Example:
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
}


Then you run 4 important commands:

terraform init

Downloads the provider plugins (like AWS provider).
This is always the first command.

terraform validate

Checks if your Terraform files are correct syntactically.

terraform plan

Shows a preview of:

what Terraform will create
what it will modify
what it will delete
This is like a “safety check” before deployment.

terraform apply

Actually creates infrastructure in AWS via API calls.

terraform destroy

Removes everything mentioned in your .tf files. Removes all resources defined in your Terraform project.
Useful for dev/testing environments.


Terraform + Git = Pure Magic

Using Git with Terraform gives you:

  • Full version history
  • Rollbacks
  • Pull request approvals
  • Collaboration
  • Faster Approval
  • CI/CD automation

Infrastructure becomes predictable, secure, and auditable.

Installing Terraform (Quick Summary)

Install using Homebrew / apt / yum / Chocolatey
Confirm using:
terraform version
Install VS Code extension → HashiCorp Terraform
Set alias tf=terraform for easy typing
You’re ready to start!

Top comments (0)