Microsserviços: implantando com contêineres

No artigo “Implantação de Microsserviços”, falamos sobre o processo de implantação de aplicações baseadas em microsserviços e, no artigo “Microsserviços: Patterns de Implantação”, apresentamos alguns patterns de implantação dos microsserviços no que diz respeito aos recursos utilizados (instâncias e hosts) e à frequência da implantação.

Neste post vamos falar especificamente da implantação de aplicações de microsserviços utilizando Contêineres. Para tanto, primeiramente, vamos entender o que é um contêiner.

“Os containers proporcionam uma maneira padrão de empacotar código, configurações e dependências de seu aplicativo em um único objeto. Eles compartilham um sistema operacional instalado no servidor e são executados como processos independentes, com recursos isolados. Isso permite fazer implantações rápidas, confiáveis e consistentes, independentemente do ambiente.”

Descrição AWS

De certa forma, os contêineres se comportam como máquinas virtuais, que não tem a necessidade de replicar um sistema operacional inteiro, apenas os componentes individuais de que precisam para operar, proporcionando assim, um aumento significativo no desempenho e na redução do uso de recursos. Um único servidor pode executar vários contêineres simultaneamente.

Nessa abordagem de implantação cada microsserviço executa em seu próprio contêiner (por exemplo, o Docker, que é o software de contêiner mais popular do mercado) e, se necessário, é possível limitar os recursos de memória e CPU do contêiner. Então, o processo de empacotamento implica, de forma geral, em empacotar cada microsserviço como uma imagem de contêiner. Em tempo de execução, o microsserviço consistirá em um ou mais contêineres instanciados a partir dessa imagem.

Existem gerenciadores de aplicações baseadas em contêineres (como Kubernetes), que controlam clusters de servidores e são capazes de administrar essas múltiplas instâncias de contêineres, decidindo onde executar cada contêiner de acordo com os recursos de que ele necessita, a partir dos recursos disponibilizados por cada servidor do cluster.

Benefícios e Desvantagens

A implantação de microsserviços como contêineres apresenta vários benefícios como:

  • Independência entre as aplicações e a infraestrutura;
  • Os recursos de cada instância podem ser restringidos de acordo com a necessidade;
  • O contêiner é uma tecnologia leve, rápida de ser construída e de ser inicializada;
  • Isola as instâncias dos microsserviços;
  • Encapsula os detalhes tecnológicos de implementação de cada microsserviço;
  • A API exposta pelo contêiner pode ser a própria API do microsserviço.

Em contrapartida, podemos citar as seguintes desvantagens da implantação com contêineres:

  • Não é uma tecnologia tão madura, embora isso esteja mudando rapidamente;
  • Pode não ser tão segura, pois compartilha o sistema operacional de cada servidor entre todos os contêineres que rodam nele;
  • Na prática, exige o uso de um orquestrador de contêineres, como o Kubernetes (ou versões proprietárias dos provedores de nuvem, como o Google Container Engine ou o Amazon Elastic Container Service);

Considerações Finais

Nesse post apresentamos como empacotar uma aplicação em uma imagem de contêiner, e como executar múltiplas instâncias dessa aplicação. Embora seja um processo bem simples de seguir, algumas considerações precisam ser levadas em conta, como o fato de uma ferramenta como o Docker ser capaz de fornecer mecanismos básicos de gerenciamento, mas não possuir nenhum suporte para o caso de, por exemplo, um servidor parar de funcionar.

Além disso, sabemos que, embora os microsserviços sejam autônomos, eles não existem de forma isolada e precisam interagir com outros microsserviços e recursos. Desta forma, é importante que a implantação desses microsserviços seja realizada de forma confiável, juntamente com suas dependências, e que essa implantação seja tratada como uma unidade. Para isso, é fundamental a utilização de um framework de orquestração de contêineres, como por exemplo o Kubernetes, que é capaz de transformar um conjunto de servidores em um pool de recursos.

modernização de aplicações

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Newsletter

Insights de tecnologia para você!

Não compartilharemos seu e-mail com terceiros e também prometemos não enviar spams. Ao informar seu e-mail, você concorda com nossa Política de Privacidade.

Conteúdos relacionados

Veja nesse artigo como reskilling e upskilling são fundamentais na área de TI para nos adaptarmos a era da Inteligênc...
Veja nesse artigo quando usar microsserviços, como se preparar para obter os benefícios dessa arquitetura no seu sist...
Confira nesse artigo como uma cultura data driven pode ser potencializada pela IA e aplicação de Inteligência de Merc...