A arquitetura orientada a serviços (SOA) é uma abordagem arquitetural para projetar aplicações com base em um conjunto de serviços independentes. Um serviço pode ser qualquer funcionalidade de negócios que execute uma ação e forneça um resultado específico, como processar o pedido de um cliente ou gerar um relatório de estoque. Os serviços podem ser combinados para criar aplicações compostas, oferecendo mais funcionalidades aos usuários finais.

Os benefícios da abordagem SOA incluem maior facilidade para manter e atualizar os componentes de serviço — como cada componente é mais compacto e isolado, fica mais fácil corrigir o código ou substituir elementos sem afetar todos os demais. No entanto, surgem problemas ao determinarmos a melhor forma de viabilizar a comunicação entre os serviços. A SOA costuma ser associada ao Enterprise Service Bus (ESB) como meio central de comunicação entre os serviços. Os ESBs geralmente não se adaptam bem a mudanças, tendem a aumentar a complexidade e dificultam a compreensão de onde um serviço começa e termina.

SOA vs. microsserviços

Se você acha que a SOA se parece muito com a definição atual de microsserviços, saiba que não é a única pessoa. Os microsserviços também são serviços pequenos e autônomos, projetados para funcionar de forma independente e, ao mesmo tempo, em conjunto. No entanto, existem diferenças importantes entre a SOA e os microsserviços. Veja algumas delas:

  • Microsserviços são serviços com granularidade muito fina, separados em determinado nível de granularidade por um motivo funcional. Isso significa que, em uma arquitetura de microsserviços, um serviço — incluindo o banco de dados e os servidores de aplicações, bem como o suporte ao produto — é gerenciado de ponta a ponta pela mesma equipe. A SOA, por outro lado, separa os serviços de maneira lógica. A diferença aqui é que os serviços agrupados logicamente são compartilhados entre as funções. Parece uma boa ideia… até que o serviço falhe e todas as funções que dependem dele sejam afetadas. As arquiteturas de microsserviços são projetadas para eliminar esse impacto, mantendo os serviços de negócios totalmente contidos em suas respectivas funções, juntamente com tudo o que é necessário para desempenhá-las e gerar valor para o negócio — mesmo que isso implique duplicar algo ao longo do processo.
  • Os microsserviços, por serem totalmente delimitados por função, também não estão vinculados às mesmas estruturas, protocolos e especificações de comunicação que, em última análise, limitam a SOA. Em vez disso, os microsserviços se concentram em manter a inteligência em cada conjunto de endpoints e em ter uma estrutura simples para conectá-los. Muitas vezes, a melhor maneira de fazer isso é implementar um único gateway de API que abrigue a arquitetura interna do sistema e encaminhe as solicitações para cada microsserviço independente usando protocolos Web leves, como REST. Além disso, cada microsserviço costuma consumir APIs de outros serviços, mas o gateway impede que os aplicativos móveis acessem diretamente o back-end. Esse nível de flexibilidade é algo que a SOA, sobrecarregada por especificações de serviços Web e dependente de um ESB para conectar aplicações, jamais conseguirá alcançar.

Embora muitas pessoas considerem os microsserviços como uma implementação finalmente correta da SOA, há, na verdade, várias diferenças fundamentais entre os dois — e que, em muitos aspectos, tornam os microsserviços a opção de arquitetura mais eficaz para aplicações complexas. Para saber mais sobre SOA e microsserviços, baixe gratuitamente o ebook Como criar microsserviços: projetando sistemas granulares.

Como o NGINX pode ajudar?

NGINX Plus e NGINX são as melhores soluções de balanceamento de carga da categoria, usadas por sites de alto tráfego como Dropbox, Netflix e Zynga. Mais de 350 milhões de sites em todo o mundo confiam no NGINX Plus e no NGINX Open Source para disponibilizar seu conteúdo com rapidez, confiabilidade e segurança.

Como um controlador de entrega de aplicações (ADC) baseado em software, o NGINX Plus foi projetado para viabilizar arquiteturas de microsserviços de forma muito mais eficaz e econômica do que soluções de hardware com recursos comparáveis.

  • O NGINX Plus oferece uma solução completa de entrega de aplicações e balanceamento de carga que aumenta o desempenho e a confiabilidade de cada microsserviço
  • O NGINX Plus é flexível e escalável o suficiente para se integrar à sua stack como um gateway de API e como um endpoint para cada serviço
  • O NGINX Plus atua como um servidor HTTP de alto desempenho para executar ações de microsserviços com máxima velocidade e eficiência