February 17, 2023

Что такое легаси и как с ним бороться

Все коллеги не любят работать легаси, но все понимают его по разному, в данной статье хочу разобрать, что такое легаси и как с ним бороться.

Что такое легаси?

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

Зачастую сама возможность технической поддержки для легаси отсутствует по разным причинам. В компании больше нет разработчиков оригинального кода, компания, которая продала или разработала технологию, больше не существует или свернула бизнес в вашей стране. Технология настолько устарела, что количество специалистов на рынке исчезающе мало, нанять их почти не возможно.

И так, мы определились с тем, что такое легаси, теперь давайте определимся с тем, как оно появляется. Для себя я выделяю следующие причины появления легаси:

  1. Как ни странно наличие в компании очень хороших специалистов, которые пишут много оригинального кода (своих библиотек, плагинов, вспомогательных сервисов) является одной из главных причин появления в компаниях легаси. Как только люди не смогут поддерживать свои разработки, все это в скором времени превратится в легаси.
  2. Тяга к экспериментам, использование нового языка программирования (давайте перепишем все на Rust), внедрение непопулярных или не прошедших проверку временем решений и технологий, библиотек. Если люди, которые могли это поддерживать уволятся, то найти специалиста на замену может оказаться очень сложно и со временем все может превратиться в легаси.
  3. Нарушение циклов обслуживания программного обеспечения (установка патчей безопасности, обновление до актуальной версии). С каждым пропуском обновления становятся все более трудоемкими и затраты на обновление становятся не сопоставимы с выгодой от обновления. Так же некоторые схемы лицензирования не позволяют устанавливать мажорные версии программного обеспечения, что тоже приводит к появлению легаси если не покупать новые лицензии.

Вот несколько примеров из жизни. В одной компании написали свою систему сборки, активно ее использовали внутри компании, даже выложили ее на GitHub, казалось бы что может пойти не так? Легко, единственный человек, который знал и написал код этой системы пошел на повышение и со временем у него просто не осталось времени не только на развитие, но и исправление ошибок. К тому времени, когда я ознакомился с этой системой, пользование ей было очень болью, но переход на Jenkins или Gitlab CI был просто невозможен, т.к. за годы у компании накопилось много продуктов, сборку которых надо было писать по новой.

В другой компании качестве эксперимента команда разработчиков написала несколько внутренних сервисов на Rust и даже довела их до продакшена. Угадайте, что произошло через несколько лет? Правильно, в компании не осталось ни одного человека, который может даже поправить баги в этих сервисах.

Ну а сейчас многие могут наблюдать как продукты JetBrains, Atlassian и многих других компаний ушедших из России превращаются в легаси, т.к. с их легальным обновлением возникли проблемы.

Как бороться с легаси?

Как с болезнями, в борьбе с легаси самым эффективным является профилактика, прежде чем что то внедрять или разрабатывать свой инструментарий, подумайте, как вы будете это сопровождать в дальнейшем, достаточно ли людей будут обладать всей полнотой знаний? Каков басфактор? Старайтесь отдавать предпочтение популярным продуктам и технологиям, чтобы не искать потом единорогов на рынке труда.

В качестве профилактического средства от появления легаси хорошо помогает документирование разработок (главное чтобы документация сама не стала легаси :-)).

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

Ну а что делать если уже появилось легаси? Тут, на мой взгляд, стоит либо понять и простить смириться, либо инвестировать в его замену на более актуальные технологии или программные продукты. К части легаси можно применить подходы управления техническим долгом и планомерно убирать его из эксплуатации.

Заключение

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