Eu avaliei o Elastic Beanstalk além de outras ofertas da AWS enquanto tentava melhorar nossas instâncias AWS manuais. As razões pelas quais optei por não usá-lo foram devido a complicações que poderiam afetar a migração do meu aplicativo existente e não a própria oferta. O problema é que você não tem tanto controle sobre a implantação / configuração de aplicativos dos servidores. Se você está iniciando um novo aplicativo, pode ser útil não lidar com essas coisas agora, se você tiver um aplicativo existente, será mais difícil se encaixar no modelo do Beanstalk.
O Beanstalk oferece uma oferta semelhante ao Heroku e a outros fornecedores de PaaS, mas não é muito benéfico para aqueles que apenas querem se concentrar em fazer sua inscrição. Você pelo menos consegue determinar os recursos virtualizados em maior grau do que outros fornecedores de PaaS.
Problemas com os meus aplicativos:
-
Implantações baseadas em Git - adoro-as, mas nosso repo é de 1 GB ou mais. Bastante grande para empurrar em uma base regular. Este repositório também contém cerca de 40 aplicativos (que realmente devem ser divididos), mas isso levaria algum tempo. O upload de qualquer tipo de pacote poderia funcionar, mas a maioria dos nossos aplicativos levaria muito trabalho para transformá-lo em um pacote.
-
Integração com outros serviços - Pelo que vi, o Beanstalk presume que qualquer coisa que você esteja conectando é um único serviço. Isso funciona bem se seus serviços estiverem atrasados e ELB, mas nossos nós separados foram atingidos por meio do HAProxy em execução em cada servidor de aplicativos. Se você estiver executando seus datastores e outros serviços como um único endpoint, tudo bem.
Na minha avaliação, também incluí o OpsWorks e o CloudFormation. OpsWorks tem problemas de integração semelhantes com o funcionamento da automação existente para esses aplicativos. O CloudFormation não fez muito mais do que alguns scripts Python e Chef já estavam cuidando de nós.
Acabei optando por usar os Grupos de escalonamento automático da AWS com alguma automação fornecida por Asgard . Essa foi a menor alteração no código de configuração / aplicativo existente e nos forneceu os benefícios que estávamos procurando, o gerenciamento simples de vários servidores disponíveis por meio da API da AWS.
As restrições impostas pelo Elastic Beanstalk à sua inscrição são muito úteis. Você terá que certificar-se de que seu aplicativo é principalmente sem estado, fornece um ponto de extremidade para um serviço e depende de outros serviços para o estado. Se você está tentando fazer serviços autônomos reutilizáveis, vários aplicativos no Beanstalk são um ótimo começo.
Se / quando você chegar ao ponto de querer mais configurações, o OpsWorks será o próximo passo. As funções predefinidas devem facilitar a transição e fornecer uma estrutura de automação em torno do Chef para ajudar a coordenar o provisionamento de vários servidores.