Back to IF4054 Pengoperasian Sistem Perangkat Lunak

Infrastructure as Code Fundamentals

Questions/Cues

  • Apa itu Infrastructure as Code dan mengapa dipakai?
  • Apa beda provisioning imperative dan declarative?
  • Apa pola umum dalam cloud provisioning?
  • Mengapa container orchestration dibutuhkan?

Reference Points

  • IF4054 IaC & Cluster Security (Slides 8-11)

Apa Itu IaC?

Infrastructure as Code mendefinisikan infrastruktur (server, jaringan, load balancer, cluster) dalam file teks yang dilacak di version control, persis seperti kode aplikasi.

  • File yang mendeskripsikan “satu instance Postgres di us-east-1” dapat direview lewat pull request sebelum menyentuh infrastruktur nyata.
  • Menggantikan klik manual di console dan shell script tak terlacak dengan satu sumber kebenaran yang reproducible.
  • Memperluas Faktor I (codebase) ke lapisan infrastruktur itu sendiri.

Imperative vs Declarative

Imperative (How)Declarative (What)
BentukSkrip langkah berurutan: buat ini, lalu ituDeskripsi keadaan akhir: “harus ada tepat 3 web server”
Edge caseHarus ditangani manual (server sudah ada?)Tool menghitung langkah yang aman
Re-runSering gagal atau menduplikasi resourceAman; tidak ada perubahan bila realita sudah cocok
State saat iniSulit diketahui tanpa membaca seluruh skripFile selalu menggambarkan infrastruktur yang dimaksud

Pola Cloud Provisioning

  • Resource graph — infrastruktur dimodelkan sebagai graf resource dengan dependency (database harus ada sebelum aplikasi yang terhubung).
  • Modules — blok infrastruktur reusable dan berparameter (mis. “VPC standar”).
  • Environments as data — dev, staging, prod memakai kode modul sama dengan file variabel berbeda, bukan salinan konfigurasi.
  • State — tool mencatat apa yang diyakini ada, lalu merekonsiliasinya dengan realita di setiap run.

Mengapa Orchestration?

Begitu container lebih dari segelintir, harus ada yang memutuskan di mana tiap container berjalan dan apa yang terjadi saat ada yang mati. Orchestrator menangani scheduling, scaling, networking, dan self-healing. Kubernetes adalah orchestrator dominan: sistem deklaratif yang terus-menerus merekonsiliasi “apa yang berjalan” dengan “apa yang diminta”, analog lapisan infrastruktur dari prinsip disposability 12-factor.

flowchart TD
    F["File deklaratif<br/>di Git"] --> R["Review via PR"]
    R --> T["Tool IaC / orchestrator<br/>hitung perbedaan"]
    T --> I["Infrastruktur nyata"]
    I -->|"rekonsiliasi"| T

Summary

IaC mendefinisikan infrastruktur dalam file teks berversi yang dapat direview seperti kode, menggantikan klik manual dan skrip tak terlacak. Pendekatan declarative (deskripsi keadaan akhir; tool menghitung langkah, re-run aman) lebih unggul daripada imperative (skrip langkah rentan duplikasi). Pola umum: resource graph, modules, environments as data, dan state. Begitu container banyak, orchestrator seperti Kubernetes menangani scheduling, scaling, networking, dan self-healing secara deklaratif.