Alternatif #

Terraform bukan satu-satunya tool IaC yang ada. AWS punya CloudFormation, HashiCorp sendiri sempat dibayangi kontroversi lisensi yang melahirkan OpenTofu, dan ada juga Pulumi yang mengizinkan kamu menulis infrastruktur dalam bahasa pemrograman yang sudah kamu kenal. Memilih tool yang tepat bukan soal mana yang paling populer, tapi soal mana yang paling cocok dengan konteks proyekmu. Artikel ini membantu kamu memahami pilihan yang ada.

AWS CloudFormation #

CloudFormation adalah tool IaC native AWS. Jika kamu sudah terikat dengan ekosistem AWS dan tidak berencana multi-cloud, CloudFormation adalah pilihan yang solid.

# CloudFormation menggunakan YAML atau JSON
# Sintaksnya lebih verbose dibanding HCL

AWSTemplateFormatVersion: '2010-09-09'
Description: 'Web server sederhana'

Resources:
  WebServerInstance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-0abcdef1234567890
      InstanceType: t3.micro
      SecurityGroups:
        - !Ref WebServerSecurityGroup
      Tags:
        - Key: Name
          Value: web-server

  WebServerSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: 'Security group untuk web server'
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 80
          ToPort: 80
          CidrIp: 0.0.0.0/0
# Ekuivalen di Terraform — lebih ringkas
resource "aws_instance" "web" {
  ami             = "ami-0abcdef1234567890"
  instance_type   = "t3.micro"
  security_groups = [aws_security_group.web.name]

  tags = {
    Name = "web-server"
  }
}

resource "aws_security_group" "web" {
  description = "Security group untuk web server"

  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

CloudFormation unggul dalam integrasi native dengan AWS (IAM, rollback otomatis, drift detection bawaan), tapi terbatas hanya untuk AWS dan sintaksnya cenderung verbose.


Pulumi #

Pulumi mengambil pendekatan berbeda: daripada belajar bahasa baru (HCL), kamu menulis infrastruktur menggunakan bahasa pemrograman yang sudah kamu kuasai — TypeScript, Python, Go, atau C#.

// Pulumi — TypeScript
// Cocok jika tim sudah sangat familiar dengan bahasa ini

import * as aws from "@pulumi/aws";

const webSg = new aws.ec2.SecurityGroup("web-sg", {
  description: "Security group untuk web server",
  ingress: [{
    protocol: "tcp",
    fromPort: 80,
    toPort: 80,
    cidrBlocks: ["0.0.0.0/0"],
  }],
});

const webServer = new aws.ec2.Instance("web-server", {
  ami: "ami-0abcdef1234567890",
  instanceType: "t3.micro",
  securityGroups: [webSg.name],
  tags: { Name: "web-server" },
});

Keuntungan Pulumi: kamu bisa menggunakan loop, kondisional, fungsi, dan abstraksi yang sudah kamu kenal. Kekurangannya: ekosistem dan komunitas lebih kecil dari Terraform, dan debugging infrastruktur yang error bisa lebih kompleks.


AWS CDK #

AWS CDK (Cloud Development Kit) mirip dengan Pulumi — menggunakan bahasa pemrograman — tapi di balik layar ia menghasilkan CloudFormation template. Ini berarti kamu mendapat ekspresivitas bahasa pemrograman dengan keandalan CloudFormation.

# AWS CDK — Python
from aws_cdk import (
    Stack,
    aws_ec2 as ec2,
)
from constructs import Construct

class WebStack(Stack):
    def __init__(self, scope: Construct, id: str, **kwargs):
        super().__init__(scope, id, **kwargs)

        vpc = ec2.Vpc(self, "WebVpc")

        instance = ec2.Instance(self, "WebServer",
            instance_type=ec2.InstanceType("t3.micro"),
            machine_image=ec2.AmazonLinuxImage(),
            vpc=vpc,
        )

CDK cocok jika tim sudah deep di ekosistem AWS dan ingin level abstraksi yang lebih tinggi. Tapi seperti CloudFormation, CDK terbatas untuk AWS saja.


OpenTofu #

OpenTofu adalah fork open-source dari Terraform yang lahir setelah HashiCorp mengubah lisensi Terraform dari MPL menjadi BSL (Business Source License) pada 2023. OpenTofu kompatibel dengan konfigurasi Terraform yang sudah ada — file .tf kamu bisa langsung digunakan.

TERRAFORM vs OPENTOFU:

  Terraform (HashiCorp):
    - Lisensi BSL — ada batasan untuk penggunaan komersial tertentu
    - Didukung penuh oleh HashiCorp
    - Terraform Cloud sebagai managed service
    - Ekosistem provider terbesar

  OpenTofu (Linux Foundation):
    - Lisensi MPL — benar-benar open source
    - Kompatibel dengan konfigurasi Terraform yang ada
    - Dikelola oleh komunitas
    - Cocok jika ada kekhawatiran soal lisensi BSL

Untuk mayoritas use case, perbedaan teknis antara Terraform dan OpenTofu sangat kecil. Pilihan di antara keduanya lebih ke arah pertimbangan lisensi dan kebijakan perusahaan.


Perbandingan #

TerraformCloudFormationPulumiCDKOpenTofu
BahasaHCLYAML/JSONTS/Python/Go/C#TS/Python/Java/C#HCL
Multi-cloud✗ (AWS only)✗ (AWS only)
KomunitasSangat besarBesarKecil-menengahMenengahBerkembang
LisensiBSLProprietaryApache 2.0Apache 2.0MPL 2.0
State managementManual/remoteOtomatis (AWS)Manual/remoteOtomatis (AWS)Manual/remote
Kurva belajarSedangSedangRendah (jika sudah kenal bahasanya)RendahSedang

Panduan Memilih #

PILIH TERRAFORM jika:
  ✓ Butuh multi-cloud atau multi-provider
  ✓ Tim belum familiar dengan satu bahasa pemrograman tertentu
  ✓ Ekosistem provider dan modul yang luas jadi prioritas
  ✓ Tidak ada kekhawatiran soal lisensi BSL

PILIH CLOUDFORMATION jika:
  ✓ 100% AWS dan tidak akan berubah
  ✓ Ingin integrasi native AWS yang paling dalam
  ✓ Butuh rollback otomatis bawaan

PILIH PULUMI jika:
  ✓ Tim sangat familiar dengan TypeScript atau Python
  ✓ Butuh logika kompleks (loop, kondisional, abstraksi tinggi)
  ✓ Ingin menghindari belajar bahasa baru

PILIH OPENTOFU jika:
  ✓ Ingin kompatibilitas dengan Terraform tapi tanpa lisensi BSL
  ✓ Ada kebijakan perusahaan yang mensyaratkan open-source penuh

Ringkasan #

  • CloudFormation adalah pilihan solid untuk tim yang 100% AWS — integrasi native, rollback otomatis, tapi terbatas satu cloud.
  • Pulumi memberi ekspresivitas bahasa pemrograman yang sudah dikenal — ideal untuk tim yang tidak mau belajar HCL.
  • CDK adalah abstraksi di atas CloudFormation — cocok untuk tim AWS yang butuh level abstraksi lebih tinggi.
  • OpenTofu adalah alternatif open-source penuh untuk Terraform — kompatibel dan cocok jika ada kekhawatiran soal lisensi BSL.
  • Terraform tetap pilihan utama untuk use case multi-cloud, ekosistem provider terluas, dan komunitas terbesar di antara semua tool IaC.

← Sebelumnya: Tool Imperative   Berikutnya: Kapan Digunakan? →

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact