1. Konsep Infrastructure as Code
Infrastructure as Code (IaC) adalah pendekatan pengelolaan infrastruktur IT melalui kode yang dapat dibaca manusia, bukan melalui konfigurasi manual melalui web console. Dengan IaC, Anda bisa membuat, memodifikasi, dan menghapus infrastruktur cloud secara konsisten dan reproducible.
Terraform adalah tool IaC open-source yang dikembangkan oleh HashiCorp. Terraform menggunakan bahasa deklaratif bernama HCL (HashiCorp Configuration Language) untuk mendeskripsikan infrastruktur yang diinginkan, lalu menghitung dan menjalankan langkah-langkah yang diperlukan untuk mencapai state tersebut.
Mengapa Terraform?
| Keunggulan | Penjelasan |
|---|---|
| Multi-Cloud | Bisa mengelola infrastruktur di AWS, GCP, Azure, dan 1000+ provider lainnya |
| Declarative | Cukup deskripsikan akhir state yang diinginkan, Terraform menangani cara mencapainya |
| Version Control | Infrastruktur di-version sebagai kode di Git — bisa track perubahan dan rollback |
| Reusable | Modul bisa digunakan kembali di berbagai project dan environment |
| Planning | Fitur terraform plan menunjukkan perubahan sebelum diterapkan |
| State Tracking | Terraform melacak state aktual infrastruktur dan membandingkannya dengan desired state |
| Dependency Graph | Secara otomatis menentukan urutan pembuatan resource berdasarkan dependency |
IaC vs Manual Provisioning
| Aspek | Manual (Console) | IaC (Terraform) |
|---|---|---|
| Kecepatan | 🔴 Lambat, satu per satu | 🟢 Cepat, sekaligus |
| Konsistensi | 🔴 Rentan human error | 🟢 Identik setiap kali |
| Dokumentasi | 🔴 Dokumentasi terpisah | 🟢 Kode = dokumentasi |
| Reproduksi | 🔴 Sulit mengulang | 🟢 Jalankan ulang kapan saja |
| Collaboration | 🔴 Satu orang tahu | 🟢 Semua orang bisa baca kode |
| Rollback | 🔴 Manual dan rumit | 🟢 terraform apply versi sebelumnya |
| Scalability | 🔴 Tidak practical | 🟢 Scale dengan mudah |