Infrastructure as Code #
Infrastructure as Code (IaC) adalah pendekatan untuk mendefinisikan, menyediakan, dan mengelola infrastruktur menggunakan kode alih-alih konfigurasi manual melalui UI cloud atau perintah ad-hoc.
Dengan IaC, resource seperti server, network, load balancer, database, firewall, IAM, hingga monitoring didefinisikan dalam file deklaratif atau imperatif yang dapat:
- Disimpan di version control (Git)
- Direview seperti code biasa
- Di-deploy secara otomatis
- Direproduksi secara konsisten
Prinsip utamanya: Infrastructure should be reproducible, predictable, and auditable.
Masalah Infrastruktur Tradisional (Tanpa IaC) #
Tanpa IaC, tim biasanya menghadapi:
🔴 Configuration Drift #
- Server A dan B “harusnya sama” tapi kenyataannya beda
- Hotfix manual lupa dicatat
🔴 Tidak Reproducible #
- Tidak bisa dengan mudah membuat environment yang identik (dev, staging, prod)
🔴 Human Error Tinggi #
- Salah klik security group
- Salah subnet
- Salah region
🔴 Scaling Lambat #
- Provisioning manual butuh waktu lama
🔴 Tidak Ada Audit Trail #
- Sulit menjawab: “siapa mengubah apa, kapan, dan kenapa”
IaC hadir untuk menyelesaikan semua problem ini.
Konsep Dasar Infrastructure as Code #
Infrastructure = Code #
- Infrastruktur ditulis dalam file (HCL, YAML, JSON, DSL)
- Bisa di-review, di-test, dan di-rollback
Declarative vs Imperative #
Declarative (Disarankan) #
“Saya mau hasil akhirnya seperti ini”
Contoh:
- Terraform
- CloudFormation
- ARM Template
Kelebihan:
- Lebih idempotent
- Lebih aman
- Mudah di-maintain
Imperative #
“Lakukan langkah A, lalu B, lalu C”
Contoh:
- Script Bash
- CLI provisioning manual
Kekurangan:
- Error-prone
- Sulit diulang dengan konsisten
Tool Infrastructure as Code Populer #
Terraform #
- Multi-cloud (AWS, GCP, Azure, dll)
- Declarative
- State-based
- Sangat populer
CloudFormation (AWS) #
- Native AWS
- Tight integration
- YAML / JSON
ARM / Bicep (Azure) #
- Native Azure
- Declarative
Pulumi #
- Menggunakan bahasa pemrograman (Go, TS, Python)
- Lebih fleksibel, tapi kompleks
Lifecycle Infrastructure dengan IaC #
Code (Git)
↓
Plan (Preview perubahan)
↓
Review (PR)
↓
Apply (Provisioning)
↓
State Update
Best practice: tidak ada perubahan infra langsung di production tanpa melalui pipeline ini.
Manfaat Utama Infrastructure as Code #
✅ Konsistensi Environment #
Dev = Staging = Prod (secara struktur)
✅ Scalability #
Provision ratusan resource dalam hitungan menit
✅ Audit & Compliance #
- Semua perubahan tercatat
- Mudah memenuhi standar compliance
✅ Disaster Recovery #
- Infra bisa di-recreate dari nol
✅ Collaboration #
- Infra bisa di-PR dan di-review
Best Practices Infrastructure as Code #
Simpan IaC di Version Control #
- Gunakan Git
- Satu repo atau mono-repo sesuai skala
Gunakan Remote State #
Contoh:
- S3 + DynamoDB (Terraform)
- GCS Backend
Tujuan:
- Hindari state corruption
- Locking saat apply
Pisahkan Environment #
❌ Jangan:
main.tf (dev + prod)
✅ Lakukan:
/envs
/dev
/staging
/prod
Atau gunakan:
- Workspace
- Variable environment
Modularisasi Infrastructure #
Gunakan module:
- network
- compute
- database
- iam
Manfaat:
- Reusable
- Lebih rapi
- Mudah di-maintain
Jangan Hardcode Secret #
❌ Salah:
password = "admin123"
✅ Benar:
- Secret Manager
- Vault
- Environment variable
Selalu Gunakan Plan sebelum Apply #
terraform plan
Tujuan:
- Melihat impact
- Mencegah destructive change
Best practice:
- Apply hanya dari hasil plan yang di-review
Batasi Akses Apply #
- Tidak semua orang boleh
apply - Gunakan IAM Role
- Production lebih ketat
Gunakan CI/CD untuk IaC #
Pipeline contoh:
PR → validate → plan → review → apply
Manfaat:
- Konsisten
- Minim human error
Lakukan Validation & Linting #
Contoh:
- terraform validate
- tflint
- checkov (security)
Hindari Manual Change (No ClickOps) #
Jika terpaksa:
- Catat
- Reconcile kembali ke IaC
Rule emas:
“Jika tidak ada di repo, berarti tidak ada”
Kesalahan Umum dalam IaC #
- ❌ State tidak di-backup
- ❌ Resource terlalu besar dalam satu stack
- ❌ Tidak ada tagging
- ❌ Apply langsung ke production
- ❌ Tidak ada dokumentasi module
IaC dan Security #
IaC mendukung:
- Security by design
- Policy as Code
- Least privilege
Contoh:
- Open Policy Agent (OPA)
- Sentinel (Terraform Enterprise)
Ringkasan #
Infrastructure as Code bukan sekadar tool, tapi mindset.
Dengan IaC:
- Infrastruktur = software
- Perubahan terkontrol
- Sistem lebih stabil
- Scaling lebih cepat
Best infrastructure is boring infrastructure — predictable, repeatable, and automated.
Checklist Cepat IaC #
- Infra di Git
- Remote state
- Modular
- Secret aman
- CI/CD
- Plan sebelum apply
- Tidak ClickOps
Penutup #
Infrastructure as Code bukan sekadar tren DevOps, melainkan fondasi penting untuk membangun sistem yang scalable, aman, dan berkelanjutan.
Di skala kecil, IaC membantu menghindari kesalahan manual dan inkonsistensi environment. Di skala besar, IaC menjadi enabler utama untuk:
- Scaling cepat
- High availability
- Disaster recovery
- Compliance dan audit
Tanpa IaC, infrastruktur akan cepat berubah menjadi fragile system yang sulit dipahami bahkan oleh timnya sendiri.
Sebaliknya, dengan menerapkan IaC secara disiplin dan mengikuti best practice:
- Infrastruktur menjadi predictable
- Perubahan menjadi terkontrol
- Tim dapat fokus ke value bisnis, bukan firefighting
Treat your infrastructure like software — versioned, reviewed, tested, and automated.
Jika infrastrukturmu masih bergantung pada klik manual dan konfigurasi tak terdokumentasi, itu bukan soal jika akan bermasalah — tapi kapan.
Mulailah kecil, konsisten, dan otomatis. IaC adalah investasi jangka panjang yang hampir selalu terbayar.