O que são microsserviços?

Marcio H
Tecnologia e afins
Published in
5 min readJul 2, 2019

Esse novo estilo de arquitetura ganhou força nos últimos anos, altamente impulsionado e disseminado por empresas como Netflix, Spotify, Uber, Amazon, PayPal, Nubank, Ifood e diversas novas startups.

Afinal, por quê microsserviços?

Antes de falarmos sobre microsserviços, vamos analisar a arquitetura que prevaleceu antes dos microsserviços - Arquitetura Monolítica.

De uma forma bem simples, podemos dizer que essa arquitetura é similar a um “grande contêiner”, onde todos os componentes de software da aplicação são empacotados e implantados juntos.

Essa abordagem tem algumas desvantagens: quanto maior for a aplicação, maior será a dificuldade para solucionar problemas e adicionar recursos novos rapidamente.

Abaixo as principais razões para a evolução da arquitetura de microsserviços:

Figura 1: Desafios da Arquitetura Monolítica

Desafios da Arquitetura Monolítica:

  • Inflexível: aplicações monolíticas não podem ser construídas em tecnologias diferentes, precisam seguir a tecnologia atual.
  • Não confiável: se uma feature da sua aplicação não funciona (ex application server), o sistema todo não funciona (ponto único de falha).
  • Não escalável: aplicações não podem ser escaladas facilmente, pois escalar um sistema monolítico significa ter várias instancias da sua aplicação monolítica executando, consumindo muito recurso e criando uma grande complexidade nas implantações.
  • Impossibilita o Continuous Development: várias alterações na sua aplicação não podem ser empacotadas e implantadas ao mesmo tempo.
  • Desenvolvimento lento: o desenvolvimento em aplicações monolíticas leva muito tempo para ser construído, uma vez que cada recurso deve ser construído um após o outro.
  • Não é adequado para aplicativos complexos: Recursos de aplicativos complexos têm dependências fortemente acopladas.

O que são microsserviços?

A Arquitetura de Microsserviços (Microservice Architecture) é um estilo de arquitetura que estrutura uma aplicação como uma coleção de pequenos serviços autônomos, modelados em torno de um domínio de negócios.

Figura 2: Representação dos microsserviços

Esse estilo de arquitetura busca segmentar os serviços e/ou componentes de negócio, antigamente implementado em uma única aplicação (monolítica) em vários componentes isolados, onde cada serviço é auto-contido, atende a um único domínio de negócio e em casos mais rigorosos contemplando de forma isolada até os repositórios de dados associados a função de negócio.

Diferenças entre Arquitetura Tradicional e Microsserviços

O que diferencia a arquitetura de microsserviços das abordagens monolíticas tradicionais é como ela decompõe a aplicação por funções básicas. Cada função é denominada a um serviço e pode ser criada e implantada de maneira independente. Isso significa que cada serviço individual pode funcionar ou falhar sem comprometer os demais.

Considere um site de comércio eletrônico como um caso de uso para entender as principais diferenças entre as duas arquiteturas:

Figura 3: Diferenças entre Arquitetura Monolítica e Microsserviços

A principal diferença que observamos no diagrama acima é que todos os recursos inicialmente estavam em uma única instância e compartilhavam um único banco de dados. No cenário com microsserviços, cada recurso recebe um microsserviço diferente, que manipula seus próprios dados e executa diferentes funcionalidades.

Figura 6: Arquitetura de Microsserviços

Características dos Microsserviços

Figura 5: Características dos Microsserviços
  • Dissociação: Os microsserviços são amplamente desacoplados dentro de um sistema. Assim, a aplicação como um todo pode ser facilmente construída, alterada e dimensionada.
  • Componentização: Os microsserviços são tratados como componentes independentes que podem ser facilmente substituídos e atualizados.
  • Capacidades de Negócios: Os microsserviços são muito simples e se concentram em um único recurso/função.
  • Autonomia: Desenvolvedores e equipes podem trabalhar independentemente uns dos outros, aumentando a velocidade.
  • Entrega Contínua: Permite lançamentos frequentes de software, através da automação do processo de criação, teste e aprovação de software.
  • Responsabilidade: Os microsserviços não se concentram em aplicações como projetos. Em vez disso, eles tratam aplicações como produtos pelos quais são responsáveis.
  • Governança Descentralizada: O foco está em usar a ferramenta certa para o trabalho certo. Isso significa que não há padrão padronizado ou qualquer padrão tecnológico. Os desenvolvedores têm a liberdade de escolher as melhores ferramentas úteis para resolver seus problemas.
  • Agilidade: Os microsserviços suportam o desenvolvimento ágil. Qualquer novo recurso pode ser rapidamente desenvolvido e descartado novamente.

Benefícios da Arquitetura de Microsserviços

Figura 7: Vantagens dos Microsserviços
  • Desenvolvimento Independente: Todos os microsserviços podem ser facilmente desenvolvidos com base em suas funcionalidades individuais.
  • Implantação Independente: Com base em seus serviços, eles podem ser implantados individualmente em qualquer ambiente.
  • Isolamento de Falhas: Mesmo que um serviço da aplicação não funcione, o sistema continua funcionando.
  • Pilha de tecnologia mista: Diferentes linguagens e tecnologias podem ser usadas para criar diferentes serviços da mesma aplicação.
  • Granular Escala: Componentes individuais podem escalar conforme a necessidade, não há necessidade de escalar todos os componentes juntos.

As vantagens deste novo estilo de arquitetura são muitas, através da segmentação dos serviços de negócio é possível pensar na sua arquitetura, baseando-se em tecnologias de desenvolvimento, banco de dados e capacidade de processamento que melhor se adeque aquela função específica.

Cada serviço tem suas regras de escalabilidade, disponibilidade e segurança de forma isolada e a evolução funcional e técnica desse microsserviço pode seguir de forma independente, com o mínimo de impacto sobre as demais funções que ele se integra.

Esse novo estilo de arquitetura não traz somente uma mudança na arquitetura técnica, ele também demanda uma mudança organizacional e cultural para efetivamente se ganhar escala. A adoção de metodologia ágil, organização de times pequenos em “squads” responsáveis por um ou poucos microsserviços, a adoção de DevOps para garantir o máximo de automação e agilidade no desenvolvimento e a operação da aplicação são fundamentais para garantir que este estilo de arquitetura seja escalável.

O fato é que este novo estilo de arquitetura juntamente com as plataformas Cloud e DevOps vieram para ficar.

Para quem quiser explorar mais sobre o assunto:

https://martinfowler.com/articles/microservices.html

--

--