Design APIs Restful, DevWeek Porto Alegre

59
Kleber Bacili [email protected] @kleberbacili Design de APIs RESTful – Seguras, Escaláveis e Interoperáveis –

Transcript of Design APIs Restful, DevWeek Porto Alegre

Page 1: Design APIs Restful, DevWeek Porto Alegre

[email protected]@kleberbacili

DesigndeAPIsRESTful–Seguras,EscaláveiseInteroperáveis–

Page 2: Design APIs Restful, DevWeek Porto Alegre

[email protected]@kleberbacili

Page 3: Design APIs Restful, DevWeek Porto Alegre

v  SOA,MicroserviceseAPIs

v  Projetosbacaníssimos

v  Ferramentassensacionais

v  HeadquarteremCampinas,escritóriosemSP,RioeEUA

Page 4: Design APIs Restful, DevWeek Porto Alegre

AsAPIsestãoportodaparte…

Page 5: Design APIs Restful, DevWeek Porto Alegre
Page 6: Design APIs Restful, DevWeek Porto Alegre

StartupBaLlefield

78%

Page 7: Design APIs Restful, DevWeek Porto Alegre

TheInternetofThings

Page 8: Design APIs Restful, DevWeek Porto Alegre

Startups Battlefield

78%

Page 9: Design APIs Restful, DevWeek Porto Alegre
Page 10: Design APIs Restful, DevWeek Porto Alegre

Open API: Plataforma que permite que empresas parceiras criem novas soluções

integradas ao banco (by Sensedia)

Page 11: Design APIs Restful, DevWeek Porto Alegre

API Calls: +280% Outubro 2014/2015 @ Sensedia API Gateway

Page 12: Design APIs Restful, DevWeek Porto Alegre

10 DicasparaasuaAPI

serumsucesso

Page 13: Design APIs Restful, DevWeek Porto Alegre

DicaZero!

Page 14: Design APIs Restful, DevWeek Porto Alegre

SelecioneaTecnologiaAdequada

REST SOAP vs.

Page 15: Design APIs Restful, DevWeek Porto Alegre

SelecioneaTecnologiaAdequada

JSON XML vs.

Page 16: Design APIs Restful, DevWeek Porto Alegre

and the winners are…

REST + JSON

Page 17: Design APIs Restful, DevWeek Porto Alegre

1 PropostadeValor

Page 18: Design APIs Restful, DevWeek Porto Alegre

“Vocêpodeatépassarbatomnumporco,maseleconVnuarásendoumporco!”

Page 19: Design APIs Restful, DevWeek Porto Alegre

2 DesignRESTful

Page 20: Design APIs Restful, DevWeek Porto Alegre

Coleção/pedidos!

ResourcesElemento

/pedidos/{id} !

Page 21: Design APIs Restful, DevWeek Porto Alegre

/getAccount!/getAllAccounts!/createDirectory!/updateGroupName!/findClientById!

RPC?

Page 22: Design APIs Restful, DevWeek Porto Alegre

VERBOS

Page 23: Design APIs Restful, DevWeek Porto Alegre

GET /vendas/pedidos!

POST /clientes/98W3G32K01/enderecos!{…}

PUT /clientes/98W3G32K01/enderecos/1 !{…}

DELETE /users/98W3G32K01/photos !

PATCH /users/98W3G32K01 !{…}

Page 24: Design APIs Restful, DevWeek Porto Alegre
Page 25: Design APIs Restful, DevWeek Porto Alegre

3 Versionamento

Page 26: Design APIs Restful, DevWeek Porto Alegre

THINGS CHANGE!

v1

v2v3 v4

Page 27: Design APIs Restful, DevWeek Porto Alegre

Versionamento

Versão

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

HTTPouHTTPS

Seudomínio NomedaAPI(opcional)

RecursoseParâmetros

Page 28: Design APIs Restful, DevWeek Porto Alegre

4 ErrorHandling

Page 29: Design APIs Restful, DevWeek Porto Alegre

200 !

400 !

500 !

ResultadoOK

ErronoClient

ErronoServer

Page 30: Design APIs Restful, DevWeek Porto Alegre

STATUS OK 200 !

Page 31: Design APIs Restful, DevWeek Porto Alegre

Maisinformações?

VídeodoWebinar

hAp://downloads.sensedia.com/webinar-design-de-apis-resIul

Page 32: Design APIs Restful, DevWeek Porto Alegre

5 Segurança

