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

Concluído

Nesta unidade, você pode seguir a equipe da Tailspin enquanto ela explora estratégias para entregar uma nova diretiva do gerenciamento. A equipe examina como o Kubernetes pode ajudar na transição para uma arquitetura de microsserviços.

O futuro é menor

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

Andy: Tudo foi muito bem na minha apresentação externa ontem. O gerenciamento está feliz com o trabalho que fizemos até agora e nos enviou uma atribuição especial.

Tim: Ah, não. Estou na empresa há tempo suficiente para ver uma pegadinha como essa a quilômetros de distância.

Andy: Não, essa é uma ótima oportunidade para nós. O gerenciamento gostou de nossa demonstração de contêiner do Docker e quer que exploremos a adoção da arquitetura de microsserviços.

Amita: Microsserviços? Como aplicativos para telefones 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, nós refatoramos todos os componentes que seriam melhor mantidos e gerenciados como serviços autônomos. Em seguida, criamos esses serviços para serem bons no que eles fazem e os implantamos para operar de forma independente.

Tim: Não tenho certeza se gosto disso. Já estou lidando com muitos serviços em nossos ambientes. Não sei se quero mais trabalho nas minhas costas.

Andy: Entendo a sua preocupação. Felizmente, há algumas ótimas ferramentas para gerenciar uma variedade de contêineres em um determinado ambiente. Pediram para apontarmos uma solução de vários contêineres para o aplicativo Web que seja orquestrada usando o Kubernetes. Eles também querem saber como isso afetará nosso processo DevOps.

Mara: Tenho lido sobre o Kubernetes. O Azure dá um excelente suporte para isso por meio do Serviço de Kubernetes do Azure e sei que há suporte de pipeline também no Azure DevOps.

Amita: Parece que esse será um processo complexo. Como isso afetará o teste?

Mara: Não deve ser uma mudança significativa. O Kubernetes oferece uma maneira de implantar em namespaces diferentes. Isso nos permite particionar nossas implantações para que possamos ter ambientes inteiros dedicados a testes versus os de 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: Será difícil manter o controle de onde está cada ambiente?

Mara: Não, podemos usar os ambientes do Azure DevOps para fazer tudo isso. Você poderá descobrir onde cada serviço está e como ele chegou lá usando o portal. É tudo automatizado por meio do pipeline, portanto, não precisaremos controlar nada manualmente. A única preocupação que tenho agora é o tamanho do impacto na experiência de desenvolvimento para criar isso.

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

Mara: Você já pensou no que iremos refatorar como o segundo contêiner? Sei que várias equipes nos solicitam para disponibilizar nosso placar de líderes por meio de uma API Web.

Andy: Estou um passo à frente de você. Eu bifurquei o projeto do Docker na noite passada e refatorei a funcionalidade de dados do placar de líderes em seu próprio microsserviço. Ficamos com um contêiner para o site e outro para uma API de placar de líderes. Ambos os contêineres estão configurados para ter os próprios pontos de extremidade públicos que podem ser compartilhados com qualquer pessoa que queira usar o site ou a API, independentemente da pilha de tecnologia usada pelo aplicativo. Se a carga de qualquer um deles aumentar substancialmente, podemos dimensionar seus contêineres independentemente.

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

O que é Kubernetes?

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

A equipe da Tailspin selecionou os contêineres do Kubernetes para este cenário porque ele atendeu a todas as necessidades:

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

  • Consistência entre ambientes e fases: assim como os contêineres garantem uma implantação consistente para os aplicativos que eles contêm, o Kubernetes garante uma implantação consistente para os contêineres que um cluster gerencia.

  • 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 de suporte do 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 usa vários contêineres do Docker.

Verificar seu conhecimento

1.

Qual das opções a seguir não é um bom motivo para usar microsserviço?

2.

Qual a semelhança do Docker e do Kubernetes?

3.

Suponha que sua equipe tem vários projetos do .NET Core em uma solução que produz vários contêineres do Docker. O quanto de sobrecarga é necessário para adicionar suporte ao Kubernetes?