Saat bermigrasi dari sesuatu ke sesuatu yang lain, hanya ada dua hal yang perlu Anda tentukan:
- Apa target anda
- Cara menuju ke sana (rencana migrasi)
Bagian pertama adalah, sayangnya, sering diabaikan atau cara terlalu samar. Anda tidak bisa hanya mengatakan bahwa apa yang Anda miliki berantakan dan Anda ingin mengaturnya. Apa artinya itu? Semua orang akan memiliki interpretasi yang berbeda (aka: setiap dev berpikir bahwa nya atau nya cara melakukan sesuatu adalah yang terbaik).
Kemungkinannya adalah, semua cabang yang Anda miliki melayani atau telah melayani suatu tujuan. Tanpa proses target yang jelas, orang akan terus melakukan apa yang sesuai untuk mereka yang paling cocok untuk mereka (dan memang demikian).
Misalnya, target Anda harus didefinisikan sejelas Vincent Driessen mendefinisikan "model percabangan Git yang sukses" . Jika Anda melihat model ini, itu sangat tepat: Dikatakan di mana kode stabil seharusnya, dan di mana fitur tidak stabil harus dikembangkan. Ia juga mengatakan bagaimana - dan kapan - untuk bercabang, memperbarui dan menggabungkan kembali. Anda tahu untuk apa masing-masing cabang, dan apa yang harus dilakukan dengan mereka. Kami menggunakan variasi dari apa yang dikemukakan oleh Vincent dan variasi kami didefinisikan dalam wiki kami.
Poin penting adalah membuat semua tim memahami dan menyepakati target. Mungkin bermanfaat untuk mengingatkan orang-orang bahwa Anda tidak mencari model percabangan favorit pribadi mereka, tetapi sebuah model yang dapat disetujui dan digunakan semua anggota tim dengan mudah.
Setelah Anda memiliki target, Anda akan dapat menjabarkan rencana migrasi Anda. Rencana itu bisa sepanjang atau sesingkat yang Anda inginkan. Saya telah melihat model percabangan seperti itu diberlakukan dalam semalam; di tempat lain, itu dilakukan lebih dari 2 atau 3 sprint. Bagi saya tidak masalah, asalkan kita membaik.
Anda bisa mulai dengan cabang "terbesar" atau lebih penting. Misalnya: "mulai sekarang, master harus selalu dalam kondisi untuk ditempatkan di prod dan cabang dev harus selalu dikompilasi" (atau apa pun aturan Anda). Kemudian, tegakkan versi (rilis) cabang. Setelah itu, tegakkan cabang fitur. Setelah itu, memaksakan pembekuan kode pada cabang versi, jika itu masuk akal.
DevOps adalah tentang komunikasi, keterbukaan dan efisiensi. Konsep-konsep ini harus diingat dan dikomunikasikan selama proses berlangsung.
Saya menyarankan untuk mengundang beberapa orang di luar tim pengembangan ke pertemuan proses sebagai pengamat. Ops atau manajemen menengah mungkin memiliki satu atau dua hal untuk dikatakan tentang model Anda. Kebutuhan pengembang harus diprioritaskan, tetapi jika model percabangan tidak mungkin disejajarkan dengan cara pengelolaannya, Anda akan lebih tahu sekarang dan tidak dalam satu atau dua bulan.
Jika Anda memiliki tim yang sangat besar, cobalah untuk menyertakan semua orang. Dengan tim yang sangat besar, Anda akan berakhir dengan dua atau tiga pertemuan. Jadi undanglah pemimpin tim di ruangan itu, tetapi miliki webcast yang tersedia dan beri tahu semua orang tentang hal itu. Jika ada yang punya saran atau masalah, mereka akan dapat menyuarakannya kepada pemimpin tim mereka dan jika itu valid, itu akan dibahas pada pertemuan kedua atau ketiga.