Introdução ao Spinnaker

Introdução ao Spinnaker

1. Visão geral

Neste tutorial, vamos dar uma olhada emSpinnaker, uma plataforma de código abertocontinuous delivery construída pela Netflix. Podemos usá-lo para implantar nossos aplicativos em vários provedores de nuvem.

O sistema é construído em cima deSpring Boote suporta muitos provedores de nuvem.

Veremos como funciona e para quais casos podemos usá-lo.

2. fundo

Vamos dar uma olhada na história do desenvolvimento de software. Primeiro, tivemos o Waterfall com lançamentos pouco frequentes.

Depois disso, começamos a trabalhar com o Agile e fornecemos recursos a cada sprint. However, we still didn’t deploy to production every sprint. Infelizmente, os usuários ainda não conseguiram usar os novos recursos, que estavam em uma prateleira.

Havia alguns motivos para não implantar regularmente. Um deles era o fato de que as etapas de implantação eram frequentemente executadas manualmente e sujeitas a erros humanos.

Além disso, algumas pessoas pensaram que implantar com mais frequência significava mais riscos para possíveis problemas. Nowadays, we mostly agree that deploying small changes means less risk for big mistakes. Mesmo assim, se houver um erro, podemos localizá-lo rapidamente na pequena alteração e lançar uma nova versão que resolva o problema.

3. Spinnaker

With Spinnaker, we can use continuous delivery or continuous deployment to release our application on production automatically. Entrega contínua significa que tudo está preparado para uma liberação de produção.

No entanto, a liberação é aprovada manualmente antes da implantação do aplicativo na produção. A implantação contínua significa que não há intervenção manual. All steps are executed, including the deployment to production. Acabamos de enviar o código do nosso aplicativo para um sistema de controle de versão e é isso.

Desde o envio do código ao controle de versão até a implantação na produção, podemos executar várias etapas. Podemos criar nosso código, testar o código da unidade, implantá-lo em um ambiente de teste e executar testes funcionais. Usamos o chamado pipeline para configurar todas essas etapas.

Com o Spinnaker, podemos criar esse pipeline e implantar nosso aplicativo na maioria dos provedores de nuvem.

4. Componentes

O Spinnaker consiste basicamente em duas partes: uma camada de abstração sobre vários provedores de nuvem e uma ferramenta para entrega contínua.

4.1. Implantações em nuvem tradicionais

Quando analisamos os provedores de nuvem, todos eles oferecem mais ou menos os mesmos serviços. Esses serviços incluem itens como instâncias, sem servidor e suporte a contêiner.

No entanto, a configuração desses serviços varia muito entre os provedores. Isso dificulta a alternância entre provedores. Leva algum tempo para mudar para outro provedor de nuvem e aprender todos os detalhes, o que significa que basicamente temos um fornecedor bloqueado com nosso provedor de nuvem.

A Netflix queria ter a possibilidade de alternar facilmente entre os provedores de nuvem, em vez de depender de apenas um. É por isso que eles construíram uma camada de abstração em cima dos provedores de nuvem.

4.2. Camada de abstração

When we use Spinnaker, it’s the same on all cloud providers. Podemos usá-lo na Amazon Web Services, Microsoft Azure, Google Cloud Platform, OpenStack, Google App Engine ou Kubernetes. Isso nos permite mudar para outro provedor de nuvem se os preços forem mais competitivos.

Even more, we can choose to deploy to multiple providers at the same time. Dessa forma, podemos executar nosso aplicativo em dois ou mais provedores para redundância extra.

Another benefit of the abstraction layer is that it focuses on the applications instead of the resources. Normalmente, os provedores de nuvem nos mostram os recursos que usamos atualmente. No entanto, temos que descobrir qual aplicativo está usando quais recursos.

Mas os recursos não são interessantes para nós. Queremos executar nosso aplicativo sem gastar tempo acompanhando os recursos. O Spinnaker possui uma visão centrada no aplicativo. Então, quando olhamos para ele, primeiro vemos o aplicativo e depois os recursos usados ​​pelo aplicativo.

4.3. Entrega Contínua

On top of the abstraction layer, Netflix built a continuous delivery platform. Esta plataforma nos permite implantar nosso aplicativo em um ou mais provedores de nuvem. Parece um pouco com Jenkins, mas oferece uma integração melhor com os provedores de nuvem e requer menos configuração.

Podemos acionar o pipeline de entrega contínua de Jenkins, uma imagem carregada do Docker ou um push git, por exemplo. Depois disso, podemos simplesmente criar uma imagem ou um contêiner com nosso aplicativo e iniciá-lo na produção.

No entanto, existem muito mais opções disponíveis, como testes automatizados e aprovações manuais antes da implantação na produção.

Podemos até decidir qual estratégia queremos seguir ao implantar uma nova versão de um aplicativo existente. Como tal, é possível simplesmente substituir a versão antiga pela nova versão. No entanto, uma estratégia melhor seria executá-los lado a lado primeiro. Dessa forma, podemos verificar automática ou manualmente se a nova versão funciona e, se houver, remover a versão antiga.

5. O modelo de nuvem da Netflix

Every application consists of one or more server groups. A mesma versão do aplicativo é executada em todas as instâncias do grupo de servidores. A seguinte convenção de nomenclatura é usada: - - <(detalhe opcional)> - . O campo da pilha (opcional) é usado para especificar se o grupo de servidores é para teste, produção ou outros propósitos. O campo de detalhes opcional é usado para informações adicionais.

Finally, we have the concept of a cluster that contains one or more server groups with the same name, stack, and detail. No entanto, na maioria das vezes, cada grupo de servidores no cluster executa uma versão diferente do aplicativo. Instâncias com falha serão substituídas por uma nova instância.

Também é possível adicionar instâncias automaticamente a um grupo de servidores para acomodar o aumento da carga.

6. Estratégia de implantação

When we deploy a new version of an application, the ‘red/black' strategy is normally chosen. Primeiro, um novo grupo de servidores contendo a nova versão do aplicativo é implantado no cluster. Após a implantação do aplicativo, é realizada uma verificação para verificar se o novo grupo de servidores está íntegro.

Agora, o grupo de servidores está ativado e disponível para nossos clientes. Por fim, o antigo grupo de servidores está desabilitado.

In this scenario, it’s easy to roll back if something goes wrong with the new application server. Podemos simplesmente habilitar o grupo de servidores com a versão antiga novamente e disponibilizá-la para nossos clientes.

7. Porquê Spinnaker

With Spinnaker, we can focus on our application instead of the cloud resources that we use. Isso torna mais fácil implantar e manter nossos aplicativos.

Além disso, o Spinnaker possibilita a execução em vários provedores de nuvem ao mesmo tempo. Além disso, podemos facilmente mudar para outros provedores de nuvem, dependendo da estratégia de preços e dos recursos disponíveis.

8. Conclusão

Spinnaker builds on the experience of Netflix. Podemos usar seus conhecimentos e trabalhar da mesma forma com o mínimo de esforço. Com base nessas ferramentas, podemos implementar facilmente um pipeline de implantação para implantar nossos aplicativos na produção.

Para saber mais sobre o Spinnaker, baixe o e-book gratuitoContinuous Delivery with Spinnaker.