Sou bastante novo em toda a pilha e implantações do Netflix OSS em geral. Como pano de fundo para o meu nível atual de conhecimento em termos de operações, minha principal função é como engenheiro de aplicativos front-end. No entanto, eu gosto do lado operacional, por isso estou tentando configurar uma nova estratégia de implantação e as ferramentas para um novo projeto.
Nossos Objetivos
- Implantações super fáceis (queremos apertar um botão para atualizar a produção)
- Implantações automatizadas para ambientes de teste (usando Jenkins)
- Facilidade de manutenção (temos um aplicativo para escrever, não queremos gastar nosso tempo brincando com problemas de produção)
- Capacidade de lidar com uma arquitetura orientada a serviços (muitos aplicativos pequenos, vários idiomas e repositórios de dados)
- Flexibilidade suficiente para garantir que não precisaremos alterar estratégias tão cedo (já estamos tentando nos afastar do RightScale)
Estamos bem com um pouco mais de tempo de configuração inicial, se isso nos poupar algumas dores de cabeça no futuro.
Então, nesse sentido, eu tenho ouvido podcasts, assistindo palestras de operações e lendo toneladas de postagens de blog, com base em nossos objetivos e no que eu considero algumas práticas recomendadas, começamos a formar um plano usando Asgard, enrolando nosso pacote em uma jarra e enrolando-o em uma AMI.
Planejamos tudo isso e gostamos das vantagens do processo versus o uso de um servidor Chef e instâncias convergentes em tempo real (sentimos que isso era propenso a erros, devido à nossa linha do tempo limitada e à falta de entendimento sobre o fluxo de trabalho do servidor Chef). No entanto, um colega de trabalho olhou um pouco sozinho e sentiu que o Elastic Beanstalk atendia às nossas necessidades.
Eu examinei e criei um ambiente de teste com um arquivo WAR e um banco de dados RDS anexado. As coisas parecem funcionar e acredito que podemos automatizar implantações em um ambiente de teste usando Jenkins por meio da API da AWS. Parece simples o suficiente ... talvez simples demais.
O que eu queria saber é: qual é o problema? Se o Elastic Beanstalk é tão simples e eficaz, por que não se fala mais? Estou tendo dificuldades para encontrar opiniões e fatos objetivos suficientes sobre as duas estratégias diferentes de implantação, então pensei em perguntar.
Você usa Elastic Beanstalk? Em caso afirmativo, por que e quais fatores levam a essa decisão? Do que você gosta e não gosta?
Se você não usa o Elastic Beanstalk, mas o considera, o que você usa e por que não usou o Elastic Beanstalk?
Quais são as vantagens e desvantagens de uma estratégia de implantação baseada em Elastic Beanstalk para uma SOA? Ou seja, o Elastic Beanstalk funcionará bem com muitos aplicativos pequenos que dependem um do outro para funcionar?
fonte
Eu vejo o ponto de perda de controle, mas não vejo necessariamente a apatridia. Tudo o que a eb realmente faz é implantar automação, que por sinal é incrível. Eu vejo o objetivo de um grande repositório. Em geral, acho que a separação de funções de aplicativos lógicos em aplicativos de beans separados e, em seguida, ter ambientes de "teste" e "prod" abaixo, é muito bom. Temos ambientes de módulos como uploader, ele não faz muito e, em teoria, acrescenta muitos custos, mas você está usando instâncias menores apenas mais. Executamos um nginx centralizado e tivemos que escrever um monte de identificadores de mensagens sns personalizados para notificar o ngnix sobre alterações na política de dimensionamento automático. Outro grande problema de eb é a incapacidade de reduzir os balanços de carga, já que usamos o ngnix, por que? elb não suporta websocket.
fonte