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

NGINX | 30 de março de 2023

Assim como na jardinagem, o desenvolvimento de software exige compreender como diferentes elementos trabalham em conjunto para criar um ecossistema bonito e produtivo. Foi isso que nos levou a escolher a jardinagem como tema do programa Microservices March deste ano. Como acontece em qualquer jardim, uma erva daninha problemática insiste em surgir na conversa: qual é a diferença entre microsserviços e Kubernetes?

Banner com o título desta seção — Microsserviços: as plantas do seu jardim

As plantas são os principais elementos do ecossistema de um jardim. Elas 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 componentes de aplicações de software modernas. Eles são os serviços individuais que desempenham funções específicas e trabalham em conjunto para criar uma aplicação maior e mais complexa.

Assim como as plantas, os microsserviços variam em tamanho, formato e finalidade. Alguns são pequenos e especializados, responsáveis por uma única operação. Outros são maiores e mais abrangentes em suas operações ou formados por um conjunto de componentes menores. Por exemplo, um pé de morango é pequeno e produz apenas morangos. Isso se assemelha a um microsserviço que processa somente transações com cartão de crédito (pequeno e especializado). Já uma planta mais versátil, como o coentro, produz não apenas as folhas usadas em salsa e guacamole, mas também as sementes de coentro. Esse tipo de planta se assemelha a um serviço que gerencia a autenticação de usuários (um processo maior e mais abrangente).

Banner com o título desta seção — Contêineres: os vasos para seus microsserviços

A maioria das plantas precisa ser plantada no solo para absorver nutrientes e umidade — se forem deixadas com as raízes expostas, morrerão. Embora seja perfeitamente aceitável plantá-las diretamente no chão, muitos jardineiros optam pelo cultivo em vasos, pois isso permite personalizar o solo, proteger melhor as plantas contra pragas e movê-las pelo jardim (ou até mesmo levá-las para dentro de casa durante o inverno). Da mesma forma, há várias opções de onde colocar os microsserviços, sendo a mais comum, apropriadamente, um “contêiner”. Um microsserviço conteinerizado inclui tudo o que é necessário para executar a aplicação e pode ser facilmente transferido entre ambientes de execução.

Banner com o título desta seção — Kubernetes: as ferramentas de jardinagem

Então, temos nossos microsserviços (plantas) em nossos contêineres (vasos), mas como fazemos para implantá-los, mantê-los e escalá-los? Com ferramentas! É aí que entra o Kubernetes. O Kubernetes oferece muitos recursos e complementos que facilitam o gerenciamento e a manutenção de microsserviços, sendo considerado a ferramenta padrão de fato para a orquestração de contêineres. Por exemplo, o Kubernetes oferece balanceamento de carga automatizado, descoberta de serviços e recursos de autorrecuperação (para aliviar parte do trabalho de manutenção e monitoramento dos seus desenvolvedores). E quando todos quiserem que seus microsserviços (plantas) produzam mais? O Kubernetes oferece escalabilidade automática e atualizações graduais para manter seus aplicativos de microsserviços funcionando sem problemas.

Observação: alternativas ao Kubernetes, como Docker Swarm e HashiCorp Nomad, oferecem praticamente as mesmas funcionalidades.

Banner com o título desta seção — Microsserviços sem Kubernetes: a opção “Jardim Selvagem”

