Kami memiliki dua krisis terkait ketergantungan utama dengan dua basis kode yang berbeda (Android, dan aplikasi web Node.js). Repo Android perlu dimigrasi dari Flurry ke Firebase, yang mengharuskan memperbarui perpustakaan Google Play Services empat versi utama. Hal serupa terjadi dengan aplikasi Node kami yang dihosting Heroku di mana tumpukan produksi kami (cedar) sudah tidak digunakan lagi dan perlu ditingkatkan ke cedar-14. Basis data PostgreSQL kami juga perlu memperbarui dari 9,2 ke 9,6.
Masing-masing dari aplikasi ini dependensi duduk basi selama hampir dua tahun, dan ketika ada yang usang dan kami mencapai 'periode sunset', itu telah menjadi utama sakit kepala untuk memperbarui mereka, atau mengganti mereka. Saya telah menghabiskan lebih dari 30 jam selama satu atau dua bulan terakhir secara perlahan menyelesaikan semua konflik dan kode rusak.
Jelas membiarkan hal-hal selama dua tahun terlalu lama. Teknologi bergerak dengan cepat, terutama ketika Anda menggunakan penyedia platform seperti Heroku. Mari kita asumsikan bahwa kita memiliki rangkaian uji lengkap, dan proses CI seperti Travis CI, yang mengeluarkan banyak dugaan dari pembaruan. Misalnya jika suatu fungsi dihapus setelah peningkatan, dan Anda menggunakannya, pengujian Anda akan gagal.
Seberapa sering dependensi diperbarui, atau kapan dependensi diperbarui? Kami memperbarui karena kami terpaksa, tetapi tampaknya semacam pendekatan pre-emptive akan lebih baik. Haruskah kita memperbarui ketika versi minor dirilis? Versi utama? Setiap bulan jika pembaruan tersedia? Saya ingin menghindari situasi seperti apa yang baru saja saya alami dengan cara apa pun.
PS - untuk salah satu proyek Rails pribadi saya, saya menggunakan layanan yang disebut Gemnasium yang melacak dependensi Anda sehingga Anda dapat diberi tahu tentang misalnya kerentanan keamanan. Ini layanan hebat, tapi kami harus memeriksa dependensi untuk proyek yang saya sebutkan secara manual.