apis gerenciadas de ponta a ponta

97
José Vahl [email protected] @josevahl APIs gerenciadas de ponta a ponta Fábio Rosato [email protected] @frosato

Upload: fabio-rosato

Post on 05-Jul-2015

105 views

Category:

Software


1 download

DESCRIPTION

Curso de gerenciamento de APIs realizado no HUB2014 em Dois Vizinhos/Paraná.

TRANSCRIPT

Page 1: APIs gerenciadas de ponta a ponta

José [email protected]@josevahl

APIs gerenciadas de ponta a ponta

Fábio [email protected]@frosato

Page 2: APIs gerenciadas de ponta a ponta

José Vahl

Page 3: APIs gerenciadas de ponta a ponta

Fábio Rosato

Gerente de Consultoria na Sensedia

Professor dos cursos de pós-graduação em SOA pelo IBMEC e Inatel

Atuação em diversos projetos complexos para grandes empresas grandes Cielo, Telefônica | Vivo, TIM,

Itaú, Bradesco Seguros entre outras

Page 4: APIs gerenciadas de ponta a ponta

Agenda

Sobre a Sensedia

Contextualização

Proposta de valor e Design

Construção da API

Execução e instrumentalização

Page 5: APIs gerenciadas de ponta a ponta

Sobre a Sensedia

Page 6: APIs gerenciadas de ponta a ponta

Design, Exposição, Gerenciamento e Engajamento em APIs

Headquarter em Campinas, escritórios em São Paulo, Rio e Philadelphia

Classificados como Visionários no Quadrante Mágico do Gartner

(*) Magic Quadrant for Integrated SOA Governance Technology Sets, 2009

Page 7: APIs gerenciadas de ponta a ponta
Page 8: APIs gerenciadas de ponta a ponta

Contextualização

Page 9: APIs gerenciadas de ponta a ponta

The Internetof Things

Page 10: APIs gerenciadas de ponta a ponta

O Tempo todocom o usuário

Compartilhandotudo com todos

Inundação de dados e contexto

Implantanto e rodandoem algum lugar

Source: Gartner (Jun/2012)

The Nexus of Forces

Page 11: APIs gerenciadas de ponta a ponta

Application Programming Interface é a cola digital que permite:

• Acelerar parcerias• Simplificar integração mobile-cloud• Impulsionar a inovação aberta• Integrar aplicações de software• e Criar novos negócios

APIs

Page 12: APIs gerenciadas de ponta a ponta

Proposta de valor e design

Page 13: APIs gerenciadas de ponta a ponta

16O tabuleiro das APIs

casas

Valor URI Recursos Operações

Versionamento Media Types Status Codes Filtros

Caching Segurança Callbacks Hypermedia

Documentação Construção Instrum/zação Divulgação

Page 14: APIs gerenciadas de ponta a ponta

APIStrategy

Plan &Prepare

Design& Build

Run &Engage

Page 15: APIs gerenciadas de ponta a ponta

APIStrategy

Plan &Prepare

Design& Build

Run &Engage

Plan &Prepare

Page 16: APIs gerenciadas de ponta a ponta

As primeiras decisões de design…

Page 17: APIs gerenciadas de ponta a ponta

Selecione a Tecnologia Adequada

RESTSOAP vs.

Page 18: APIs gerenciadas de ponta a ponta

Selecione a Tecnologia Adequada

JSONXML vs.

Page 19: APIs gerenciadas de ponta a ponta

and the winners are…

REST + JSON

Page 20: APIs gerenciadas de ponta a ponta

1Proposta de valor

Valor URI Recursos Operações

Versionamento Media Types Status Codes Filtros

Caching Segurança Callbacks Hypermedia

Documentação Construção Instrum/zação Divulgação

Page 21: APIs gerenciadas de ponta a ponta

“Você pode até passar batom num porco,mas ele continuará sendo um porco!”

Page 22: APIs gerenciadas de ponta a ponta

APIStrategy

Plan &Prepare

Design& Build

Run &Engage

Design &

Build

Muitosprojetos;Equipe

pequena

Design &Build

Page 23: APIs gerenciadas de ponta a ponta

2URI

