Programação Concorrente e Distribuída

Microsserviços

Aula 09 — Da arquitetura monolítica aos microsserviços
Prof. Newton S. B. Miyoshi
newton.miyoshi@baraodemaua.br
Centro Universitário Barão de Mauá — Ribeirão Preto
Parte 1

De Serviço Web a Microsserviços

Um único serviço web pode virar muitos serviços pequenos.

Meme "X, X everywhere" com o texto Microservices, Microservices Everywhere

Microsserviços — visão geral

Clientes acessam um API Gateway, que roteia para vários microsserviços, cada um com seu próprio banco de dados
Os clientes falam com um API Gateway, que roteia cada requisição para o microsserviço certo — cada um com seu próprio banco de dados.

Microsserviços

Monolito com um único banco de dados compartilhado à esquerda; microsserviços com um banco de dados por aplicação à direita
No monolito, um único banco serve toda a aplicação; em microsserviços, cada serviço tem seu próprio banco.

Microsserviços

Monolito escala replicando o processo inteiro em vários servidores; microsserviços escalam distribuindo e replicando só os serviços necessários
O monolito escala replicando o processo inteiro; microsserviços escalam distribuindo e replicando só o que precisa.

Microsserviços — Deploy independentes

Monolito com vários módulos no mesmo processo à esquerda; microsserviços com módulos em processos diferentes à direita
Módulos em processos diferentes podem ser implantados (deploy) de forma independente, sem afetar os demais.
Foto de Mel Conway

Lei de Conway

“As estruturas dos sistemas de software são espelhos — ou seja, refletem as estruturas das organizações que os desenvolvem.”

Times isolados por especialidade (UI, middleware, DBAs) levam a uma arquitetura de aplicação em camadas isoladas
Times isolados por especialidade (UI, middleware, DBAs) levam a uma arquitetura em camadas isoladas — por causa da Lei de Conway.
Times multifuncionais organizados por capacidade de negócio levam a serviços organizados da mesma forma
Times multifuncionais organizados por capacidade de negócio levam a serviços organizados da mesma forma — de novo, a Lei de Conway.
Parte 2

Vantagens × Desvantagens

Microsserviços não são de graça.

Vantagens

  • Escalabilidade: cada serviço pode ser escalado de forma independente, com uso mais eficiente dos recursos.
  • Desenvolvimento ágil: equipes trabalham em serviços separados, acelerando desenvolvimento e entrega contínua.
  • Tecnologias diversificadas: serviços são independentes entre si.
  • Resiliência: a falha de um serviço não compromete todo o sistema.
  • Facilidade de manutenção: serviços menores são mais fáceis de entender e manter.

Desvantagens

  • Complexidade: arquitetura mais complexa, com múltiplos serviços e comunicação entre eles.
  • Sobrecarga operacional: mais esforço para monitorar, implantar e gerenciar os serviços.
  • Custo: cada serviço pode ter um custo individual.
  • Latência: a comunicação entre serviços pode introduzir latência.
  • Gerenciamento de dados: dados distribuídos são mais complicados, especialmente em transações.
Parte 3

Café com Pão: microsserviços ou monolito?

Debate e discussão em grupo.

Atividade em grupo

Microservices × Web Services

No Café com Pão, defenda o uso de microsserviços ou de um único serviço web. Dê exemplos de pelo menos 3 endpoints (ou microsserviços) que poderiam fazer parte da API.

Grupo Par

Defenda Microsserviços.

Grupo Ímpar

Defenda Web Service (Monolito).

Justificativas no documento de atividades ↗

Para discutir
?

Qual a complexidade de transformar um monolito em microsserviços? Com quais questões precisamos nos preocupar?

Meme da curva de Gauss: extremos gritam 'monolith hehe' e 'monolith it is', enquanto a média insiste em microsserviços escaláveis

Referências bibliográficas

Página do artigo Microservices, de Martin Fowler