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.
4. Hoje você vai ver...
●
Conceito: Por quê usar REST?
●
Projeto: REST desde o berço
●
Implementação: Ferramentas e técnicas
30 de Outubro The Developers Conference 2011 4
5. REST não é apenas para APIs.
30 de Outubro The Developers Conference 2011 5
8. Arquitetura
Como você organiza elementos de software para
alcançar certos objetivos.
30 de Outubro The Developers Conference 2011 8
9. Arquitetura
Dados, componentes e conectores
Como você organiza elementos de software para
alcançar certos objetivos.
30 de Outubro The Developers Conference 2011 9
10. Arquitetura
Dados, componentes e conectores
Como você organiza elementos de software para
alcançar certos objetivos.
Performance, escalabilidade, simplicidade, extensibilidade
30 de Outubro The Developers Conference 2011 10
11. Arquitetura
Dados, componentes e conectores
Como 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. Arquitetura
Dados, componentes e conectores
Como 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. Regra 1: Cliente-Servidor
●
Portabilidade
●
Escalabilidade
●
30 de Outubro The Developers Conference 2011 13
14. Regra 1: Cliente-Servidor
Desktop, Mobile, API, etc.
●
Portabilidade
●
Escalabilidade
●
30 de Outubro The Developers Conference 2011 14
15. Regra 1: Cliente-Servidor
Desktop, Mobile, API, etc.
●
Portabilidade
Múltiplos servidores e clientes
●
Escalabilidade
●
30 de Outubro The Developers Conference 2011 15
16. Regra 1: Cliente-Servidor
Desktop, Mobile, API, etc.
●
Portabilidade
Múltiplos servidores e clientes
●
Escalabilidade
http://futurefriend.ly
●
30 de Outubro The Developers Conference 2011 16
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. Nosso Projeto
●
Instalação em 10 servidores.
●
API, Mobile, Desktop.
30 de Outubro The Developers Conference 2011 18
19. Regra 2: Sem Estado
30 de Outubro The Developers Conference 2011 19
20. Regra 2: Sem Estado
●
Visibilidade
●
Confiabilidade
●
Escalabilidade
30 de Outubro The Developers Conference 2011 20
21. Regra 2: Sem Estado
Monitoramento, estatísticas
●
Visibilidade
●
Confiabilidade
●
Escalabilidade
30 de Outubro The Developers Conference 2011 21
22. Regra 2: Sem Estado
Monitoramento, estatísticas
●
Visibilidade
Recuperação de falhas simplificada
●
Confiabilidade
●
Escalabilidade
30 de Outubro The Developers Conference 2011 22
23. Regra 2: Sem Estado
Monitoramento, estatísticas
●
Visibilidade
Recuperação de falhas simplificada
●
Confiabilidade
Cache, balanceamento de carga
●
Escalabilidade
30 de Outubro The Developers Conference 2011 23
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. Regra 3: Cache
●
Eficiência
●
Performance
●
Escalabilidade
30 de Outubro The Developers Conference 2011 25
26. Regra 3: Cache
Menos requisições
●
Eficiência
●
Performance
●
Escalabilidade
30 de Outubro The Developers Conference 2011 26
27. Regra 3: Cache
Menos requisições
●
Eficiência
Menor latência para o cliente
●
Performance
●
Escalabilidade
30 de Outubro The Developers Conference 2011 27
28. Regra 3: Cache
Menos requisições
●
Eficiência
Menor latência para o cliente
●
Performance
Cache, balanceamento de carga
●
Escalabilidade
30 de Outubro The Developers Conference 2011 28
29. Ferramentas para Cache
●
nginx
●
Varnish Cache
●
Apache mod_cache
●
yslow pra testar
30 de Outubro The Developers Conference 2011 29
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. 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 Links
30 de Outubro The Developers Conference 2011 31
32. URI
●
Identificação universal de recursos
21 de Agosto The Developers Conference 2011 32
33. URI
●
Identificação universal de recursos
●
Desacoplada da representação
21 de Agosto The Developers Conference 2011 33
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. 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 =D
21 de Agosto The Developers Conference 2011 35
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údo
21 de Agosto The Developers Conference 2011 39
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 perfil
21 de Agosto The Developers Conference 2011 40
41. REST em JSON é quase impossível.
30 de Outubro The Developers Conference 2011 41
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. 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. Regra 5: Camadas
●
Simplicidade
●
Extensibilidade
●
Escalabilidade
30 de Outubro The Developers Conference 2011 44
45. Regra 5: Camadas
Implementação independente
●
Simplicidade
●
Extensibilidade
●
Escalabilidade
30 de Outubro The Developers Conference 2011 45
46. Regra 5: Camadas
Implementação independente
●
Simplicidade
Firewalls, segurança, proxies
●
Extensibilidade
●
Escalabilidade
30 de Outubro The Developers Conference 2011 46
47. Regra 5: Camadas
Implementação independente
●
Simplicidade
Firewalls, segurança, proxies
●
Extensibilidade
Cache, balanceamento de carga
●
Escalabilidade
30 de Outubro The Developers Conference 2011 47
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. Regra Dica 6: Código sob Demanda
●
CSS
●
Javascript
30 de Outubro The Developers Conference 2011 49
50. Regra Dica 6: Código sob Demanda
●
CSS Apresentação
●
Javascript Comportamento
30 de Outubro The Developers Conference 2011 50
51. Regra Dica 6: Código sob Demanda
●
CSS Apresentação
●
Estilos
●
Media queries
●
...
●
Javascript Comportamento
30 de Outubro The Developers Conference 2011 51
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. Ferramentas pra Código sob
Demanda
●
Modernizr (http://modernizr.com)
●
Frameless (http://framelessgrid.com)
30 de Outubro The Developers Conference 2011 53
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
demanda
30 de Outubro The Developers Conference 2011 54
55. Hoje você viu...
●
Conceito: Por quê usar REST?
●
Projeto: REST desde o berço
●
Implementação: Ferramentas e técnicas
30 de Outubro The Developers Conference 2011 55