Uniform ResourceIdentifier

Valor URI Recursos Operações

Versionamento Media Types Status Codes Filtros

Caching Segurança Callbacks Hypermedia

Documentação Construção Instrum/zação Divulgação

Page 24: APIs gerenciadas de ponta a ponta

URI: https://api.mycompany.com/name-of-api/resource

Estrutura Mínima

HTTP ouHTTPS

Seu domínio Nome da API(opcional)

Recursos eParâmetros

Page 25: APIs gerenciadas de ponta a ponta

3Recursos

Valor URI Recursos Operações

Versionamento Media Types Status Codes Filtros

Caching Segurança Callbacks Hypermedia

Documentação Construção Instrum/zação Divulgação

Page 26: APIs gerenciadas de ponta a ponta

RESTRepresentational State TransferEstilo arquitetural criado por Roy Fielding

RESTfulDesign que respeita os conceitos REST

Page 27: APIs gerenciadas de ponta a ponta

Coleção

/pedidos

Resources

Elemento

/pedidos/{id}

Page 28: APIs gerenciadas de ponta a ponta

/getAccount

/getAllAccounts

/createDirectory

/updateGroupName

/findClientById

RPC?

Page 29: APIs gerenciadas de ponta a ponta

4Operações

Valor URI Recursos Operações

Versionamento Media Types Status Codes Filtros

Caching Segurança Callbacks Hypermedia

Documentação Construção Instrum/zação Divulgação

Page 30: APIs gerenciadas de ponta a ponta

GET POST PUT DELETE

Page 31: APIs gerenciadas de ponta a ponta
Page 32: APIs gerenciadas de ponta a ponta

Resumo das Operações

Resource POST(create)

GET(read)

PUT(update, create)

DELETE(delete)

/pedidos Cria novo pedido

Lista pedidos -- Apaga todosos pedidos

/pedidos/3747 -- Mostra pedido3747

Atualiza pedido3747, se nãoexistir, cria

Apaga pedido3747

Page 33: APIs gerenciadas de ponta a ponta

Método de Consulta(Cachable, Safe, Idempotente)

GET /vendas/pedidos

GET /checklist/item/4

GET

POST

PUT

DELETE

PATCH

OPTIONS

HEAD

Page 34: APIs gerenciadas de ponta a ponta

Método para “Criação”(Unsafe, Não-Idempotente)

POST /clientes/9833201/enderecos

{

"endereco": "Av. Brigadeiro Faria Lima",

"numero": "3800",

"complemento": "18o. Andar",

"bairro": "Itaim Bibi",

"cidade": "São Paulo",

"estado": "SP",

"cep": "04538-132"

}

GET

POST

PUT

DELETE

PATCH

OPTIONS

HEAD

Page 35: APIs gerenciadas de ponta a ponta

GET

POST

PUT

DELETE

PATCH

OPTIONS

HEAD

Método para “Atualização”(Unsafe, Idempotente)

PUT /clientes/9833201/enderecos/1

{

"endereco": "Av. Brigadeiro Faria Lima",

"numero": "3800",

"complemento": "18o. Andar",

"bairro": "Itaim Bibi",

"cidade": "São Paulo",

"estado": "SP",

"cep": "04538-132"

}

Page 36: APIs gerenciadas de ponta a ponta

GET

POST

PUT

DELETE

PATCH

OPTIONS

HEAD

Método para Remoção(Unsafe, Idempotente)

DELETE /pedidos/39009186

DELETE /users/9877261/photos

Page 37: APIs gerenciadas de ponta a ponta

GET

POST

PUT

DELETE

PATCH

OPTIONS

HEAD

Método para Atualização parcial(Unsafe, Não-Idempotente)

PATCH /users/9833201

{

"email": "[email protected]"

}

PATCH /pedidos/39009186

{

"status": "Cancelado"

}

Page 38: APIs gerenciadas de ponta a ponta

GET

POST

PUT

DELETE

PATCH

OPTIONS

HEAD

OPTIONSQuais métodos são permitidos?

OPTIONS /clientes

Allow: HEAD,GET,POST,OPTIONS

HEADQuero ver apenas o Header

