Recraftory

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