Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações

602 views

Published on

José Vahl, Product Manager Sensedia, ministrou o workshop "APIs bem desenhadas como base para integrações", no PHP Experience 2016.

O iMasters PHP Experience 2016 aconteceu nos dias 21 e 22 de Março de 2015, no Hotel Tivoli em São Paulo-SP
http://phpexperience2016.imasters.com.br/

Published in: Education
  • Be the first to comment

PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações

  1. 1. APIs bem desenhadas como base para integrações
  2. 2. José Vahl Gerente de Tecnologia Ciclista, fotógrafo, cervejeiro, gerente de tecnologia e APIs addicted jose.vahl@sensedia.com @josevahl Petterson Andrade Arquiteto de Software Palestrante, nerd, arquiteto de software, cruzeirense e confia na tecnologia petterson.andrade@sensedia.com @pett4j
  3. 3. Applications Services Enabling Digital Transformation Quick Facts Founded in 2007 Campinas, São Paulo, Rio de Janeiro and US Incorporated Strong SOA Background (Gartner MQ SOA Gov, 2009) + ● Services & API Strategy ● Architectural Solution ● API Platform
  4. 4. Agenda Integração e evolução Cenários de APIs API First Design de APIs Mão na massa! +
  5. 5. O Estado Corrente das Coisas SOAP/XML WS-* Arquitetura de Serviços! Legado ++ Integração! Foco Total Ênfase no ESB
  6. 6. + Arquitetura tradicional ERPBillingCRM ESB (serviços) Processos Client Aplicações QualidadeeSegurança GovernançaSOA
  7. 7. + Novos elementos, novas abordagens... Cloud Mobilidade Social Analytics Internet of Things Plataforma & Ecossistema Microservice Connector- less
  8. 8. Custom Applications CustomBillingERP Aplicações On Premise Cloud
  9. 9. BillingCheckoutERP ESB (serviços) Processos Cliente Aplicações API Gateway QualidadeeSegurança GovernançaSOA Cloud
  10. 10. Mobilidade Custom Applications CustomBillingERP Aplicações On Premise Preocupações arquiteturais: ● Segurança ● Escalabilidade ● Limitações de banda
  11. 11. Social Aplicações BillingCRMERP
  12. 12. Social Aplicações BillingCRMERP ProxyLayer Monitoração Unificação da gestão de chaves
  13. 13. Internet of Things
  14. 14. Microservice #1 Microservice #2 Microservice #3 Microservice #4 Banco Relacional Banco Orientado a Documentos Key/Store Data Base Graph Database HTTP HTTP HTTP HTTP Microservice
  15. 15. Microservice Microservice #1 Microservice #2 Microservice #3 Microservice #4 Banco Relacional Banco Orientado a Documentos Key/Store Data Base Graph Database HTTP HTTP HTTP HTTP API Gateway HTTP HTTP HTTP HTTP Service aggregation Rate Limiting Monitoring & Alerts Authentication Models Policy Enforcement Exception handling Analytics on API Consumption
  16. 16. Connector- less Adapter Adapter Human Capital Supply Chain HTTP HTTP HTTP HTTP ERP CRM Adapter HTTP Enterprise Resource planning HTTP Enterprise Performance
  17. 17. Connector- less Adapter Human Capital Supply Chain HTTP HTTP HTTP HTTP API Gateway Service aggregation Rate Limiting Monitoring & Alerts Authentication Models Policy Enforcement Exception handling Analytics on API Consumption ERP CRM Adapter HTTP Enterprise Resource planning HTTP Enterprise Performance HTTP Adapter
  18. 18. Uma avalanche de APIs Arquitetura de Serviços! Legado ++ Ênfase no ESB + Formas de integração
  19. 19. Backend APIs The Digital Glue Integrações com Aplicações SaaS Aplicações Móveis Internet of Things Inovação Ecossistema de Parceiros Digitais
  20. 20. + SSOCIAL MMOBILE AANALYTICS CCLOUD IoTINTERNET OF THINGS Transformações Digitais
  21. 21. Experiências digitais transformadas Arquitetura de Serviços! Legado ++ + Cenários de uso das APIs Inovação abertaPlataformas e Ecossistemas Clientes e Parceiros Múltiplos dispositivos
  22. 22. + Plataformas e Ecossistemas Planejamento de viagens”“
  23. 23. + Clientes e Parceiros Aproximação de vendedores e compradores “ ”
  24. 24. + Clientes e Parceiros Aproximação de vendedores e compradores “ ”
  25. 25. + Múltiplos Dispositivos Missão: Dar às pessoas acesso a todas as músicas que elas quiserem o tempo todo, de forma simples e legal. “ ”
  26. 26. + Inovação Aberta Aceleradora de Startups focada em Apps para os 28M de usuários Nike “ ”
  27. 27. + Multi-sided Business Models Platform Power Conceitos em comum
  28. 28. + The Magnet: - Design of Incentives - Pricing Models - Reputation Systems The Matchmaker: - Rich Data Collection - Data-oriented Match - Curation (the best and the rest) Gravity Flow Connection The Toolbox: - Simple - Open - Agile
  29. 29. + API First
  30. 30. 78%
  31. 31. + Compromisso com APIs “Anyone who doesn’t do this will be fired. Thank you; have a nice day!” - Jeff Bezos
  32. 32. + Foco na informação ou na integração? ● Serviços projetados para uso interno ● Código Legado ● SOAP Services ● Tabelas de Banco API (design problemático) Foco na informação Foco na integração info: version: 0.0.1 title: My API História para contar
  33. 33. + Design despriorizado + Visão de curto prazo Com “APIs”
  34. 34. + Design de APIs info: version: 0.0.1 title: My API
  35. 35. 1966 Clint Eastwood Lee Van Cleef Eli Wallach Sergio Leone (Por um punhado de dólares e Por uns dólares a mais)
  36. 36. RESTSOAP vs. JSONXML vs. Valor RESTful Documentação Status Codes Otimização Hypermedia Segurança Instrum/zação As primeiras decisões…
  37. 37. JSONREST + And the winners are...
  38. 38. Muito confusa ? Valor Não “pegou” http://www.infoq.com/news/2015/11/dropbox-deprecates-apis
  39. 39. 778 Pokémon 248 Habilidades ? Valor
  40. 40. 778 Pokémon 248 Habilidades ?+55k calls / dia Valor
  41. 41. “Você pode até passar batom num porco, mas ele continuará sendo um porco!” Foco no consumidor!
  42. 42. RESTful
  43. 43. REST Representational State Transfer Estilo arquitetural criado por Roy Fielding RESTful Design que respeita os conceitos REST
  44. 44. Coleção /pedidos Resources Elemento /pedidos/{id}
  45. 45. /getAccount /getAllAccounts /createDirectory /updateGroupName /findClientById RPC?
  46. 46. URI: https://api.mycompany.com/name-of-api/resource HTTP ou HTTPS Seu domínio Nome da API (opcional) Recursos e Parâmetros RESTful
  47. 47. GET POST PUT DELETE
  48. 48. 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 RESTful
  49. 49. Método de Consulta (Cachable, Safe, Idempotente) GET /vendas/pedidos GET /checklist/item/4 GET POST PUT DELETE PATCH OPTIONS HEAD
  50. 50. Método para “Criação” (Unsafe, Não-Idempotente) POST /clientes/98W33GJ201/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
  51. 51. GET POST PUT DELETE PATCH OPTIONS HEAD Método para “Atualização” (Unsafe, Idempotente) PUT /clientes/98W33GJ201/enderecos/1 { "endereco": "Av. Brigadeiro Faria Lima", "numero": "3800", "complemento": "18o. Andar", "bairro": "Itaim Bibi", "cidade": "São Paulo", "estado": "SP", "cep": "04538-132" }
  52. 52. GET POST PUT DELETE PATCH OPTIONS HEAD Método para Remoção (Unsafe, Idempotente) DELETE /pedidos/98W33GJ201 DELETE /users/98S7726QV1/photos
  53. 53. GET POST PUT DELETE PATCH OPTIONS HEAD Método para Atualização parcial (Unsafe, Não-Idempotente) PATCH /users/98W33GJ201 { "email": "joao.silva@empresa.com" } PATCH /pedidos/39D0091B86 { "status": "Cancelado" }
  54. 54. 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
  55. 55. Documentação
  56. 56. DocumentaçãoTHINGS CHANGE! v1 v2 v3 v4
  57. 57. Documentação 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/limits Versionamento Nunca quebre o cliente!!
  58. 58. UX (Developer Experience) DX
  59. 59. 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 Documentação
  60. 60. Documentação Interativa desenvolvedores.cnova.com
  61. 61. Getting Started www.twilio.com/api
  62. 62. Exemplos de código na linguagem do developer sendgrid.com/docs
  63. 63. Sign-up e Tokens de acesso automáticos stripe.com/docs
  64. 64. REST Console ou Sandbox / Playgroung dev.transparencia.org.br
  65. 65. Hackathon & Open Innovation
  66. 66. Status Codes 200 400 500 Resultado OK Erro no Cliente Erro no Servidor 201 Criado 202 Aceito 401 Não Autorizado 405 Operação não permitida 413 Request muito grande 429 Muitas requisições 503 Servidor não disponível 204 Sem Conteúdo
  67. 67. STATUS OK 200
  68. 68. 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 } ]
  69. 69. 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 }
  70. 70. 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 }
  71. 71. 200 400 500 Status & Error Codes Outros Comuns 401 403 404 413 429 Unauthorized Forbidden Not Found Request is too Large Too Many Requests
  72. 72. 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
  73. 73. Otimização Filtros e paginação Callbacks Caching
  74. 74. 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:
  75. 75. 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
  76. 76. 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
  77. 77. Já chegamos? Já chegamos? Já chegamos? Já chegamos? Já chegamos? Stop Pooling Me
  78. 78. 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:
  79. 79. Hypermedia *POX = Plain Old XML, Richardson Maturity Model HATEOAS = Hypermedia as the Engine of Application State http://martinfowler.com/articles/richardsonMaturityModel.html
  80. 80. GET /items?q=macbook+air+new { "results" : [ { "id" : 123, "name" : "Macbook Air 2010 LIKE NEW", "price" : "499" } ] } SEM Hypermedia
  81. 81. 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" } ] }
  82. 82. Segurança ❖ Acesso não autorizado ❖ Ataques ❖ Sobrecarga ❖ Confidencialidade ❖ Implementações desastradas em clients
  83. 83. Acesso não autorizado Segurança baseada na obscuridade A prova de hackers Canal inseguro (hijacking)
  84. 84. Níveis de CRITICIDADE
  85. 85. Básico Intermediário Crítico ❖ Quanto você conhece dos Client Apps? ❖ As APIs dão acesso a informações sensíveis? ❖ As APIs alteram dados importantes?
  86. 86. Básico Intermediário Crítico ❖ Quanto você conhece dos Client Apps? ❖ As APIs dão acesso a informações sensíveis? ❖ As APIs alteram dados importantes? API totalmente pública, potencialmente centenas de Apps externos Alguns Apps externos de parceiros bem conhecidos Somente Apps desenvolvidos pela própria empresa
  87. 87. Básico Intermediário Crítico Registros médicos, transações financeiras ou dados vitais ao negócio Informações sociais, Internet das coisas Informações acessórias não relacionadas a usuários ❖ Quanto você conhece dos Client Apps? ❖ As APIs dão acesso a informações sensíveis? ❖ As APIs alteram dados importantes?
  88. 88. Básico Intermediário Crítico Todas as operações (inclusive DELETEs) em elementos e coleções de recursos GETs e alguns POSTs e PUTs em recursos não vitais Somente GETs ❖ Quanto você conhece dos Client Apps? ❖ As APIs dão acesso a informações sensíveis? ❖ As APIs alteram dados importantes?
  89. 89. Separation of CONCERNS Web API FAÇAD E
  90. 90. Segurança ❖ Agrupamento de elementos com responsabilidades semelhantes ❖ Simplificação de regras de negócio Separation of CONCERNS Autenticação Autorização Privacidade Disponibilidade Auditoria Integridade
  91. 91. APIs Web API FAÇADEUsers Apps Partners/ Developers Your Backend
  92. 92. Users Apps APIs Autenticação Autorização Disponibilidade Privacidade Auditoria Integridade API Gateway Partners/ Developers Your Backend Web API FAÇADE
  93. 93. Autenticação / Autorização Privacidade Integridade Disponibilidade Auditoria ❖ Acesso não autorizado ❖ Ataque Força Bruta ❖ Roubo de Credenciais ❖ Session hijacking ❖ DDoS ❖ Buffer Overflow ❖ Injection (SQL, XML, JSON) ❖ Information Disclosure ❖ Man-in-the-middle e Network Eavesdropping ❖ Data Scraping ❖ Injection (SQL, XML, JSON) ❖ Cross-site Scripting (XSS) e Request Forgery (XSRF) ❖ Repudiação ❖ Compliance (PCI-DSS, HIPAA)
  94. 94. App Token Basic HTTP OAuth 2.0 OpenID http://downloads.sensedia.com/webinar-seguranca-de-apis
  95. 95. Instrum/zação Eat your own Dog Food
  96. 96. Trace de calls, Monitoramento, Rate Limiting e Alertas Compreenda o padrão de uso das APPs e APIs
  97. 97. status.aws.amazon.com Status Page, Release Notes, Blog
  98. 98. Foruns de discussão e Abertura de tickets desenvolvedores.catho.com.br
  99. 99. Instrum/zação
  100. 100. REST + PHP
  101. 101. + Rest + PHP
  102. 102. + Silex - Está entre os mais rápidos micro frameworks de REST PHP - Baseado nos componentes Symphony - Boa documentação e bom suporte da comunidade.
  103. 103. + Slim - Está entre os mais rápidos micro frameworks de REST PHP - Boa documentação - Integrado com implementações de terceiros
  104. 104. + Lumen - Baseado no Laravel - Boa documentação - Não tão rápido quanto o Slim ou Silex
  105. 105. + Phalcon - O mais rápido dos frameworks REST PHP - Extremamente otimizado e modular - Não tão rápido quanto o Slim ou Silex - Boa documentação
  106. 106. Api na prática
  107. 107. Backend APIs The Digital Glue Integrações com Aplicações SaaS Aplicações Móveis Internet of Things Aplicações Web Ecossistema de Parceiros Digitais
  108. 108. + A mudança Belo Horizonte Campinas
  109. 109. + Visão de negócio - Hub mudanças - Juntar as duas pontas: - Clientes - Transportadoras - Compartilhar mudanças / cargas
  110. 110. - Economia compartilhada - Legislação - Mercado estabelecido - Barreira de entrada: Base de usuários + Oportunidades e Desafios
  111. 111. - API como estratégia fundamental - Api com foco no cliente: Clientes acessando apps - Api com foco no parceiro: Transportadoras e donos de caminhões - Múltiplos dispositivos + Estratégia de API First
  112. 112. Code!
  113. 113. Swagger + Swagger
  114. 114. + Geração de Sdk/Client
  115. 115. + Geração do API Front
  116. 116. + Postman
  117. 117. + Mock / Server
  118. 118. + Carregar Swagger no API Suite
  119. 119. + Ionic
  120. 120. + Take Away A integração do seu sistema deve ser pensada a partir do dia zero! APIs estão nas agendas e no dia a dia Quanto mais você investir no desenho das APIs, mais atalhos poderá pegar no futuro

×