Blue Green Deployment & Drupal - Quanto você realmente sabe?

Publicados: 2019-07-23

Blue Green Deployment é um dos pilares das estratégias de implementação que supera as limitações da abordagem tradicional para a implementação de aplicativos. Quanto você sabe sobre a implantação do Blue Green? Como o Blue Green Deployment no Drupal é implementado?

Sim, você leu certo. Ter que colocar seu aplicativo offline para atualizações ou ao lançar uma nova versão é uma tarefa assustadora e uma verdadeira dor. É verdade que dá para amenizar isso com paradas programadas, mas não é algo que vai deixar os clientes felizes. Alguns sites perdem milhares de dólares a cada minuto que ficam inativos! A implantação ou atualização de seu aplicativo deve ser o verdadeiro motivo de sua perda?

Saiba por que a implantação azul verde é a melhor estratégia para reduzir o tempo de inatividade e mitigar outros riscos envolvidos na implantação de aplicativos. Descubra mais sobre a implantação verde azul e Drupal.

O que é implantação azul-verde?

Blue-Green Deployment é uma técnica para liberar aplicativos, deslocando ou movendo o tráfego entre dois ambientes idênticos executando duas versões diferentes de um aplicativo.

Em suma, existe uma versão de um aplicativo, vamos chamá-lo de "versão azul" em produção. E então, há um roteador que é usado para rotear o tráfego para o aplicativo. Agora você precisa de outra versão. a "versão verde" com mais alguns extras adicionados, a serem implantados. No entanto, você também deseja garantir que, enquanto essa implantação está acontecendo, um usuário ainda pode olhar para o seu aplicativo, pressionar um botão ou fazer o que quiser, sem que o aplicativo seja desativado! Mais como implantar secretamente a "versão verde" enquanto a "versão azul" lida com todo o tráfego, antes de, eventualmente, trocar as conexões.

blue_green_deployment

Com recursos de liberação e reversão com tempo de inatividade quase zero, a ideia fundamental do Blue-Green Deployment é deslocar o tráfego entre dois ambientes idênticos que estão executando duas versões diferentes do aplicativo. Enquanto a versão atual do aplicativo é representada pelo ambiente Azul, o verde é encenado executando uma versão diferente.

Por que implantação azul-verde?

Um dos principais desafios da automação do processo de implantação é o cut-over em si, ou seja, mover o aplicativo do estágio final de teste para o estágio ao vivo. E isso deve ser cuidado rapidamente para minimizar qualquer tipo de tempo de inatividade. Isso é exatamente o que a implantação azul-verde faz. Com dois ambientes de produção (tão idênticos quanto possível na natureza), em qualquer ponto do tempo, um deles está ao vivo. E ao se preparar para um novo lançamento, você faz todos os testes no outro ambiente que não está ativo. Quando estiver pronto para começar, tudo o que você precisa fazer é mudar o roteador para que todo o tráfego seja direcionado para a versão mais recente e o outro ambiente fique ocioso.

Além disso, a implantação Blue-Green fornece um dos recursos mais importantes, uma reversão rápida. Suponha que se algo der errado com sua versão mais recente, você apenas precise voltar ao roteador. Embora ainda possa haver um problema com as transações perdidas quando o ambiente com defeito estava ativo, você também pode projetá-lo de forma que ambos os ambientes sejam alimentados com as transações e um atue como backup do outro.

Como implantação azul-verde?

Agora que sabemos sobre os dois ambientes de implantação azul-verde, vamos dar uma olhada em algumas das melhores práticas para implementar o mesmo.

  • Balanceamento de carga sobre troca de DNS

Lembre-se de que, ao alternar entre ambientes, faça com que seu domínio eventualmente aponte para servidores diferentes. Em vez de acessar os registros DNS e fazer alterações na interface de gerenciamento de DNS, use o balanceamento de carga.

O problema de fazer alterações nos registros DNS resultará apenas em uma longa trilha de tráfego. Isso significa que, embora alguns de seus usuários ainda sejam atendidos pelo ambiente antigo, você não terá controle total sobre para onde o tráfego é roteado.

No entanto, os balanceadores de carga permitirão que você configure seus novos servidores imediatamente e você não terá que depender do mecanismo DNS. Dessa forma, você terá controle total sobre o tráfego e poderá ter a certeza absoluta de que todo o tráfego será encaminhado para o novo ambiente.

  • Rolling Update

NÃO mude todos os seus servidores de uma vez. Em vez disso, execute uma atualização contínua. Ou seja, em vez de passar para os servidores Verdes dos Azuis de uma só vez, trabalhe com um ambiente integrado. Adicione um novo servidor, retire o antigo. Repita até que cada novo servidor esteja instalado. Isso reduzirá seu tempo de inatividade por uma margem enorme!

  • Monitoramento Ambiental

