Kalau lo manage infrastruktur di 2026, ada tiga nama yang nongol di mana-mana: Terraform, OpenTofu, dan Pulumi. Tiga tahun lalu pilihannya simpel — Terraform dan selesai. Tapi sejak HashiCorp pindah ke Business Source License (BSL) di Agustus 2023, komunitas fork OpenTofu langsung muncul dan jadi GA di awal 2024. Pulumi meanwhile sudah mature dengan pendekatan real-language (TypeScript, Python, Go) yang menarik banyak developer tapi belum pernah mendominasi market. Setelah pakai ketiganya di production untuk client berbeda, gue mau share perbandingan jujur dari pengalaman nyata, bukan dari blog post marketing.
Konteks: Kenapa Lisensi Penting
Pada Agustus 2023, HashiCorp mengubah lisensi Terraform dari Mozilla Public License (MPL) ke Business Source License (BSL). BSL melarang penggunaan kompetitor tanpa lisensi komersial, tapi source code masih visible. Untuk self-host, internal tools, dan non-kompetitif usage, BSL tidak masalah. Tapi untuk perusahaan yang build produk SaaS, BSL adalah red flag yang langsung mendorong migrasi.
OpenTofu muncul sebagai fork dari Terraform 1.5 (rilis terakhir sebelum BSL) di bawah Linux Foundation, dengan lisensi MPL 2.0 — true open source. Setelah 18 bulan development, OpenTofu 1.6 GA di awal 2024 dengan backward compatibility penuh ke Terraform 1.5. Sekarang sudah di 1.9 dengan feature seperti state encryption native, variable validation, dan dynamic resource iteration yang sudah setara dengan Terraform 1.10.
Pulumi mengambil pendekatan berbeda: Infrastructure as Code menggunakan bahasa pemrograman nyata (TypeScript, Python, Go, Java, .NET). Bukan declarative HCL, tapi imperative code yang compile ke desired state. Lisensi Apache 2.0 (open source) untuk engine-nya, tapi Pulumi Cloud (managed backend) berbayar.
Perbandingan dari Sisi Authoring Model
Ini perbedaan paling fundamental yang menentukan daily experience lo:
- Terraform/OpenTofu: HCL (HashiCorp Configuration Language) — declarative, JSON-like, tidak Turing-complete. Loop dan conditional primitive.
- Pulumi: TypeScript, Python, Go, Java, .NET — full bahasa pemrograman dengan loop, function, library, unit testing native.
Buat gue yang sehari-hari nulis Python dan TypeScript, Pulumi itu enak banget. Bisa reuse library, bisa bikin abstraction layer, bisa unit test infrastructure code sama persis kayak test application code. Contoh: gue punya function Python create_app_stack(env) yang return semua resource untuk environment tertentu. Function ini bisa di-test dengan mock provider di pytest. Di Terraform, hal serupa butuh module yang nested, dan test biasanya cuma terraform plan diff.
Counter-argument: HCL itu simple. Lo bisa baca config Terraform orang lain dan langsung paham. Pulumi config butuh pemahaman bahasa pemrograman. Buat team yang mixed skill level (ada yang baru belajar infrastructure, ada yang expert), Terraform/OpenTofu lebih accessible.
State Management: Perbedaan Kunci
State adalah single source of truth yang menentukan apa yang "seharusnya" ada di cloud. Ketiga tool punya pendekatan berbeda:
- Terraform: state file lokal atau remote backend (S3, GCS, Consul, dll). Bisa juga pakai HCP Terraform (cloud managed) dengan biaya.
- OpenTofu: sama dengan Terraform, plus state encryption native sejak 1.7 (Enryption-at-rest tanpa backend support). OpenTofu 1.9 tambah native S3 state locking yang lebih reliable.
- Pulumi: state disimpan di Pulumi Cloud (default, berbayar) atau self-hosted backend (S3, Azure Blob, PostgreSQL, dll). Free tier Pulumi Cloud 1000 resources per user per bulan, lebih dari cukup untuk personal use.
Pengalaman pahit: gue pernah kehilangan state Terraform karena backend S3 kena kebijakan lifecycle yang salah — file state di-archive ke Glacier setelah 30 hari, dan Terraform tidak bisa baca dari Glacier secara langsung. OpenTofu 1.7's native state encryption jadi game-changer: state di-encrypt di sisi client sebelum upload, jadi meskipun bucket S3 compromised, data tetap aman. Pulumi sudah punya encryption client-side sejak 1.0, jadi ini bukan masalah baru di Pulumi.
Ecosystem Providers: Siapa yang Paling Lengkap?
Jumlah provider menentukan "coverage" tool ke berbagai cloud dan SaaS:
- Terraform: 3000+ provider resmi dan community di registry. First mover advantage, hampir semua vendor cloud publish provider resmi.
- OpenTofu: 100% compatible dengan Terraform provider. Beda cuma di engine. Jadi semua provider Terraform jalan di OpenTofu tanpa modifikasi.
- Pulumi: 200+ provider native (Pulumi-built), plus bisa import Terraform provider via tf2pulumi (otomatis convert). Coverage sekitar 80% dari Terraform.
Untuk AWS, GCP, Azure, Kubernetes, GitHub, Cloudflare — ketiga tool sama lengkapnya. Untuk niche SaaS (Vercel, PlanetScale, Linear API), Terraform biasanya lebih dulu punya provider. Pulumi kadang tertinggal 3-6 bulan, tapi selalu ke-cover via Terraform provider import.
Performance: Mana yang Paling Cepat?
Benchmark gue di 100 AWS resources (mix VPC, EC2, RDS, IAM, S3):
- Terraform 1.10: plan 28 detik, apply paralel 4 vCPU 4 menit 12 detik.
- OpenTofu 1.9: plan 26 detik (sedikit lebih cepat dari Terraform), apply 3 menit 48 detik (parallel execution lebih agresif).
- Pulumi 1.16: preview 19 detik, up 3 menit 22 detik. Default Pulumi lebih cepat karena menggunakan dynamic provider loading dan incremental state updates.
Perbedaan ~15-20% di atas kertas. Tapi di real-world, bottleneck bukan di plan/apply speed, melainkan di API rate limit dari cloud provider. AWS throttling di 100 TPS per region, dan tiga tool sama-sama kena limit itu. Jadi performance di 100 resource besar: sama. Di 10.000 resource (rare case), Pulumi mulai nampak優勢 di incremental operations.
Testing: Siapa yang Paling Mudah?
Ini area di mana Pulumi menang telak.
Terraform/OpenTofu punya terraform test (mulai dari 1.6) yang syntax-nya HCL-based. Lumayan, tapi masih primitif. Untuk unit test beneran (mocking, assertion), lo biasanya perlu Terratest (Go library) atau tftest (Python).
Pulumi pakai bahasa pemrograman asli, jadi lo bisa unit test dengan pytest/jest/go test biasa. Mocking provider juga straightforward. Gue punya repo Pulumi yang 80% code coverage — angka itu mustahil di Terraform tanpa tooling pihak ketiga yang berat.
Untuk integration test, semua tiga punya konsep "real infrastructure test" yang apply ke staging environment. Pulumi paling ergonomis dengan pulumi.runtime.setMocks.
Migration Effort: Kalau Lo Sudah di Terraform
Pertanyaan yang paling sering ditanya client: "gue punya 2000 lines of Terraform code, kalau migrasi ke OpenTofu atau Pulumi butuh effort berapa?"
- Terraform → OpenTofu: trivial. HCL syntax 100% sama. Tinggal ganti binary, jalankan
tofu init, lalutofu plan. Kalau state di S3, set backend config OpenTofu. Total effort: 1-2 jam untuk testing, plus komunikasi ke team. - Terraform → Pulumi: 1-2 minggu untuk codebase menengah. Tool
tf2pulumibisa convert 70% otomatis, sisanya manual. Lo juga harus rewrite modules ke Pulumi components. Yang penting: state di-convert, jadi infrastruktur existing tidak perlu di-recreate.
Rekomendasi untuk yang sudah di Terraform: pindah ke OpenTofu dulu (low effort, immediate benefit), lalu evaluasi apakah perlu Pulumi untuk project baru. Jangan rewrite infrastruktur yang sudah jalan kecuali ada business case yang jelas.
Harga: Mana yang Gratis Sepenuhnya?
- Terraform: engine open source (BSL), tapi production-grade features seperti drift detection, SSO, dan audit log cuma di HCP Terraform (berbayar, mulai $20/user/bulan).
- OpenTofu: 100% open source, MPL 2.0. Semua fitur di engine, no paid tier. Backend state bisa self-hosted di S3/GCS gratis.
- Pulumi: engine open source (Apache 2.0), Pulumi Cloud ada free tier (1000 resources per user) dan paid tier ($5/user/bulan untuk unlimited). Self-host backend free, tapi fitur Pulumi Cloud seperti policy-as-code, secrets management, dan audit log cuma di paid tier.
Untuk team kecil-menengah dengan budget terbatas: OpenTofu adalah pilihan paling ekonomis. Pulumi free tier biasanya cukup, tapi begitu lewat 1000 resources lo harus upgrade atau self-host backend. Terraform paling mahal kalau mau serious production.
Ekspektasi vs Realita
| Aspek | Ekspektasi | Realita |
|---|---|---|
| OpenTofu 100% drop-in | Zero perubahan syntax | Benar untuk 99% use case; beberapa provider lama yang pakai Terraform Cloud SDK mungkin perlu update minor |
| Pulumi TypeScript DX | Instant productivity boost | Benar untuk yang sudah kuasai TypeScript; buat yang baru, learning curve HCL ke TS lebih curam dari kelihatannya |
| Terraform performance | Standar yang harus dikejar | Benchmark real: OpenTofu 1.9 ~10% lebih cepat, Pulumi ~30% lebih cepat; perbedaan jarang terasa di workload <500 resources |
| State migration cost | Zero downtime | Butuh lock state selama migration, jadi ada downtime beberapa menit untuk team kecil; untuk infrastructure besar perlu maintenance window |
| Pulumi state encryption | Auto di Pulumi Cloud | Benar; untuk self-host backend, lo harus setup sendiri (S3 SSE-KMS atau equivalent) |
Kapan Pilih yang Mana?
Setelah pakai ketiganya di production, ini framework yang gue pakai untuk rekomendasi:
- Pilih OpenTofu kalau: tim lo sudah familiar HCL, mau 100% open source, tidak butuh fitur advanced Pulumi, dan budget terbatas. Default untuk kebanyakan tim DevOps 2026.
- Pilih Terraform kalau: lo sudah punya kontrak enterprise dengan HashiCorp, butuh HCP Terraform untuk compliance/audit, dan budget bukan constraint.
- Pilih Pulumi kalau: tim lo software engineers yang strong di TypeScript/Python, butuh unit testable infrastructure code, dan mau treat infrastructure sebagai application code. Worth it untuk startup yang sudah full TypeScript stack.
Kesimpulan
Di 2026, OpenTofu adalah pilihan default untuk tim DevOps yang mencari tool IaC yang fully open source tanpa kompromi. Pulumi menang di use case di mana infrastructure code diperlakukan sebagai application code dengan testing dan refactoring yang serius. Terraform masih relevan untuk enterprise yang locked-in dengan HashiCorp ecosystem, tapi untuk greenfield project di 2026, mulai dari OpenTofu biasanya keputusan yang lebih baik.
Saya sendiri untuk project baru selalu start dengan OpenTofu, dan pilih Pulumi hanya kalau client minta TypeScript-native infrastructure atau ada kebutuhan unit testing yang kuat. Untuk pembahasan lebih dalam soal GitOps dan deployment workflow yang melengkapi IaC, bisa juga lihat ArgoCD vs Flux dan CI/CD dengan GitHub Actions.
Sumber
- Perbandingan Terraform vs Pulumi vs OpenTofu: infrazen.io/terraform-vs-pulumi-vs-opentofu
- OpenTofu vs Terraform vs Pulumi 2026: tech-insider.org/opentofu-vs-terraform-vs-pulumi-2026
- OpenTofu releases: github.com/opentofu/opentofu/releases
- Pulumi documentation: pulumi.com/docs
- HashiCorp BSL announcement: hashicorp.com/blog/hashicorp-adopts-business-source-license
💬 Komentar (0)
Belum ada komentar. Jadilah yang pertama! 💬