Estou pensando em como configurar melhor meu aplicativo SaaS para dimensionamento automático e cheguei a uma etapa em que não tenho certeza de como lidar. Para descrever corretamente o problema, é melhor começar explicando como vejo todo esse processo em andamento:
Primeiro, vou hospedar o site principal em um VPS separado que lida com inscrições e tem todas as informações sobre os servidores de aplicativos reais, sua carga e contagem de usuários e assim por diante. Estou pensando que um trabalho do cron ou algo irá verificar para que eu sempre tenha espaço para N mais usuários, e se eu for abaixo desse número, inicie o processo de configuração de uma nova instância do VPS automaticamente.
Eu decidi usar o DigitalOcean e sua API para configurar droplets, que depois conectarei ao ServerPilot enviando o script de configuração do ServerPilot como metadados do usuário do CloudInit ao criar o droplet no DigitalOcean.
Posso usar uma combinação das APIs ServerPilot e DigitalOCean para verificar os servidores, criar "aplicativos", bancos de dados, conectar domínios e assim por diante.
Agora, para a parte complicada. Eu preciso de alguma forma obter repositórios Git configurado no servidor recém-criado sem manualmente SSH: ing para ele.
Minhas opções aqui parecem limitadas. Eu não posso realmente configurar algum tipo de web-api normal desde o início para gerenciar implementações de git e app, já que o ServerPilot não fez nada quando o CloudInit é executado.
Uma possibilidade seria incluir um script personalizado no CloudInit que sirva como uma API da Web rudimentar para configurar e implantar os aplicativos PHP. Foi quando comecei a olhar para o Sinatra para o Ruby ou o Flask / Bottle para o python. Se eu entendi corretamente, eles podem fornecer um ponto de extremidade da API sem que o nginx / apache esteja instalado ainda. Ou talvez eu esteja totalmente fora daqui?
Antes de prosseguir, gostaria de inserir minhas idéias até agora.
Este plano parece razoável?
Existem alternativas melhores para o ServerPilot para esse tipo de uso, onde eu prefiro ficar longe de arquivos de configuração eu mesmo?
Seria melhor apenas criar meu próprio arquivo de imagem personalizado para novos droplets e não usar o ServerPilot, fazendo com que ele inclua API "manager" -app no PHP normal para configurar os aplicativos do usuário?
Eu meio que gosto da ideia de deixar o ServerPilot lidar com a configuração, já que eu não sou basicamente um servidor. Qualquer entrada é apreciada.
Tags php hosting deployment saas