Embora o monitoramento do ambiente ao vivo seja óbvio, você não quer ser pego de surpresa por não monitorar o outro ambiente. Sim, o monitoramento do outro ambiente é menos crítico. No entanto, como o mesmo ambiente pode atuar como ambos os estados, você precisará de uma maneira mais fácil de alternar o alerta entre os dois. Configure tokens de API diferentes para os dois ambientes que reportam de volta ou altere programaticamente a política de alerta no ambiente quando sua função for alterada / trocada.

  • Automação

O conjunto manual de ações apenas aumentará o seu trabalho. Em vez disso, faça o script de cada ação no processo de troca. Automatizar o processo de troca resultará em uma implementação mais rápida, fácil e segura do Blue-Green Deployment.

Implantação Blue Green para sites Drupal

Problemas

  • Durante as implantações de código, o Drupal precisa executar atualizações do banco de dados para operar e isso é um grande problema, uma vez que as atualizações do Drupal colocam o site em modo de manutenção e seus usuários são recebidos com esta bela tela em branco.
Manutenção Drupal
Fonte: drupal.org

Se a implantação falhar, uma reversão só será possível restaurando o banco de dados do despejo, considerando que o esquema do banco de dados pode ter sido modificado. Isso significa tempo de inatividade!

Solução: Blue Green Deployment!

Vejamos um pouco da visão geral da infraestrutura para implementar o Blue Green Deployment com o Drupal. Qualquer tipo de operação no Drupal requer Nginx e um servidor php (para executar principalmente o Drupal), precisamos de um banco de dados, um armazenamento de arquivos, algum cache e a pilha é projetada de forma que esteja altamente disponível.

Com o Blue Green Deployment, você precisa implantar uma nova pilha com uma nova base de código e copiar todo o seu banco de dados e os diferentes estados da base de código anterior, de preferência usando o Drush.

visão geral da infraestrutura
Fonte: Drupal Con Seattle 2019

Uma vez que as duas pilhas diferentes são configuradas, a pilha de teste deve ser testada independentemente da pilha de produção. Basicamente, você precisa que seus usuários acessem a pilha (pilha de produção) e testem a versão do site que está implantada. E quando a outra versão (a pilha de teste) estiver pronta, você só precisa inverter as versões. Agora os usuários estão sendo direcionados para a nova pilha e a versão mais antiga está disponível para teste.

Implantação Blue Green com Docker

Implantações no Drupal não são fáceis. Embora seja necessário garantir que o código seja implantado, as dependências do compositor sejam tratadas, as atualizações do esquema sejam atualizadas e todos os caches sejam limpos, você também precisa garantir que o "site responsivo" esteja instalado e funcionando. E o que acontece se houver um problema e a implantação falhar? Você reverte? Ou interromper a implantação?

A frase que você está procurando é Blue Green Deployment

Durante a implantação do Drupal, o Docker garante uma mudança fácil entre os aplicativos e torna mais fácil construir e executar diferentes versões dos mesmos. Na instância EC2, sempre há um conjunto de contêineres docker elevados em azul e verde, e o nginx funciona como um servidor proxy reverso. A implantação do verde azul com o Docker permite que um usuário crie um site Drupal que funciona em paralelo em dois ambientes diferentes.


Implantação Blue Green com AWS

Embora, historicamente, a implantação do azul verde não tenha sido a primeira escolha para implantar o software no local devido ao seu alto custo e complexidade envolvida, os contêineres mudaram essa percepção para sempre.

Os contêineres facilitam a adoção da implantação verde azulada por causa de seu pacote fácil e comportamento consistente à medida que alternam entre os ambientes. E para alterar a configuração de um contêiner, você só precisa atualizar seu dockerfile e reconstruir e reimplantar o contêiner no local em vez de atualizar o software.

O Amazon ECS executa essas atualizações contínuas quando você atualiza um serviço Amazon ECS existente. A atualização contínua para a implantação ecs blue green envolve a substituição da versão existente do contêiner pela mais recente. Este número de contêineres que o Amazon ECS adiciona ou remove durante a atualização é controlado ajustando o número máximo e mínimo de tarefas íntegras permitidas durante as implantações de serviço. Uma vez que a atualização, a definição de tarefa do serviço é atualizada com a versão mais recente da imagem do contêiner, O Amazon ECS começa automaticamente a substituir a versão antiga do contêiner pela mais recente.

Implantação azul verde da AWS

A implantação do verde azul com AWS ECS também fornecerá benefícios de otimização, uma vez que você não está vinculado ao mesmo conjunto de recursos. Ou seja, quando o envelope de desempenho do aplicativo muda de uma versão para a outra, você simplesmente inicia o novo ambiente com os recursos otimizados (podem ser em menor número ou um conjunto de recursos completamente diferente).

A implantação do verde azul na AWS também se ajusta bem aos fluxos de trabalho de implantação e integração contínua, controlando suas complexidades ao permitir que a automação da implantação considere menos dependências em um ambiente existente.

Esta solução permite que os usuários gerenciem facilmente a implantação e escalabilidade de plataformas web sem perder tempo. Esta implantação ajuda a configurar um ambiente de alta disponibilidade que irá executar um site Drupal sem problemas.