SlideShare uma empresa Scribd logo
1 de 53
Baixar para ler offline
Fábio Rosato
fabio.rosato@sensedia.com
@frosato
Expondo APIs de back-ends
legados e travados
Fábio Rosato
Professional Services Manager & Teacher
fabio.rosato@sensedia.com
@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/
http://goo.gl/PdKRPfFonte:
GPlay:https://goo.gl/vPWMK7
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 RSS
Remote
Protocols
REST
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
APIFront
API Facade
Mediate
REST
API
REST
API
REST
API
REST
API
Design
Ideal
Mainframe Comercial apps
Databases
Custom appsSaaS apps
SOAP RSS
Remote
Protocols
REST
like RPC
System Layer
Services Layer
Legado
Webinar Design de APIs RESTful
http://bit.ly/Sensedia_APIsRest
API-First
Estratégias “Sem Impacto”
no código do Legado
API
Padronizada
API-Front
HTTP/REST
Legado
Mediação, Transformação e Conexão
Client
Server
Legado
Databases
API
Padronizada
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
API
“zuada”
LegadoRequest
Response
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
Legado
Request
Response
https://api.flickr.com/services/rest/?method=flickr.galleries.create
API Front
Request
Response
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
API
Padronizada
API-Front
HTTP/REST
Arquitetura
Mainframe
Acesso a
Camada de
“Serviços/APIs”
- HPR/IP
- TCP/IP
Mainframe
CICS / IMS
Legado
API
Padronizada
API-Front
HTTP/REST
Arquitetura
Mainframe
Acesso a
Camada de
“Serviços/APIs”
Mainframe
CICS / IMS
Padrões Comuns
Formato de
Dados
00000000000000
000
.. RBON0060
0050236039630000
0501400000000000
0000000000000012
0450310201607111
0000000000001
6370396300000000
0004052 000000
String Request
Legado
API
Padronizada
API-Front
HTTP/REST
Arquitetura
Mainframe
Acesso a
Camada de
“Serviços/APIs”
Mainframe
CICS / IMS
Padrões Comuns
Formato de
Dados
00000000000000 000 00004143 O RBON0060
005023703963000005001000000002015071000020020032014010520
16060530000000000001 23703963000000000004049
000000000214300123FABIO ROSATO 004
201601040002176PAGTO COBRANCA VIA CELULAR
0000000000150002028073123791.01807 60000.000509 20001.632403
1 22550000015000001TITULO CANCELADO PELO CLIENTE
Y066201013S000000000000000000000000000000NN00000000000000
00000000 201509300002246PAGTO COBRANCA VIA INTERNET
0000000000020002015093023791.01807 60000.000509 20001.632403
1 65670000002000001TITULO CANCELADO PELO CLIENTE
P014201013S000000000000000000000000000000NN00000000000000
00000000 201509230002232PAGTO COBRANCA VIA INTERNET
0000000000018002015092300190.00009 01009.545243 00889.009189
4 65600000001800001TITULO CANCELADO PELO CLIENTE
P014201013S000000000000000000000000000000NN00000000000000
00000000 ......
String Response
Legado
API
Padronizada
HTTP/REST
Arquitetura
Mainframe
Acesso a
Camada de
“Serviços/APIs”
Mainframe
CICS / IMS
Padrões Comuns
Formato 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
App
Legadão
Legado
Databases
API
Padronizada
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 Stored
Procedures
• 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
HTTP
request/response
Envio de comandos get e post http e
parser do conteúdo html/dom
Web Client
Web Form
Legado
API
Padronizada
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/ORCL
Arquitetura Web
(Thin Client)
Web Scraping
ou Web
Harvesting
Exemplo
Estratégias “Com Impacto”
no código do Legado
App
Legadão
Legado
Databases
API
Padronizada
HTTP/REST
Criar API
Padronizada
Direto
App
Legadão
Legado
Databases
API
Padronizada
API-Front
HTTP/REST
Criar API
“zuada”
API
“zuada”
- DCOM/COM+
- Socket TCP
- Winsock
- Corba
- RMI
- SOAP
- REST
Tecnologias
API
Padronizada
API-Front
HTTP/REST
Legado
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 Microservices
http://bit.ly/Sensedia_microservices
API
Padronizada
API-Front
HTTP/REST
Legado
Mediação, Transformação e Conexão
- Ao sabor da equipe
Rate Limiting
Monitoring & Alerts
Authentication Models
Policy Enforcement
Exception handling
Analytics on API Consumption
JSON Injection/XML Injection
Cache
Rate Limiting Policy
JSON Threat Policy
Payload Size Policy
IP Filtering Policy
Enderece também no API-Front questões como:
Atenção
API
Padronizada
API-Front
HTTP/REST
Legado
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.”
Barreiras
Culturais
APIFront
API Facade
Mediate
REST
API
REST
API
REST
API
REST
API
Design
Ideal
Mainframe Comercial apps
Databases
Custom appsSaaS apps
SOAP RSS
Remote
Protocols
REST
like RPC
System Layer
Services Layer
Legado
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-Front
Implementation
API-Front
Design
Publish
Developer
Feedback
Design & Build
Try Out
Backend
Analysis
API Design
Mockup
API-Front
Implementation
API-Front
Design
Publish
Developer
Feedback
Design & Build
Try Out
Backend
Analysis
Faça a escolha
API
Gateway
API
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 Rosato
fabio.rosato@sensedia.com
@frosato
www.slideshare.net/frosato/
Expondo APIs de back-ends
legados e travados

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Quality Engineering in the New Era
Quality Engineering in the New EraQuality Engineering in the New Era
Quality Engineering in the New Era
 
