Por que a orquestração de contêineres é importante?

Concluído

Nesta unidade, você pode acompanhar a equipe da Tailspin enquanto eles exploram estratégias para cumprir uma nova diretiva da gerência. A equipe examina como o Kubernetes pode ajudar na transição para uma arquitetura de microsserviços.

O futuro é menor

As coisas estão a melhorar na Tailspin. Em um recente gerenciamento externo, Andy apresentou os sucessos recentes de sua equipe com o Azure DevOps, que foram bem recebidos. Andy também apresentou uma demonstração do recente projeto de prova de conceito da equipe usando contêineres Docker. Essas demonstrações levaram a uma série de conversas produtivas sobre o futuro técnico da organização. No dia seguinte, Andy volta para compartilhar a notícia com a equipe web do Space Game.

Andy: As coisas correram muito bem na minha apresentação fora do local ontem. A gerência está impressionada com o trabalho que fizemos até agora e nos emitiu uma missão especial.

Tim: Uh oh. Eu estive por perto tempo suficiente para ver uma armadilha como essa vindo de uma milha de distância.

Andy: Não, esta é uma grande oportunidade para nós. A gerência adorou nossa demonstração de contêiner do Docker e quer que exploremos a adoção de uma arquitetura de microsserviços.

Amita: Microsserviços? Gosta de aplicativos para celulares e relógios?

Andy: Não, os microsserviços são aplicativos típicos, como nosso aplicativo web. A principal diferença é que, em vez de criar e implantar um único aplicativo monolítico, refatoramos quaisquer componentes que seriam melhor mantidos e gerenciados como serviços autônomos. Em seguida, construímos esses serviços para serem bons no que fazem e os implantamos para operar de forma independente.

Tim: Não sei se gosto do som disso. Já estou lidando com tantos serviços em nossos ambientes. Não sei se quero mais no meu prato.

Andy: Essa é uma preocupação compreensível. Felizmente, existem algumas ótimas ferramentas para gerenciar uma infinidade de contêineres em um determinado ambiente. Foi-nos pedido que criássemos uma solução de vários contentores para a nossa aplicação Web que é orquestrada utilizando o Kubernetes. Eles também querem saber como isso afetará nosso processo de DevOps.

Mara: Tenho lido sobre o Kubernetes. O Azure tem um ótimo suporte para ele por meio do Serviço Kubernetes do Azure, e sei que há suporte de pipeline para ele no Azure DevOps.

Amita: Este processo parece que vai ficar complexo. Como isso afetará os testes?

Mara: Não deve ser uma mudança significativa. Kubernetes oferece uma forma de fazer a implementação em diferentes namespaces. Isso nos permite particionar nossas implantações para que possamos ter ambientes inteiros dedicados a testes versus produção. E como todos eles são executados no mesmo cluster e usam os mesmos contêineres, a experiência de teste deve oferecer o que esperamos ver na produção.

Amita: Vai ser difícil acompanhar onde está cada ambiente?

Mara: Não, podemos usar ambientes de DevOps do Azure para fazer tudo isso. Você poderá descobrir onde cada serviço está e como ele chegou lá usando o portal. É tudo automatizado através do pipeline, então não haverá nada que tenhamos que acompanhar manualmente. A única preocupação que tenho agora é o impacto que terá na nossa experiência de desenvolvimento para construir isso.

Andy: A boa notícia é que o impacto é mínimo. Supondo que tenhamos nossos projetos configurados para construir contêineres do Docker, tudo o que precisamos implantar no Kubernetes são alguns arquivos de manifesto que descrevem os serviços e suas implantações.

Mara: Já pensou no que vamos refatorar como segundo recipiente? Sei que houve várias equipas a pedir-nos para disponibilizar a nossa tabela de classificação através de uma API web.

Andy: Estou um passo à frente de você. Fiz um fork do projeto Docker ontem à noite e refatorei a funcionalidade dos dados da tabela de classificação em um microsserviço. Isso nos deixa com um contêiner para o site e outro para uma API de tabela de classificação. Ambos os contentores são configurados para ter os seus próprios pontos de extremidade públicos que podemos partilhar com qualquer pessoa que queira usar o site ou a API, independentemente da pilha de tecnologia que a aplicação utilize. Se a carga crescer substancialmente para qualquer um deles, podemos escalar seus contêineres de forma independente.

Mara: Este projeto soa incrível! Vamos começar a atualizar o pipeline de lançamento.

O que é o Kubernetes?

O Kubernetes é uma plataforma de orquestração de contêineres de código aberto que automatiza a implantação, o dimensionamento e o gerenciamento de aplicativos em contêineres. Ele fornece uma estrutura para executar sistemas distribuídos de forma declarativa e responsiva e pode executar contêineres em vários hosts, fornecendo uso eficiente de recursos e maior confiabilidade.

A equipe do Tailspin selecionou o Kubernetes para este cenário porque ele atendia a todas as suas necessidades:

  • Complexidade das implantações de vários contêineres: o Kubernetes foi projetado, em primeiro lugar, para automatizar os processos de implantação e manutenção de implantações de contêiner.

  • Consistência entre ambientes e estágios: assim como os contêineres garantem uma implantação consistente para os aplicativos que contêm, o Kubernetes garante uma implantação consistente para os contêineres gerenciados por um cluster.

  • Suporte do Azure DevOps: o Azure DevOps oferece suporte de primeira classe para trabalhar com o Kubernetes.

  • Facilidade de desenvolvimento: o impacto do Kubernetes em um projeto de origem é comparável ao da adição do suporte ao Docker, que é mínimo e limitado à configuração declarativa.

A adoção do Kubernetes simplifica drasticamente o processo de adoção de uma arquitetura de microsserviços que faz uso de vários contêineres do Docker.

Verifique os seus conhecimentos

1.

Qual das seguintes opções não é uma boa razão para usar microsserviços?

2.

Como o Docker e o Kubernetes são semelhantes?

3.

Suponha que sua equipe tenha vários projetos .NET Core em uma solução que produz vários contêineres do Docker. Quanta sobrecarga requer a adição de suporte ao Kubernetes?