expondo apis de back-ends legados e travados

53
Fábio Rosato [email protected] @frosato Expondo APIs de back-ends legados e travados

Upload: fabio-rosato

Post on 21-Feb-2017

251 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Expondo APIs de back-ends legados e travados

Fábio [email protected] @frosato

Expondo APIs de back-endslegados e travados

Page 2: Expondo APIs de back-ends legados e travados

Fábio RosatoProfessional Services Manager & [email protected]@frosato

Page 3: Expondo APIs de back-ends legados e travados

Every Business

is Digital

API enables

Digital

Sensedia

powers your API

Strategy

IT Architecture

Enabling Digital Transformation

Page 4: Expondo APIs de back-ends legados e travados

Agenda

APIs e Legados

Estratégias de Exposição

Tecnologia

Amanhã logo cedo

Page 5: Expondo APIs de back-ends legados e travados

APIs e Legados

Page 6: Expondo APIs de back-ends legados e travados

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.

Page 7: Expondo APIs de back-ends legados e travados

Open Innovation

Fonte: http://hackathon.ima.sp.gov.br/

Page 8: Expondo APIs de back-ends legados e travados

Fonte: http://hackathon.ima.sp.gov.br/

Page 9: Expondo APIs de back-ends legados e travados

http://goo.gl/PdKRPfFonte:GPlay:https://goo.gl/vPWMK7

Page 10: Expondo APIs de back-ends legados e travados

Plataformas IoT Mobile

Page 11: Expondo APIs de back-ends legados e travados

Legado

Page 12: Expondo APIs de back-ends legados e travados

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

Page 13: Expondo APIs de back-ends legados e travados

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

Page 14: Expondo APIs de back-ends legados e travados

Arquiteturas Reais

Mainframe Comercial apps

Databases

Custom appsSaaS apps

SOAP RSSRemote

ProtocolsREST

like RPC

System Layer

Services Layer

Page 15: Expondo APIs de back-ends legados e travados

Estratégias de Exposição

Page 16: Expondo APIs de back-ends legados e travados

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

Page 17: Expondo APIs de back-ends legados e travados

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

Page 18: Expondo APIs de back-ends legados e travados

Estratégias “Sem Impacto” no código do Legado

Page 19: Expondo APIs de back-ends legados e travados

AP

I P

adro

niz

ada

API-Front

HTTP/RESTLegado

Mediação, Transformação e Conexão

Page 20: Expondo APIs de back-ends legados e travados

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”

Page 21: Expondo APIs de back-ends legados e travados

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

Page 22: Expondo APIs de back-ends legados e travados

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

Page 23: Expondo APIs de back-ends legados e travados

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

Page 24: Expondo APIs de back-ends legados e travados

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

Page 25: Expondo APIs de back-ends legados e travados

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

Page 26: Expondo APIs de back-ends legados e travados

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

Page 27: Expondo APIs de back-ends legados e travados

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

Page 28: Expondo APIs de back-ends legados e travados

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

Page 29: Expondo APIs de back-ends legados e travados

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...

Page 30: Expondo APIs de back-ends legados e travados

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

Page 31: Expondo APIs de back-ends legados e travados

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.

Page 32: Expondo APIs de back-ends legados e travados

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

Page 33: Expondo APIs de back-ends legados e travados

https://finbox.io/ORCLArquitetura Web

(Thin Client)

Web Scraping ou Web

Harvesting

Exemplo

Page 34: Expondo APIs de back-ends legados e travados

Estratégias “Com Impacto” no código do Legado

Page 35: Expondo APIs de back-ends legados e travados

AppLegadão

Legado

Databases

AP

I P

adro

niz

ada

HTTP/REST

Criar API Padronizada

Direto

Page 36: Expondo APIs de back-ends legados e travados

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

Page 37: Expondo APIs de back-ends legados e travados

Tecnologias

Page 38: Expondo APIs de back-ends legados e travados

AP

I P

adro

niz

ada

API-Front

HTTP/RESTLegado

Mediação, Transformação e Conexão

Ao sabor da equipe

Page 39: Expondo APIs de back-ends legados e travados

• 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

Page 40: Expondo APIs de back-ends legados e travados

AP

I P

adro

niz

ada

API-Front

HTTP/RESTLegado

Mediação, Transformação e Conexão

- Ao sabor da equipe

Page 41: Expondo APIs de back-ends legados e travados

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

Page 42: Expondo APIs de back-ends legados e travados

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

Page 43: Expondo APIs de back-ends legados e travados

Amanhã logo cedo

Page 44: Expondo APIs de back-ends legados e travados

Etapas

Plan & Prepare

Design & BuildRun & Engage

Page 45: Expondo APIs de back-ends legados e travados

“Aqui é diferente... nosso caso é específico...”

“Estamos fazendo as coisas assim faz 30 anos, não é possível que estamos errado.”

BarreirasCulturais

Page 46: Expondo APIs de back-ends legados e travados

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

Page 47: Expondo APIs de back-ends legados e travados

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

Page 48: Expondo APIs de back-ends legados e travados

API Design

Mockup

API-FrontImplementation

API-FrontDesign

Publish

DeveloperFeedback

Design & Build

Try OutBackendAnalysis

Page 49: Expondo APIs de back-ends legados e travados

API Design

Mockup

API-FrontImplementation

API-FrontDesign

Publish

DeveloperFeedback

Design & Build

Try OutBackendAnalysis

Faça a escolha

API

GatewayAPI

Gateway

CodeGen(server)

Page 50: Expondo APIs de back-ends legados e travados

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

Page 51: Expondo APIs de back-ends legados e travados

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

Page 52: Expondo APIs de back-ends legados e travados

Obrigado!

Page 53: Expondo APIs de back-ends legados e travados

Fábio [email protected] @frosato

www.slideshare.net/frosato/

Expondo APIs de back-endslegados e travados