Page 33: Design APIs Restful, DevWeek Porto Alegre

v Acessonãoautorizadov Ataquesv Privacidadev  Integridadev Disponibilidade

Page 34: Design APIs Restful, DevWeek Porto Alegre

v Acessonãoautorizadov Ataquesv Privacidadev  Integridadev Disponibilidade

Page 35: Design APIs Restful, DevWeek Porto Alegre

Usuários Apps

BasicHTTP OAuth2 OpenIDConnect

EstratégiasdeAutenVcação/Autorização

AppToken

Page 36: Design APIs Restful, DevWeek Porto Alegre

ClientApps

APIs

RateLimiVngPolicyJSONThreatPolicyPayloadSizePolicyIPFilteringPolicy…

APIGateway

Page 37: Design APIs Restful, DevWeek Porto Alegre

OsFundamentosdaSegurançadeAPIs

WEBINAR

hAp://downloads.sensedia.com/webinar-seguranca-de-apis

Page 38: Design APIs Restful, DevWeek Porto Alegre

6 Hypermedia

Page 39: Design APIs Restful, DevWeek Porto Alegre

GET /items?q=macbook+air+new { ! "results" : [ ! { ! "id" : 123, ! "name" : "Macbook Air 2010 LIKE NEW", ! "price" : "499" ! } ! ] !}

SEMHypermedia

HATEOAS=HypermediaastheEngineofApplica;onState

Page 40: Design APIs Restful, DevWeek Porto Alegre

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 41: Design APIs Restful, DevWeek Porto Alegre

7 DevelopersPortal

Page 42: Design APIs Restful, DevWeek Porto Alegre

Docsincompletos,desatualizados,estáVcosecomPDFsde100páginas

Page 43: Design APIs Restful, DevWeek Porto Alegre

GemngStarted

www.twilio.com/docs !

Page 44: Design APIs Restful, DevWeek Porto Alegre

desenvolvedores.cnova.com

DocumentaçãoInteraVva

Page 45: Design APIs Restful, DevWeek Porto Alegre

Exemplosdecódigonalinguagem

dodeveloper

sendgrid.com/docs !

Page 46: Design APIs Restful, DevWeek Porto Alegre

UX

(DeveloperExperience)

DX

Page 47: Design APIs Restful, DevWeek Porto Alegre

8 OVmizações

Page 48: Design APIs Restful, DevWeek Porto Alegre

CachingEvitetráfegodesnecessário

Latênciaderede

Sobrecarganosservidores

Page 49: Design APIs Restful, DevWeek Porto Alegre

FiltrosGET /vendas/v2/pedidos?_status=concluido!

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

Buscacomescopo(subconjuntos):

Respostasparciais:

Page 50: Design APIs Restful, DevWeek Porto Alegre

PaginaçãoGET /pedidos?_offset=50&_limit=25 !

Recomendação:

Outrasopções:Linkedin:

Instagram:

?start=50&count=25

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

Page 51: Design APIs Restful, DevWeek Porto Alegre

9 Confiabilidade

Page 52: Design APIs Restful, DevWeek Porto Alegre

ConfiabilidadeBugs

ProblemasdePerformance

Indisponibilidade

Mudanças(não-planejadas)

FaltadeSuporte

Page 53: Design APIs Restful, DevWeek Porto Alegre

Tracedecalls,Monitoramento,RateLimiVng,StatusPagee

Alertas

Page 54: Design APIs Restful, DevWeek Porto Alegre

10 Divulgação

Page 55: Design APIs Restful, DevWeek Porto Alegre

Hackathon&OpenInnovaVon

Page 56: Design APIs Restful, DevWeek Porto Alegre

1 DevelopersCadastrados:800+2 AppsCriadas:300+3 Tráfego:20Mcalls/15dias4 Eleiçõesmaistransparentes!

Page 57: Design APIs Restful, DevWeek Porto Alegre

DesignRESTful2 1 PropostadeValor

3 Versionamento

4 ErrorHandling5 Segurança

7 DevelopersPortal6 Hypermedia

8 OVmizações

9 Confiabilidade10 Divulgação

Page 58: Design APIs Restful, DevWeek Porto Alegre

www.slideshare.net/kleberbacili/

Page 59: Design APIs Restful, DevWeek Porto Alegre

[email protected]@kleberbacili

www.slideshare.net/kleberbacili/

DesigndeAPIsRESTful–Seguras,EscaláveiseInteroperáveis–