Qual é a diferença entre a SOA e os microsserviços?

A arquitetura orientada a serviços (SOA) é um método de desenvolvimento de software que usa componentes de software chamados de serviços para criar aplicações de negócios. Cada serviço fornece uma capacidade de negócios. Eles também podem se comunicar entre plataformas e linguagens. Os desenvolvedores usam a SOA para reutilizar serviços em sistemas diferentes ou combinar vários serviços independentes para realizar tarefas complexas. A arquitetura de microsserviços é uma evolução do estilo de arquitetura da SOA. Embora cada serviço de SOA seja um recurso de negócios completo, cada microsserviço é um componente de software muito menor, especializado em apenas uma única tarefa. Os microsserviços abordam as deficiências da SOA para tornar o software mais compatível com ambientes corporativos modernos baseados na nuvem.

Leia sobre SOA »

Leia sobre microsserviços »

Quais limitações da arquitetura monolítica a arquitetura SOA resolve?

Na arquitetura monolítica, os desenvolvedores escrevem código para todas as funções de serviço em uma única base de código. Com a arquitetura orientada a serviços (SOA), os desenvolvedores podem enfrentar os desafios da arquitetura monolítica, como:

  • Desafios de escalabilidade que exigem que toda a aplicação seja dimensionada, mesmo que apenas um componente específico precise de recursos adicionais.
  • A incapacidade de adicionar ou modificar atributos de forma flexível, pois a funcionalidade é distribuída por toda a base de código.
  • A incapacidade de reutilizar componentes em diferentes aplicações.
  • Tolerância limitada a falhas. A falha em um componente pode potencialmente derrubar todo o sistema.
  • O desafio de adotar novas tecnologias ou integrar-se com sistemas externos que usam tecnologias diferentes.

As arquiteturas monolíticas também centralizam as equipes de propriedade e desenvolvimento responsáveis por toda a aplicação. Elas enfrentam desafios com a entrega contínua e as práticas de DevOps devido ao tamanho e à complexidade das arquiteturas. 

Com a SOA, os desenvolvedores dividem as funcionalidades do software em camadas de provedores e consumidores de serviços. Essas camadas se comunicam e trocam dados por meio de um barramento de serviços corporativos (ESB). Os desenvolvedores usam a SOA para simplificar aplicações complexas em vários serviços reutilizáveis. 

Quais limitações da arquitetura SOA a arquitetura de microsserviços resolve?

Embora a arquitetura orientada a serviços (SOA) possa funcionar bem para criar aplicações corporativas de grande porte, ela precisa de mais flexibilidade para escalar aplicações menores e específicas de negócios. Estas são algumas limitações da SOA:

  • O barramento de serviços corporativos (ESB) conecta vários serviços, o que o torna um ponto único de falha. 
  • Todos os serviços compartilham um repositório de dados comum. Isso dificulta o gerenciamento individual dos serviços. 
  • Cada serviço tem um escopo amplo. Portanto, se um dos serviços falhar, todo o fluxo de trabalho do negócio será afetado. 

Por isso, os desenvolvedores recorrem à arquitetura de microsserviços para uma abordagem mais refinada na criação de aplicações.

O modelo de microsserviço divide um serviço de SOA em serviços menores. Cada microsserviço opera dentro de seu contexto limitado e é executado de forma independente de outros serviços. Em resumo, a arquitetura de microsserviços tem interdependências limitadas ou inexistentes entre serviços individuais e reduz o risco de falha em todo o sistema.

Diferenças arquitetônicas: SOA vs. microsserviços

A arquitetura orientada a serviços (SOA) abrange um escopo corporativo mais amplo. Diferentes unidades de negócios colaboram de forma eficiente em uma plataforma comum de compartilhamento de dados. Em contrapartida, os microsserviços se aplicam a um escopo mais restrito.

Por exemplo, o gerenciamento de inventário seria um serviço de SOA de um sistema de comércio eletrônico. Mas a abordagem de microsserviços dividiria o gerenciamento de inventário em serviços menores, como verificador de disponibilidade, atendimento e contabilidade. 

Implementação

A implementação da SOA envolve a integração de diferentes tipos de serviços em uma aplicação. Ela usa um barramento de serviços corporativos para conectar tipos de serviços, a saber:

  • Serviços funcionais para dar suporte às operações de negócios específicas 
  • Serviços corporativos para expor uma funcionalidade de negócios específica a outros serviços
  • Serviços de aplicações usados por desenvolvedores para criar e implantar aplicações
  • Serviços de infraestrutura para gerenciar atributos não funcionais, como autenticação e segurança

