SOA, ou arquitetura orientada a serviços, define uma maneira de tornar os componentes de software reutilizáveis e interoperáveis por meio de interfaces de serviço. Os serviços usam padrões comuns de interface e um padrão de arquitetura para que serem incorporados rapidamente a novos aplicativos. Isso remove tarefas do desenvolvedor de aplicativos que anteriormente redesenvolveu ou duplicou funcionalidade existente ou teve que saber como conectar ou fornecer interoperabilidade com funções existentes.
Cada serviço em uma SOA incorpora o código e os dados necessários para executar uma função de negócios completa e confidencial (por exemplo, verificar o crédito de um cliente, calcular um pagamento mensal de um empréstimo ou processar uma proposta de hipoteca). As interfaces de serviços oferecem acoplamento fraco, o que significa que exigem pouco ou nenhum conhecimento técnico sobre como o serviço é implementado, reduzindo as dependências entre os aplicativos.
Esta interface é um contrato de serviço entre o provedor de serviços e o consumidor do serviço. Os aplicativos por trás da interface de serviço podem ser escritos em Java, Microsoft .Net, Cobol ou qualquer outra linguagem de programação, fornecida como aplicativos de software empacotados por um fornecedor (por exemplo, SAP), aplicativos SaaS (por exemplo, Salesforce CRM) ou obtidos como aplicativos de código aberto. As interfaces de serviços são normalmente definidas usando Linguagem de Descrição de Serviços da Web (WSDL), que é uma estrutura padrão de marcações baseada em XML (linguagem de marcação extensível).
Os serviços são expostos usando protocolos de rede padrão, como SOAP (protocolo de acesso a objeto simples)/HTTP ou Restful HTTP (JSON/HTTP), para enviar solicitações de leitura ou de alteração de dados. A governança do serviço controla o ciclo de vida para o desenvolvimento e no momento certo os serviços são publicados em um registro que permite aos desenvolvedores encontrá-los rapidamente e reutilizá-los para criar novos aplicativos ou processos de negócios.
Esses serviços podem ser desenvolvidos partindo da estaca zero, mas geralmente são criados ao expor funções de sistemas legados de registro como interfaces de serviço.
Dessa forma, a SOA representa uma etapa importante na evolução do desenvolvimento e integração de aplicativos ao longo das últimas décadas. Antes da SOA surgir no final da década de 1990, conectar um aplicativo a dados ou a funcionalidades hospedadas em outro sistema exigia integração complexa ponto a ponto, que os desenvolvedores tinham de recriar, de forma parcial ou integral, para cada novo projeto de desenvolvimento. A exposição dessas funções através de serviços de SOA permite ao desenvolvedor simplesmente reutilizar o recurso existente e conectar-se através da arquitetura da SOA ESB (veja abaixo).
Note que embora a SOA, e as arquiteturas de microsserviços mais recentes, compartilhem muitas palavras em comum (como "serviço" e " arquitetura"), há pouca relação entre elas e, na verdade, operam em escopos diferentes, conforme será discutido mais adiante neste artigo.
Um ESB, ou barramento de serviço corporativo, é um padrão de arquitetura pelo qual um componente de software centralizado realiza integrações entre aplicativos. Ele realiza transformações de modelos de dados, administra conectividade/mensagens, realiza roteamento, converte protocolos de comunicação e possivelmente gerencia a composição de várias solicitações. O ESB pode disponibilizar essas integrações e transformações em uma interface de serviços para que novos aplicativos possam reutilizá-las . O padrão ESB é geralmente implementado usando um tempo de execução de integração e um conjunto de ferramentas especialmente projetados que garantem a melhor produtividade possível.
É possível implementar uma SOA sem um ESB, mas isso seria equivalente a ter nada mais que um monte de serviços. Cada proprietário de aplicativo precisaria se conectar a qualquer serviço necessário e realizar as transformações de dados para atender a todas as interfaces de serviço. Isso exige muito trabalho (mesmo que as interfaces sejam reutilizáveis) e aumenta significativamente os desafios de manutenção futura, pois todas as conexões são ponto a ponto. Na verdade, os ESBs foram, eventualmente, considerados um elemento essencial de qualquer implementação de SOA , tanto que os dois termos são, por vezes, usados como sinônimos, gerando confusão.
Em comparação com as arquiteturas que a precederam, a SOA oferece benefícios significativos para a empresa:
Até 2010, implementações de SOA estavam a todo vapor em empresas líderes em praticamente todos os mercados. Por exemplo:
Especialistas escreveram milhares de páginas impressas e digitais comparando a SOA e os microsserviços e definindo as sutilezas de sua relação entre eles. Para efeitos deste artigo, as principais diferenças entre os dois são o acoplamento de componentes e o escopo de uso:
A arquitetura de microsserviços surgiu e ganhou popularidade com a virtualização, a cloud computing, as práticas de desenvolvimento Agile e o DevOps. A maior parte das vantagens dos microsserviços nestes contextos surgem a partir do desacoplamento dos componentes, o que simplifica e melhora o seguinte:
Para obter mais informações sobre as diferenças entre a SOA e os microsserviços, consulte "SOA vs. Microsserviços: Qual é a diferença?"
Da mesma forma que a arquitetura de microsserviços tem o potencial de trazer melhorias em agilidade, escalabilidade e resiliência ao design de aplicativos, essas mesmas técnicas também podem ser aplicadas à integração. Isso é importante porque, com o tempo, o padrão ESB fortemente centralizado e sua equipe centralizada associada de especialistas em integração podem se tornar um gargalo. A partir dos princípios de microsserviços , é possível dividir o ESB em integrações descentralizadas com mais baixa granularidade. Esta é uma das principais premissas por trás da integração ágil.
Conecte aplicativos, serviços e dados com IBM Cloud Pak for Integration, a plataforma de integração mais abrangente do mercado.
Conecte aplicativos e dados com um potente software de integração de aplicativos automatizado por IA.
O IBM API Connect® é uma solução segura de gerenciamento de API que usa uma experiência intuitiva para consistentemente ajudar a criar, gerenciar, proteger, socializar e monetizar APIs.
Conheça os conceitos básicos de arquitetura orientada a serviços (SOA) e de microsserviços, suas principais diferenças e qual abordagem seria melhor para o seu cenário.
Este guia descreve como acelerar a modernização de seu aplicativo, melhorar a produtividade do desenvolvedor e melhorar a eficiência operacional e a padronização.
Saiba mais sobre o ESB (um componente essencial da SOA), os benefícios que ele oferece e como ele se relaciona à arquitetura de microsserviços.