Bagaimana cara menghindari branchageddon dengan organisasi besar?

10

Bagaimana Anda menghindari situasi branchageddon ketika bekerja dengan organisasi besar?

Kami bekerja dengan sejumlah organisasi keuangan besar yang pendekatannya tidak mengambil pembaruan perangkat lunak, tetapi hanya tambalan keamanan tinggi / kritis dan fungsionalitas yang dipesan lebih dahulu. Organisasi-organisasi ini hanya akan mengambil tambalan dan rilis khusus di antara pembaruan utama. Pembaruan besar dapat terpisah bertahun-tahun dan membawa biaya tinggi. Pendekatan ini menyebabkan kami (rumah perangkat lunak) memiliki cabang kode kami per pelanggan utama, yang membawa semua biaya dan inefisiensi percabangan jangka panjang.

Pertanyaan saya kepada komunitas adalah:

  • Sudahkah Anda mengalami pendekatan penerimaan pembaruan yang serupa dari pelanggan Anda?
  • Saran apa yang Anda miliki untuk membantu bekerja dengan pendekatan ini?
  • Saran apa yang Anda miliki untuk membantu mengubah pendekatan organisasi dalam mengambil pembaruan perangkat lunak?
Mark Wheeler
sumber
Hai Mark, sepertinya Anda memiliki dilema yang menarik. Bagaimana Anda mengelola pengembangan ini per pembaruan pelanggan? Apakah Anda mengembangkannya berdasarkan satu kali untuk setiap pelanggan, atau apakah itu sesuatu yang Anda kembangkan dan terapkan pada semua pelanggan?
PrestonM
Secara pribadi, saya mungkin mencari pekerjaan lain dalam situasi ini. Ini kedengarannya seperti insiden keamanan yang menunggu untuk terjadi ... Saya dapat memberi tahu Anda untuk vendor alat tempat saya bekerja, mereka memiliki bug besar yang diperbaiki dalam pembaruan yang menurut laporan tidak dapat mereka kunjungi. Mereka menginginkan perbaikan khusus. Kami menolak untuk membuatnya dan mengatakan kepada mereka bahwa mereka perlu memperbaiki kebijakan bisnis mereka - kami tidak akan menggulung perbaikan terbaru khusus untuk bug yang telah kami tempel agar mereka dapat menghindari masalah politik internal.
James Shewey
Kami mengelola pembaruan khusus klien khusus melalui beberapa cabang kode dan memperbaiki perbaruan keamanan lintas semua cabang, dan memperbaiki lintas kode cabang kembali ke bagasi. Seringkali pelanggan A tidak akan menerima pembaruan B pelanggan di cabang mereka, mereka hanya akan mengambil pembaruan dan tambalan keamanan mereka sendiri. Ini didorong oleh keinginan untuk stabilitas di cabang mereka sehingga mereka hanya perlu menguji pembaruan yang relevan dengan mereka. Mereka mengambil pembaruan trunk lebih jarang (yaitu berbulan-bulan hingga bertahun-tahun) ketika mereka siap untuk menjalankan tayangan ulang pengujian lengkap, yang bisa memakan waktu berbulan-bulan untuk menyelesaikannya. Pengujian otomatis bisa menjadi jawabannya!
Mark Wheeler

Jawaban:

3

Seperti yang disebutkan Michael, tawarkan solusi standar berdasarkan versi rilis / angka, dengan umur yang cukup panjang untuk industri Anda (mungkin disatukan dengan satu atau lebih versi jangka menengah yang lebih pendek, jika masuk akal bagi pelanggan tipikal Anda).

Berikan pelanggan Anda opsi untuk memulai jalur rilis standar ini, mungkin dengan tenggat waktu migrasi yang layak.

Jika mereka bersikeras pada strategi dukungan cabang khusus penuh, cukup bebankan biaya yang sesuai untuk menutup semua biaya ekstra Anda dengan menawarkan dukungan kustom lengkap - itu hanya masuk akal secara bisnis. Beberapa pelanggan akan bermigrasi untuk mengurangi biaya mereka (yang akan membantu Anda mengurangi jumlah cabang khusus), beberapa tidak.

Tagihan dukungan variabel, semakin bertambah seiring usia versi rilis dari mana cabang kustom berasal juga dapat menjadi insentif bagi pelanggan untuk bermigrasi ke cabang yang lebih baru dengan lebih cepat, membantu dengan penutupan yang lebih cepat dari cabang kustom yang lebih lama. Ini dapat membantu mengurangi jumlah cabang khusus per pelanggan - jika Anda memiliki pelanggan yang secara bersamaan menjalankan beberapa versi perangkat lunak Anda.

Pastikan Anda tidak jatuh ke dalam perangkap melakukan penggabungan cabang penuh dari / ke salah satu cabang rilis (baik standar dan kebiasaan), semua perubahan harus dilakukan secara individual atau perbaikan gabungan yang dipilih ceri.

Karena masing-masing cabang ini secara bertahap akan menyimpang dari satu sama lain, jumlah perbaikan terbaru yang membutuhkan penyesuaian / pengembangan individu akan tumbuh secara eksponensial (penggabungan ceri-pilih akan gagal). Anda perlu memperhitungkan biaya pengembangan untuk ini.

Tanpa penggabungan cabang (signifikan) dalam gambar yang Anda dapat (dan seharusnya, saya tidak bisa cukup menekankan pentingnya) membangun jaringan pipa CI / CD yang sepenuhnya otomatis untuk cabang-cabang ini, disertai dengan sistem pelacakan / manajemen perbaikan terbaru yang baik di tempat, membuat pengiriman perbaikan terbaru hanya rutin (atau hampir).

Dan Cornilescu
sumber
Dan - sangat jelas dan sederhana tetapi sangat masuk akal. Uang membuat dunia berputar dan pada gilirannya akan membantu memberikan kompensasi kepada kami untuk biaya cabang yang berumur panjang atau mendorong pelanggan untuk meningkatkan dan tetap dekat dengan belalai. Terima kasih atas sarannya.
Mark Wheeler
1

Mungkin jika Anda mempertahankan cabang per versi alih-alih per pelanggan, ini dapat membantu mengurangi jumlah mereka?

Kalau tidak, satu-satunya cara untuk benar-benar menjauh darinya adalah dengan dapat meng-host perangkat lunak sendiri dan beralih ke model SaaS di mana Anda hanya dapat mempertahankan satu versi saja.

Michael Pereira
sumber
Sayangnya pelanggan kami sering beroperasi di lingkungan yang sangat tertutup karena data keuangan yang mereka gunakan, sehingga model SaaS tidak dapat diterima.
Mark Wheeler