День 2725. #Оффтоп
Можно Установить Пакет, но Владеете ли вы им? Окончание
Начало
Фактор автобуса и неожиданные изменения
Есть ещё один фактор, когда популярный пакет меняет условия. Fluent, Assertions, MassTransit и AutoMapper стали коммерческими. Moq выпустил обновление, незаметно хешировавшее ваш email в Git и отправлявшее его на сервер. И почти каждый раз реакция в .NET-компаниях – это смесь:
- срочно удаляем и пишем своё,
- ищем бесплатную альтернативу,
- обращаемся к Microsoft с просьбой купить библиотеку или предоставить замену.
Это решение не той проблемы. Проблема в том, что мы взяли на себя критически важную зависимость, так и не признав её критически важной, и ни разу не подумали о том, что будем делать, если условия изменятся. Замена пакета ничего не исправит, лишь повторит ту же ошибку.
Эпизод с IdentityServer — более наглядный пример. Люди были недовольны тем, что им внезапно пришлось платить. Затем они назвали это критически важным компонентом безопасности. А потом спросили, какие есть бесплатные альтернативы. Критически важный компонент безопасности, который вы хотите получить бесплатно, либо готовы тут же заменить на аналог... Что может пойти не так?
Несложная математика. Возьмём стоимость лицензии в год. И сколько бы стоило нанять инженера для разработки и поддержки собственной версии. Сравните варианты и решите.
LLM как форк
Изначальная мысль Митчелла интересна, учитывая нынешнюю ситуацию. Кажется, LLM меняют дело, так что написание собственного кода внезапно становится тривиальным, и вопрос зависимостей смягчается. Но всё не так просто. Написание чего-то небольшого никогда не было сложной задачей. Сложнее владеть этим, понимать, поддерживать, устранять инциденты в 2 часа ночи, и никакая модель не снимет с вас эту ответственность.
LLM (возможно) cмогут изменить стоимость производства кода. Но это не решает проблему «установить, не принимая решения». Раньше было «установить и двигаться дальше». Теперь — «навайбить» и двигаться дальше. То же отсутствие ответственности и владения.
Тенденция не нова. Это классическое «теневое ИТ» (инструменты и системы, которые люди создают или внедряют внутри компании, не получая одобрения от тех, кто официально должен их утверждать). Таблица Excel, незаметно управляющая целым отделом; небольшой скрипт, от которого теперь зависит половина команды; интеграция, о которой никто в команде никогда не слышал. Это всегда существовало, потому что люди обходят медленные механизмы управления, чтобы выполнить свою работу, и в большинстве случаев никто не замечает этого, пока система не сломается. В случае с LLM это стало более заманчивым, чем когда-либо.
Что делать?
Мы не можем исправить всю индустрию ПО, но можем исправить то, как работают наши инженерные команды. Вместо того чтобы ждать, пока автоматизированные аудиты начнут кричать на нас, или в панике удалять пакеты, вот простое, регулярное упражнение для вашей организации.
1. Инвентаризация: перечислите используемые вами зависимости (используйте инструменты SBOM).
2. Критичность: определите, какие из этих пакетов абсолютно критически важны для вашей системы.
3. Жизненный цикл: разработайте чёткую стратегию обновления и версионирования. Вы обновляете их просто так, или ищете конкретные полезные коммиты, как предлагает Митчелл?
4. Фактор автобуса: что произойдет, если автора критически важного пакета «собьёт автобус», он выгорит или попросит денег?
5. Смягчение последствий: разработайте конкретный план резервного копирования на этот сценарий. Сделать форк? Оплатить лицензию?
6. Время отклика: как быстро вы сможете обновить и развернуть приложение, если произойдет серьезное нарушение безопасности в какой-либо из зависимостей. Если стратегия заключается в её замене, насколько быстро вы сможете заменить?
Создание надежного ПО требует целенаправленности. Нам не нужно писать всё с нуля, но мы должны точно определить, что мы включаем в наше ПО. Архитектура — это не только написание кода; это выбор того, какие обязательства вы готовы взять на себя.
Источник: https://www.architecture-weekly.com/p/you-can-fork-a-package-but-can-you
Post #3262
1.52K
- 👍 5