Обновление библиотек на проектах

"Rotting software"—это серьезная проблема сегодня. Взрывной рост индустрии порождает такой же рост количества инструментов разработки и ускоряет устаревание существующих решений.

В 2015 для разработки стартапа мы взяли микросервисы и Spring Cloud Netflix стек. К 2017 половину из этого стека Netflix перевел в maintenance режим, а некоторые решения просто задепрекейтил и оставил коммьюнити. Не очень прикольно, мы еще не успели выйти в прод, а одна из ключевых подсистем уже не развивается.

Если вовремя не следить за этим всем делом, то рискуешь рано или поздно нарваться на багу или уязвимость, которая влияет на твой проект, а обновляться будет сложно и дорого.

На своих rails проектах первый шаг, который я всегда делаю при начале работы над задачей—это bundle update—поиск новых версий библиотек и обновление зависимостей. Такой подход позволяет сгладить удар от обновлений и растянуть его на весь жизненный цикл проекта. Во многих пакетных менеджера тоже есть похожая команда, типа npm update.

Всегда есть соблазн подзабить, остаться на стабильной версии и не обновляться. Но дальше техдолг будет только накапливаться и становиться хуже. У меня есть Spring Boot проект, там версия двухлетней давности. И я не могу ее просто так обновить, даже минорную(!), потому что у меня начинают падать тесты, какие-то запросы в базу не проходят. Нужно выяснять что поменялось, переписывать, а это долго, дорого и небезопасно.

Есть всякие решения типа ботов которые следят за обновлениями. Я их не пробовал но думаю что это очень даже полезно, главное не забивать на рекомендации.

Регулярное обновление зависимостей проекта должно быть в базовых правилах гигиены.


Понравился материал? Подписывайся на мой телеграм канал: https://t.me/full_of_hatred