Design de APIs RESTful Seguras e Escaláveis

Post on 17-Jul-2015

221 views 0 download

Transcript of Design de APIs RESTful Seguras e Escaláveis

Kleber  Bacili  kleber.bacili@sensedia.com  @kleberbacili  

Design  de  APIs  RESTful    –  Seguras,  Escaláveis  e  Interoperáveis  –  

www.slideshare.net/kleberbacili/  

Kleber  Bacili  kleber.bacili@sensedia.com  @kleberbacili  

Cerquilho  

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

v  Headquarter  em  Campinas,    escritórios  em  Sampa,  Rio  e  Philly  

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

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

As  APIs  estão  por    toda  parte…  

Fonte:  ProgrammableWeb  

Clube  dos  Bilhões  5+  Bilhões  de  Calls/Dia  1+  Bilhões  de  Calls/Dia  

Startup  BaKlefield  

78%  

The  Internet  of  Things  

Open  Banking?  

²  Eu  ainda  não  tenho  API…..  ²  Eu  nem  sei  como  fazer  uma  API…..  

²  E  a  segurança…..  

10 Dicas  para  a  sua  API  

ser  um  sucesso  

Dica  Zero!  

Selecione  a  Tecnologia  Adequada  

REST SOAP vs.

Selecione  a  Tecnologia  Adequada  

JSON XML vs.

and the winners are…

REST + JSON

1 Proposta  de  Valor  

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

2 Design  RESTful  

Coleção  /pedidos!

Resources  Elemento  

/pedidos/{id} !

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

RPC?  

VERBOS  

GET /vendas/pedidos!

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

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

DELETE /users/98W3G32K01/photos !

PATCH /users/98W3G32K01 !{…}  

3 Versionamento  

v1   v2   v3   v4   v5   v6   v7  

THINGS  CHANGE!  

Versionamento  

Versão  

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

HTTP  ou    HTTPS  

Seu  domínio   Nome  da  API  (opcional)  

Recursos  e  Parâmetros  

4 Error  Handling  

200 !

400 !

500 !

Resultado  OK  

Erro  no  Client  

Erro  no  Server  

STATUS   OK 200 !

Mais  informações?  

Vídeo  do  Webinar  

hRp://downloads.sensedia.com/webinar-­‐design-­‐de-­‐apis-­‐resYul  

5 Segurança  

v Acesso  não  autorizado  v Ataques  v Sobrecarga  v Confidencialidade  v  Implementações    

desastradas  de  clients  

v Acesso  não  autorizado  v Ataques  v Sobrecarga  v Confidencialidade  v  Implementações    

desastradas  de  clients  

þ  Identificar App (?)

þ  Identificar Usuário (?)

þ  Identificar Device (?)

Identidade e Autorização

HTTPS,  sempre!  

6 Hypermedia  

Hypermedia  APIs  

*POX  =  Plain  Old  XML,  Richardson  Maturity  Model  

HATEOAS  =  Hypermedia  as  the  Engine  of  Applica^on  State  

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

SEM  Hypermedia  

COM  Hypermedia  

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"   } ! ] !}  

7 Developers  Portal  

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

Gemng    Started  

www.twilio.com/docs !

Documentação    InteraZva  

desenvolvedores.extra.com.br!

Exemplos  de    código  na    linguagem    

do  developer  

sendgrid.com/docs !

UX  

(Developer  Experience)  

DX  

8 Self-­‐Service  

Sign-­‐up  e  Tokens  de  acesso  automáZcos  

stripe.com/docs !

REST  Console  ou    Sandbox  /  Playgroung  

dev.transparencia.org.br!

9 Confiabilidade  

Confiabilidade  Bugs  

Problemas  de  Performance  

Indisponibilidade  

Mudanças    (não-­‐planejadas)  

Falta  de  Suporte  

www.sensedia.com/br !

Trace  de  calls,  Monitoramento,  Rate  LimiZng  e  

Alertas  

status.aws.amazon.com!

Status  Page,  Release  Notes,  

Blog  

Foruns  de  discussão  e  Abertura  de  Zckets  

desenvolvedores.extra.com.br!

10 Divulgação  

Hackathon  &  Open  InnovaZon  

1 Developers  Cadastrados:  800+        2 Apps  Criadas:  300+        3 Tráfego:  20M  calls  /  15  dias        4 Eleições  mais  transparentes!    

The  Power  of  Open  

The  Power  of  Open  hRps://www.youtube.com/watch?v=7r7QpIDEI_o  

Design  RESTful  2 1 Proposta  de  Valor  

3 Versionamento  

4 Error  Handling  5 Segurança  

7 Developers  Portal  6 Hypermedia  

8 Self-­‐Service  9 Confiabilidade  

10 Divulgação  

Kleber  Bacili  kleber.bacili@sensedia.com  @kleberbacili  

www.slideshare.net/kleberbacili/  

Design  de  APIs  RESTful    –  Seguras,  Escaláveis  e  Interoperáveis  –