O que são padrões de implantação?

Concluído

Um padrão de implantação é uma maneira automatizada de implementar sem problemas novos recursos de aplicativos para seus usuários. Um padrão de implantação apropriado ajuda a minimizar o tempo de inatividade. Alguns padrões também permitem que você implemente novos recursos progressivamente. Dessa forma, você pode validar novos recursos com usuários selecionados antes de disponibilizá-los para todos.

Nesta seção, você aprenderá sobre alguns padrões comuns de implantação. Você também aprenderá como o Serviço de Aplicativo do Azure ajudará a implementar o padrão escolhido pela equipe do Tailspin.

Reunião matinal

A equipe Tailspin está se sentindo bem. O seu pipeline acelerou o seu processo. A equipa tem um ambiente de desenvolvimento onde pode integrar a aplicação web com uma base de dados. Tanto Tim quanto Amita estão felizes em ter testes automatizados que simplificam seus trabalhos. Em geral, eles veem menos atrasos e menos bugs.

Mas há, como sempre, um problema. Vamos entrar na reunião de equipe, onde Tim está falando.

Tim: É tão difícil manter todo mundo feliz. Irwin acha que leva muito tempo para lançar novos recursos. Eu não posso fazer nada até que a gerência aprove o lançamento e, no momento, não há uma maneira suave de lançar os recursos depois que eles derem o OK. O processo não é apenas longo, mas confuso. É manual e há tempo de inatividade. Todo o processo pode levar cinco dias. Eu sei que é muito tempo, mas o que devo fazer? Talvez se eu beber mais café a solução venha até mim.

Andy: O café é essencial para a resolução eficaz de problemas, sem dúvida.

Acho que a solução que precisamos é um bom padrão de implantação. Um padrão de implantação é uma maneira automatizada de fazer a substituição. É assim que movemos o software da fase final de pré-produção para a produção ao vivo.

Escolher o padrão certo definitivamente ajudaria você, por exemplo, minimizando o tempo de inatividade. Outra vantagem de um padrão de implantação é que ele nos dá a chance de executar testes que realmente devem acontecer na produção.

Andy começa a escrever no quadro branco.

Aqui estão as possibilidades que devemos considerar:

  • Implantação azul-verde
  • Libertação de canários
  • Alternâncias de recursos
  • Lançamentos escuros
  • Testes A/B
  • Implantação de exposição progressiva

Vamos discutir brevemente cada padrão.

Implantações azul-verde

Uma implantação azul-verde reduz o risco e o tempo de inatividade executando dois ambientes idênticos. Esses ambientes são chamados de azul e verde. A qualquer momento, apenas um dos ambientes é ao vivo. Uma implantação azul-verde normalmente envolve um roteador ou balanceador de carga que ajuda a controlar o fluxo de tráfego.

Diagram of a load balancer distributing traffic in a blue-green deployment.

Digamos que o azul é ao vivo. Enquanto preparamos uma nova versão, fazemos nossos testes finais no ambiente verde. Depois que o software estiver funcionando no ambiente verde, basta trocar o roteador para que todas as solicitações recebidas vão para o ambiente verde.

A implantação azul-verde também nos dá uma maneira rápida de fazer uma reversão. Se algo der errado no ambiente verde, basta mudar o roteador de volta para o ambiente azul.

Libertação de canários

Uma liberação canária é uma maneira de identificar problemas potenciais antecipadamente sem expor todos os usuários ao problema. A ideia é expor um novo recurso a apenas um pequeno subconjunto de usuários antes de disponibilizá-lo para todos.

Diagram of a load balancer sending traffic to a canary version.

Em uma versão canária, monitoramos o que acontece quando lançamos o recurso. Se a versão tiver problemas, então aplicamos uma correção. Depois que a liberação canária é conhecida por ser estável, então nós a movemos para o ambiente de produção real.

Alternâncias de recursos

Use alternâncias de recursos para "virar um interruptor" em tempo de execução. Podemos implementar novo software sem expor qualquer outra funcionalidade nova ou alterada aos nossos utilizadores.

Neste padrão de implantação, Mara e eu construímos novos recursos por trás de uma alternância. Quando ocorre uma versão, o recurso é "desligado" para que não afete o software de produção. Dependendo de como configuramos a alternância, podemos virar o interruptor para "on" e expor o recurso como quisermos.

Diagram of a coded if statement for an on-off feature.

Por exemplo, poderíamos expor o recurso primeiro a alguns usuários para ver como eles reagem. Essa amostra aleatória de usuários vê o recurso. Ou poderíamos simplesmente deixar o recurso ir ao ar para todos.

Mas esse padrão de implantação pode beneficiar Mara e eu mais do que qualquer outra pessoa. Uma grande vantagem para o padrão de alternância de recurso é que ele nos ajuda a evitar muita ramificação. A fusão de ramos pode ser dolorosa.

Lançamentos escuros

Um lançamento escuro é semelhante a uma liberação canária ou alternar um recurso. Em vez de expor um novo recurso para todos, em um lançamento escuro, liberamos o recurso para um pequeno conjunto de usuários.

Diagram of a load balancer sending traffic to the new feature.

Esses usuários não sabem que estão testando o recurso para nós. Nem sequer destacamos a nova funcionalidade para eles. É por isso que é chamado de lançamento escuro. O software é gradualmente ou discretamente liberado para os usuários para que possamos obter feedback e testar o desempenho.

Testes A/B

O teste A/B compara duas versões de uma página da Web ou aplicativo para determinar qual delas tem melhor desempenho. O teste A / B é como um experimento clássico.

Diagram of two apps and their analytics.

