Pengenalan Infrastructure as Code
Konsep mengelola infrastruktur menggunakan kode
Apa itu Infrastructure as Code (IaC)
- Mengelola dan provision infrastruktur melalui file konfigurasi
- Menggantikan proses manual dan ad-hoc
- Versionable, testable, dan reusable
Manfaat IaC
- Konsistensi: Lingkungan dev, staging, dan production seragam
- Kecepatan: Deploy infrastruktur dalam hitungan menit
- Kolaborasi: Code review dan pull request untuk perubahan infrastruktur
- Auditability: Riwayat perubahan tercatat di version control
- Recovery: Mudah rebuild infrastruktur saat bencana
Jenis Tools IaC
Declarative
- Mendefinisikan state akhir yang diinginkan
- Tool menentukan langkah untuk mencapainya
- Contoh: Terraform, CloudFormation, Pulumi
Imperative
- Mendefinisikan langkah-langkah eksplisit
- Urutan eksekusi penting
- Contoh: Ansible (bisa hybrid), Shell script
Immutable vs Mutable Infrastructure
Immutable
- Tidak mengubah resource yang sudah berjalan
- Setiap deploy membuat resource baru, lalu hapus yang lama
- Lebih predictable dan mudah di-debug
Mutable
- Mengubah resource yang sudah ada
- Patch dan update langsung di server
- Berisiko configuration drift
Konsep Penting IaC
Idempotency
- Menjalankan konfigurasi berulang kali menghasilkan hasil sama
- Tidak ada efek samping saat re-run
State Management
- Mencatat state aktual infrastruktur
- Digunakan untuk tracking perubahan
- Penting untuk tool declarative
Modularity
- Memecah konfigurasi menjadi komponen reusable
- Memudahkan maintain dan scale
Tools Populer
- Terraform: Multi-cloud, declarative, provider-based
- Ansible: Configuration management, agentless
- Pulumi: IaC dengan bahasa pemrograman umum
- CloudFormation: Native AWS
- Puppet/Chef: Legacy configuration management