Arquitetura de Microsserviços vs. Arquitetura Orientada a Serviços

Lara Beatriz Machado
gb.tech
Published in
3 min readJun 25, 2024
Demonstra as diferenças entre um Monolito que é apenas uma unidade; o SOA que são serviço com maior granularidade; Microsserviços que são microsserviços com menor granularidade.
Monólito vs. SOA vs. Microsserviços

A arquitetura monolítica se caracteriza por ser estruturada em um grande bloco único que contém todas as funcionalidades do software. Um dos grandes problemas desse tipo de arquitetura é a escalabilidade, já que não é possível dimensionar componentes individuais. Além disso, existem os desafios de confiabilidade do software, velocidade de desenvolvimento, entre outros.

A arquitetura orientada a serviços (SOA) é um modelo que visa promover a reutilização do software, facilitar a manutenção ou até mesmo a substituição do software, resolvendo assim alguns problemas que a arquitetura monolítica sofre.

É possível utilizar quase a mesma descrição acima para arquitetura de microsserviços, mas então você se perguntaria “qual é a principal diferença entre essas duas arquiteturas?”. Para responder essa pergunta é preciso explicar como surgiu a arquitetura de microsserviços e a história de um software.

Era uma vez um software

Quando a sua aplicação monolítica começa a ser muito acessada e precisa atender cada vez mais usuários, a primeira coisa que vem à mente é escalar o software. Existem duas formas de fazer isso: verticalmente, adicionando mais recursos ao hardware do host; e horizontalmente, com hosts adicionais. Porém, existe um limite tecnológico e monetário para escalabilidade vertical de modo que, em certo momento, faz-se necessária a adoção de estratégias para escalar a aplicação horizontalmente.

Para que seja mais barato escalar uma aplicação horizontalmente é necessário realizar a decomposição, ou seja, dividir a aplicação monolítica em componentes menores, os famosos serviços onde a SOA atua. Após toda a decomposição, a qual resolverá problemas de grande volume de requisições a aplicação, porém também irá gerar um gargalo no banco de dados, já que todos os serviços estarão conectados em um mesmo banco de dados.

Demonstra como a arquitetura orientada a serviços funciona, dois serviços conectados em um banco de dados, já que nessa arquitetura os serviços compartilham recursos.
Arquitetura Orientada a serviços

Como última opção, explorar o eixo de particionamento é sinônimo de espalhar dados da aplicação por todos os serviços, o que implica na necessidade de um gerenciamento complexo de consistência de dados.

Então, no ponto alto da história, a modelagem dos dados na SOA não lida com particionamento de dados, uma vez que os serviços são muito dependentes uns dos outros, e seu protocolo de comunicação não é sucinto. Assim, surge a arquitetura de microsserviços com a necessidade de atribuir aos serviços independência, autossuficiência, comunicação sucinta e tamanho reduzido, consequentemente as teorias de escalabilidade não perdem seu significado.

Demonstra como a arquitetura de microsserviços funciona, quatro microsserviços e quatro banco de dados, cada microsserviço tem seu banco de dados e é independente de outro microsserviço.
Arquitetura de microsserviços

Conclusão

Ao olhar para o passado, é possível observar o quão importante é saber como as arquiteturas de software evoluíram. Torna-se mais fácil compreender como se chegou até aqui. Nenhuma arquitetura é melhor ou pior do que outra; cada uma possui suas vantagens e desvantagens. Cabe ao idealizador do software, seja ele desenvolvedor ou arquiteto, decidir qual será o caminho inicial que o software seguirá.

Exemplos de casos de produtos em cada arquitetura citada:

  • Stack Overflow, é um monólito de alta performance.
  • A Delaware Electric escolheu a SOA para integrar sistemas que anteriormente não conversavam entre si. (O que é a arquitetura orientada a serviços (SOA)?. Disponível em: https://www.ibm.com/br-pt/topics/soa. Acesso em: 24 de junho de 2024.)
  • Loja Digital do Grupo Boticário, foi construída com arquitetura de microsserviços.
  • Uber, iniciou com uma arquitetura monolítica e evoluiu para uma arquitetura de microsserviços.

Além desse artigo

Implicitamente, foi citado conceitos importantes no desenvolvimento de software que vale a pena estudar mais a fundo, são eles:
- Cubo da escalabilidade — Chris Richardson
- Teorema CAP (do inglês Consistency, Availability, Partition tolerance), também conhecido como Teorema de Brewer

Referências

--

--