Детали статьи

Вам достался код, которому нельзя доверять. Вот аудит за 10 дней.
ИнженерияПродуктГайды

Вам достался код, которому нельзя доверять. Вот аудит за 10 дней.

Вернуться назад

Разработчик ушёл. Агентство перестало отвечать. Технический сооснователь занялся другим. Как бы вы сюда ни попали, теперь у вас есть система, которая приносит выручку и которую сейчас никто не понимает. И каждое ваше решение упирается в один вопрос: насколько всё плохо?

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

Пять вопросов, на которые аудит обязан ответить

  1. Можем ли мы это эксплуатировать? Можем ли деплоить, восстанавливать и поднимать систему без исходного автора.
  2. Можем ли мы это безопасно менять? Есть ли механизм, сообщающий, что изменение что-то сломало.
  3. Насколько это открыто? Есть ли доступы, уязвимости или пути входа, которые нужно закрыть на этой неделе.
  4. Наше ли это? Цела ли цепочка прав и совместимы ли лицензии зависимостей с нашим бизнесом.
  5. Сколько стоит следующий год? Поддерживать, развивать или заменять.

Всё дальнейшее служит этим пяти ответам. Ничему другому в первые две недели места нет.

Дни 1–2: возьмите доступы под контроль

До анализа обеспечьте владение. Составьте перечень всех аккаунтов, от которых зависит система, — хостинг, домен, DNS, база, платёжный провайдер, почта, сторонние API — и убедитесь, что каждый оформлен на корпоративный адрес, который контролируете вы, а не на личный адрес человека, который ушёл.

Это самый срочный шаг и чаще всего пропускаемый. Система, к которой у вас нет доступа, — это не техническая проблема, а экзистенциальная. Если домен или платёжный аккаунт зарегистрирован на ушедшего подрядчика, начинайте процедуру возврата немедленно: она занимает больше времени, чем всё остальное в этом плане.

Дни 3–4: докажите, что можете деплоить и восстанавливать

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

Если что-то из этого не удалось — вы нашли главную находку аудита, и всё остальное вторично, пока это не исправлено. Система, в которую нельзя выкатиться и которую нельзя восстановить, ещё не является активом.

Дни 5–6: составьте карту

Сделайте схему компонентов, потоков данных и внешних зависимостей. Определите, где хранятся персональные и платёжные данные. Перечислите все запланированные задачи и фоновые процессы — именно там прячется незадокументированная бизнес-логика.

Эта карта — результат с самым долгим сроком полезности. Всё, что вы будете делать ближайшие два года, будет к ней обращаться.

Дни 7–8: оцените риск

  • Просканируйте зависимости на известные уязвимости и отметьте, какие из них эксплуатируемы при текущей открытости системы.
  • Просмотрите историю репозитория на попавшие туда секреты и смените всё найденное.
  • Разберите модель контроля доступа: авторизация применяется на уровне данных или проверяется в интерфейсе?
  • Сверьте лицензии всех зависимостей с тем, как вы распространяете продукт.
  • Убедитесь, что каждый прошлый исполнитель закрыт действительной передачей прав.

Дни 9–10: оцените стоимость трёх сценариев

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

По нашему опыту средний вариант побеждает значительно чаще, чем основатели ожидают в начале аудита. Системы, которым «нельзя доверять», часто просто не задокументированы и не покрыты тестами — а это недели работы, а не месяцы.

Что делать с результатом

Всё из категории «открыто» чините немедленно, независимо от стратегического решения. Затем выбирайте путь, имея перед глазами доказательства, а не тревогу от незнания. И что бы вы ни выбрали, сначала добавьте тесты и документацию — иначе вы вот-вот унаследуете ту же самую проблему уже от самого себя.

Система, которую никто не понимает, — это не проблема технического долга. Это проблема непрерывности бизнеса, переодетая в техническую.

Мы проводим такой аудит по фиксированной цене, отдаём письменный отчёт и просчитанные варианты. Большинству основателей до нас уже сказали, что единственный путь — переписать. Больше чем в половине случаев это не так.

Теги