История хостинга одного Flask-приложения без настройки VPS

—

от автора

Мы хотим рассказать историю одного нашего клиента, с которым прошли долгий путь. И по запросам которого реализовали несколько интересных функций в нашей PaaS-платформе Amvera.

Компания AIprintgen искала сервис для хостинга приложения на Flask с возможностью автоматизации деплоя через привязку Git-репозитория. 

AIprintgen — онлайн-сервис для создания 3D-моделей по изображениям и текстовым описаниям. Основной фокус — 3D-печать: персональные фигурки, подарки, барельефы и декоративные изделия. Пользователь может создать модель, рассмотреть её в браузере, выполнить ряд операций по обработке и скачать файл для дальнейшей подготовки к печати. Сейчас у проекта тысяча платящих пользователей.

Пример сценария: персональная фигурка для печати

Пример сценария: персональная фигурка для печати
Как работает сервис AIprintgen

Представим, что пользователь хочет сделать персональную фигурку в подарок. У него есть фотография человека и представление о результате.

Сначала он готовит изображение в AIPRINTGEN: выбирает образ, одежду, позу и стиль будущей фигурки. На этом этапе проще оценить композицию и внести изменения, пока работа идёт с картинкой. Затем подготовленное изображение отправляется на генерацию 3D-модели.

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

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

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

Основное веб-приложение AIprintgen было написано на Python: Flask и Gunicorn. В браузере используется JavaScript и Three.js для просмотра 3D-моделей. На Amvera размещена веб-часть проекта. 

Изначально коллеги искали что-нибудь простое, чтобы был деплой напрямую из Git и была встроенная поддержка Python и Docker, желательно с оплатой в рублях.

Я много работал с Google Cloud Platform, так что первые варианты были там, но нам нужна была российская компания. Решили попробовать Амверу, и нам понравилось. Особенно полезным в Amvera оказался функционал развёртывания через Git, поддержка собственного Docker-образа, постоянное хранилище, MCP, пробы и поиск по логам приложения.

Основной плюс использования PaaS-платформы Amvera — меньше времени на обслуживание инфраструктуры и больше на развитие самого приложения.

Виталий Карпатов: основатель AIprintgen

Проект рос и сталкивался с новыми вызовами.

Защищаем домен приложения от ботов

Первый серьёзный вызов для AIprintgen был в наплыве ботов-скраперов. Так как AIprintgen предлагает большую библиотеку 3D-моделей, многие боты хотели её спарсить. Это создавало большую нагрузку на сервер. С чем коллеги и обратились в Amvera.

Чтобы помочь, мы в Amvera сделали три улучшения.

  1. Заменили сервера на более производительные, которые выдерживают большее количество запросов.

  2. Создали новый тип ингресса, в котором пользователи могли сами управлять сетевыми параметрами количества соединений и размерами запросов. А также получать реальные IP-пользователей в заголовках.

  3. Сделали сервис защиты проектов от ботов, брутфорса и других атак, который пользователи могут активировать одной кнопкой.

Особенно коллегам помог второй пункт, так как пробрасывание реального IP позволило им настроить собственную защиту в дополнении к нашей. В итоге именно это и помогло в борьбе с ботами.

А остальные возможности пригодились другим нашим клиентам.

Zero downtime deploy Flask-приложения

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

Для обеспечения этого мы в Amvera сделали специальный режим zero downtime deploy, при котором в момент обновления запускается вторая реплика и трафик балансируется так, чтобы отсутствовал даунтайм. 

Чтобы быть до конца объективными, полное отсутствие даунтайма при обновлениях зависит от самого кода проекта, настройки проб и ряда других факторов. Для большинства проектов всё происходит абсолютно бесшовно, и пользователи совсем не замечают простоя. Но если сам код запускается чуть позже готовности пода принимать трафик, то может быть несколько секунд перерыва. И AIprintgen оказался именно таким проектом. Нам удалось снизить даунтайм при обновлении на 90%, но полностью его ликвидировать – цель доработки нашей функции zero downtime deploy в ноябре 2026.

Регионы для хостинга 

Изначально коллеги развернули проект в российском ЦОДе Amvera. Но для улучшения пинга они провели ряд тестов и остановились на регионе Amvera в Варшаве.

Уже сейчас проекты в Amvera можно размещать как в России, так и в Европе и Америке. Частым сценарием является размещение PostgreSQL в российском регионе для соблюдения требований законодательства о локализации персональных данных, а самих приложений в заграничных ЦОДах. Это помогает обеспечить доступность к сайтам как для пользователей, использующих прямое подключение, так и для тех, кто использует ВПН.

Следующим шагом, запланированным на ноябрь 2026, является реализация функции мультирегионального деплоя. Пользователи Amvera смогут развернуть сайты и веб-приложения сразу в нескольких регионах с использованием Anicast DNS. Это позволит как обеспечить доступность при любом типе подключения, так и максимально снизить пинг для пользователей из разных стран.

Что мы будем делать в 2026–2027

С ростом наших пользователей растут и их требования к нашей PaaS-платформе для простого деплоя приложений Amvera. В наших планах сделать в 2026 возможность мультирегионального деплоя с Anicast DNS для обеспечения минимального пинга и надёжного доступа из всех стран. И продолжать развивать такие PaaS-функции как CI/CD, наблюдаемость и возможность более гибкого управления, которые удовлетворят запросы клиентов со сложными, нагруженными проектами.


Amvera – российская PaaS-платформа для простого хостинга ботов, сайтов и других IT-приложений без необходимости настройки сервера. В облаке Amvera есть встроенная поддержка Python (в т. ч. Flask, Django, FastAPI), Node.js (в т.ч. Next.js, Nuxt.js), Docker, PHP (Laravel), С# (ASP.NET Core) и других окружений. А деплой идёт через встроенный CI/CD по принципу git push to prod. Для работы с данными есть управляемые PostgreSQL, Redis и MySQL с бэкапами. Возможности PaaS-платформы позволяют деплоить приложения без настройки сервера и не думать об инфраструктуре. В отличие от иностранных сервисов, в Amvera можно платить рублёвыми картами и размещать приложения как в Европе и Америке, так и на российских серверах для соответствия местным правилам обработки данных. Начать можно бесплатно: при регистрации даётся приветственный баланс на несколько недель тестов.

ссылка на оригинал статьи https://habr.com/ru/articles/1103076/