Я думаю о том, как лучше всего настроить мое приложение SaaS для автоматического масштабирования, и достигла шага, с которым не знаю, как справиться. Чтобы правильно описать проблему, мне лучше начать с объяснения, как я вижу весь этот процесс:
Во-первых, я размещу основной сайт на отдельном VPS, который обрабатывает регистрацию и содержит всю информацию о реальных серверах приложений, их загрузке, количестве пользователей и т. Д. Я думаю, что задание cron или что-то в этом роде будет проверять, чтобы у меня всегда было место для дополнительных N пользователей, и если я перейду ниже этого числа, автоматически начну процесс настройки нового экземпляра VPS.
Я решил использовать DigitalOcean и их API для настройки капель, которые затем я подключу к ServerPilot, отправив сценарий настройки ServerPilot в качестве метаданных пользователя CloudInit при создании капли в DigitalOcean.
Затем я могу использовать комбинацию API ServerPilot и DigitalOCean для проверки серверов, создания «приложений», баз данных, подключения доменов и так далее.
А теперь самое сложное. Мне нужно каким-то образом настроить репозитории Git на только что созданном сервере без использования SSH вручную.
Мои возможности здесь кажутся ограниченными. Я не могу с самого начала настроить какой-то нормальный веб-api для управления git и развертыванием приложений, поскольку ServerPilot не сделал этого при запуске CloudInit.
Можно было бы включить пользовательский сценарий в CloudInit, который служит элементарным веб-API для настройки и развертывания приложений PHP. Тогда я начал искать Sinatra для Ruby или Flask / Bottle для python. Если я правильно понимаю, они могут предоставить конечную точку API без установленного nginx / apache. Или, может быть, я совсем здесь?
Прежде чем идти дальше, я хотел бы поделиться своими идеями.
Этот план звучит разумно?
Есть ли лучшие альтернативы ServerPilot для такого использования, когда я предпочитаю держаться подальше от файлов конфигурации?
Было бы лучше просто создать свой собственный файл изображения для новых капель и вообще не использовать ServerPilot, включив в него API-интерфейс «manager» -app в обычном PHP для настройки пользовательских приложений?
Мне вроде как нравится идея позволить ServerPilot заниматься настройкой, поскольку я в первую очередь не серверный парень. Любой вклад приветствуется.