Sedikit latar belakang di sini - kami adalah tim kecil (dari 5) pengembang RAD yang bertanggung jawab untuk pengembangan perangkat lunak internal di perusahaan non-perangkat lunak besar. "Perangkat lunak internal" bervariasi dari aplikasi desktop .NET menggunakan server MSSQL sebagai backend ke skrip Python yang berjalan di latar belakang ke dokumen dan templat MS Word - sebuah kebun binatang teknologi.
Seluruh tim terdiri dari semua yang mampu mendapatkan persyaratan dari pengguna, menyusun kode, mengujinya, dan menyebar ke dalam produksi. Setelah perangkat lunak dalam produksi itu sedang dirawat oleh tim lain tetapi biasanya mudah bagi kita untuk campur tangan jika terjadi kesalahan.
Semua terdengar bagus sejauh ini, tetapi ada masalah - sebagai tim RAD kita harus sering merilis, dan tidak ada hari berlalu tanpa kita merilis versi baru dari satu atau dua aplikasi (atau itu bisa berupa skrip, dokumen kata yang diperbarui , Aplikasi C ++ konsol, dll) ke dalam produksi. Kami melakukan pengujian pengembangan dan juga melibatkan pengguna akhir dengan membiarkan mereka menjalankan perangkat lunak di lingkungan UAT ...
... tapi bug tetap masuk ke produksi. Pengguna memahami bahwa bug ini dan ketidakstabilan yang terjadi sesekali adalah harga yang mereka bayar untuk mendapatkan apa yang mereka inginkan dengan sangat cepat, tetapi pada saat yang sama itu membuat kami berpikir - mungkin kami dapat meningkatkan pengembangan kami atau melepaskan praktik untuk meningkatkan stabilitas perangkat lunak dan mengurangi jumlah bug yang kami perkenalkan saat menambahkan fungsionalitas baru.
Hal yang baik - kami tidak benar-benar memiliki banyak proses di tempat pertama, jadi itu harus mudah untuk mulai meningkatkan, hal yang buruk - menjadi tim RAD kecil kami tidak benar-benar memiliki banyak waktu dan sumber daya untuk mengimplementasikan sesuatu yang besar, tetapi kami telah memikirkan inisiatif berikut ini dan akan menyambut umpan balik, tip, petunjuk dan saran.
Saat ini beberapa aplikasi sedang dirilis ke dalam produksi langsung setelah pengujian pengembang, melewati pengujian penerimaan pengguna. Praktik itu harus dihentikan dan bahkan perubahan kecil harus diuji oleh pengguna akhir. Setiap aplikasi akan memiliki beta-tester khusus yang dipilih dari pengguna akhir. Hanya setelah beta-tester menyetujui rilis baru itu dipromosikan dari pengujian ke lingkungan produksi.
Kami tidak melakukan tinjauan kode - tetapi kami akan mulai melakukan tinjauan kode sebelum salah satu dari kami checkin perubahan tersebut. Saya juga berpikir tentang "rollout review" - pada dasarnya salah satu pengembang harus duduk di sebelah yang lain mengawasinya melakukan peluncuran perangkat lunak (menyalin binari, memperbarui konfigurasi, menambahkan tabel baru ke database, dll) - biasanya hanya membutuhkan 5-10 menit sehingga tidak akan memakan banyak waktu "tinjauan peluncuran".
Cara meniru waktu rollback ketika rilis baru terbukti cukup buggy untuk ditarik dari produksi dan digantikan oleh versi sebelumnya yang bagus. Kami menyimpan riwayat semua rilis (sebagai binari) untuk membuatnya mudah untuk kembali satu versi - dan meskipun cepat "menimpa binari yang baru dirilis dengan binari versi sebelumnya" itu masih merupakan proses manual yang rawan kesalahan dan kadang-kadang menuntut "bagaimana jika rollback akan gagal dan akan membuat sistem tidak dapat digunakan alih-alih buggy".
Di sinilah kami kehabisan ide-ide kami dan kami ingin mendapatkan tanggapan Anda tentang ini dan jika Anda bisa berbagi beberapa saran perbaikan proses rilis / dev sederhana - itu akan luar biasa.