Latar Belakang
Sumber utama minggu ini adalah tulisan Martin Fowler (2011) tentang Continuous Delivery, yang menjadi akar filosofi dari semua “X-Ops” (DevOps, MLOps, DataOps, dst).
Common Deployment Pipeline
Alur rilis software konvensional yang dibahas Fowler:
Commit stage (Compile, Unit test, Analysis, Build installers) → Automated acceptance testing → Automated capacity testing → Manual testing (Showcases, Exploratory testing) → Release
Anti-pattern dalam Rilis Software
Fowler mengidentifikasi tiga kebiasaan buruk yang jadi akar masalah:
- Deploying software manually — proses rilis dilakukan manual sehingga rawan human error dan tidak konsisten.
- Deploying to a Production-like Environment Only after Development Is Complete — environment produksi baru disiapkan/ditest di akhir, sehingga masalah baru ketahuan sangat terlambat.
- Manual Configuration Management of Production Environments — konfigurasi environment produksi diubah manual tanpa version control, sehingga sulit dilacak dan direproduksi.
Gerakan Menuju yang Lebih Baik (Movement)
Fowler menawarkan pendekatan yang lebih baik lewat dua prinsip kunci:
- Automated — Jika proses build, deploy, test, dan release tidak diotomasi, maka prosesnya tidak repeatable. Setiap kali dijalankan hasilnya bisa berbeda karena perubahan pada software, konfigurasi sistem, environment, maupun proses rilis itu sendiri.
- Frequent — Jika rilis dilakukan sering, maka selisih (delta) antar rilis menjadi kecil. Ini secara signifikan mengurangi risiko rilis dan membuat rollback jadi jauh lebih mudah. Rilis yang sering juga menghasilkan feedback yang lebih cepat.
Kemiripan dengan Agile Manifesto
Filosofi Continuous Delivery ini disebut mirip semangatnya dengan Manifesto for Agile Software Development (Snowbird, Utah, awal 2001, disusun 17 orang termasuk Kent Beck, Martin Fowler, Ken Schwaber, dll):
Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
Mengapa Ini Penting? (Feedback)
Motivasi inti dari semua praktik delivery software adalah feedback. Tiga kriteria agar feedback berguna:
- Setiap perubahan, apa pun jenisnya, harus memicu proses feedback.
- Feedback harus disampaikan secepat mungkin.
- Tim delivery harus menerima feedback tersebut dan menindaklanjutinya.
Manfaat (Benefits)
- Empowering teams — tim jadi lebih berdaya karena kontrol penuh atas proses rilis.
- Reducing errors — proses otomatis mengurangi human error.
- Lowering stress — rilis tidak lagi jadi momen menegangkan karena sudah biasa dan teruji.
- Deployment flexibility — bisa deploy kapan saja dibutuhkan.
- Practice makes perfect — makin sering dipraktikkan, makin baik dan lancar prosesnya.
Prinsip Software Delivery [Fowler, 2011]
- Create a Repeatable, Reliable Process for Releasing Software — proses rilis harus bisa diulang dan bisa diandalkan.
- Automate Almost Everything — otomasi hampir semua tahap.
- Keep Everything in Version Control — semua (kode, konfigurasi, skrip infrastruktur) disimpan di version control.
- If It Hurts, Do It More Frequently, and Bring the Pain Forward — kalau suatu proses terasa menyakitkan/sulit, jangan dihindari, justru lakukan lebih sering agar masalahnya cepat terlihat dan diselesaikan lebih awal.
- Build Quality In — kualitas dibangun sejak awal proses, bukan ditambal di akhir.
- Done Means Released — definisi “selesai” untuk sebuah fitur adalah ketika sudah dirilis, bukan sekadar “sudah dikoding”.
- Everybody Is Responsible for the Delivery Process — tanggung jawab delivery bukan hanya milik tim ops, tapi seluruh tim.
- Continuous Improvement — proses delivery sendiri terus dievaluasi dan diperbaiki.
DevOps
Definisi
DevOps adalah sekumpulan praktik, tools, dan filosofi budaya yang mengotomasi dan mengintegrasikan proses antara tim pengembangan software (Dev) dan tim IT/operasional (Ops). DevOps menekankan pemberdayaan tim, komunikasi dan kolaborasi lintas tim, serta otomasi teknologi. (Atlassian)
Sejarah Singkat
- Gerakan DevOps dimulai sekitar 2007, ketika komunitas software development dan IT operations mulai mengangkat kekhawatiran terhadap model pengembangan software tradisional.
- Pada model tradisional, developer yang menulis kode bekerja terpisah dari tim operasional yang men-deploy dan mendukung kode tersebut di produksi (kerja dalam silo).
- Istilah DevOps — gabungan kata development dan operations — merefleksikan proses mengintegrasikan kedua disiplin ini menjadi satu proses berkelanjutan (tanpa silo).