Why OutSystems
Why OutSystemsWhy OutSystems
Why OutSystems
 
Introduction to Jira.pdf
Introduction to Jira.pdfIntroduction to Jira.pdf
Introduction to Jira.pdf
 
How to take organizations to higher testing maturity suresh bose anagha mahaj...
How to take organizations to higher testing maturity suresh bose anagha mahaj...How to take organizations to higher testing maturity suresh bose anagha mahaj...
How to take organizations to higher testing maturity suresh bose anagha mahaj...
 
Testes em métodos ágeis
Testes em métodos ágeisTestes em métodos ágeis
Testes em métodos ágeis
 
Project Management Tips to Improve Test Planning
Project Management Tips to Improve Test PlanningProject Management Tips to Improve Test Planning
Project Management Tips to Improve Test Planning
 
Using Jenkins and Jmeter to build a scalable Load Testing solution
Using Jenkins and Jmeter to build a scalable Load Testing solutionUsing Jenkins and Jmeter to build a scalable Load Testing solution
Using Jenkins and Jmeter to build a scalable Load Testing solution
 
Alphabet and numbers
Alphabet and numbersAlphabet and numbers
Alphabet and numbers
 
ROI & Business Value of CI, CD, DevOps, DevSecOps, & Microservices
ROI & Business Value of CI, CD, DevOps, DevSecOps, & MicroservicesROI & Business Value of CI, CD, DevOps, DevSecOps, & Microservices
ROI & Business Value of CI, CD, DevOps, DevSecOps, & Microservices
 
Bug life cycle
Bug life cycleBug life cycle
Bug life cycle
 
Business Requirement Document
Business Requirement DocumentBusiness Requirement Document
Business Requirement Document
 
User Acceptance Testing- Evaluate Your System's Compliance
User Acceptance Testing- Evaluate Your System's ComplianceUser Acceptance Testing- Evaluate Your System's Compliance
User Acceptance Testing- Evaluate Your System's Compliance
 
Create Amazing Reports in OutSystems
Create Amazing Reports in OutSystemsCreate Amazing Reports in OutSystems
Create Amazing Reports in OutSystems
 
Jira Training
Jira TrainingJira Training
Jira Training
 
Bug life cycle
Bug life cycleBug life cycle
Bug life cycle
 
Test Axioms – An Introduction
Test Axioms – An IntroductionTest Axioms – An Introduction
Test Axioms – An Introduction
 
Quality Assurance Plan Google Slides
Quality Assurance Plan Google SlidesQuality Assurance Plan Google Slides
Quality Assurance Plan Google Slides
 
Test plan
Test planTest plan
Test plan
 
Performance testing
Performance testingPerformance testing
Performance testing
 
ISTQB foundation level - day 2
ISTQB foundation level - day 2ISTQB foundation level - day 2
ISTQB foundation level - day 2
 

Semelhante a Expondo APIs de back-ends legados e travados

Arquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk ServerArquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk Server
Markus Christen
 
Monitoração de Aplicações Distribuídas
Monitoração de Aplicações DistribuídasMonitoração de Aplicações Distribuídas
Monitoração de Aplicações Distribuídas
Markus Christen
 

Semelhante a Expondo APIs de back-ends legados e travados (20)

Fatec 2016 - Case Hackathon Campinas
Fatec 2016 - Case Hackathon CampinasFatec 2016 - Case Hackathon Campinas
Fatec 2016 - Case Hackathon Campinas
 
APIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a pontaAPIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a ponta
 
APIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a pontaAPIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a ponta
 
