У нас було два основні кризи, пов'язані із залежністю, з двома різними базами коду (Android та веб-додаток Node.js). Android Repo потребував переходу від шквалу до Firebase, що вимагало оновлення бібліотеки Служб Google Play чотирьох основних версій. Аналогічна ситуація трапилася і з нашим додатком Node, розміщеним у Heroku, де наш виробничий стек (кедр) був застарілим і його потрібно було оновити до кедра-14. Нашій базі даних PostgreSQL також потрібно було оновити з 9,2 до 9,6.
Залежності кожної з цих програм майже два роки простояли, і коли деякі були застарілими, і ми досягли періоду «заходу сонця», головним болем було їх оновити або замінити. Я витратив понад 30 годин за останній місяць-два, щоб повільно вирішувати всі конфлікти та зламаний код.
Очевидно, що залишати речі сидіти два роки - це занадто довго. Технологія швидко рухається, особливо коли ви користуєтеся платформою, наприклад Heroku. Припустимо, що у нас є повноцінний тестовий набір та такий процес CI, як Travis CI, який вимагає багато здогадок з оновлення. Наприклад, якщо функцію було видалено після оновлення, і ви її використовували, ваші тести не зможуть.
Як часто слід оновлювати залежності чи коли слід оновлювати залежності? Ми оновлювались, тому що нас змушували, але, схоже, якийсь превентивний підхід був би кращим. Чи слід оновлювати, коли виходять незначні версії? Основні версії? Щомісяця, якщо оновлення доступні? Я хочу уникнути такої ситуації, як те, що я щойно пережив, будь-якою ціною.
PS - для одного з моїх персональних проектів Rails я використовую послугу під назвою Gemnasium, яка відстежує ваші залежності, щоб вас могли отримувати повідомлення, наприклад, про вразливості безпеки. Це чудовий сервіс, але нам доведеться вручну перевіряти залежності для згаданих мною проектів.