Já demonstramos as vantagens de usar o Kubernetes para gerenciar microsserviços e evitar que as aplicações cresçam de forma desordenada e fora de controle. No entanto, o Kubernetes e os contêineres nem sempre são necessários. Dependendo da complexidade da sua aplicação, você pode optar por uma plataforma tradicional de máquinas virtuais (ou até mesmo físicas), que ainda pode ser implantada ou provisionada com ferramentas de automação. Essas ferramentas não oferecem o mesmo nível de automação e escalabilidade do Kubernetes, mas essa pode ser uma troca aceitável para aplicações menos complexas ou não críticas. Outra opção é usar plataformas de computação sem servidor (como o AWS Lambda), que permitem executar o código dos seus microsserviços em resposta a eventos sem precisar 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 consorciado – por exemplo, cravos-de-defunto ao lado de tomates – otimiza o uso dos recursos e contribui para uma horta mais saudável. Da mesma forma, o Kubernetes oferece uma ampla variedade de recursos e complementos que o tornam adequado para muito mais do que o gerenciamento de microsserviços. Por exemplo, o Kubernetes pode ser usado para aplicações que não são baseadas em microsserviços, como modelos de aprendizado de máquina ou monólitos. Vemos muitos clientes usando o Kubernetes para gerenciar microsserviços e outras aplicações, e alguns chegam até mesmo a implantar máquinas virtuais (VMs) dentro do Kubernetes! Essa pode ser uma ótima opção para organizações que estão migrando aplicações monolíticas legadas para uma arquitetura orientada a microsserviços.

Indo à raiz da questão

Esperamos que você tire duas conclusões deste post (além de ficar com vontade de visitar o viveiro de plantas mais próximo):

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

Confira os recursos a seguir para saber mais sobre os fundamentos dos microsserviços:


Compartilhar

Sobre o autor

Jenn Gile
Jenn GileDiretor de Marketing de Produto, NGINX

Mais publicações de Jenn Gile

Publicações relacionadas no blog

Como o F5 NGINX One aprimora o gerenciamento e a observabilidade
NGINX | 10/10/2024

Como o F5 NGINX One aprimora o gerenciamento e a observabilidade

Descubra como o F5 NGINX One aprimora o gerenciamento e a observabilidade de ambientes híbridos e multicloud ao oferecer um console web centralizado baseado em SaaS, com insights em tempo real, conformidade automatizada e gerenciamento simplificado de configurações.

Do OpenAPI ao NGINX como gateway de API usando uma API declarativa
NGINX | 17/06/2024

Do OpenAPI ao NGINX como gateway de API usando uma API declarativa

Descubra como transformar uma definição de esquema OpenAPI em uma configuração NGINX totalmente funcional, operando como um API Gateway com a segurança de um Web Application Firewall e um Portal do Desenvolvedor, usando uma abordagem declarativa de API.

Como gerenciar picos repentinos de tráfego e sobrecarga do servidor
NGINX | 14/07/2021

Como gerenciar picos repentinos de tráfego e sobrecarga do servidor

Picos de tráfego e sobrecarga de servidores são preocupações sérias para varejistas online em qualquer época, mas especialmente durante a “Cyber Season” de compras de fim de ano. Detalhamos como você pode aproveitar as soluções de entrega de aplicações de nível de produção da NGINX para se preparar para aumentos repentinos de tráfego.

Distribuição segura de chaves privadas SSL com o NGINX
NGINX | 02/04/2019

Distribuição segura de chaves privadas SSL com o NGINX

Descrevemos três maneiras progressivamente mais seguras de proteger chaves privadas SSL ao configurar o NGINX para processar tráfego HTTPS: permitir acesso de leitura apenas ao usuário root, criptografar as chaves com senhas armazenadas separadamente e distribuir as senhas a partir de um repositório central.

Agrupando solicitações de API em lotes com NGINX Plus e o módulo JavaScript do NGINX
NGINX | 24/05/2018

Agrupando solicitações de API em lotes com NGINX Plus e o módulo JavaScript do NGINX

O módulo JavaScript do NGINX lançado com o NGINX Plus R15 oferece suporte a subsolicitações, possibilitando uma classe totalmente nova de casos de uso para o NGINX Plus. Este exemplo completo também usa a API do NGINX Plus e os módulos de chave-valor para converter solicitações de API dos clientes em solicitações separadas para as APIs dos microsserviços que compõem um aplicativo.

Como superar o esgotamento de portas efêmeras no NGINX e no NGINX Plus
NGINX | 19/04/2016

Como superar o esgotamento de portas efêmeras no NGINX e no NGINX Plus

Confira dicas para evitar o esgotamento de portas efêmeras com ajustes no kernel do Linux, conexões keepalive e conexões vinculadas dinamicamente a endereços IP locais.