DevOps Lifecycle (Infinity Loop)
Siklus DevOps digambarkan sebagai loop tak terbatas (infinity loop) yang terdiri atas 8 tahap, dibungkus oleh kolaborasi dan komunikasi berkelanjutan:
- Discover — mengidentifikasi kebutuhan bisnis dan membuat product roadmap.
- Plan — mendefinisikan task dan mendistribusikannya ke tim.
- Build — mengeksekusi task yang ditugaskan untuk menyelesaikan produk.
- Test — memverifikasi produk.
- Deploy — menempatkan produk ke production.
- Operate — mengelola produk yang sedang dipakai pengguna.
- Observe — mengidentifikasi dan menyelesaikan masalah.
- Continuous feedback — mengevaluasi dan meningkatkan produk.

Praktik-praktik DevOps
- Breaking down silos — meruntuhkan sekat antar tim dev dan ops.
- Fostering team collaboration — mendorong kolaborasi tim.
- Adopting agile practices — mengadopsi praktik agile.
- Continuous integration — integrasi kode berkelanjutan.
- Continuous delivery — pengiriman/rilis software berkelanjutan.
- Configuration management — manajemen konfigurasi sistem.
- Automation for enhancing speed and reliability — otomasi untuk meningkatkan kecepatan dan keandalan.
Bacaan Lanjutan
Slide meminta membaca lebih lanjut tentang sejarah/latar belakang DevOps (referensi: itrevolution.com, “DevOps Culture Part 1”).
Flashcard
flashcards Apa tiga anti-pattern rilis software menurut Fowler (2011)? :: (1) Deploying software manually, (2) Deploying ke environment mirip produksi hanya setelah development selesai, (3) Manual configuration management of production environments. Apa dua kata kunci utama dalam “Movement” menuju delivery software yang lebih baik? :: Automated (agar repeatable) dan Frequent (agar delta rilis kecil, risiko rendah, mudah rollback, feedback cepat). Sebutkan tiga kriteria agar feedback dalam proses delivery berguna. :: (1) Setiap perubahan harus memicu proses feedback, (2) feedback harus disampaikan secepat mungkin, (3) tim delivery harus menerima dan menindaklanjuti feedback tersebut. Apa makna prinsip “If It Hurts, Do It More Frequently, and Bring the Pain Forward”? :: Proses yang terasa menyakitkan/sulit justru harus dilakukan lebih sering agar masalahnya cepat terlihat dan diperbaiki lebih awal, bukan dihindari. Apa definisi DevOps menurut Atlassian? :: Sekumpulan praktik, tools, dan filosofi budaya yang mengotomasi dan mengintegrasikan proses antara tim development dan IT operations, menekankan pemberdayaan tim, komunikasi/kolaborasi lintas tim, dan otomasi teknologi. Kapan gerakan DevOps mulai muncul dan apa pemicunya? :: Sekitar tahun 2007, dipicu kekhawatiran terhadap model development tradisional di mana developer bekerja terpisah (silo) dari tim operasional yang men-deploy dan mendukung kode di produksi. Sebutkan 8 tahap dalam DevOps Lifecycle (infinity loop). :: Discover, Plan, Build, Test, Deploy, Operate, Observe, Continuous feedback. Sebutkan minimal 4 praktik inti DevOps. :: Breaking down silos, fostering team collaboration, adopting agile practices, continuous integration, continuous delivery, configuration management, automation.