HEAD /clientes

Date: …

Content-Type: application/json

Content-Length: 12345

Page 39: APIs gerenciadas de ponta a ponta

5Versionamento

Valor URI Recursos Operações

Versionamento Media Types Status Codes Filtros

Caching Segurança Callbacks Hypermedia

Documentação Construção Instrum/zação Divulgação

Page 40: APIs gerenciadas de ponta a ponta

v1 v2 v3 v4 v5 v6 v7

THINGS CHANGE!

Page 41: APIs gerenciadas de ponta a ponta

Versionamento

Versão

URI: https://api.mycompany.com/name-of-api/v2/resource

HTTP ouHTTPS

Seu domínio Nome da API(opcional)

Recursos eParâmetros

Outras alternativas:• Twilio: /2010-04-01/Accounts/ • Salesforce.com: /services/data/v20.0/sobjects/Account

Page 42: APIs gerenciadas de ponta a ponta

6Media Types

Valor URI Recursos Operações

Versionamento Media Types Status Codes Filtros

Caching Segurança Callbacks Hypermedia

Documentação Construção Instrum/zação Divulgação

Page 43: APIs gerenciadas de ponta a ponta

Media Types

application/json

vnd.{nome_empresa}.{nome_media_type}+{formato}

application/xml

Formatos Padronizados:

Formatos Proprietários:

application/vnd.minhaempresa.pedido+json

Accept: application/json

Parâmetros no Header:

Content-Type: application/json

Response:Request:

Page 44: APIs gerenciadas de ponta a ponta

7Status Codes

Valor URI Recursos Operações

Versionamento Media Types Status Codes Filtros

Caching Segurança Callbacks Hypermedia

Documentação Construção Instrum/zação Divulgação

Page 45: APIs gerenciadas de ponta a ponta

200

400

500

Resultado OK

Erro no Cliente

Erro no Servidor

Page 46: APIs gerenciadas de ponta a ponta

STATUS OK 200

Page 47: APIs gerenciadas de ponta a ponta

200

400

500

Status & Error Codes

200 OK

GET /candidatos?estado=SP&partido=PP

200 OK

[

{

"id": "1532962",

"apelido": "PAULO MALUF",

"nome": "PAULO SALIM MALUF",

"numero": "1111",

"cargo": "Deputado Federal",

"estado": "SP",

"partido": "PP",

"reeleicao": true

}

]

Page 48: APIs gerenciadas de ponta a ponta

200

400

500

Status & Error Codes

201 Created

POST /items/1234/bids

{

"amount" : 602.99

}

201 Created

Location: /items/1234/bids/100001

{

"amount" : 602.99,

"current_bid" : 510,

"winning" : true

}

Page 49: APIs gerenciadas de ponta a ponta

200

400

500

Status & Error Codes

400 Bad Request

GET /candidatos

400 Bad Request

{

"status" : 400,

"code" : 40377,

"message" : "Parâmetro 'estado' não

pode ser nulo ou vazio"

"more" : https://dev.empresa.com/errors/40377

}

Page 50: APIs gerenciadas de ponta a ponta

200

400

500

Status & Error Codes

Outros Comuns

401

403

404

413

429

Unauthorized

Forbidden

Not Found

Request is too Large

Too Many Requests

Page 51: APIs gerenciadas de ponta a ponta

200

400

500

Status & Error Codes

500 Internal Server Error

PUT /vendas/v1/pedidos/9940382

{

”status" : canceled

}

500 Internal Server Error

{

"status" : 500,

"message": ”Oops. Algo saiu errado”

}

http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

Page 52: APIs gerenciadas de ponta a ponta

8Filtros e

Paginação

Valor URI Recursos Operações

Versionamento Media Types Status Codes Filtros

Caching Segurança Callbacks Hypermedia

Documentação Construção Instrum/zação Divulgação

Page 53: APIs gerenciadas de ponta a ponta

FiltrosGET /vendas/v2/pedidos?status=concluido

GET /pedidos/123AF15J?_fields=numero,data,valor

Busca com escopo (subconjuntos):

Respostas parciais:

GET /search?q=macbook+air

Busca Global:

