Mengapa Proses Deployment Anda Persis Seperti Struktur Tim Anda
Anda mungkin pernah melihat skenario ini terjadi. Sebuah tim pengembang menyelesaikan sebuah fitur. Mereka menyerahkannya ke QA. QA menjalankan pengujian, menemukan masalah, mengirimkannya kembali. Setelah beberapa putaran, QA menyetujuinya. Kemudian kode tersebut dikirim ke tim infrastruktur untuk di-deploy ke server. Jika perubahan tersebut melibatkan pembaruan skema basis data, tim DBA perlu dilibatkan di suatu titik di tengah proses. Setiap tim memiliki jadwalnya sendiri, prioritasnya sendiri, cara kerjanya sendiri. Satu deployment sederhana memakan waktu berhari-hari. Banyak serah terima menciptakan gesekan. Komunikasi terputus di suatu tempat, dan sesuatu menjadi salah.
Pola ini bukanlah suatu kebetulan. Ini bukan nasib buruk atau alat yang buruk. Ini adalah cerminan langsung dari bagaimana tim diorganisir.
Pola yang Dapat Anda Lihat Di Mana-mana
Ketika Anda melihat tim yang terpecah menjadi kelompok-kelompok terpisah, proses deployment cenderung mencerminkan pemisahan itu. Tim aplikasi menulis kode tetapi tidak dapat men-deploy-nya. Tim basis data mengelola skema tetapi tidak terlibat sampai akhir proses. Tim infrastruktur menyediakan server tetapi tidak memahami perilaku aplikasi. Tim QA menguji semuanya tetapi tidak memiliki suara dalam bagaimana sistem dibangun.
Setiap kelompok menambahkan gerbangnya sendiri. Setiap gerbang menambah waktu tunggu. Hasilnya adalah proses deployment yang terasa seperti lari estafet dengan terlalu banyak pelari dan tidak ada garis finis yang jelas. Setiap orang bertanggung jawab atas bagian mereka, tetapi tidak ada yang bertanggung jawab atas keseluruhan hal yang berfungsi dari ujung ke ujung.
Diagram alir berikut menunjukkan bagaimana setiap tim menambahkan gerbang, mengubah deployment menjadi lari estafet yang lambat:
Ini adalah Conway's Law dalam aksi. Hukum tersebut menyatakan bahwa organisasi merancang sistem yang mencerminkan struktur komunikasi mereka. Jika tim Anda terisolasi (siloed), sistem Anda akan terisolasi. Jika deployment Anda memerlukan koordinasi antara lima kelompok yang berbeda, itu bukan masalah proses. Itu adalah masalah organisasi yang muncul di pipeline Anda.
Apa yang Berubah Ketika Kepemilikan Jelas
Sekarang lihat jenis tim yang berbeda. Satu tim memiliki layanan secara end-to-end. Mereka menulis kode. Mereka mengelola skema basis data. Mereka menangani infrastruktur yang menjalankannya. Mereka men-deploy ke produksi sendiri. Ketika mereka perlu merilis perubahan, mereka tidak menunggu tim lain untuk menyetujui atau mengeksekusi deployment. Mereka memahami setiap lapisan yang terlibat karena mereka membangunnya dan mereka menjalankannya.
Proses deployment menjadi mudah. Tim menulis perubahan, menjalankan pengujian mereka, dan men-deploy. Jika sesuatu rusak, mereka tahu persis siapa yang perlu memperbaikinya. Orang yang sama yang menulis kode adalah orang yang akan di-page pada jam 2 pagi. Penyelarasan itu mengubah cara mereka berpikir tentang kualitas, pengujian, dan risiko.
Kepemilikan yang jelas tidak berarti setiap tim harus membangun semuanya dari awal. Mereka dapat menggunakan platform dan layanan yang disediakan oleh tim platform engineering. Kuncinya adalah tim memiliki kendali penuh atas deployment layanan mereka sendiri. Mereka tidak perlu izin dari tim lain untuk mendorong versi baru. Mereka tidak menunggu slot deployment bersama di kalender bersama.
Bagaimana Struktur Tim Mempengaruhi Manajemen Risiko
Struktur tim juga membentuk bagaimana risiko ditangani. Dalam tim yang terfragmentasi, tidak ada satu kelompok pun yang memiliki gambaran lengkap tentang sistem. Setiap tim menambahkan pemeriksaan mereka sendiri karena mereka tidak dapat sepenuhnya mempercayai apa yang terjadi di luar domain mereka. Tim aplikasi menambahkan langkah persetujuan manual. Tim basis data menambahkan langkah lain. Tim infrastruktur menambahkan langkah lain lagi. Hasilnya adalah proses deployment yang lambat, birokratis, dan penuh gesekan.
Tim dengan kepemilikan yang jelas dapat menerapkan tata kelola berbasis risiko dengan lebih efektif. Mereka memahami dampak dari perubahan mereka karena mereka memahami keseluruhan sistem. Perubahan kecil pada endpoint yang tidak kritis tidak memerlukan tingkat pengawasan yang sama seperti migrasi basis data yang mempengaruhi semua pengguna. Tim dapat membuat penilaian itu karena mereka memiliki konteksnya.
Cara Praktis untuk Memeriksa Tim Anda Sendiri
Jika proses deployment Anda terasa lambat dan menyakitkan, mulailah dengan melihat struktur tim Anda. Ajukan beberapa pertanyaan:
- Siapa yang dapat men-deploy ke produksi saat ini tanpa meminta izin dari tim lain?
- Ketika sesuatu rusak di produksi, apakah tim yang menulis kode juga memiliki infrastruktur dan basis data yang menjalankannya?
- Berapa banyak serah terima yang terjadi antara kode digabungkan (merged) dan berjalan di produksi?
- Apakah setiap serah terima menambah waktu tunggu, pengerjaan ulang, atau miskomunikasi?
Jika jawabannya mengarah ke banyak serah terima dan kepemilikan yang tidak jelas, perbaikannya bukanlah alat CI/CD yang lebih baik. Perbaikannya adalah mengatur ulang bagaimana tim Anda terstruktur.
Apa Artinya Ini untuk Platform Anda
Ketika Anda membangun platform CI/CD, Anda tidak hanya mengotomatiskan langkah-langkah deployment. Anda menyandikan bagaimana organisasi Anda bekerja. Jika tim Anda terisolasi, platform Anda akan mencerminkan hal itu dengan rantai persetujuan yang kompleks, banyak lingkungan yang tidak sepenuhnya dimiliki siapa pun, dan proses deployment yang memerlukan koordinasi antara kelompok yang jarang berbicara.
Jika Anda menginginkan deployment yang lebih sederhana, mulailah dengan struktur tim yang lebih sederhana. Berikan tim kepemilikan yang jelas atas layanan yang mereka bangun. Biarkan mereka memiliki infrastruktur dan basis data yang mendukung layanan tersebut. Beri mereka wewenang untuk men-deploy tanpa menunggu tim lain.
Platform harus mendukung kepemilikan itu, bukan menggantikannya. Platform yang baik memberi tim alat untuk men-deploy secara mandiri sambil mempertahankan konsistensi dan keamanan. Platform tidak menambahkan gerbang yang menciptakan kembali silo organisasi dalam bentuk perangkat lunak.
Kesimpulan
Proses deployment Anda bukan sekadar pipeline teknis. Ini adalah cermin yang dihadapkan pada organisasi Anda. Jika pantulannya menunjukkan kompleksitas, penundaan, dan gesekan, jangan mencari jawabannya pada alat baru atau skrip yang lebih baik. Lihatlah bagaimana tim Anda terstruktur. Deployment yang sederhana dan cepat berasal dari tim yang memiliki sistem mereka secara end-to-end. Segala sesuatu lainnya hanyalah solusi sementara.