Passei muito tempo avaliando diferentes maneiras de implantar um aplicativo na nuvem (vamos supor que a AWS tenha essa pergunta) nas últimas semanas, mas não consegui encontrar uma solução satisfatória.
Temos uma configuração imho muito padrão:
O beanstalk elástico é muito fácil de configurar para a parte de trilhos, mas é uma droga para o sidekiq e o cronjobs.
Depois de analisarmos o coreos e todos os seus recursos / ferramentas, estamos convencidos de que é a solução mais simples. Mesma imagem do docker para rails, sidekiq e o cron, mas todos com CMD
s diferentes.
Agora, brincando com fleet
e uma dúzia de instâncias de ec2, não consigo entender minha filosofia:
As unidades globais são um pouco "aparafusadas", não permitindo o comando status
ou journal
. Além disso, eles foram introduzidos há pouco tempo, sugerindo que eles não são o principal meio de lidar com as coisas.
Mas a única outra maneira seria executar coisas como myservice{1..9}.service
.
Unidades globais funcionam com escalonamento automático - assim que uma nova instância estiver ativa e conectada ao cluster, fleet
inicia os contêineres (se os metadados corresponderem). Mas parece não haver nenhuma maneira de atualizar as imagens sem tempo de inatividade, além dos comandos e ferramentas ausentes anteriormente mencionados.
Usando a segunda abordagem, o dimensionamento automático não traz nenhum benefício, pois preciso especificar a quantidade exata de réplicas de que preciso. A propósito, este também parece ser o caso dos kubernetes!?
Assim, uma vez que muitas grandes empresas executam contêineres docker, certamente com escala automática (especialmente o Google com kubernetes), como configurar um ambiente de janela de encaixe simples, sem precisar alterar manualmente o número de contêineres?
Nota: Eu nem preciso de uma resposta muito complexa para coisas como gerenciamento de recursos (como o ECS faz, mas isso é outra história). Realmente, tudo o que preciso é uma maneira de ter uma função em uma instância e ter uma ferramenta que garanta que essa instância execute os contêineres corretos, uma vez iniciada, incluindo atualizações contínuas.
Talvez não haja uma boa resposta para isso neste momento, pois ainda não consegui encontrar nada de satisfatório na Web. Mas talvez alguém tenha algumas sugestões.
Obrigado!