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.

 

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 sobre inteligência artificial para negócios como adorar a IA de forma eficácia com o seu time.
Confira nesse artigo como é possível alcançar a Hiperprodutividade no desenvolvimento de software com o uso da IA.
Veja nesse artigo de Edison Kalaf, sócio diretor da Opus Software, como a TI não é apenas operacional, mas um agente ...