Задача
«Наш пользователь должен уйти со страницей, которая существует по адресу. Не с черновиком, не с архивом и не с задачей для кого-то на нашей стороне».
Сгенерировать HTML — самая простая часть этого обещания и ровно та, на которой большинство «ИИ-конструкторов сайтов» останавливается. Всё остальное — обвязка: нужен бакет, нужно включить хостинг, нужно залить файлы, нужно выпустить сертификат, нужно направить DNS — и кто-то должен отвечать за ситуацию, когда третий шаг прошёл, а четвёртый нет. Построить это один раз для своего продукта — квартал разработки, который не имеет отношения к тому, за что вам платят клиенты.
Что вызывает ваш продукт
Один вызов — от описания до работающего адреса:
Дизайнер превращает описание в саму страницу. Публикатор берёт на себя неблагодарную половину. Обратно приходит URL и обычный след того, как прогон к нему пришёл.
Всё, что происходит после первого вызова, — тоже эндпоинты: перечислить ревизии сайта, откатиться на конкретную, удалить его. Отмена входит в интеграцию, а не в процесс вашей поддержки.
Почему эта модель изоляции важна именно вам
Единица изоляции — это ваша организация. Токен вы выпускаете сами в своих настройках: никто не выписывает его за вас и никто не нужен в момент, когда вы его перевыпускаете.
Облачные доступы хранятся в пределах вашей организации и подставляются на сервере по имени в момент вызова инструмента. Из этого следует вполне конкретная вещь, и её стоит проговорить прямо: на нашей стороне нет доступа, которым можно дотянуться до инфраструктуры другого партнёра, потому что подстановка происходит до того, как инструмент вообще запустится. Чтение по чужой организации возвращает «не найдено», а не «запрещено» — мы не подтверждаем, что чужая организация существует.
Одно правило, которое важно на практике: токен ваш и остаётся на сервере. Он даёт всё, что может делать ваша организация, — значит, его место в вашем бэкенде, а не в браузере и тем более не у конечного пользователя.
Как есть на самом деле
Работает в продакшене. Партнёрский продукт делает этот вызов сегодня — своим токеном, в своём облачном аккаунте, — и сайты его клиентов живые. Путь от брифа до работающего HTTPS-адреса (генерация, бакет, хостинг, загрузка, CDN, сертификат, DNS) выкачен, как и список ревизий, откат на выбранную и удаление сайта.
По-настоящему всё стало ясно на живых прогонах. Они поймали четыре дефекта, которые юнит-тесты поймать не могли: облачный API, потребовавший другой content type; инструмент, зарегистрированный на одном пути исполнения и не зарегистрированный на другом; три недостающих IAM-гранта; и enum, который обязан быть в верхнем регистре. Зелёная сборка — это не работающий конвейер, поэтому здесь ничего не считается готовым, пока не отработало на настоящем окружении.
Где пока узко — и лучше вы услышите это от нас: выкаченный адаптер работает с объектным хранилищем, CDN и DNS одного облака; сама форма процесса к нему не привязана, но другие адаптеры ещё не написаны. Очень большие многофайловые сборки упираются в потолок размера запроса, который мы пока не подняли. Распространение сертификата на краю облачной сети на свежем домене может занять часы — это скорее их сторона, чем наша, но это реально и это стоит заложить в ваш онбординг. А имя хоста, на котором окажутся сайты, — пока предмет разговора на старте, а не настройка, которую вы переключаете сами.