"Rotting software" це серйозна проблема. Вибухове зростання індустрії генерує таке ж зростання кількості інструментів розробки та пришвидшує старіння існуючих рішень.
В 2015 для розробки стартапа ми взяли мікросервіси та Spring Cloud Netflix. До 2017 половину з цього стеку сам Netflix перевів у maintenance режим, а деякі рішення просто задепрекейтив у себе та залишив напризволяще. Ми ще не встигли вийти в продакшн, а одна з ключових підсистем уже не розвивається, просто чудово!
Якщо не пильнувати постійно всі залежності, то рано чи пізно є ризик нарватися на багу або вразливість які впливають на твій проект, а оновлення буде складним та дорогим.
На всіх своїх Ruby on Rails проектах перший крок який я завжди роблю перед початком роботи над завданням, це bundle update
—пошук нових версій бібліотек їх оновлення. Такий підхід дозволяє пом'якшити удар від оноволень та розтягнути його на весь життєвий цикл проекту. В багатьох пакетних менеджерах є схожа команда, наприклад npm update
.
Завжди є спокуса залишитися на стабільній версії та не оновлюватися. Але далі технічний борг буде тільки накопичуватися. В мене є Spring Boot проект, так версія дворічної давності. Я не можу просто так оновитися, навіть на мінорну, в мене починають падати тести, якісь запити в базу не проходять. Потрібно з'ясовувати що змінилося, переписувати, а це ліниво, довго, дорого і небезпечно.
Є всякі рішення типу ботів які стежать за оновленнями, Renovate, Dependabot і так далі. Я не пробував ними користуватися, але вважаю їх корисними, якщо не ігнорувати рекомендації.
Регулярне оновлення залежностей проекта має бути в базових правилах гігієни.
Сподобалось? Долучайтеся до мого телеграм каналу: https://t.me/full_of_hatred