Repensando o ESB: sua arquitetura SOA, usando APIs
Repensando o ESB: sua arquitetura SOA, usando APIsRepensando o ESB: sua arquitetura SOA, usando APIs
Repensando o ESB: sua arquitetura SOA, usando APIs
 
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integraçõesPHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
 
Mobile Ria Para Aplicacoes Para Negocios
Mobile Ria Para Aplicacoes Para NegociosMobile Ria Para Aplicacoes Para Negocios
Mobile Ria Para Aplicacoes Para Negocios
 
DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...
DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...
DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...
 
Os 7 Pecados Capitais na exposição de APIs RESTful
Os 7 Pecados Capitais na exposição de APIs RESTfulOs 7 Pecados Capitais na exposição de APIs RESTful
Os 7 Pecados Capitais na exposição de APIs RESTful
 
Deck QCON SP 2018
Deck QCON SP 2018Deck QCON SP 2018
Deck QCON SP 2018
 
Impulsionando startups com api publica
Impulsionando startups com api publicaImpulsionando startups com api publica
Impulsionando startups com api publica
 
AAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambAAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcamb
 
APIs Atributos e Tecnologia
APIs Atributos e TecnologiaAPIs Atributos e Tecnologia
APIs Atributos e Tecnologia
 
Arquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk ServerArquitetura da plataforma com o Biztalk Server
Arquitetura da plataforma com o Biztalk Server
 
Minicurso IOT com javascript - SBTI
Minicurso IOT com javascript - SBTIMinicurso IOT com javascript - SBTI
Minicurso IOT com javascript - SBTI
 
Monitoração de Aplicações Distribuídas
Monitoração de Aplicações DistribuídasMonitoração de Aplicações Distribuídas
Monitoração de Aplicações Distribuídas
 
Industry 4.0- Managing the protocol zoo - SVC204 - São Paulo AWS Summit
Industry 4.0- Managing the protocol zoo - SVC204 - São Paulo AWS SummitIndustry 4.0- Managing the protocol zoo - SVC204 - São Paulo AWS Summit
Industry 4.0- Managing the protocol zoo - SVC204 - São Paulo AWS Summit
 
[ServiceNow] Visão geral da plataforma
[ServiceNow] Visão geral da plataforma[ServiceNow] Visão geral da plataforma
[ServiceNow] Visão geral da plataforma
 
PHP nas Nuvens
PHP nas NuvensPHP nas Nuvens
PHP nas Nuvens
 
Visão Geral De Desenvolvimento Web Sre 2012
Visão Geral De Desenvolvimento Web   Sre 2012Visão Geral De Desenvolvimento Web   Sre 2012
Visão Geral De Desenvolvimento Web Sre 2012
 
Testes em uma arquitetura com messageria/streaming (Kafka)
Testes em uma arquitetura com messageria/streaming (Kafka)Testes em uma arquitetura com messageria/streaming (Kafka)
Testes em uma arquitetura com messageria/streaming (Kafka)
 

Mais de Fábio Rosato

Vida longa para soa com microservices
Vida longa para soa com microservicesVida longa para soa com microservices
Vida longa para soa com microservices
Fábio Rosato
 

Mais de Fábio Rosato (7)

Impacto das mega tendências io t, cloud e mobile na arquitetura das grandes e...
Impacto das mega tendências io t, cloud e mobile na arquitetura das grandes e...Impacto das mega tendências io t, cloud e mobile na arquitetura das grandes e...
Impacto das mega tendências io t, cloud e mobile na arquitetura das grandes e...
 
Vantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservicesVantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservices
 
Vida longa para soa com microservices
Vida longa para soa com microservicesVida longa para soa com microservices
Vida longa para soa com microservices
 
Gestão de projetos consultivos com base em metodologias ágeis
Gestão de projetos consultivos com base em metodologias ágeisGestão de projetos consultivos com base em metodologias ágeis
Gestão de projetos consultivos com base em metodologias ágeis
 
Public API - Você está preparado para um mundo interconectado
Public API - Você está preparado para um mundo interconectadoPublic API - Você está preparado para um mundo interconectado
Public API - Você está preparado para um mundo interconectado
 
Vida longa para SOA com microservices
Vida longa para SOA com microservicesVida longa para SOA com microservices
Vida longa para SOA com microservices
 
APIs gerenciadas de ponta a ponta - construção
APIs gerenciadas de ponta a ponta - construçãoAPIs gerenciadas de ponta a ponta - construção
APIs gerenciadas de ponta a ponta - construção
 

Último

Último (8)

ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

Expondo APIs de back-ends legados e travados