BLOG | NGINX

Microsserviços e Kubernetes: Um guia de jardinagem para ecossistemas de software

NGINX-Parte-de-F5-horiz-preto-tipo-RGB
Miniatura de Jenn Gile
Jenn Gile
Publicado em 30 de março de 2023

Assim como a jardinagem, o desenvolvimento de software exige uma compreensão de como diferentes elementos trabalham juntos para criar um ecossistema bonito e produtivo. Esse foi o catalisador para nossa escolha de um tema de jardinagem para o programa Microservices March deste ano. Como acontece em qualquer jardim, uma erva daninha problemática continua aparecendo na conversa: qual é a diferença entre microsserviços e Kubernetes?

As plantas são os principais elementos do ecossistema de um jardim. Eles são os organismos vivos que compõem seu jardim e contribuem para sua beleza e funcionalidade. Da mesma forma, os microsserviços são os principais blocos de construção dos aplicativos de software modernos . Eles são serviços individuais que executam funções específicas e trabalham juntos para criar um aplicativo maior e mais complexo.

Assim como as plantas, os microsserviços variam em tamanho, forma e finalidade. Alguns são pequenos e especializados, encarregados de uma única operação. Outros são maiores, mais generalizados em suas operações ou compostos por um conjunto de componentes menores. Por exemplo, uma planta de morango é pequena e só gera morangos. Isso é semelhante a um microsserviço que processa apenas transações de cartão de crédito (pequenas e especializadas). Uma planta mais generalizada como o coentro produz não apenas as folhas verdes usadas na salsa e no guacamole, mas também a semente de coentro. Esse tipo de planta é semelhante a um serviço que lida com autenticação de usuários (um processo maior e mais geral).

A maioria das plantas precisa ser plantada no solo para que possam extrair nutrientes e umidade – deixe-as com a raiz nua e elas morrerão. Embora seja perfeitamente aceitável colocá-las diretamente no solo, muitos jardineiros optam pela jardinagem em contêineres com vasos porque isso permite que eles personalizem o solo, se defendam melhor contra pragas e movam as plantas pelo jardim (ou até mesmo para dentro durante o inverno). Da mesma forma, você tem várias opções de onde colocar microsserviços, sendo a mais comum apropriadamente em um “contêiner”. Um microsserviço em contêiner inclui tudo o que você precisa para executar o aplicativo e é facilmente portátil entre ambientes de tempo de execução.

Então temos nossos microsserviços (plantas) em nossos contêineres (vasos), mas como implantá-los, mantê-los e dimensioná-los? Com ferramentas! Entra em cena o Kubernetes . O Kubernetes oferece muitos recursos e complementos que facilitam o gerenciamento e a manutenção de microsserviços, além de ser considerado a ferramenta de fato para orquestração de contêineres. Por exemplo, o Kubernetes fornece balanceamento de carga automatizado, descoberta de serviços e recursos de autocorreção (para tirar parte do trabalho de manutenção e monitoramento dos ombros dos seus desenvolvedores). E quando todos querem que seus microsserviços (plantas) produzam mais? O Kubernetes oferece suporte a dimensionamento automático e atualizações contínuas para manter seus aplicativos de microsserviços funcionando sem problemas.

Observação:  Alternativas ao Kubernetes, como Docker Swarm e HashiCorp Nomad , oferecem praticamente a mesma funcionalidade.

Estabelecemos o caso do uso do Kubernetes para gerenciar microsserviços e evitar que os aplicativos cresçam descontroladamente. Mas Kubernetes e contêineres nem sempre são necessários. Dependendo da complexidade do seu aplicativo, você pode optar por usar uma plataforma de máquina virtual (ou mesmo física) tradicional, que ainda pode ser implantada ou provisionada usando ferramentas de automação. Essas ferramentas não oferecem o mesmo nível de automação e escalabilidade que o Kubernetes, mas você pode aceitar essa troca por aplicativos menos complicados ou não críticos. Outra opção é usar plataformas de computação sem servidor (como o AWS Lambda ) que permitem que você execute seu código de microsserviços em resposta a eventos sem se preocupar com a infraestrutura subjacente.

Banner com o título desta seção -- Nem tudo no Kubernetes são microsserviços

Jardineiros experientes sabem que o plantio conjunto – por exemplo, calêndulas junto com tomates – faz melhor uso dos recursos e contribui para um jardim mais saudável. Da mesma forma, o Kubernetes oferece uma ampla gama de recursos e complementos que o tornam bom para mais do que gerenciamento de microsserviços. O Kubernetes pode ser usado para aplicativos que não sejam microsserviços (como modelos de aprendizado de máquina ou monólitos), por exemplo. Vemos muitos clientes usando o Kubernetes para gerenciar microsserviços e outros aplicativos, com alguns até mesmo implantando máquinas virtuais (VMs) dentro do Kubernetes! Esta pode ser uma ótima opção para organizações que estão migrando aplicativos monolíticos legados para uma arquitetura orientada a microsserviços.

Chegando à raiz do problema

Esperamos que você tire duas coisas deste post (além do desejo de visitar o viveiro local):

  • Nem tudo implantado no Kubernetes é um microsserviço. Os recursos e complementos fornecidos pelo Kubernetes o tornam uma ferramenta útil em diversos ecossistemas.
  • Os microsserviços nem sempre precisam ser gerenciados com o Kubernetes. Algumas aplicações prosperam com ferramentas alternativas e uma abordagem de “jardim selvagem”.

Confira os seguintes recursos para obter mais detalhes sobre os fundamentos dos microsserviços:


"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."