Arquitetura de Microsserviços

Por
Atualizado em
Publicado em
4 min. de leitura

Olá, querida(o) estudante! Neste artigo, vamos estudar sobre microsserviços, um estilo arquitetural amplamente utilizado no desenvolvimento de sistemas modernos e cada vez mais presente nos editais de concursos de TI. Essa arquitetura organiza aplicações em pequenos serviços independentes, que juntos constroem soluções mais escaláveis, flexíveis e resilientes.

Compreender o funcionamento dos microsserviços é fundamental não apenas para quem atua no mercado de tecnologia, mas também para quem se prepara para concursos, já que o tema aparece em questões que exploram suas características, vantagens e desafios.

O que são Microsserviços?

De forma resumida, microsserviços são um estilo arquitetural em que uma aplicação é dividida em vários pequenos serviços independentes. Cada microsserviço é responsável por uma funcionalidade específica e se comunica com os outros por meio de protocolos padronizados (como HTTP/REST ou mensagens assíncronas).

Enquanto em uma aplicação monolítica todo o código fica centralizado em um único bloco, em microsserviços temos módulos independentes que juntos formam o sistema completo.

Como Surgiram?

O conceito de microsserviços ganhou força a partir da necessidade de empresas de tecnologia, como Netflix, Amazon e Uber, de lidar com sistemas gigantescos que precisavam ser escalados, atualizados e mantidos de forma rápida e segura.

Essa abordagem substituiu, em muitos casos, o modelo monolítico tradicional, que dificultava alterações e evoluções.

Características Principais

  • Independência: cada microsserviço pode ser desenvolvido, implantado e escalado separadamente, sem necessidade de atualizar ou reiniciar todo o sistema. Isso permite, por exemplo, corrigir o módulo de autenticação sem interromper o restante da aplicação.
  • Especialização: cada microsserviço é responsável por uma função específica, como autenticação, pagamento ou envio de notificações. Essa divisão de responsabilidades facilita a organização e a manutenção.
  • Comunicação por APIs: os microsserviços interagem entre si por meio de interfaces bem definidas, geralmente utilizando REST, gRPC ou mensageria. Isso garante que serviços escritos em linguagens diferentes consigam se comunicar.
  • Escalabilidade: em vez de escalar todo o sistema, é possível aumentar apenas os serviços mais demandados. Por exemplo, o módulo de checkout de um e-commerce pode ser replicado sem impactar os demais.
  • Flexibilidade tecnológica: diferentes microsserviços podem ser construídos em linguagens distintas ou usar bancos de dados diversos, desde que respeitem os protocolos de comunicação. Isso dá liberdade às equipes de desenvolvimento.

Vantagens

  • Facilidade de manutenção: como cada módulo é pequeno e independente, as equipes conseguem compreender, corrigir e evoluir cada parte do sistema de forma mais simples.
  • Escalabilidade eficiente: apenas os microsserviços críticos são expandidos, evitando desperdício de recursos e aumentando a performance do sistema.
  • Resiliência: se um microsserviço falhar, os demais continuam funcionando normalmente. Isso evita que falhas isoladas derrubem toda a aplicação.
  • Agilidade: diferentes equipes podem trabalhar em paralelo em serviços distintos, acelerando a entrega de novas funcionalidades.

Desafios

  • Complexidade de integração: orquestrar e monitorar vários serviços exige ferramentas robustas, como Docker e Kubernetes, além de boas práticas de automação.
  • Comunicação entre serviços: como dependem de rede para funcionar, falhas de conexão ou latência podem comprometer a experiência do usuário.
  • Segurança: cada microsserviço expõe uma interface, aumentando a quantidade de pontos que precisam ser protegidos contra ataques.
  • Gerenciamento: manter dezenas ou centenas de microsserviços exige cultura de DevOps e processos de monitoramento contínuo.

Microsserviços x Monólitos

  • Monólito: sistema único, em que todas as funcionalidades ficam em um bloco só. É simples para começar, mas difícil de escalar e manter quando cresce.
  • Microsserviços: sistema dividido em módulos independentes, que podem ser gerenciados separadamente. É mais flexível e escalável, mas também mais complexo de administrar.