Page 54: APIs gerenciadas de ponta a ponta

Paginação

GET /pedidos?_offset=50&_limit=25

Recomendação:

Outras opções:

Linkedin:

Instagram:

?start=50&count=25

?min_id=3091&max_id=3245&count=25

Page 55: APIs gerenciadas de ponta a ponta

9Caching

Valor URI Recursos Operações

Versionamento Media Types Status Codes Filtros

Caching Segurança Callbacks Hypermedia

Documentação Construção Instrum/zação Divulgação

Page 56: APIs gerenciadas de ponta a ponta

Caching

Evite tráfego desnecessárioLatência de rede

Sobrecarga nos servidores

Atenção

Tempo de invalidação do cache Sincronização em clusters

Page 57: APIs gerenciadas de ponta a ponta

10Segurança

Valor URI Recursos Operações

Versionamento Media Types Status Codes Filtros

Caching Segurança Callbacks Hypermedia

Documentação Construção Instrum/zação Divulgação

Page 58: APIs gerenciadas de ponta a ponta

Acesso não autorizado

Ataques

Sobrecarga

Confidencialidade

Implementações desastradas em clients

Page 59: APIs gerenciadas de ponta a ponta

Acesso não autorizado

Ataques

Sobrecarga

Confidencialidade

Implementações desastradas em clients

Page 60: APIs gerenciadas de ponta a ponta
Page 61: APIs gerenciadas de ponta a ponta

Identificar App (?)

Identificar Usuário (?)

Identificar Device (?)

Identidade e

Autorização

Page 62: APIs gerenciadas de ponta a ponta

Realtime API Traffic

https://api.[you].com/…

Powered by

API Gateway

Rate Limiting

Monitoring & Alerts

Authentication Models

Policy Enforcement

Exception handling

Analytics on API Consumption

Partners’ AppsMobile Apps

Internal Services@Backend

API Gateway Architecture

Page 63: APIs gerenciadas de ponta a ponta

11Callbacks

Valor URI Recursos Operações

Versionamento Media Types Status Codes Filtros

Caching Segurança Callbacks Hypermedia

Documentação Construção Instrum/zação Divulgação

Page 64: APIs gerenciadas de ponta a ponta

Já chegamos?Já chegamos?

Já chegamos?Já chegamos?

Já chegamos?

Stop Pooling Me

Page 65: APIs gerenciadas de ponta a ponta

Marketplace API

Consulta estoque

Cálculo de frete

Novo pedido recebido

https://api.mywebstore.com/v1/estoque

https://api.mywebstore.com/v1/frete

https://api.mywebstore.com/v1/pedido

Chamadas Reversas:

Page 66: APIs gerenciadas de ponta a ponta

12Hypermedia

Valor URI Recursos Operações

Versionamento Media Types Status Codes Filtros

Caching Segurança Callbacks Hypermedia

Documentação Construção Instrum/zação Divulgação

Page 67: APIs gerenciadas de ponta a ponta

Hypermedia APIs

*POX = Plain Old XML, Richardson Maturity Model

HATEOAS = Hypermedia as the Engine of Application State

Page 68: APIs gerenciadas de ponta a ponta

GET /items?q=macbook+air+new

{

"results" : [

{

"id" : 123,

"name" : "Macbook Air 2010 LIKE NEW",

"price" : "499"

}

]

}

SEMHypermedia

Page 69: APIs gerenciadas de ponta a ponta

COMHypermedia

GET /items?q=macbook+air+new

{

"results" : [

{

"_links" : [

{"rel": "self","uri": "/items/123" },

{"rel": "bids","uri": "/items/123/bids" },

{"rel": "win","uri": "/items/123/bids?q=win" }

],

"name" : "Macbook Air 2010 LIKE NEW",

"price" : "499"

}

]

}

Page 70: APIs gerenciadas de ponta a ponta

APIStrategy

Plan &Prepare

Design& Build

Run &Engage

Run &Engage

Muitosprojetos;Equipe

pequena

Run &Engage

Page 71: APIs gerenciadas de ponta a ponta

13Documentação

interativa

Valor URI Recursos Operações

Versionamento Media Types Status Codes Filtros