Por outro lado, a arquitetura de microsserviços é uma implementação mais granular e independente da SOA. Os microsserviços não compartilham recursos como os serviços de SOA. Cada microsserviço opera de forma independente para fornecer funcionalidades muito específicas.

Comunicação

Para acessar serviços remotos, a arquitetura SOA usa um barramento de serviços corporativos (ESB) centralizado para conectar diversos serviços com vários protocolos de mensagens. Alguns desses protocolos incluem o SOAP, o Advanced Messaging Queuing Protocol (AMQP) e o Microsoft Message Queuing (MSMQ). Se o ESB falhar, todos os serviços de SOA serão afetados. 

Entretanto, as arquiteturas de microsserviços usam sistemas de mensagens mais simples, como APIs RESTful, Serviço de Mensagens Java (JMS) ou streaming de eventos de publicação e assinatura (pub/sub). Esses métodos não exigem que os microsserviços mantenham uma conexão ativa ao trocar dados. 

As APIs são uma ferramenta comum para arquiteturas de microsserviços. Uma API permite que dois ou mais microsserviços troquem dados diretamente sem passar por um canal centralizado. No entanto, ela pode criar caminhos de dados complexos entre dezenas de microsserviços, que os desenvolvedores monitoram e gerenciam.

Armazenamento de dados

O ambiente da SOA compreende uma única camada de armazenamento de dados compartilhada por outros serviços conectados. Diferentes aplicações corporativas acessam e reutilizam os mesmos dados em implementações de SOA, o que otimiza o valor dos repositórios de dados.

Por outro lado, cada microsserviço tem seu próprio armazenamento de dados. Em arquiteturas de microsserviços, a independência dos dados é mais importante do que a reutilização. 

Implantação

Implantar serviços de SOA pode ser um desafio porque eles estão acoplados até certo ponto. Por exemplo, os desenvolvedores deverão reconstruir a aplicação inteira se modificarem ou adicionarem um novo serviço. Além disso, as aplicações de SOA não podem tirar o máximo proveito da conteinerização, que abstrai a aplicação dos sistemas operacionais e do hardware.

Entretanto, os microsserviços são mais fáceis de implantar, pois são projetados para reduzir a escala horizontalmente no ambiente de nuvem. Cada microsserviço é uma aplicação independente que os desenvolvedores podem conteinerizar e implantar na nuvem. 

Principais benefícios: microsserviços vs. SOA

Tanto a arquitetura orientada a serviços (SOA) quanto os microsserviços permitem que as equipes de desenvolvimento criem, implantem e gerenciem aplicações modernas de forma eficiente para ambientes de nuvem. Sendo assim, os microsserviços oferecem certas vantagens em relação às implantações de SOA.

Reutilização

Um dos princípios dos projetos da SOA é a ênfase na reutilização e no compartilhamento de componentes. Nessa arquitetura, várias aplicações frontais usam os mesmos serviços de SOA. Por exemplo, um painel de faturamento e acompanhamento de pedidos pode acessar o mesmo serviço para recuperar detalhes do cliente.

Entretanto, os microsserviços adotam uma abordagem diferente. Eles aplicam a duplicação de dados em vez de compartilhar recursos comuns. Dessa forma, uma aplicação baseada em microsserviços tem um desempenho mais eficiente e não se limita às operações de dados de outros serviços. 

Velocidade

A SOA pode oferecer uma velocidade decente em implementações simples, mas a latência dos dados aumenta à medida que os desenvolvedores adicionam mais serviços ao sistema. Todos os serviços competem pelos mesmos recursos de comunicação e funcionalidade de dados.

Por outro lado, as arquiteturas de microsserviços, por não compartilharem recursos sobrepostos, permanecem ágeis e responsivas à medida que o sistema escalona. Os desenvolvedores poderão atribuir e aumentar os recursos de computação para um microsserviço específico se a demanda de tráfego aumentar. Isso permite que uma aplicação baseada em microsserviços seja executada a uma velocidade aceitável o tempo todo. 

Flexibilidade de governança

As aplicações baseadas em SOA fornecem governança de dados consistente em repositórios comuns usados por diferentes serviços.

