Технический аудит проекта перед доработкой: что проверить до оценки сроков
Перед доработкой старого проекта хочется сразу открыть код и начать менять нужный экран. Это быстрый путь к сюрпризам: неизвестная версия 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.
Итог аудита
Хороший итог — короткий список:
- что можно делать сразу;
- что нужно исправить до доработки;
- какие есть риски релиза;
- где нужен бэкап;
- какие сценарии обязательно проверить после изменений;
- что нужно задокументировать.
Чек-лист
- Проверить стек, PHP и зависимости.
- Проверить git и текущее состояние кода.
- Оценить базу и крупные таблицы.
- Проверить сервер, диск, память и сервисы.
- Найти cron, очереди и демоны.
- Составить список интеграций.
- Проверить логи и ротацию.
- Проверить базовые риски безопасности.
- Зафиксировать риски и план проверки после релиза.
Технический аудит перед доработкой экономит время не на старте, а в момент релиза. Когда заранее известны слабые места, доработка перестаёт быть прыжком в старый код вслепую.
Комментарии (0)
Пока нет комментариев. Будьте первым!