No teste A/B, mostramos aleatoriamente aos usuários duas ou mais variações de uma página. Em seguida, usamos a análise estatística para decidir qual variação tem melhor desempenho para nossos objetivos.

Implantação de exposição progressiva

A implantação de exposição progressiva às vezes é chamada de implantação baseada em anel. É outra maneira de limitar como as alterações afetam os usuários e, ao mesmo tempo, garantir que essas alterações sejam válidas em um ambiente de produção.

Os anéis são basicamente uma extensão do estágio canário. O canário liberta-se para um estágio para medir o efeito. Adicionar outro anel é essencialmente a mesma ideia.

Diagram of a progression of larger groups.

Em uma implantação baseada em anel, implantamos primeiro as alterações em clientes tolerantes ao risco. Em seguida, expandimos progressivamente para um conjunto maior de clientes.

Implementando a implantação azul-verde

Andy olha para Tim.

Andy: Isso é muito, eu sei. Você quer tirar algum tempo para pensar sobre isso? Ou você e eu poderíamos...

Tim: Azul-esverdeado.

Todos na sala riem.

Mara: É o café falando?

Tim: As alternâncias de recursos envolvem uma mudança na forma como você e Andy trabalham. Vamos fazer uma coisa de cada vez. Os métodos que expõem gradualmente um recurso exigem análise estatística ou alternância de recursos.

Uma implantação azul-verde é algo que posso controlar. Mudar de roteador é simples. É fácil e parece seguro. E em uma implantação azul-verde, o gerenciamento tem um ambiente para avaliar. Quando eles dão o OK, podemos facilmente mudar. Comecemos por aí.

Portanto, a questão é: como implementar uma implantação azul-verde em nosso pipeline?

O que são slots de implantação?

Andy: Como estamos usando o Serviço de Aplicativo do Azure, podemos aproveitar os slots de implantação. Os slots de implantação estão executando aplicativos que têm seus próprios nomes de host.

Sei que ainda não estamos prontos para implantar o site Space Game em produção como parte do pipeline automatizado. Mas, como teste, podemos adicionar um slot de implantação ao nosso ambiente de preparação .

Em vez de configurar um balanceador de carga ou um roteador, podemos apenas adicionar um segundo slot à instância do Serviço de Aplicativo que usamos em nosso ambiente de preparo existente. Podemos chamar o slot primário de azul e o slot secundário de verde.

Diagram of applications swapping IP addresses.

Desta forma, podemos implementar novas funcionalidades sem qualquer tempo de inatividade. Trocamos um aplicativo e sua configuração entre os dois slots de implantação. Basicamente, estamos trocando os endereços IP dos dois slots.

Tim: Eu gosto disso! Você pode chamar essa variação de uma implantação azul-verde de implantação sem tempo de inatividade.

Andy: Ótimo! Tim e eu trabalharemos na implementação desse padrão de implantação. Todos podemos reunir-nos mais tarde para ver os resultados.

Recomendações para o uso de sinalizadores de recursos

As bandeiras de recursos foram um dos métodos de cadência de lançamento que a equipe considerou. A equipe decidiu não usar sinalizadores de recursos, mas muitas pessoas os acharam úteis. Esta seção fornece mais informações sobre sinalizadores de recursos.

Os sinalizadores de recursos, às vezes chamados de alternâncias de recursos, permitem que você altere como um sistema funciona sem alterar o código. Esses sinalizadores permitem que você envie um novo código para sua ramificação de desenvolvimento central e tenha o código implantado, mas não necessariamente funcional. Os sinalizadores são comumente implementados como o valor de variáveis que controlam a lógica condicional.

Imagine que sua equipe está trabalhando na agência central de desenvolvimento de um aplicativo bancário. Você decidiu fazer todo o trabalho no ramo principal para evitar operações de fusão confusas mais tarde. Mas você enfrenta um problema. Você está mudando substancialmente os cálculos de juros, e as pessoas dependem desse código todos os dias. Pior, as alterações levarão semanas para serem concluídas. Você não pode deixar o código principal quebrado por tanto tempo.

Nesse cenário, um sinalizador de recurso pode ser uma boa solução. Você pode alterar o código para que os usuários que não têm o sinalizador de recurso definido possam continuar usando o código de cálculo de juros original. Enquanto isso, sua equipe tem o sinalizador de recurso definido, para que eles possam ver o código que estão alterando.

Outro tipo de sinalizador de recurso é um sinalizador de liberação. Imagine que, depois de concluir o trabalho no código de cálculo de juros, você queira experimentá-lo antes de liberá-lo publicamente. Você tem um grupo de usuários que estão bem posicionados para lidar com o novo código e quaisquer possíveis problemas. Você permitirá que eles experimentem o recurso primeiro. Você altera a configuração para que eles também tenham o sinalizador de recurso definido e possam testar o novo código. Se ocorrerem problemas, você pode desativar rapidamente o sinalizador.

Verifique o seu conhecimento

1.

A equipa de marketing pediu-lhe para adicionar um banner ao website da sua empresa. Eles têm duas versões deste banner. Eles querem saber qual versão produz mais cliques. Qual padrão de implantação você pode usar para ajudar a equipe de marketing a identificar a melhor versão?

2.

Você tem um novo recurso para seu site e está pronto para implantá-lo. No entanto, esse recurso é arriscado porque muda a maneira como seus usuários interagem com o site. Quais padrões de implantação você pode usar para liberar para um pequeno grupo de primeiros usuários que se inscreveram para ver novos recursos?

3.

Você não tem certeza de como seus usuários reagirão ao seu novo recurso. Você deseja liberar seu recurso para uma amostra pequena e aleatória de usuários para ver como eles reagem. Qual padrão de implantação você pode usar?