expondo apis de back-ends legados e travados
TRANSCRIPT
Fábio [email protected] @frosato
Expondo APIs de back-endslegados e travados
Fábio RosatoProfessional Services Manager & [email protected]@frosato
Every Business
is Digital
API enables
Digital
Sensedia
powers your API
Strategy
IT Architecture
Enabling Digital Transformation
Agenda
APIs e Legados
Estratégias de Exposição
Tecnologia
Amanhã logo cedo
APIs e Legados
A ideia das APIs é prover um mecanismo
simples, seguro com baixo acoplamento,
padronizado e interoperável para um
desenvolvedor construir suas apps comunicando
com um backend no menor tempo possível.
Open Innovation
Fonte: http://hackathon.ima.sp.gov.br/
Fonte: http://hackathon.ima.sp.gov.br/
Plataformas IoT Mobile
Legado
Legado
Estigmas
• Aplicações moníliticas nem sempre modularizadas, problemáticas
• Baixa capacidade de conectividade
• Ciclos de entrega longos (meses)
• Dificuldade para evoluir e compor novas tecnologias
• Obsolecência tecnológica ou tecnologias zumbis
Não é algo totalmente ruim
• Um sistema legado muitas vezes é
um sistema de sucesso
• Que pode ter grande impacto
positivo no negócio
Razões para mantê-lo
• O sistema funciona satisfatoriamente
• Não há razão técnica ou funcional
para mudá-lo
• O custo benefício de uma
substituição é baixo ou zero
• Justificar o ROI
• Priorização
Arquiteturas Reais
Mainframe Comercial apps
Databases
Custom appsSaaS apps
SOAP RSSRemote
ProtocolsREST
like RPC
System Layer
Services Layer
Estratégias de Exposição
Bottom-up
Anti-pattern
Legacy
Expose Objects
JSON
Bottom
Up
Vantagens• Rápido• Ferramentas podem
ajudar• O Arquiteto do
legado entende a interface
Riscos• Design ruim com
vícios do legado
AP
I Fro
nt
API Facade
Mediate
RESTAPI
RESTAPI
RESTAPI
RESTAPI
Design Ideal
Mainframe Comercial apps
Databases
Custom appsSaaS apps
SOAP RSSRemote
ProtocolsREST
like RPC
System Layer
Services Layer
Lega
do
Webinar Design de APIs RESTfulhttp://bit.ly/Sensedia_APIsRest
API-First
Estratégias “Sem Impacto” no código do Legado
AP
I P
adro
niz
ada
API-Front
HTTP/RESTLegado
Mediação, Transformação e Conexão
Client
Server
Legado
Databases
AP
I P
adro
niz
ada
API-Front
HTTP/REST
Arquitetura Web ou Client-Server
(Thin Client)
Acesso a Camada de
Serviços/APIs
- DCOM/COM+- Socket TCP- Winsock- Corba- RMI- SOAP- REST
AP
I “z
uad
a”
Legado
Req
uest
Res
po
nse
Padrões Comuns
URLs
https://api.flickr.com/services/rest/?method=flickr.galleries.addPhoto
Arquitetura Web ou Client-Server
(Thin Client)
Acesso a Camada de
Serviços/APIs
LegadoR
equ
est
Res
po
nse
https://api.flickr.com/services/rest/?method=flickr.galleries.create
API Front
Req
ue
st
Res
po
nse
https://api.flickr.com/services/v1/galleries
HTTP POST
Padrões Comuns
URLs
Arquitetura Web ou Client-Server
(Thin Client)
Acesso a Camada de
Serviços/APIs
Legado
AP
I P
adro
niz
ada
API-Front
HTTP/REST
Arquitetura Mainframe
Acesso a Camada de
“Serviços/APIs”
- HPR/IP- TCP/IP
Mainframe
CICS / IMS
Legado
AP
I P
adro
niz
ada
API-Front
HTTP/REST
Arquitetura Mainframe
Acesso a Camada de
“Serviços/APIs”
Mainframe
CICS / IMS
Padrões ComunsFormato de
Dados
00000000000000 000 .. RBON0060 00502360396300000501400000000000000000000000001204503102016071110000000000001 63703963000000000004052 000000
String Request
Legado
AP
I P
adro
niz
ada
API-Front
HTTP/REST
Arquitetura Mainframe
Acesso a Camada de
“Serviços/APIs”
Mainframe
CICS / IMS
Padrões ComunsFormato de
Dados
00000000000000 000 00004143 O RBON0060 00502370396300000500100000000201507100002002003201401052016060530000000000001 23703963000000000004049 000000000214300123FABIO ROSATO 004 201601040002176PAGTO COBRANCA VIA CELULAR 0000000000150002028073123791.01807 60000.000509 20001.632403 1 22550000015000001TITULO CANCELADO PELO CLIENTE Y066201013S000000000000000000000000000000NN0000000000000000000000 201509300002246PAGTO COBRANCA VIA INTERNET 0000000000020002015093023791.01807 60000.000509 20001.632403 1 65670000002000001TITULO CANCELADO PELO CLIENTE P014201013S000000000000000000000000000000NN0000000000000000000000 201509230002232PAGTO COBRANCA VIA INTERNET 0000000000018002015092300190.00009 01009.545243 00889.009189 4 65600000001800001TITULO CANCELADO PELO CLIENTE P014201013S000000000000000000000000000000NN0000000000000000000000 ......
String Response
Legado
AP
I P
adro
niz
ada
HTTP/REST
Arquitetura Mainframe
Acesso a Camada de
“Serviços/APIs”
Mainframe
CICS / IMS
Padrões ComunsFormato de
Dados
{
"mensagem": 974300,
"nomeCliente": “FABIO ROSATO",
“quantidade": 4,
"regSaida": [
{
"dataPagamento": "20160104",
"numeroProtocolo": 9176,
"dadosSegundaLinhaExtrato": "PAGTO COBRANCA VIA CELULAR",
....
JSON Response
API-Front
Acesso a Camada de
Serviços/APIs
Vantagens• Uso das funções (camada)
de negócio da aplicação• Não requer alterações de
código no lado da aplicação• Transformação de protocolo
e formato de dados pesadas
Riscos• A diversidade de protocolos
e suas peculiaridades• A tecnologia do API-Front
com adaptador do protocolo• Entender todos os serviços e
funções disponibilizadas• Dificuldade em ter aderência
RESTfull• Dilemas em cenários de
aparente composição• Escalabilidade
AppLegadão
Legado
Databases
AP
I P
adro
niz
ada
API-Front
HTTP/REST
Arquitetura Web, Client-Server, Database-
Centric, Monolitíca, Mainframe...
Acesso a Camada de
Dados
Database Connection
Acesso a Camada de
Dados
Vantagens• Não requer alterações de
código no lado da aplicação• Vai direto ao ponto
Riscos• Não há reaproveitamento
de regras de negócio, exceto se as regras estiverem em StoredProcedures
• Pode haver a necessidade de reimplementar algumas regras de negócio
• API-Front tende a ficar complexo e com baixa coesão
Arquitetura Web, Client-Server, Database-
Centric, Monolitíca, Mainframe...
Web Server
HTTPrequest/response
Envio de comandos get e post http e
parser do conteúdo html/dom
Web Client
Web FormLegado
AP
I P
adro
niz
ada
API-Front
HTTP/REST
Databases
Arquitetura Web (Thin Client)
Web Scraping ou Web
Harvesting
Arquitetura Web (Thin Client)
Web Scraping ou Web
Harvesting
Vantagens• Uso das funções (camada)
de negócio da aplicação• Uso do próprio protocolo
HTTP• Não requer alterações de
código no lado da aplicação• Interessante para um MVP
Riscos• Dificuldade de
implementação em HTMLs/DOM malformados
• Alterações no HTML/DOM tendem a quebra o código de Scraping
• Questões legais de direitos autorais
• Dados da aplicação que não são expostos em uma View.
https://github.com/lapwinglabs/x-ray
var path = require('path')
var read = require('fs').readFileSync
var html = read(path.resovlve(__dirname, 'index.html'))
var Xray = require('..')
var x = Xray()
x(html, 'h2')(console.log)
Arquitetura Web (Thin Client)
Web Scraping ou Web
Harvesting
Tecnologia
https://finbox.io/ORCLArquitetura Web
(Thin Client)
Web Scraping ou Web
Harvesting
Exemplo
Estratégias “Com Impacto” no código do Legado
AppLegadão
Legado
Databases
AP
I P
adro
niz
ada
HTTP/REST
Criar API Padronizada
Direto
AppLegadão
Legado
Databases
AP
I P
adro
niz
ada
API-Front
HTTP/REST
Criar API “zuada”
AP
I “z
uad
a”
- DCOM/COM+- Socket TCP- Winsock- Corba- RMI- SOAP- REST
Tecnologias
AP
I P
adro
niz
ada
API-Front
HTTP/RESTLegado
Mediação, Transformação e Conexão
Ao sabor da equipe
• Escolha módulos/frameworks leves (ex: Spring)
• Crie interceptadores para as exceções genéricas
• Prepare-se para ter várias classes utilitárias (ex: conexão, manipulação de strings etc)
• Quebre o API Façade em “microservices” (decomposição)
Dicas
Webinar Microserviceshttp://bit.ly/Sensedia_microservices
AP
I P
adro
niz
ada
API-Front
HTTP/RESTLegado
Mediação, Transformação e Conexão
- Ao sabor da equipe
Rate Limiting Monitoring & AlertsAuthentication Models Policy EnforcementException handlingAnalytics on API ConsumptionJSON Injection/XML InjectionCache
Rate Limiting PolicyJSON Threat PolicyPayload Size PolicyIP Filtering Policy
Enderece também no API-Front questões como:
Atenção
AP
I P
adro
niz
ada
API-Front
HTTP/RESTLegado
Mediação, Transformação e Conexão
Se tiver capacidade de conexão (adaptadores p/ backend) melhor!!! Ele pode assumir a responsabilidade do API-Front
API
Gateway
Amanhã logo cedo
Etapas
Plan & Prepare
Design & BuildRun & Engage
“Aqui é diferente... nosso caso é específico...”
“Estamos fazendo as coisas assim faz 30 anos, não é possível que estamos errado.”
BarreirasCulturais
AP
I Fro
nt
API Facade
Mediate
RESTAPI
RESTAPI
RESTAPI
RESTAPI
Design Ideal
Mainframe Comercial apps
Databases
Custom appsSaaS apps
SOAP RSSRemote
ProtocolsREST
like RPC
System Layer
Services Layer
Lega
do
API-Fist
Pattern
Legacy
Expose Objects
JSON
Down
Top
Vantagens• Usabilidade da API• Abstração
Riscos• Entender o domínio• Os vícios do legado
são resistentes
API Design
Mockup
API-FrontImplementation
API-FrontDesign
Publish
DeveloperFeedback
Design & Build
Try OutBackendAnalysis
API Design
Mockup
API-FrontImplementation
API-FrontDesign
Publish
DeveloperFeedback
Design & Build
Try OutBackendAnalysis
Faça a escolha
API
GatewayAPI
Gateway
CodeGen(server)
API Architect
API Developer
Backend ArchitectAPI Product Owner
Developer
Engagement
API Operator
A Equipe
Papéis- Planos- Roadmap de APIs- Modelo de negócio
- Identifica as APIs- Desenha as interfaces- Garante o DX- Data-mapping
- Constrói o API-Front
- Apoia o API Architect na análise bottom-up
- Publica as APIs- Monitora o uso- Configura políticas/alertas
- Onboarding dos App Dev- Suporte para os App Dev- Melhoria do portal- Feedbacks para API PO
Business Analyst
- Apoia no entendimento do negócio
1
2
3
Aproveite ao máximo o poder do legado para suas APIs
Escolha estratégias e tecnologias adequadas
Monte um time multidisciplinar e pense API-First
Obrigado!
Fábio [email protected] @frosato
www.slideshare.net/frosato/
Expondo APIs de back-endslegados e travados