UA5 — Arquitetura Orientada a Serviços (SOA)
SOA organiza o sistema como uma coleção de serviços de negócio reutilizáveis e interoperáveis. Cada serviço é autônomo, com responsabilidade clara e interface bem definida — como departamentos de uma empresa que se comunicam por canais padronizados.
Por que SOA surgiu? — A evolução dos paradigmas
Antes de SOA, os sistemas eram fortemente acoplados: um banco de dados era compartilhado, alterações em uma área quebravam outra, e integrar sistemas de fornecedores diferentes era um pesadelo. O modelo de TI era reativo — esperava o problema surgir para resolver.
| Era | Paradigma | Problema que resolveu |
|---|---|---|
| Até anos 70 | Programação estruturada | Organizar código em funções e módulos |
| Anos 80–90 | Orientação a Objetos (OO) | Modelar entidades do mundo real; reutilização via herança |
| Anos 2000 | SOA | Integrar sistemas heterogêneos; expor lógica de negócio como serviço |
| Anos 2010+ | Cloud / Microsserviços | Escala elástica; deploy independente; SaaS/PaaS/IaaS |
Custo de adotar SOA
A adoção de SOA é custosa e nem sempre justificável por duas razões principais:
Mudança cara nos modelos existentes
Transformar sistemas legados em serviços exige redesenhar interfaces, banco de dados e processos. O custo é alto e o risco de regressão é real.
Sistemas que funcionam não precisam de SOA
Se um sistema já atende ao negócio, forçar a migração para SOA pode não trazer ganho proporcional ao investimento. A decisão exige análise custo-benefício.
ESB — o coração do SOA
O Enterprise Service Bus (ESB) é o barramento central que interconecta todos os serviços. Ele funciona como um repositório intermediário inteligente: roteia mensagens, transforma formatos, aplica segurança (via XML Encryption) e monitora o tráfego.
Sem o ESB, cada serviço precisaria se conectar diretamente a todos os outros — criando uma malha de dependências insuportável (o problema de integração ponto-a-ponto). Com o ESB, todos falam com o barramento; o barramento fala com todos.
Os três pilares técnicos do SOA
UDDI — Descoberta
Universal Description, Discovery and Integration. Registro centralizado onde serviços se publicam e consumidores os encontram. Funciona como um “catálogo de serviços” da organização.
WSDL — Interface
Web Services Description Language. Descreve o contrato do serviço em XML: quais operações oferece, que parâmetros aceita, que tipo de dados retorna. É o “manual de uso” do serviço.
SOAP — Comunicação
Simple Object Access Protocol. Protocolo de troca de mensagens baseado em XML. Garante que cliente e servidor se comuniquem de forma padronizada, independente de linguagem ou plataforma.
Como tudo se encaixa — Localizar, Consolidar, Registrar
O paradigma SOA funciona em três fases:
- Registrar: o provedor publica o serviço no UDDI com o contrato WSDL.
- Localizar: o consumidor consulta o UDDI para encontrar o serviço que precisa.
- Consolidar (executar): o consumidor usa o WSDL para montar a chamada SOAP e se comunicar com o serviço via ESB.
BPEL — Orquestração de Processos
O Business Process Execution Language (BPEL) permite descrever um processo de negócio como uma sequência de chamadas a serviços. Em vez de código procedural, o fluxo é definido em XML: “chame o serviço A, depois o B, se falhar chame o C”. O BPM (Business Process Management) é a notação visual usada para modelar esses processos antes de codificá-los em BPEL.
Princípios SOA
Baixo Acoplamento
Serviços independentes — a implementação interna pode mudar sem afetar os consumidores. Essa é a característica central: SOA opera no nível lógico de dependência mais baixo possível.
Abstração
O consumidor vê apenas a interface (WSDL), não a implementação. Java, .NET, Python — tanto faz.
Reutilização
A mesma lógica de negócio exposta como serviço pode ser consumida por múltiplas aplicações simultâneas.
Composição
Serviços simples se combinam via BPEL para construir processos de negócio complexos.
Autonomia
Cada serviço controla sua própria lógica, dados e ciclo de vida.
Stateless
Serviços não guardam estado entre chamadas — escala horizontal sem complicação.
SOA vs. Microsserviços
Microsserviços são frequentemente descritos como “SOA feito certo”. A diferença principal está na granularidade e na forma de orquestração:
| Aspecto | SOA | Microsserviços |
|---|---|---|
| Granularidade | Serviços maiores, orientados a processo de negócio | Muito pequenos, focados em uma única capacidade |
| Comunicação | Via ESB centralizado (orquestração) | Direto via REST/gRPC ou mensageria (coreografia) |
| Banco de dados | Geralmente compartilhado | Cada serviço tem seu próprio banco |
| Deploy | Centralizado ou em grupos | Totalmente independente por serviço |
| Adoção típica | Integração corporativa, ERP, sistemas bancários | Aplicações cloud-native, escala horizontal |
Conteúdo histórico — Práticas Modernas
O material do curso reflete o estado da arte do início dos anos 2000. Algumas tecnologias ensinadas já foram abandonadas ou substituídas:
- UDDI público foi encerrado em 2005–2006. Os registros públicos (IBM, Microsoft, SAP) fecharam as portas. Hoje, descoberta de serviços é feita via API Gateway (Kong, AWS API Gateway, Azure APIM) ou service mesh com service registry interno (Consul, Eureka, Kubernetes DNS).
- BPEL foi amplamente substituído por BPMN 2.0 com engines modernas como Camunda, Temporal.io e Apache Airflow. São mais fáceis de manter, observar e versionar do que XML BPEL.
- SOAP/WSDL perdeu espaço para REST+OpenAPI como padrão de integração. Serviços de alta performance usam gRPC (Protocol Buffers + HTTP/2) no lugar de SOAP.
- O ESB centralizado virou antipadrão em arquiteturas cloud-native. O modelo atual é descentralizado — cada serviço publica sua API diretamente, e um API Gateway faz roteamento, autenticação e rate limiting.
Entender SOA e BPEL é importante para trabalhar com sistemas legados corporativos. Para novos projetos, o caminho é REST+OpenAPI, Kubernetes + Consul, e BPMN 2.0.
Dicas para a Prova
- O ESB é o “repositório interconectado” do SOA — ponto central que conecta todos os serviços.
- WSDL = interface/contrato; UDDI = descoberta/registro; SOAP = protocolo de comunicação.
- POST = CREATE, GET = READ, PUT = UPDATE, DELETE = DELETE (mapeamento REST-CRUD).
- A principal característica do SOA que o diferencia de arquiteturas anteriores é o baixo nível lógico de dependência entre os componentes.
- BPEL usa REST para modelar processos antes da inserção no barramento (integração via orquestração).
Referências bibliográficas desta UA
- SOMMERVILLE, I. Engenharia de Software, 8ª ed., 2007.
- MENDES, A. Arquitetura de Software, 2002.