Caching Segurança Callbacks Hypermedia

Documentação Construção Instrum/zação Divulgação

Page 72: APIs gerenciadas de ponta a ponta

Docs incompletos, desatualizados, estáticos e com PDFs de 100 páginas

Page 73: APIs gerenciadas de ponta a ponta

API Portal

Developers

https://developers.[you].com

Powered by

Introdução, tutoriais e exemplos de códigos

Self-service Signup

Documentação interativa(API Browsing)

Forum, Blog & Dev support

Testes facilitados (Sandbox)

Dev. Dashboard

API Developers Portal

Page 74: APIs gerenciadas de ponta a ponta
Page 75: APIs gerenciadas de ponta a ponta

Getting Started

www.twilio.com/docs

Page 76: APIs gerenciadas de ponta a ponta

DocumentaçãoInterativa

desenvolvedores.extra.com.br

Page 77: APIs gerenciadas de ponta a ponta

Exemplos de código nalinguagem

do developer

sendgrid.com/docs

Page 78: APIs gerenciadas de ponta a ponta

Sign-up e Tokens de acesso automáticos

stripe.com/docs

Page 79: APIs gerenciadas de ponta a ponta

REST Console ouSandbox / Playgroung

dev.transparencia.org.br

Page 80: APIs gerenciadas de ponta a ponta

14Construção

Valor URI Recursos Operações

Versionamento Media Types Status Codes Filtros

Caching Segurança Callbacks Hypermedia

Documentação Construção Instrum/zação Divulgação

Page 81: APIs gerenciadas de ponta a ponta

Hold on…

Page 82: APIs gerenciadas de ponta a ponta

15Instrumentalização

Valor URI Recursos Operações

Versionamento Media Types Status Codes Filtros

Caching Segurança Callbacks Hypermedia

Documentação Construção Instrum/zação Divulgação

Page 83: APIs gerenciadas de ponta a ponta
Page 84: APIs gerenciadas de ponta a ponta

ConfiabilidadeBugs

Problemas de Performance

Indisponibilidade

Mudanças(não-planejadas)

Falta de Suporte

Page 85: APIs gerenciadas de ponta a ponta

API Suite

• Login / signup

• Criação de Apps

• Gestão de tokens

• Foruns e suporte

• Sandbox

• Dev Dashboard

Backend

• Autenticação

• Roteamento

• Políticas / quotas

• Degub / trace

• Monitoramento

• Gestão de tokens

Page 86: APIs gerenciadas de ponta a ponta

www.sensedia.com/br

Trace de calls,Monitoramento,Rate Limiting e

Alertas

Page 87: APIs gerenciadas de ponta a ponta

status.aws.amazon.com

Status Page, Release Notes,

Blog

Page 88: APIs gerenciadas de ponta a ponta

Foruns de discussãoe Abertura de tickets

desenvolvedores.extra.com.br

Page 89: APIs gerenciadas de ponta a ponta

16Divulgação

Valor URI Recursos Operações

Versionamento Media Types Status Codes Filtros

Caching Segurança Callbacks Hypermedia

Documentação Construção Instrum/zação Divulgação

Page 90: APIs gerenciadas de ponta a ponta

Hackathon & Open Innovation

Page 91: APIs gerenciadas de ponta a ponta

1 Apps criadas: 300+

2 Developers cadastrados: 800+

3 Tráfego: 20M calls / 15 dias

4 Eleições mais transparentes!

Page 92: APIs gerenciadas de ponta a ponta

APIStrategy

Plan &Prepare

Design& Build

Run &Engage

Page 93: APIs gerenciadas de ponta a ponta

Valor URI Recursos Operações

Versionamento Media Types Status Codes Filtros

Caching Segurança Callbacks Hypermedia

Documentação Construção Instrum/zação Divulgação

Page 94: APIs gerenciadas de ponta a ponta

Construção da API

Page 95: APIs gerenciadas de ponta a ponta

Execução e instrumentalização

Page 96: APIs gerenciadas de ponta a ponta

Junte-se ao time!

Page 97: APIs gerenciadas de ponta a ponta

Fábio [email protected]@frosato

José [email protected]@josevahl