A diferença entre microsserviços e SOA

Realize Renner
RealizeIT
Published in
3 min readJul 2, 2019

Hoje em dia uma buzzword muito escutada por quem trabalha com tecnologia da informação são os microsserviços. Eles estão presentes nas aplicações web, nos apps,etc. A promessa é que com eles o desenvolvimento de novas aplicações será mais acelerado, devido a grande possibilidade de reuso e uma maior estabilização visto que a aplicação estará segregada em pequenos componentes.

Obviamente, conceitos como alta coesão e baixo acoplamento são premissas básicas da boa e velha Engenharia de Software, mas antes de escutarmos repetidamente esses conceitos quando falamos de microsserviços, essas palavras são muito usadas quando falamos de SOA.

Mas afinal, SOA e Microsserviços são coisas diferentes? São complementares?

Para que tenhamos uma maior clareza referente a esses pontos é necessário dar um passo atrás e explorarmos um pouco as principais diferenças entre os padrões de arquitetura.

Arquitetura Monolítica

Quando falamos de uma aplicação que utiliza uma arquitetura monolítica, basicamente ela terá como características principais:

• Banco de dados compartilhado.

• Lógica do negócio centralizada.

  • Canal único para acesso aos dados.

Essa arquitetura tem como principais benefícios:

• Simplicidade.

• Agregação de tecnologias.

• Consistência.

• Inter-module refactoring.

  • Fluxo simples para deploy.

Contudo, os principais problemas encontrados por quem utiliza esse padrão são:

Único ponto de falha.

• Baixa escalabilidade.

• Base de código imensa.

• Compilação.

• Agregação de tecnologia (novamente).

  • Demora para aculturamento.

Ainda dentro do padrão Arquitetura Monolítica existe um modelo que utiliza duas camadas. O acesso aos dados funciona independente da aplicação em si,funcionando através de um balanceador de carga apropriado.

SOA — Service-Oriented Architecture

Podemos assumir como definição:

É um estilo de arquitetura de software cujo princípio fundamental prega que as funcionalidades da aplicação devem ser disponibilizadas na forma de serviços.

Uma forma de representar graficamente esse padrão de arquitetura seria:

Alguns conceitos básicos da arquitetura SOA são:

• Baixo acoplamento.

• Abstração vs Complexidade.

• Flexibilidade.

  • Autonomia.

E os princípios que norteiam são:

• Padronização de contratos.

• Composição de serviços.

• Reusabilidade de serviços.

  • Autonomia.

Microsserviços

Podemos assumir como definição:

Uma abordagem que desenvolve um aplicativo único como uma suíte de pequenos serviços.

E aqui temos a resposta para nossa pergunta:

Microsserviços são componentes, e SOA é um padrão arquitetural.

Quando falamos de Microserviços de uma forma direta ou indireta estaremos falando também de:

• Agilidade e produtividade.

• Escalabilidade.

• Maturidade de DevOps.

• Componentização de serviços.

• Descentralização do controle.

• Automatização da infraestrutura.

  • Design to failure.

Cada microsserviço possui sua própria unidade lógica de acesso ao banco de dados e a lógica do negócio é descentralizada entre os microsserviços.

As principais vantagens desse modelo são:

• Deploy parcial.

• Disponibilidade.

• Preservação de um código modular.

  • Múltiplas plataformas.

Contudo, precisamos estar atentos em:

• Rapidez para criação de instâncias.

• Monitoramento.

• Rapidez para deploy de instâncias.

  • DevOps Culture.

Quando falamos de Microsserviços não podemos deixar de mencionar o API Gateway.

É um único ponto de entrada para aplicações modernas que possuem múltiplas APIs.

As principais vantagens para quem utiliza um API Gatway são:

• Separação entre os microsserviços e clientes.

• Simplicidade para o cliente.

• Gerenciamento das demandas.

  • Controle de logs mais fácil.

Outro aspecto muito relevante, principalmente quando expomos nossas API’s externamente, é a segurança:

• Isolamento dos microsserviços que possuem informações sensíveis.

• Políticas de acesso.

• CORS Origin.

  • Usage Plans.

Com as informações acima as coisas começam a ficar mais claras! ;-)

--

--