REST: Faça o Serviço Direito30 de Outubro   The Developers Conference 2011   1
betaREST: Faça o Serviço Direito30 de Outubro   The Developers Conference 2011          2
Alexandre Gomes Gaigalashttp://about.me/alganet30 de Outubro             The Developers Conference 2011   3
Hoje você vai ver... ●     Conceito: Por quê usar REST? ●     Projeto: REST desde o berço ●     Implementação: Ferramentas...
REST não é apenas para APIs.30 de Outubro    The Developers Conference 2011   5
30 de Outubro   The Developers Conference 2011   6
Roy Fielding30 de Outubro    The Developers Conference 2011   7
Arquitetura Como você organiza elementos de software para           alcançar certos objetivos.30 de Outubro   The Develope...
Arquitetura                    Dados, componentes e conectoresComo você organiza elementos de software para          alcan...
Arquitetura                                  Dados, componentes e conectoresComo você organiza elementos de software para ...
Arquitetura                                  Dados, componentes e conectoresComo você organiza elementos de software para ...
Arquitetura                                  Dados, componentes e conectoresComo você organiza elementos de software para ...
Regra 1: Cliente-Servidor ●     Portabilidade ●     Escalabilidade ●30 de Outubro          The Developers Conference 2011 ...
Regra 1: Cliente-Servidor     Desktop, Mobile, API, etc. ●     Portabilidade ●     Escalabilidade ●30 de Outubro          ...
Regra 1: Cliente-Servidor     Desktop, Mobile, API, etc. ●     PortabilidadeMúltiplos servidores e clientes ●     Escalabi...
Regra 1: Cliente-Servidor     Desktop, Mobile, API, etc. ●     PortabilidadeMúltiplos servidores e clientes ●     Escalabi...
Ferramentas Cliente-Servidor ●     Apache HTTP Server ●     nginx ●     curl ●     Zend_Http_Client ●     github.com/educo...
Nosso Projeto ●     Instalação em 10 servidores. ●     API, Mobile, Desktop.30 de Outubro       The Developers Conference ...
Regra 2: Sem Estado30 de Outubro       The Developers Conference 2011   19
Regra 2: Sem Estado ●     Visibilidade ●     Confiabilidade ●     Escalabilidade30 de Outubro         The Developers Confe...
Regra 2: Sem Estado Monitoramento, estatísticas ●     Visibilidade ●     Confiabilidade ●     Escalabilidade30 de Outubro ...
Regra 2: Sem Estado   Monitoramento, estatísticas  ●      VisibilidadeRecuperação de falhas simplificada  ●      Confiabil...
Regra 2: Sem Estado   Monitoramento, estatísticas  ●      VisibilidadeRecuperação de falhas simplificada  ●      Confiabil...
Nosso Projeto ●     Instalação em 10 servidores. ●     API, Mobile, Desktop. ●     Autenticação via Digest/OAuth.     ●   ...
Regra 3: Cache ●     Eficiência ●     Performance ●     Escalabilidade30 de Outubro         The Developers Conference 2011...
Regra 3: Cache        Menos requisições ●     Eficiência ●     Performance ●     Escalabilidade30 de Outubro              ...
Regra 3: Cache        Menos requisições ●     Eficiência Menor latência para o cliente ●     Performance ●     Escalabilid...
Regra 3: Cache        Menos requisições ●     Eficiência Menor latência para o cliente ●     PerformanceCache, balanceamen...
Ferramentas para Cache ●     nginx ●     Varnish Cache ●     Apache mod_cache ●     yslow pra testar30 de Outubro         ...
Nosso Projeto ●     Instalação em 10 servidores. ●     API, Mobile, Desktop. ●     Autenticação via Digest/OAuth.     ●   ...
Regra 4: Interface Uniforme ●     Identificação de Recursos                       URIs ●     Manipulação de Representações...
URI ●     Identificação universal de recursos21 de Agosto        The Developers Conference 2011   32
URI ●     Identificação universal de recursos ●     Desacoplada da representação21 de Agosto        The Developers Confere...
URI ●     Identificação universal de recursos ●     Desacoplada da representação ●     Vários esquemas de identificação   ...
URI ●     Identificação universal de recursos ●     Desacoplada da representação ●     Vários esquemas de identificação   ...
http://social.yahooapis.com/v1/user/12345/profile21 de Agosto         The Developers Conference 2011      36
http://social.yahooapis.com/v1/user/12345/profile           Schema   Domain                             Path21 de Agosto  ...
http://social.yahooapis.com/v1/user/12345/profile           Schema   Domain                             Path ●     Represe...
http://social.yahooapis.com/v1/user/12345/profile           Schema   Domain                             Path ●     Represe...
http://social.yahooapis.com/v1/user/12345/profile           Schema     Domain                             Path ●     Repre...
REST em JSON é quase impossível.30 de Outubro   The Developers Conference 2011   41
Hipermídia                 Identificação absoluta ●     href=”http://example.org/foobar”            Identificação relativa...
Nosso Projeto ●     Instalação em 10 servidores. ●     API, Mobile, Desktop. ●     Autenticação via Digest/OAuth.     ●   ...
Regra 5: Camadas ●     Simplicidade ●     Extensibilidade ●     Escalabilidade30 de Outubro         The Developers Confere...
Regra 5: Camadas Implementação independente ●     Simplicidade ●     Extensibilidade ●     Escalabilidade30 de Outubro    ...
Regra 5: Camadas Implementação independente ●     Simplicidade  Firewalls, segurança, proxies ●     Extensibilidade ●     ...
Regra 5: Camadas Implementação independente ●     Simplicidade  Firewalls, segurança, proxies ●     ExtensibilidadeCache, ...
Nosso Projeto ●     Instalação em 10 servidores. ●     API, Mobile, Desktop. ●     Autenticação via Digest/OAuth.     ●   ...
Regra Dica 6: Código sob Demanda ●     CSS ●     Javascript30 de Outubro     The Developers Conference 2011   49
Regra Dica 6: Código sob Demanda ●     CSS                        Apresentação ●     Javascript               Comportament...
Regra Dica 6: Código sob Demanda ●     CSS                               Apresentação     ●         Estilos     ●         ...
Regra Dica 6: Código sob Demanda ●     CSS                               Apresentação     ●         Estilos     ●         ...
Ferramentas pra Código sob                  Demanda ●     Modernizr (http://modernizr.com) ●     Frameless (http://framele...
Nosso Projeto ●     Instalação em 10 servidores. ●     API, Mobile, Desktop. ●     Autenticação via Digest/OAuth.     ●   ...
Hoje você viu... ●     Conceito: Por quê usar REST? ●     Projeto: REST desde o berço ●     Implementação: Ferramentas e t...
Perguntas?30 de Outubro   The Developers Conference 2011   56
Obrigado!30 de Outubro   The Developers Conference 2011   57
Upcoming SlideShare
Loading in …5
×

REST: Faça o Serviço Direito - TDC Goiânia

1,191 views

Published on

O estilo REST tem sido reconhecido como a maneira mais simples e robusta de expor suas aplicações como serviços.

A palestra será dividida em três tópicos principais que, em conjunto, explicam como um aplicativo pode ser desenvolvido utilizando o estilo REST:

-Conceito: Por que usar REST.
-Projeto: REST desde o berço.
-Implementação: Ferramentas e técnicas.

Published in: Technology
  • Be the first to comment

REST: Faça o Serviço Direito - TDC Goiânia

  1. 1. REST: Faça o Serviço Direito30 de Outubro The Developers Conference 2011 1
  2. 2. betaREST: Faça o Serviço Direito30 de Outubro The Developers Conference 2011 2
  3. 3. Alexandre Gomes Gaigalashttp://about.me/alganet30 de Outubro The Developers Conference 2011 3
  4. 4. Hoje você vai ver... ● Conceito: Por quê usar REST? ● Projeto: REST desde o berço ● Implementação: Ferramentas e técnicas30 de Outubro The Developers Conference 2011 4
  5. 5. REST não é apenas para APIs.30 de Outubro The Developers Conference 2011 5
  6. 6. 30 de Outubro The Developers Conference 2011 6
  7. 7. Roy Fielding30 de Outubro The Developers Conference 2011 7
  8. 8. Arquitetura Como você organiza elementos de software para alcançar certos objetivos.30 de Outubro The Developers Conference 2011 8
  9. 9. Arquitetura Dados, componentes e conectoresComo você organiza elementos de software para alcançar certos objetivos.30 de Outubro The Developers Conference 2011 9
  10. 10. Arquitetura Dados, componentes e conectoresComo você organiza elementos de software para alcançar certos objetivos. Performance, escalabilidade, simplicidade, extensibilidade30 de Outubro The Developers Conference 2011 10
  11. 11. Arquitetura Dados, componentes e conectoresComo você organiza elementos de software para alcançar certos objetivos. Performance, escalabilidade, simplicidade, extensibilidade Estilo Arquitetural Como você alcança certos objetivos com determinadas regras de organização dos elementos de software.30 de Outubro The Developers Conference 2011 11
  12. 12. Arquitetura Dados, componentes e conectoresComo você organiza elementos de software para alcançar certos objetivos. Performance, escalabilidade, simplicidade, extensibilidade Estilo Arquitetural REST Como você alcança certos objetivos com determinadas regras de organização dos elementos de software.30 de Outubro The Developers Conference 2011 12
  13. 13. Regra 1: Cliente-Servidor ● Portabilidade ● Escalabilidade ●30 de Outubro The Developers Conference 2011 13
  14. 14. Regra 1: Cliente-Servidor Desktop, Mobile, API, etc. ● Portabilidade ● Escalabilidade ●30 de Outubro The Developers Conference 2011 14
  15. 15. Regra 1: Cliente-Servidor Desktop, Mobile, API, etc. ● PortabilidadeMúltiplos servidores e clientes ● Escalabilidade ●30 de Outubro The Developers Conference 2011 15
  16. 16. Regra 1: Cliente-Servidor Desktop, Mobile, API, etc. ● PortabilidadeMúltiplos servidores e clientes ● Escalabilidade http://futurefriend.ly ●30 de Outubro The Developers Conference 2011 16
  17. 17. Ferramentas Cliente-Servidor ● Apache HTTP Server ● nginx ● curl ● Zend_Http_Client ● github.com/educoder/pest ● ...30 de Outubro The Developers Conference 2011 17
  18. 18. Nosso Projeto ● Instalação em 10 servidores. ● API, Mobile, Desktop.30 de Outubro The Developers Conference 2011 18
  19. 19. Regra 2: Sem Estado30 de Outubro The Developers Conference 2011 19
  20. 20. Regra 2: Sem Estado ● Visibilidade ● Confiabilidade ● Escalabilidade30 de Outubro The Developers Conference 2011 20
  21. 21. Regra 2: Sem Estado Monitoramento, estatísticas ● Visibilidade ● Confiabilidade ● Escalabilidade30 de Outubro The Developers Conference 2011 21
  22. 22. Regra 2: Sem Estado Monitoramento, estatísticas ● VisibilidadeRecuperação de falhas simplificada ● Confiabilidade ● Escalabilidade 30 de Outubro The Developers Conference 2011 22
  23. 23. Regra 2: Sem Estado Monitoramento, estatísticas ● VisibilidadeRecuperação de falhas simplificada ● Confiabilidade Cache, balanceamento de carga ● Escalabilidade 30 de Outubro The Developers Conference 2011 23
  24. 24. Nosso Projeto ● Instalação em 10 servidores. ● API, Mobile, Desktop. ● Autenticação via Digest/OAuth. ● Página auxiliar para navegadores.30 de Outubro The Developers Conference 2011 24
  25. 25. Regra 3: Cache ● Eficiência ● Performance ● Escalabilidade30 de Outubro The Developers Conference 2011 25
  26. 26. Regra 3: Cache Menos requisições ● Eficiência ● Performance ● Escalabilidade30 de Outubro The Developers Conference 2011 26
  27. 27. Regra 3: Cache Menos requisições ● Eficiência Menor latência para o cliente ● Performance ● Escalabilidade30 de Outubro The Developers Conference 2011 27
  28. 28. Regra 3: Cache Menos requisições ● Eficiência Menor latência para o cliente ● PerformanceCache, balanceamento de carga ● Escalabilidade30 de Outubro The Developers Conference 2011 28
  29. 29. Ferramentas para Cache ● nginx ● Varnish Cache ● Apache mod_cache ● yslow pra testar30 de Outubro The Developers Conference 2011 29
  30. 30. Nosso Projeto ● Instalação em 10 servidores. ● API, Mobile, Desktop. ● Autenticação via Digest/OAuth. ● Página auxiliar para navegadores. ● Headers para cache.30 de Outubro The Developers Conference 2011 30
  31. 31. Regra 4: Interface Uniforme ● Identificação de Recursos URIs ● Manipulação de Representações HTML, JPG, etc ● Mensagens auto-descritivas text/html, image/jpg ● Hipermídia Links30 de Outubro The Developers Conference 2011 31
  32. 32. URI ● Identificação universal de recursos21 de Agosto The Developers Conference 2011 32
  33. 33. URI ● Identificação universal de recursos ● Desacoplada da representação21 de Agosto The Developers Conference 2011 33
  34. 34. URI ● Identificação universal de recursos ● Desacoplada da representação ● Vários esquemas de identificação ● http://dominio.com/path?query=123#hash ● ftp://user@server.net/path/arquivo.txt ● mailto:alexandre@gaigalas.net ● …21 de Agosto The Developers Conference 2011 34
  35. 35. URI ● Identificação universal de recursos ● Desacoplada da representação ● Vários esquemas de identificação ● http://dominio.com/path?query=123#hash ● ftp://user@server.net/path/arquivo.txt ● mailto:alexandre@gaigalas.net ● … ● URIs legais não mudam =D21 de Agosto The Developers Conference 2011 35
  36. 36. http://social.yahooapis.com/v1/user/12345/profile21 de Agosto The Developers Conference 2011 36
  37. 37. http://social.yahooapis.com/v1/user/12345/profile Schema Domain Path21 de Agosto The Developers Conference 2011 37
  38. 38. http://social.yahooapis.com/v1/user/12345/profile Schema Domain Path ● Representa um perfil21 de Agosto The Developers Conference 2011 38
  39. 39. http://social.yahooapis.com/v1/user/12345/profile Schema Domain Path ● Representa um perfil ● Desacoplado do formato de resposta ● Compreende negociação de conteúdo21 de Agosto The Developers Conference 2011 39
  40. 40. http://social.yahooapis.com/v1/user/12345/profile Schema Domain Path ● Representa um perfil ● Desacoplado do formato de resposta ● Compreende negociação de conteúdo ● Abstrai um recurso ● Aceita GET para obter perfil ● Aceita POST para atualizar perfil21 de Agosto The Developers Conference 2011 40
  41. 41. REST em JSON é quase impossível.30 de Outubro The Developers Conference 2011 41
  42. 42. Hipermídia Identificação absoluta ● href=”http://example.org/foobar” Identificação relativa ao domínio ● href=”/foobar” Identificação relativa ao esquema ● href=”//example.org/foobar”30 de Outubro The Developers Conference 2011 42
  43. 43. Nosso Projeto ● Instalação em 10 servidores. ● API, Mobile, Desktop. ● Autenticação via Digest/OAuth. ● Página auxiliar para navegadores. ● Headers para cache. ● Hipermídia HTML e XML.30 de Outubro The Developers Conference 2011 43
  44. 44. Regra 5: Camadas ● Simplicidade ● Extensibilidade ● Escalabilidade30 de Outubro The Developers Conference 2011 44
  45. 45. Regra 5: Camadas Implementação independente ● Simplicidade ● Extensibilidade ● Escalabilidade30 de Outubro The Developers Conference 2011 45
  46. 46. Regra 5: Camadas Implementação independente ● Simplicidade Firewalls, segurança, proxies ● Extensibilidade ● Escalabilidade30 de Outubro The Developers Conference 2011 46
  47. 47. Regra 5: Camadas Implementação independente ● Simplicidade Firewalls, segurança, proxies ● ExtensibilidadeCache, balanceamento de carga ● Escalabilidade30 de Outubro The Developers Conference 2011 47
  48. 48. Nosso Projeto ● Instalação em 10 servidores. ● API, Mobile, Desktop. ● Autenticação via Digest/OAuth. ● Página auxiliar para navegadores. ● Proxy-reverso e headers para cache. ● Hipermídia HTML e XML.30 de Outubro The Developers Conference 2011 48
  49. 49. Regra Dica 6: Código sob Demanda ● CSS ● Javascript30 de Outubro The Developers Conference 2011 49
  50. 50. Regra Dica 6: Código sob Demanda ● CSS Apresentação ● Javascript Comportamento30 de Outubro The Developers Conference 2011 50
  51. 51. Regra Dica 6: Código sob Demanda ● CSS Apresentação ● Estilos ● Media queries ● ... ● Javascript Comportamento30 de Outubro The Developers Conference 2011 51
  52. 52. Regra Dica 6: Código sob Demanda ● CSS Apresentação ● Estilos ● Media queries ● ... ● Javascript Comportamento ● AJAX ● Feature Detection ● ...30 de Outubro The Developers Conference 2011 52
  53. 53. Ferramentas pra Código sob Demanda ● Modernizr (http://modernizr.com) ● Frameless (http://framelessgrid.com)30 de Outubro The Developers Conference 2011 53
  54. 54. Nosso Projeto ● Instalação em 10 servidores. ● API, Mobile, Desktop. ● Autenticação via Digest/OAuth. ● Página auxiliar para navegadores. ● Proxy-reverso e headers para cache. ● Hipermídia HTML e XML. ● Versão Mobile/Desktop via Javascript sob demanda30 de Outubro The Developers Conference 2011 54
  55. 55. Hoje você viu... ● Conceito: Por quê usar REST? ● Projeto: REST desde o berço ● Implementação: Ferramentas e técnicas30 de Outubro The Developers Conference 2011 55
  56. 56. Perguntas?30 de Outubro The Developers Conference 2011 56
  57. 57. Obrigado!30 de Outubro The Developers Conference 2011 57

×