No entanto, os desenvolvedores que trabalham com microsserviços podem decidir sobre diferentes políticas de governança para unidades de armazenamento de dados independentes. As equipes de desenvolvimento colaboram com mais eficiência e têm liberdade para determinar os mecanismos de governança de dados. 

Quando usar: SOA vs. microsserviços

A arquitetura orientada a serviços (SOA) e os microsserviços oferecem maneiras diferentes para as organizações migrarem de uma arquitetura monolítica para ambientes de nuvem. Dependendo de certos fatores, um pode ser mais adequado do que o outro em casos de uso prático.

SOA

As organizações com aplicações corporativas herdadas ou autônomas se beneficiam da arquitetura SOA. A SOA simplifica os programas de software convencionais em partes modulares menores. Ela também reúne recursos compartilhados para otimizar as funcionalidades de negócios. Em vez de criar serviços redundantes e sobrepostos, os desenvolvedores podem reutilizar os serviços da SOA existentes para implementar mais soluções de negócios. 

Microsserviços

A arquitetura de microsserviços é a melhor opção para apoiar equipes de desenvolvimento ágeis. Os desenvolvedores podem fazer alterações rápidas e incrementais no código sem afetar a estabilidade da aplicação usando ferramentas de integração e entrega contínuas (CI/CD). Os microsserviços são melhores quando os desenvolvedores têm os seguintes objetivos:

  • Uso de diferentes linguagens de programação, bibliotecas ou estruturas para criar uma única aplicação
  • Combinação de serviços individuais criados com diferentes estruturas de software
  • Provisionamento de recursos de computação e escalamento de serviços individuais em tempo real 

Com os microsserviços, as empresas podem se beneficiar dos recursos modernos de nuvem e implantar centenas de microsserviços com facilidade.

Resumo das diferenças: SOA em comparação com microsserviços

 

SOA

Microsserviços

Implementação

Diferentes serviços com recursos compartilhados.

Pequenos serviços independentes e com finalidade específica.

Comunicação

O ESB usa diversos protocolos de mensagens como SOAP, AMQP e MSMQ. 

APIs, Serviço de Mensagens Java e Pub/Sub.

Armazenamento físico de dados

Armazenamento de dados compartilhado.

Armazenamento de dados independente.

Implantação

Desafiadora. Uma redefinição completa do desenvolvimento é necessária para a realização de pequenas alterações.

Fácil de implantar. Cada microsserviço pode ser armazenado em contêineres. 

Capacidade de reutilização

Serviços reutilizáveis por meio de recursos comuns compartilhados.

Cada serviço tem os próprios recursos independentes. É possível reutilizar microsserviços por meio de APIs.

Velocidade

Diminui a velocidade à medida que mais serviços são adicionados.

Velocidade consistente à medida que o tráfego aumenta.

Flexibilidade de governança

Governança de dados consistente em todos os serviços.

Diferentes políticas de governança de dados para cada armazenamento.

Como a AWS pode ajudar com seus requisitos de microsserviços?

Crie aplicações modernas na Amazon Web Services (AWS) com padrões de arquitetura modulares, modelos operacionais com tecnologia sem servidor e processos de desenvolvimento ágeis. Oferecemos a plataforma mais completa para o desenvolvimento de microsserviços altamente disponíveis com o objetivo de potencializar aplicações modernas de qualquer escopo e escala.

Confira algumas maneiras de trabalhar com microsserviços na AWS:

  • Crie, isole e execute microsserviços seguros em contêineres gerenciados para simplificar as operações e reduzir a sobrecarga de gerenciamento. Leia mais em O que é um contêiner?
  • Use o AWS Lambda para executar os microsserviços sem a necessidade de provisionar e gerenciar servidores.
  • Escolha entre 15 bancos de dados da Nuvem AWS relacionais e não relacionais criados com propósito específico para serem compatíveis com a arquitetura de microsserviços.
  • Monitorar e controlar com facilidade os microsserviços em execução na AWS com o AWS App Mesh.
  • Monitorar e solucionar problemas em interações complexas de microsserviços com o AWS X-Ray.

Os microsserviços na AWS ajudam você a inovar com mais rapidez, reduzem riscos, aceleram o tempo de entrada no mercado e diminuem o custo total de propriedade. Comece a usar microsserviços na AWS ao criar uma conta hoje mesmo.