Технический аудит проекта перед доработкой: что проверить до оценки сроков

Перед доработкой старого проекта хочется сразу открыть код и начать менять нужный экран. Это быстрый путь к сюрпризам: неизвестная версия PHP, нет бэкапа, cron запускает старый скрипт, база без индексов, интеграция падает молча, а в коде нет логов. Оценка сроков в такой ситуации получается случайной.

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

Кодовая база

Сначала нужно понять структуру проекта.

  • какой фреймворк или CMS используется;
  • где точка входа;
  • есть ли Composer;
  • где конфиги;
  • есть ли разделение frontend/backend/console;
  • какие части самописные;
  • есть ли git и актуальная история изменений.
php -v
composer show
git status
git log --oneline -5

Если проект не в git, это уже риск. Перед доработкой стоит хотя бы зафиксировать текущее состояние.

Зависимости

Нужно проверить composer.json, composer.lock, vendor и PHP-расширения. Частая ситуация: локально проект запускается на одной версии PHP, а сервер работает на другой.

composer check-platform-reqs
php -m

Если зависимости давно не обновлялись, не нужно сразу делать composer update. Сначала нужно понять совместимость и риски.

База данных

По базе важно проверить размер, самые крупные таблицы, индексы, кодировку и наличие бэкапа.

SELECT
    table_name,
    ROUND((data_length + index_length) / 1024 / 1024, 2) AS size_mb
FROM information_schema.tables
WHERE table_schema = DATABASE()
ORDER BY size_mb DESC
LIMIT 20;

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

Сервер

Минимально проверяются nginx или Apache, PHP-FPM, MySQL, Redis, свободное место и права.

df -h
free -m
systemctl status nginx
systemctl status php8.2-fpm
systemctl status mysql

Если сайт уже работает на пределе по диску или памяти, новая функция может просто проявить старую проблему.

Cron, очереди и фоновые задачи

Многие важные процессы не видны в браузере: импорт, обмен, отправка писем, пересчёт остатков, очистка кэша, очереди.

crontab -l
systemctl list-units | grep queue
ps aux | grep php

Перед доработкой нужно понять, какие фоновые процессы есть, где их логи и что будет, если они остановятся.

Интеграции

Интеграции часто являются самым хрупким местом проекта. Нужно составить список внешних систем:

  • CRM;
  • 1С;
  • маркетплейсы;
  • платёжные системы;
  • службы доставки;
  • почтовые сервисы;
  • аналитика и рекламные пиксели.

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

Логи

Если в проекте нет логов, любая ошибка после релиза будет расследоваться вслепую. Нужно проверить, куда пишутся ошибки приложения, PHP, веб-сервера, cron и интеграций.

find . -type f -name "*.log" -exec ls -lh {} \;
tail -n 100 runtime/logs/app.log

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

Безопасность

Минимальный аудит безопасности перед доработкой:

  • нет ли .env и .git в публичном доступе;
  • где лежат бэкапы;
  • кто имеет доступ в админку;
  • как хранятся API-ключи;
  • включён ли HTTPS;
  • нет ли тестовых phpinfo.php и dump.sql в web root.

Итог аудита

Хороший итог — короткий список:

  1. что можно делать сразу;
  2. что нужно исправить до доработки;
  3. какие есть риски релиза;
  4. где нужен бэкап;
  5. какие сценарии обязательно проверить после изменений;
  6. что нужно задокументировать.

Чек-лист

  1. Проверить стек, PHP и зависимости.
  2. Проверить git и текущее состояние кода.
  3. Оценить базу и крупные таблицы.
  4. Проверить сервер, диск, память и сервисы.
  5. Найти cron, очереди и демоны.
  6. Составить список интеграций.
  7. Проверить логи и ротацию.
  8. Проверить базовые риски безопасности.
  9. Зафиксировать риски и план проверки после релиза.

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

Комментарии (0)

Пока нет комментариев. Будьте первым!