Ferramentas e Tecnologias Associadas

  • Contêineres: Docker e Podman permitem empacotar e executar cada microsserviço de forma isolada.
  • Orquestração: Kubernetes e Rancher automatizam o gerenciamento, a distribuição e a escalabilidade dos microsserviços.
  • Comunicação: REST, gRPC e mensageria (RabbitMQ, Kafka) são usados para garantir a troca de informações entre os serviços.
  • Monitoramento: Prometheus e Grafana ajudam a acompanhar desempenho, métricas e falhas dos microsserviços.

Aplicações Reais

  • Netflix: utiliza microsserviços para gerenciar recomendações, streaming, catálogo e autenticação de usuários de forma independente.
  • Amazon: divide sua plataforma em microsserviços, como carrinho de compras, pagamento e logística, garantindo escalabilidade e confiabilidade.
  • Uber: separa funcionalidades como gerenciamento de corridas, mapas, pagamentos e notificações, possibilitando maior agilidade e resiliência.

Vamos ver como isso é cobrado nos concursos!

1) Ano: 2024 – Banca: CESPE / CEBRASPE – Órgão: CNJ
Prova: CESPE / CEBRASPE – 2024 – CNJ – Técnico Judiciário – Apoio Especializado – Programação de Sistemas

A respeito de arquitetura distribuída de microsserviços, julgue o item a seguir.

O desenvolvimento em microsserviços é a evolução de uma aplicação monolítica, em que cada microsserviço executa uma função ou um recurso.

Gabarito: Certo

Comentário: Essa afirmativa está correta. De fato, a arquitetura de microsserviços pode ser vista como uma evolução do modelo monolítico, pois divide o sistema em unidades menores e independentes, cada uma responsável por uma funcionalidade ou recurso.

2) Ano: 2024 – Banca: FGV – Órgão: DNIT
Prova: FGV – 2024 – DNIT – Analista Administrativo – Tecnologia da Informação

Acerca de microsserviços, avalie se as afirmativas a seguir são verdadeiras (V) ou falsas (F).

( ) A camada de orquestração é responsável por monitorar o desempenho dos microsserviços, identificar gargalos e gerenciar a execução dos microsserviços.

( ) O particionamento inteligente pode ser usado para categorizar microsserviços com base em seu uso e dependência de outros microsserviços, garantindo uma alocação eficiente de recursos.

( ) A orquestração de microsserviços se concentra principalmente no gerenciamento da implantação e execução de aplicativos monolíticos, em vez de microsserviços.

As afirmativas são, respectivamente:
a) V – V – F
b) V – F – F
c) F – V – F
d) F – F – V
e) V – V – V

Gabarito: Letra A

Comentário:

  • A primeira afirmativa está correta, pois a camada de orquestração realmente tem como função gerenciar a execução dos microsserviços, monitorar seu desempenho e identificar possíveis gargalos no sistema.
  • A segunda também está correta: o particionamento inteligente é uma prática que permite organizar os microsserviços de acordo com seu uso e dependências, favorecendo uma alocação mais eficiente dos recursos e evitando desperdícios.
  • Já a terceira está incorreta, porque a orquestração não se aplica a aplicativos monolíticos. Pelo contrário, ela foi criada justamente para lidar com ambientes distribuídos de microsserviços, garantindo sua implantação, coordenação e funcionamento adequado.

Conclusão

A arquitetura de microsserviços revolucionou a forma como sistemas modernos são desenvolvidos, permitindo maior agilidade, escalabilidade e resiliência. No entanto, também trouxe desafios de orquestração, segurança e monitoramento que exigem práticas robustas de engenharia de software.

Portanto, ao estudar o tema para concursos, é essencial compreender não apenas os conceitos básicos e vantagens, mas também os desafios práticos. Afinal, as bancas gostam de cobrar justamente esses detalhes.

Referências

  • Newman, S. (2015). Building Microservices: Designing Fine-Grained Systems. O’Reilly Media.
  • Richardson, C. (2018). Microservices Patterns: With examples in Java. Manning Publications.
  • Fowler, M.; Lewis, J. (2014). Microservices – a definition of this new architectural term. MartinFowler.com.
  • Dragoni, N., Giallorenzo, S., Lafuente, A. L., Mazzara, M., Montesi, F., Mustafin, R., & Safina, L. (2021). Microservices: Yesterday, Today, and Tomorrow. Springer.
  • Kasunic, M. (2020). Microservices: Best Practices and Design Strategies. Packt Publishing.

Por
Atualizado em
Publicado em
4 min. de leitura