Por que a orquestração de contêineres é importante?
- 7 minutos
Nesta unidade, você pode seguir 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 melhorando na Tailspin. Em um recente encontro de gestão fora do escritório, 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 do Docker. Essas manifestaçõ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 web do Space Game.
Andy: As coisas foram muito bem na minha apresentação fora do local ontem. O gerenciamento está impressionado com o trabalho que fizemos até agora e nos emitiu uma atribuição especial.
Tim: Ih. Estou aqui há 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. O gerenciamento 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 telefones e relógios?
Andy: Não, 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 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 fazem e implantá-los para operar de forma independente.
Pedro: Não tenho certeza 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, há algumas ótimas ferramentas para gerenciar uma infinidade de contêineres em um determinado ambiente. Fomos solicitados a explorar uma solução de vários contêineres para nosso aplicativo web, orquestrada usando Kubernetes. Eles também querem saber como isso afetará nosso processo de DevOps.
Mara: Tenho lido sobre Kubernetes. O Azure tem um ótimo suporte por meio do Serviço de Kubernetes do Azure e sei que há suporte de pipeline para ele no Azure DevOps.
Amita: Esse processo parece que vai ficar complexo. Como isso afetará o teste?
Clara: Não deve ser uma mudança significativa. O Kubernetes oferece uma maneira de implantarmos 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 em produção.
Marina: Será difícil acompanhar onde está cada ambiente?
Clara: Não, podemos usar 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, então não haverá nada que tenhamos que controlar manualmente. A única preocupação que tenho agora é quanto impacto terá em nossa experiência de desenvolvimento para construir isso.
Andy: A boa notícia é que o impacto é mínimo. Supondo que temos nossos projetos configurados para criar 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: Você já pensou no que vamos refatorar como o segundo contêiner? Sei que várias equipes nos pediram para disponibilizar nosso placar de líderes por meio de uma API Web.
Estou um passo à frente de você. Fiz um fork do projeto Docker ontem à noite e refatorei a funcionalidade dos dados de ranking em seu próprio microsserviço. Isso nos deixa com um contêiner para o site e outro para uma API de classificação. Ambos os contêineres são configurados para ter endpoints públicos próprios que podemos compartilhar com qualquer pessoa que queira usar o site ou a API, independentemente de qual pilha de tecnologia seu aplicativo utilize. Se a carga aumentar substancialmente para qualquer um deles, poderemos dimensionar seus contêineres de forma independente.
Clara: Este projeto parece 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êiner de software livre 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 da Tailspin selecionou o Kubernetes para esse cenário porque ele atendeu a todas as suas necessidades:
Complexidade de implantações de vários contêineres: o Kubernetes foi projetado, em primeiro lugar, para automatizar os processos em torno da 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 que um cluster gerencia.
Suporte ao 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.