Mengapa Lingkungan Staging Anda Membutuhkan Deployment Gates Sendiri
Seorang developer melakukan push perubahan ke branch utama. Build berhasil, unit test hijau, dan pipeline secara otomatis melakukan deploy ke staging. Seorang QA tester mulai memverifikasi fitur baru, tetapi di tengah jalan, lingkungan staging rusak karena deployment sebelumnya dari tim lain memperkenalkan perubahan yang bertentangan. Sekarang QA tidak bisa menguji apa pun, jadwal rilis molor, dan tidak ada yang tahu deployment mana yang menyebabkan masalah.
Situasi ini lebih umum dari yang diperkirakan kebanyakan tim. Instingnya adalah memperlakukan staging seperti lingkungan kasual di mana semuanya boleh terjadi. Tetapi jika staging adalah tempat validasi dilakukan, lingkungan staging yang rusak akan memblokir seluruh proses pengiriman. Pertanyaannya menjadi: haruskah semua lingkungan diperlakukan dengan cara yang sama?
Masalah dengan Aturan Deployment yang Seragam
Ketika setiap lingkungan menggunakan aturan pipeline yang sama, salah satu dari dua hal terjadi. Aturannya terlalu longgar untuk production, atau terlalu ketat untuk development. Keduanya tidak baik.
Jika Anda menerapkan kontrol level production ke development, developer menunggu persetujuan dan pemindaian yang tidak memberikan nilai tambah pada tahap itu. Jika Anda menerapkan kontrol level development ke production, Anda berisiko melakukan deploy perubahan yang belum divalidasi dengan benar.
Masalah sebenarnya adalah bahwa lingkungan memiliki tujuan yang berbeda. Development untuk eksperimen. Staging untuk validasi. Production untuk pengguna nyata. Setiap tujuan membawa tingkat risiko yang berbeda, dan pipeline harus mencerminkan hal itu.
Apa Arti Protected Environment
Protected environment adalah lingkungan yang tidak dapat di-deploy tanpa melewati gates tertentu. Gates ini bisa berupa pemeriksaan otomatis, persetujuan manual, atau keduanya. Kuncinya adalah perlindungan terikat pada lingkungan, bukan pada tahap pipeline.
Production adalah kandidat yang jelas untuk perlindungan. Tetapi staging seringkali juga layak mendapatkan perlindungan, terutama ketika digunakan bersama oleh banyak tim atau ketika QA mengandalkannya untuk validasi rilis. Lingkungan staging yang rusak dapat menunda rilis sama efektifnya dengan lingkungan production yang rusak.
Perlindungan tidak bersifat biner. Anda tidak sekadar menandai lingkungan sebagai protected atau unprotected. Sebaliknya, Anda mendefinisikan gates apa yang berlaku untuk setiap lingkungan. Di sinilah environment-specific gates berperan.
Environment-Specific Gates dalam Praktik
Environment-specific gate adalah pemeriksaan atau persetujuan yang hanya berlaku untuk lingkungan tertentu. Pipeline yang sama dapat memiliki gates yang berbeda untuk lingkungan yang berbeda.
Berikut adalah contoh tipikal:
- Development: build berhasil, unit test lulus. Tidak perlu persetujuan manual.
- Staging: integration test lulus, security scan selesai, satu persetujuan peer.
- Production: regression test lulus, security scan selesai, dua persetujuan dari senior engineer, compliance check.
Konfigurasi pipeline mendefinisikan gates ini per lingkungan. Ketika sebuah perubahan berpindah dari satu lingkungan ke lingkungan berikutnya, pipeline memeriksa gates untuk lingkungan tujuan sebelum melanjutkan.
Pendekatan ini menjaga feedback loop tetap cepat untuk lingkungan yang lebih rendah sambil mempertahankan keamanan untuk lingkungan yang lebih tinggi. Developer tidak menunggu persetujuan yang tidak perlu selama pengujian awal. Tetapi perubahan production tidak bisa lolos tanpa validasi yang tepat.
Bagaimana Promosi Bekerja Antar Lingkungan
Promosi adalah tindakan memindahkan perubahan dari satu lingkungan ke lingkungan berikutnya. Misalnya, mempromosikan dari staging ke production. Ketika kedua lingkungan dilindungi, promosi memerlukan kelulusan gates dari lingkungan tujuan.
Diagram di bawah mengilustrasikan bagaimana sebuah perubahan bergerak melalui lingkungan dengan gates yang berbeda di setiap batas.
Tetapi gates untuk promosi ke staging biasanya lebih ringan daripada gates untuk promosi ke production. Ini disengaja. Anda ingin perubahan mencapai staging dengan cepat sehingga validasi bisa dimulai lebih awal. Anda ingin perubahan mencapai production hanya setelah validasi menyeluruh.
Pola umum adalah menjalankan semua gates otomatis di awal pipeline, kemudian berhenti untuk persetujuan manual hanya sebelum production. Staging mendapatkan gates otomatis tetapi melewatkan antrian manual. Ini menyeimbangkan kecepatan dan keamanan.
Siapa yang Dapat Menyetujui Tergantung pada Lingkungan
Tidak semua persetujuan sama. Seorang developer menyetujui perubahan ke development adalah hal yang wajar. Tetapi perubahan yang sama menuju production mungkin memerlukan persetujuan dari tech lead atau engineering manager.
Untuk perubahan database, persetujuan mungkin perlu datang dari DBA. Untuk perubahan infrastruktur, tim platform mungkin perlu memberikan tanda tangan. Pipeline harus tahu siapa yang berwenang untuk setiap lingkungan dan mencatat setiap persetujuan sebagai bukti.
Ini bukan tentang birokrasi. Ini tentang memastikan orang yang tepat mengetahui perubahan yang memengaruhi area tanggung jawab mereka. Seorang DBA tidak perlu menyetujui setiap perubahan kode, tetapi mereka harus tahu kapan migrasi database menuju production.
Checklist Praktis untuk Menyiapkan Environment-Specific Gates
Jika Anda menerapkan ini untuk tim Anda, berikut adalah checklist singkat untuk memandu proses:
- Daftar semua lingkungan yang digunakan tim Anda (development, staging, production, dll.)
- Untuk setiap lingkungan, daftar risiko dari deployment yang buruk
- Tentukan gates minimum yang diperlukan untuk mengurangi risiko tersebut
- Putuskan siapa yang dapat menyetujui perubahan untuk setiap lingkungan
- Konfigurasikan pipeline untuk menegakkan gates ini per lingkungan
- Uji gates dengan mensimulasikan deployment ke setiap lingkungan
- Tinjau gates secara berkala seiring perkembangan tim dan aplikasi Anda
Checklist ini tidak lengkap, tetapi memberi Anda titik awal. Tujuannya adalah menerapkan kontrol yang proporsional, bukan menambahkan gates demi menambah gates.
Kesimpulan
Protected environments dan environment-specific gates memungkinkan Anda menerapkan tingkat kontrol yang tepat untuk setiap tahap pipeline pengiriman Anda. Staging mendapatkan perlindungan yang cukup untuk tetap andal. Production mendapatkan perlindungan berlapis untuk menangkap masalah sebelum mencapai pengguna. Development tetap cepat karena tidak memikul beban yang sama.
Kuncinya bukan menyalin aturan yang sama di mana-mana. Ini tentang memahami apa yang dibutuhkan setiap lingkungan dan membangun pipeline Anda di sekitar itu. Ketika Anda melakukannya dengan benar, tim Anda bergerak lebih cepat di tempat yang membutuhkan kecepatan dan melambat di tempat yang membutuhkan keamanan.