APIs gerenciadas de ponta a ponta

924 visualizações

Publicada em

Há diversas razões que levam uma empresa a expor APIs. Algumas delas são: aumentar o alcance de suas parcerias; facilitar a integração “mobile-cloud”; posicionar-se como uma plataforma; inovar “abertamente”; aumentar a governança e reduzir custos.

Nesse minicurso exploramos todo o ciclo de vida das APIs gerenciadas em REST/JSON, os mecanismos de segurança, políticas de acessos, monitoração, comunicação e controles.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
924
No SlideShare
0
A partir de incorporações
0
Número de incorporações
7
Ações
Compartilhamentos
0
Downloads
16
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

APIs gerenciadas de ponta a ponta

  1. 1. José Vahl jose.vahl@sensedia.com @josevahl APIs gerenciadas de ponta a ponta Fábio Rosato fabio.rosato@sensedia.com @frosato
  2. 2. José Vahl
  3. 3.  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 Fábio Rosato
  4. 4. Agenda Sobre a Sensedia Contextualização Proposta de valor e Design Construção da API Execução e instrumentalização
  5. 5. Sobre a Sensedia
  6. 6.  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
  7. 7. Contextualização
  8. 8. The Internet of Things
  9. 9. O Tempo todo com o usuário Compartilhando tudo com todos The Nexus of Forces Inundação de dados e contexto Implantanto e rodando em algum lugar Source: Gartner (Jun/2012)
  10. 10. APIs 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
  11. 11. Proposta de valor e design
  12. 12. O tabuleiro das APIs 16 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
  13. 13. Plan & Prepare API Strategy Design & Build Run & Engage
  14. 14. Plan & Prepare API Strategy Design & Build Run & Engage Plan Prepare
  15. 15. As primeiras decisões de design…
  16. 16. Selecione a Tecnologia Adequada SOAP vs. REST
  17. 17. Selecione a Tecnologia Adequada XML vs. JSON
  18. 18. and the winners are… REST + JSON
  19. 19. 1 Proposta 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
  20. 20. “Você pode até passar batom num porco, mas ele continuará sendo um porco!”
  21. 21. Plan & Prepare API Strategy Muitos projetos; Design Equipe & Build pequena Run & Engage Design Design & & Build Build
  22. 22. 2 URI Uniform Resource Identifier 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
  23. 23. Estrutura Mínima URI: https://api.mycompany.com/name-of-api/resource HTTP ou HTTPS Seu domínio Nome da API (opcional) Recursos e Parâmetros
  24. 24. 3 Recursos 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
  25. 25. REST Representational State Transfer Estilo arquitetural criado por Roy Fielding RESTful Design que respeita os conceitos REST
  26. 26. Coleção /pedidos Resources Elemento /pedidos/{id}
  27. 27. RPC? /getAccount /getAllAccounts /createDirectory /updateGroupName /findClientById
  28. 28. 4 Operaçõ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
  29. 29. GET POST PUT DELETE
  30. 30. Resumo das Operações Resource POST (create) GET (read) PUT (update, create) DELETE (delete) /pedidos Cria novo pedido Lista pedidos -- Apaga todos os pedidos /pedidos/3747 -- Mostra pedido 3747 Atualiza pedido 3747, se não existir, cria Apaga pedido 3747
  31. 31. Método de Consulta (Cachable, Safe, Idempotente) GET /vendas/pedidos GET /checklist/item/4 GET POST PUT DELETE PATCH OPTIONS HEAD
  32. 32. 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
  33. 33. 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" }
  34. 34. GET POST PUT DELETE PATCH OPTIONS HEAD Método para Remoção (Unsafe, Idempotente) DELETE /pedidos/39009186 DELETE /users/9877261/photos
  35. 35. GET POST PUT DELETE PATCH OPTIONS HEAD Método para Atualização parcial (Unsafe, Não-Idempotente) PATCH /users/9833201 { "email": "joao.silva@empresa.com" } PATCH /pedidos/39009186 { "status": "Cancelado" }
  36. 36. GET POST PUT DELETE PATCH OPTIONS HEAD OPTIONS Quais métodos são permitidos? OPTIONS /clientes Allow: HEAD,GET,POST,OPTIONS HEAD Quero ver apenas o Header HEAD /clientes Date: … Content-Type: application/json Content-Length: 12345
  37. 37. 5 Versionamento 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
  38. 38. THINGS CHANGE! v1 v2 v3 v4 v5 v6 v7
  39. 39. 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 Outras alternativas: • Twilio: /2010-04-01/Accounts/ • Salesforce.com: /services/data/v20.0/sobjects/Account
  40. 40. 6 Media 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
  41. 41. Media Types Formatos Padronizados: application/json application/xml Formatos Proprietários: vnd.{nome_empresa}.{nome_media_type}+{formato} application/vnd.minhaempresa.pedido+json Parâmetros no Header: Request: Response: Accept: application/json Content-Type: application/json
  42. 42. 7 Status 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
  43. 43. 200 400 500 Resultado OK Erro no Cliente Erro no Servidor
  44. 44. STATUS OK 200
  45. 45. Status & Error Codes 200 400 500 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 } ]
  46. 46. Status & Error Codes 200 400 500 201 Created POST /items/1234/bids { "amount" : 602.99 } 201 Created Location: /items/1234/bids/100001 { "amount" : 602.99, "current_bid" : 510, "winning" : true }
  47. 47. Status & Error Codes 200 400 500 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 }
  48. 48. Status & Error Codes 200 400 500 Outros Comuns 401 403 404 413 429 Unauthorized Forbidden Not Found Request is too Large Too Many Requests
  49. 49. Status & Error Codes 200 400 500 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
  50. 50. 8 Filtros 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
  51. 51. Filtros Busca Global: GET /search?q=macbook+air Busca com escopo (subconjuntos): GET /vendas/v2/pedidos?status=concluido Respostas parciais: GET /pedidos/123AF15J?_fields=numero,data,valor
  52. 52. Paginação Recomendação: GET /pedidos?_offset=50&_limit=25 Outras opções: Linkedin: Instagram: ?start=50&count=25 ?min_id=3091&max_id=3245&count=25
  53. 53. 9 Caching 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
  54. 54. Caching Evite tráfego desnecessário Latência de rede Sobrecarga nos servidores Atenção  Tempo de invalidação do cache  Sincronização em clusters
  55. 55. 10 Seguranç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
  56. 56.  Acesso não autorizado  Ataques  Sobrecarga  Confidencialidade  Implementações desastradas em clients
  57. 57.  Acesso não autorizado  Ataques  Sobrecarga  Confidencialidade  Implementações desastradas em clients
  58. 58.  Identificar App (?)  Identificar Usuário (?)  Identificar Device (?) Identidade e Autorização
  59. 59. 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 Mobile Apps Partners’ Apps Internal Services @Backend API Gateway Architecture
  60. 60. 11 Callbacks 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
  61. 61. Já chegamos? Já chegamos? Já chegamos? Já chegamos? Já chegamos? Stop Pooling Me
  62. 62. Marketplace API Chamadas Reversas:  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
  63. 63. 12 Hypermedia 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
  64. 64. Hypermedia APIs HATEOAS = Hypermedia as the Engine of Application State *POX = Plain Old XML, Richardson Maturity Model
  65. 65. GET /items?q=macbook+air+new { "results" : [ { "id" : 123, "name" : "Macbook Air 2010 LIKE NEW", "price" : "499" } ] } SEM Hypermedia
  66. 66. 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" } ] }
  67. 67. Plan & Prepare API Strategy Design & Build Muitos projetos; Run Run Run & & & Engage Equipe Engage Engage pequena
  68. 68. 13 Documentaçã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
  69. 69. Docs incompletos, desatualizados, estáticos e com PDFs de 100 páginas
  70. 70. Developers https://developers.[you].com API Portal API Developers Portal  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 Powered by
  71. 71. Getting Started www.twilio.com/docs
  72. 72. Documentação Interativa desenvolvedores.extra.com.br
  73. 73. Exemplos de código na linguagem do developer sendgrid.com/docs
  74. 74. Sign-up e Tokens de acesso automáticos stripe.com/docs
  75. 75. REST Console ou Sandbox / Playgroung dev.transparencia.org.br
  76. 76. 14 Construçã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
  77. 77. Hold on…
  78. 78. 15 Instrumentalizaçã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
  79. 79. Problemas de Performance Indisponibilidade Bugs Confiabilidade Mudanças (não-planejadas) Falta de Suporte
  80. 80. 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
  81. 81. www.sensedia.com/br Trace de calls, Monitoramento, Rate Limiting e Alertas
  82. 82. status.aws.amazon.com Status Page, Release Notes, Blog
  83. 83. Foruns de discussão e Abertura de tickets desenvolvedores.extra.com.br
  84. 84. 16 Divulgaçã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
  85. 85. Hackathon & Open Innovation
  86. 86. 1 Apps criadas: 300+ 2 Developers cadastrados: 800+ 3 Tráfego: 20M calls / 15 dias 4 Eleições mais transparentes!
  87. 87. Plan & Prepare API Strategy Design & Build Run & Engage
  88. 88. 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
  89. 89. Construção da API
  90. 90. Execução e instrumentalização
  91. 91. Junte-se ao time!
  92. 92. Fábio Rosato fabio.rosato@sensedia.com @frosato José Vahl jose.vahl@sensedia.com @josevahl

×