Modul 11Term 4 · Operasional produksi14 item poster

Shipping: CI/CD, Supply Chain, dan Infrastruktur

Masuk untuk menyimpan progres Anda di semua perangkat. Sampai saat itu, progres disimpan di browser ini.

Mengapa ini penting

AI memungkinkan Anda menulis perubahan sepuluh kali lebih banyak. Tanpa jalur otomatis dan aman menuju production, itu berarti sepuluh kali lebih banyak insiden. Riset DORA jelas menunjukkan bahwa kecepatan dan stabilitas bukan pilihan yang saling meniadakan: tim terbaik deploy lebih sering dan lebih jarang gagal, karena setiap perubahan kecil, teruji, dan bisa dibatalkan.

Capaian pembelajaran

  1. Membangun pipeline CI/CD dengan gerbang kualitas dan keamanan.
  2. Melakukan containerisasi secara reproducible dengan Docker.
  3. Mengamankan software supply chain (lockfile, SBOM, provenance, slopsquatting).
  4. Merilis secara progresif dengan feature flag, rolling, canary, dan blue-green.
  5. Melakukan rollback dalam waktu kurang dari satu menit.
  6. Mendefinisikan infrastructure as code.
  7. Mengetahui kapan (dan kapan tidak) memakai Kubernetes.

Materi

11.1 Pipeline (6, 107)

Di setiap pull request: install (dari lockfile) → lint → type-check → unit test → integration test (DB sungguhan di dalam container) → pemindaian keamanan (secret, SAST, dependensi) → build → preview deploy → test E2E di preview. Saat merge ke main: build sekali, deploy artifact yang sama ke staging lalu production, jalankan migrasi sebagai langkah terkendali, smoke test, pantau.

  • Branch protection: review wajib dan check yang lolos; tidak ada orang (dan tidak ada agen) yang push langsung ke main.
  • Build caching (107) menjaga CI tetap cepat (cache dependensi dan layer, remote cache di monorepo). CI yang lambat membuat orang melewatinya.

11.2 Docker (7)

  • Multi-stage build; base image kecil (distroless, alpine, atau slim); pin digest image.
  • Jalankan sebagai non-root; tidak ada secret di image maupun layer; .dockerignore.
  • Pindai image (Trivy) di CI. Image yang sama berjalan di lokal, CI, dan production: akhir dari "di mesin saya jalan kok."

11.3 Supply chain dan dependency hell (108, OWASP A03:2025)

  • Lockfile di-commit; npm ci / install yang dibekukan di CI.
  • Slopsquatting: tool AI kadang menyarankan paket yang tidak ada; penyerang lalu mendaftarkan nama-nama itu. Verifikasi bahwa setiap dependensi baru memang ada, terpelihara, benar-benar dipakai orang, dan ejaannya tepat.
  • Update otomatis (Dependabot/Renovate) disertai test; kelompokkan update minor; tinjau update major.
  • Minimalkan dependensi; utamakan platform dan standard library.
  • SBOM (CycloneDX atau SPDX) dibuat per build; provenance/signing (framework SLSA, Sigstore/cosign, GitHub artifact attestations). Pelanggan enterprise makin sering meminta SBOM.
  • Pin GitHub Actions ke commit SHA; permission GITHUB_TOKEN dengan least privilege.

11.4 Progressive delivery (51 sampai 55)

  • Feature flag (51): deploy kode dalam keadaan tersembunyi, rilis ke pengguna internal, lalu ke sekian %, lalu ke semua. Pisahkan deploy dari rilis. Bersihkan flag lama (flag lama adalah tech debt).
  • Rolling (54): ganti instance secara bertahap; default di kebanyakan platform.
  • Canary (53): kirim sebagian kecil % traffic ke versi baru, bandingkan error rate dan latensi, promosikan otomatis atau batalkan.
  • Blue-green (52): dua environment lengkap; alihkan traffic seketika; kembali seketika.
  • Rollback (55): yang paling penting. Rollback instan dari platform (Vercel, Cloudflare, Fly, Render) atau redeploy tag image sebelumnya. Latih. Migrasi database harus backward compatible agar rollback kode aman (03 · Fondasi Data expand and contract).

11.5 Infrastructure as code (104, 105)

  • Semuanya (DNS, bucket, DB, queue, IAM, alert) didefinisikan dalam kode, ditinjau lewat PR, diterapkan oleh CI. Tidak ada click-ops di production.
  • Terraform / OpenTofu (105), Pulumi (TypeScript), atau file konfigurasi platform. State disimpan secara remote dan di-lock.
  • Manfaat: environment yang reproducible, jejak audit, disaster recovery dengan cukup apply ulang.
  • Pindai IaC untuk salah konfigurasi (Checkov, Trivy).

11.6 Kubernetes, Helm, service discovery (8, 9, 106)

  • Kubernetes (8) mengorkestrasi container: penjadwalan, self-healing, scaling, rolling update. Helm (106) mengemas aplikasi K8s. Service discovery (9) memungkinkan service saling menemukan berdasarkan nama.
  • Saran jujurnya: untuk tim kecil, PaaS terkelola (Vercel, Cloudflare, Fly, Render, Railway, Cloud Run, ECS) memberi sebagian besar manfaatnya dengan beban operasional yang jauh lebih kecil. Adopsi K8s ketika Anda punya banyak service, tim platform, atau kebutuhan enterprise/on-prem.

11.7 Environment

Lokal → preview (per PR) → staging (mirip production, data dianonimkan) → production. Kredensial dan akun terpisah per environment. Agen AI tidak pernah memegang kredensial production secara default.

Lab 11: Ship sepuluh kali dalam sehari

  1. Bangun pipeline lengkap di atas dengan GitHub Actions.
  2. Tambahkan pembuatan SBOM serta pemindaian dependensi + container; gagalkan jika ada temuan critical.
  3. Bungkus fitur baru dengan flag; rilis ke 10% lalu 100%.
  4. Lakukan deploy buruk dengan sengaja; deteksi lalu rollback. Ukur waktunya.
  5. Definisikan infra Anda (minimal DNS, DB, storage, satu alert) dengan Terraform/OpenTofu atau Pulumi.

Definition of Done

Paket prompt AI

  • "Tulis workflow GitHub Actions dengan lint, typecheck, test dengan service container Postgres, gitleaks, Semgrep, audit dependensi, Docker build dengan pemindaian Trivy, dan SBOM. Pin semua action dengan SHA dan gunakan permission least privilege."
  • "Untuk setiap dependensi yang ditambahkan di diff ini, pastikan paketnya ada di registry, serta cek jumlah unduhan mingguan, tanggal publikasi terakhir, dan jumlah maintainer-nya."