От прототипа до продакшена: чек-лист

Прототип отвечает на вопрос «нужно ли это кому-то». Продакшен отвечает на другие: что будет, когда пользователей станет сто, когда кто-то попробует прочитать чужие данные, когда упадёт оплата и когда сломается то, что работало вчера.

Кратко

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

До первого настоящего пользователя

#ПунктКак проверить
1Код лежит в вашем репозитории, а не только внутри платформыЕсть GitHub или другой репозиторий на ваше имя, и из него собирается та же версия, что работает на сайте
2Секретов нет в коде браузераF12, поиск по key, secret, token. Найденное, кроме публичного ключа Supabase, перенести на сервер и отозвать
3Доступ к данным проверяет серверВторой пользователь пытается открыть чужую запись, подменив номер в адресе. В Supabase для каждой таблицы включён RLS.
4Рабочая база отдельно от тестовойЭксперименты и тестовые данные не попадают в базу, где живут клиенты
5Резервная копия восстанавливаетсяНе «копии делаются», а копию один раз реально восстановили и проверили данные

Пункт 5 проверяют реже всего. Резервная копия, которую ни разу не восстанавливали, это предположение, а не копия.

В первый месяц

#ПунктКак проверить
6Об ошибках вы узнаёте раньше клиентаПодключён сбор ошибок, например Sentry, и уведомления приходят живому человеку
7Изменения схемы базы версионируютсяКаждое изменение таблиц хранится в репозитории как файл миграции, а не вносится руками через консоль рабочей базы
8Платёжные уведомления провереныУ webhook проверяется подпись платёжной системы, повторное уведомление не создаёт второй платёж
9Расходы на AI ограниченыЕсли приложение вызывает модели: лимит на пользователя, общий бюджет и уведомление при его превышении
10Почта доходитУ домена настроены SPF и DKIM, письма о регистрации и сбросе пароля не уходят в спам

По мере роста

#ПунктКак проверить
11Защита от злоупотребленийОграничение частоты на регистрацию, вход и дорогие операции
12НагрузкаСамые частые запросы к базе используют индексы, список не загружает всю таблицу
13ЗависимостиКаждый пакет существует и поддерживается, файл блокировки версий лежит в репозитории, известные уязвимости закрыты
14Закон и приватностьПолитика приватности соответствует тому, что система реально собирает; для Израиля это требования Тиккуна 13
15Человек, который знает системуКто-то, кроме AI-ассистента, может объяснить, как устроена система и как ночью выкатить исправление

Почему именно в таком порядке

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

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

Третья группа о том, чтобы система пережила своего автора. Пункт 15 в AI-проектах самый недооценённый: код написан быстро, и часто никто, включая владельца, не может объяснить, почему он устроен именно так.

Если пунктов не хватает

Это нормально: прототип и не должен был всё это иметь. Вопрос в том, что делать дальше. Обычно ответ один из трёх: закрыть пробелы в существующем коде, переписать отдельные части или, реже, переписать систему на той же модели данных. Какой из трёх, становится видно после проверки, а не до неё.

Частые вопросы

Можно ли запускать в продакшен приложение из Lovable или Bolt?

Да, если выполнены пункты первой группы: код в вашем репозитории, секреты на сервере, доступ проверяет сервер, рабочая база отделена, резервная копия проверена. Платформа не мешает продакшену, но и не делает его за вас.

Что самое опасное в AI-прототипе перед запуском?

Проверка прав только на уровне интерфейса. Приложение выглядит правильно, но сервер выполняет запросы любого пользователя к любым данным. В демо этого не видно, это проявляется только при целенаправленной попытке.

Нужно ли переписывать прототип с нуля?

Чаще всего нет. Большинство пунктов чек-листа закрываются в существующем коде. Переписывание оправдано, когда модель данных не подходит задаче или когда исправления обходятся дороже новой версии.

Сколько времени занимает подготовка к продакшену?

Зависит от того, сколько пунктов не выполнено и сколько таблиц и мест, где сервер доверяет интерфейсу. После проверки по этому списку срок известен по пунктам.

Что делать, если приложение уже работает с клиентами?

Начать с пунктов 2, 3 и 5, именно в этом порядке: секреты, доступ, резервная копия. Они закрывают то, что нельзя исправить задним числом.

С чего начать

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

Написать мне

По теме: Проект на вайб-кодинге, Проверка безопасности AI-кода, Аудит AI-кода

SLAtech LTD