Мы прогнали свой SaaS через 5 аудитов за неделю. Нашли 62 проблемы.
14 критичных проблем в проде: нет бэкапов, лимиты не считаются, протухший фронт, [object Object] живым людям. Честный отчёт.
Мы прогнали свой SaaS через 5 аудитов за неделю. Нашли 62 проблемы.
Свой продукт от скуки не аудируют. Мы сделали это, потому что наш запуск WhatsApp ломался новыми и креативными способами, и мне надоело узнавать об этом от пользователей. Итак: пять аудитов, одна неделя, все слои — безопасность, производительность, деньги, UX, инфраструктура. 62 находки. Вот честный отчёт.
Табло
| Аудит | Критично | Важно | Всего |
|---|---|---|---|
| Безопасность и комплаенс | 4 | 7 | 17 |
| Производительность | 2 | 3 | 13 |
| Бизнес-логика и деньги | 2 | 3 | 12 |
| UX и конверсия | 5 | 3 | 10 |
| Инфраструктура и DevOps | 1 | 4 | 10 |
| Итого | 14 | 20 | 62 |
Худшие находки (мой личный список позора)
Нет бэкапов базы. Вообще. Один неверныйdocker volume rm — и данные всех клиентов испаряются. Лечение заняло 20 минут: скрипт дампа плюс строчка в cron. Самая страшная находка чинилась дешевле всех — так бывает почти всегда.
Лимиты, которые никто не считал. Тарифы с лимитами постов — Starter 1 500, Pro 7 500 — а код подсчёта использования нигде не вызывался. Безлимит на дешёвом тарифе. Месяцами.
Новые пользователи падали на пустую страницу. После регистрации — дашборд аналитики с нулём данных и одиноким «Нет данных». Ни онбординга, ни чек-листа, ни намёка куда нажать. В воронке активации — дыра, куда грузовик проедет.
Фронт неделями был протухшим. Бэкенд переехал на новые пути API, сборки Vercel падали на missing-импорте иконки, а прод отдавал старый бандл. Пользователи ловили «Not Found» на экране QR. Никто не заметил до живого теста с реальным человеком. Стыдно? Глубоко. Полезно? Чрезвычайно — теперь каждый деплой проверяется по живому бандлу, а не «запушил и молишься».
Реальные пользователи видели [object Object]. Ошибка валидации регистрации отрендерилась строкой JS-объекта девушке по имени Ксения. Правила пароля жили только на бэкенде, форма о них молчала. Она попробовала пять раз. Пять.
Что реально удивило
Самое страшное нашли не «умные» аудиты. Никаких экзотических уязвимостей и гениальных перф-инсайтов. Сработал скучный чек-лист: бэкапы, лимиты, тексты ошибок, онбординг. Прод умирает именно на негламурном слое.
И ещё: починка 31 критичной + важной проблемы заняла около двух недель, а не два квартала. Большинство находок — мелочь: индекс тут, сообщение там. Дорого стоили не фиксы, а нежелание смотреть.
Что поменяли навсегда
- Каждый деплой заканчивается живой проверкой (health + роуты + бандл), а не «запушил и молишься».
- Миграции едут на старте контейнера — и горьким опытом выучили: воркеры на время DDL останавливать, иначе локи висят вечно.
- Тексты ошибок ревьюятся как фичи. Если это может увидеть пользователь — это UX.
Вывод
Аудируйте свой продукт до того, как это сделают ваши пользователи. Возьмите один слой на этой неделе — рекомендую бэкапы, это всегда бэкапы — и посмотрите. Что-нибудь найдёте. Находят все.
А вы когда последний раз аудировали своё? Что было самым стыдным?