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

"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