Alguns gerentes consideram API como mais uma buzzword relacionada a integrações, problema que já resolveram com SOA + ESB. No entanto, APIs atendem demandas novas, que não são bem endereçadas por SOA. E por usa vez, SOA possui foco em problemas que as APIs não endereçam.
Sendo assim, como saber se:
- Ter um ESB para as integrações é suficiente?
- API Gateway e ESB são complementares?
- Devo substituir meu ESB por APIs + Microserviços?
Entendendo os Gaps de SOA/ESB e o papel da API Management Platform
A nova onda de transformação digital não é apenas uma questão de digitalização de processos e de integrações internas, mas também é sobre explorar as potencialidades do ecossistema de parceiros, usar sistemas legados junto com as novas tecnologias (IoT, Cloud, Analytics+AI, Blockchain, etc), ter monitoramento em real-time e reagir rapidamente, proporcionar experiências por diferentes canais e interfaces, engajar clientes e colaboradores, superar desafios de escalabilidade e segurança, dentre outros elementos.
Principais preocupações com ESB:
- Escalabilidade complexa: ESBs são monolíticos que escalam de forma vertical e com isso aumentam o risco de indisponibilidade.
- Desempenho afetado quando ligam os logs: pode reduzir até 30% da performance no processamento das transações.
- Vendor Lock-in: consultoria cara e necessidade de aquisição de muitos produtos (BAM, BPEL, Service registry).
- Foco apenas nas integrações: pouca preocupação com a experiência de parceiros e desenvolvedores de front-end.
- Poucos recursos para Governança, Monitoramento e Monetização: falta de visibilidade em real-time, de logs completos das transações, de documentação, de versionamento, de planos de utilização e billing, etc.
- Suporte limitado para Segurança: Oauth 2.0, OpenID, JWT, etc
- Falta de padrões modernos e protocolos mais leves: ESBs foram ou tendem a ser descontinuados.
Por que utilizar APIs para integrações internas e externas?
É uma forma simples, ágil e escalável de integrar sistemas e criar aplicações desacopladas no menor tempo possível. Utilizando uma plataforma de API Management, obtém-se módulos de apoio a segurança, autenticações, escalabilidade, engajamento dos devs, governança, monitoramento, monetização, ambiente de testes, dentre outros recursos.
Como API Management e ESB suprem as capacidades da camada de Integração:
A plataforma de API Management e o ESB podem existir sozinhas – é uma questão de cenário e de foco. Na maioria dos cenários, as empresas se beneficiariam de ambas. Nestes casos, a arquitetura fica ainda mais robusta, desde que consigamos potencializar as forças de cada um:
Abordagem 1: Convivência API Management + ESB
Para ter uma alta cobertura em toda as capacidades de uma camada de integração, uma abordagem possível seria optar pela convivência da plataforma de API Management com o ESB. Essa abordagem possibilita usufruir dos recursos da plataforma de API Management (Escalabilidade, Segurança, Governança, Engajamento dos Devs, Monetização, Analytics, etc) com as capacidades do ESB (variedade de conectores, processamento de transações complexas, etc). No entanto, ainda ficam algumas limitações no que tange a escalabilidade, lock-in, desempenho – e a parte do motor de regras, que pode ser obtido com uma solução específica.
Abordagem 2: Substituição do ESB usando API Management + API front (Microservices + Conectores)
Para cobrir as capacidades que a plataforma de API Management não enfoca, sem as limitações do ESB, é possível criar uma camada que chamamos de API Front. Essa camada é composta por APIs, microserviços e conectores, endereçando assim as dificuldades de escalabilidade, desacoplamento, reuso, desempenho – e quanto a parte do batch processing e do motor de regras, pode-se utilizar plataformas específicas.
Benefícios do API Management + Microserviços na sua arquitetura de Integração
- Integrações mais flexíveis, viabilizando entregas mais rápidas e redução de custos
- Interfaces padronizadas, viabilizando multicanalidade e agilidade na integração com parceiros
- Estabelecimento da Governança e monitoramento real-time das integrações
- Segurança e controle sobre o uso das APIs
- Mecanismos para otimização da performance das aplicações
- Separação de responsabilidades
- Escalabilidade
Comparativo detalhado de capacidades para a camada de integração passíveis de serem supridas por uma Plataforma de API Management ou por um ESB:
Capabilities | Patterns | API Management | ESB | Alternative API Management | Alternative ESB |
Communication asynchronous | WebSocket | Yes | Partial – some ESBs support | N/A | Messaging (eg AMQP) |
Synchronous communication | REST / JSON | Yes | Partial – some ESBs support | N/A | WS-SOAP |
GraphQL | Yes | No | N/A | N/A | |
Security | OAuth 2.0 | Yes | Partial – some ESBs support | N/A | WS-Security and Basic Auth |
DDoS | Yes | No | N/A | Use of third-party solutions | |
WAF (Injections, XSS, CSRF) | Yes | No | N/A | Use of third-party solutions | |
Spike Arrest | Yes | No | N/A | Use of third-party solutions | |
Technical monitoring | Real Time Alerts | Yes | No | N/A | N/A |
Technical monitoring | Dashboards & Reports | Yes | Partial – requires add-on | N/A | BAM (add-on) |
Business Monitoring | Real Time Alerts | Yes | No | N/A | N/A |
Dashboards & Reports | Yes | Partial – requires add-on | N/A | BAM (add-on) | |
Dev Support | Developer Portal | Yes | No | N/A | custom portal |
Composition & Enrichment | Service Callout | Yes | Yes | N/A | N/A |
XSLT | Yes | Yes | N/A | N/A | |
message Manipulation | Yes | Yes | N/A | N/A | |
Contract and Documentation Standards | OpenAPI Spec | Yes | No | N/A | WSDL |
Contract and Documentation Standards | Iterative documentation | Yes | No | N/A | custom portal |
Generation SDK | Yes | No | N/A | SDK manual generation | |
JSON Schema Validation | Yes | No | N/A | XSD | |
Governance | Usage quotas | Yes | No | N/A | Use of third-party solutions |
Visibility Control | Yes | Partial – requires add-on | N/A | Service Registry & Repository (add-on) | |
API / Service Catalog | Yes | Partial – requiresOn dd, | N/A | Service Registry & Repository (add-on) | |
Lifecycle | Yes | Partial – requires add-on | N/A | Service Registry & Repository (add-on) | |
Dependency Visibility | Yes | Partial – requires add-on | N/A | Service Registry & Repository (add-on) | |
Troubleshooting | Trace | Yes | Yes | N/A | N/A |
Asynchronous Logging | Yes | No | N/A | N/A | |
Custom Reports | Yes | No | N/A | Use of third-party solutions to process logs | |
Message Translation | XSLT | Yes | Yes | N/A | N/A |
Message Mapping Wizard | No | Yes | Custom Mapping Code Snippet | N/A | |
Automatic Translation (eg XML to JSON) | Yes | Yes | N/A | N/A | |
Message Manipulation | Yes | Yes | N/A | N/A | |
Text Manipulation | Yes | Yes | N/A | N/A | |
Protocol Translation | SOAP to REST | Yes | Partial – some ESBs support | N/A | N/A |
To HTTP-based REST | Yes | Partial – some ESBs support | N/A | custom translation | |
Database Connector | Yes | Yes | N/A | N/A | |
SAP Connector | No – some support as addon | Yes | Custom Connector | N/A | |
FTP Connector | No | Yes | Custom Connector | N/A | |
Orchestration | Process Choreography | No | Yes | custom orchestration with Microservices | N/A |
Compensation Flow | No | Yes | custom orchestration with Microservices | N/A | |
Retry Queues | No | Yes | custom orchestration with Microserviços | N/A | |
Batch processing | Parallel Processing (High Data Volumes) |
No | Yes | Use third-party solutions – Data Integration Platforms | N/A |
Job Scheduling | No | Yes | Use third-party solutions – Data Integration Platforms | N/A | |
Workload Automation | No | Partial – requires add-on | Use third-party solutions – Data Integration Platforms | N/A | |
Routing | Static Routing | Yes | Yes | N/A | N/A |
Content-based Routing | Yes | Yes | N/A | N/A | |
Rules-based Routing | Yes | Yes | N/A | N/A | |
Policy-based Routing | Yes | Yes | N/A | N/A | |
Logging & Traceability | stack Trace | Yes | Yes | N/A | N/A |
Transaction Identifier | Yes | Not | N/A | N/A | |
Transaction Management | Database Transaction Handling | No | Yes | Custom with Microservices | N/A |
XA Transactions (2 Phase Commit) | No | Yes | Custom with Microservices | N/A | |
WS-Transaction | No | Yes | Custom with Microservices | N/A | |
Rules Engine | BRMS | No | Partially – requires add-on | Use third-party solutions | N/A |
Leave a Comment