Upload
alexandre-gaigalas
View
927
Download
0
Embed Size (px)
Citation preview
30 de Outubro The Developers Conference 2011 1
REST: Faça o Serviço Direito
30 de Outubro The Developers Conference 2011 2
REST: Faça o Serviço Direitobeta
30 de Outubro The Developers Conference 2011 3
Alexandre Gomes Gaigalas
http://about.me/alganet
30 de Outubro The Developers Conference 2011 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 5
REST não é apenas para APIs.
30 de Outubro The Developers Conference 2011 6
30 de Outubro The Developers Conference 2011 7
Roy Fielding
30 de Outubro The Developers Conference 2011 8
Arquitetura
Como você organiza elementos de software para alcançar certos objetivos.
30 de Outubro The Developers Conference 2011 9
Arquitetura
Como você organiza elementos de software para alcançar certos objetivos.
Dados, componentes e conectores
30 de Outubro The Developers Conference 2011 10
Arquitetura
Como você organiza elementos de software para alcançar certos objetivos.
Performance, escalabilidade, simplicidade, extensibilidade
Dados, componentes e conectores
30 de Outubro The Developers Conference 2011 11
Arquitetura
Como você organiza elementos de software para alcançar certos objetivos.
Dados, componentes e conectores
Estilo ArquiteturalComo você alcança certos objetivos com
determinadas regras de organização dos elementos de software.
Performance, escalabilidade, simplicidade, extensibilidade
30 de Outubro The Developers Conference 2011 12
Arquitetura
Como você organiza elementos de software para alcançar certos objetivos.
REST
Dados, componentes e conectores
Estilo ArquiteturalComo você alcança certos objetivos com
determinadas regras de organização dos elementos de software.
Performance, escalabilidade, simplicidade, extensibilidade
30 de Outubro The Developers Conference 2011 13
Regra 1: Cliente-Servidor
● Portabilidade
● Escalabilidade
●
30 de Outubro The Developers Conference 2011 14
Regra 1: Cliente-Servidor
● Portabilidade
● Escalabilidade
●
Desktop, Mobile, API, etc.
30 de Outubro The Developers Conference 2011 15
Regra 1: Cliente-Servidor
● Portabilidade
● Escalabilidade
●
Múltiplos servidores e clientes
Desktop, Mobile, API, etc.
30 de Outubro The Developers Conference 2011 16
Regra 1: Cliente-Servidor
● Portabilidade
● Escalabilidade
●
http://futurefriend.ly
Múltiplos servidores e clientes
Desktop, Mobile, API, etc.
30 de Outubro The Developers Conference 2011 17
Ferramentas Cliente-Servidor
● Apache HTTP Server● nginx ● curl ● Zend_Http_Client● github.com/educoder/pest● ...
30 de Outubro The Developers Conference 2011 18
Nosso Projeto
● Instalação em 10 servidores.● API, Mobile, Desktop.
30 de Outubro The Developers Conference 2011 19
Regra 2: Sem Estado
30 de Outubro The Developers Conference 2011 20
Regra 2: Sem Estado
● Visibilidade
● Confiabilidade
● Escalabilidade
30 de Outubro The Developers Conference 2011 21
Regra 2: Sem Estado
● Visibilidade
● Confiabilidade
● Escalabilidade
Monitoramento, estatísticas
30 de Outubro The Developers Conference 2011 22
Regra 2: Sem Estado
● Visibilidade
● Confiabilidade
● Escalabilidade
Recuperação de falhas simplificada
Monitoramento, estatísticas
30 de Outubro The Developers Conference 2011 23
Regra 2: Sem Estado
● Visibilidade
● Confiabilidade
● Escalabilidade
Recuperação de falhas simplificada
Monitoramento, estatísticas
Cache, balanceamento de carga
30 de Outubro The Developers Conference 2011 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 25
Regra 3: Cache
● Eficiência
● Performance
● Escalabilidade
30 de Outubro The Developers Conference 2011 26
Regra 3: Cache
● Eficiência
● Performance
● Escalabilidade
Menos requisições
30 de Outubro The Developers Conference 2011 27
Regra 3: Cache
● Eficiência
● Performance
● Escalabilidade
Menor latência para o cliente
Menos requisições
30 de Outubro The Developers Conference 2011 28
Regra 3: Cache
● Eficiência
● Performance
● Escalabilidade
Menor latência para o cliente
Menos requisições
Cache, balanceamento de carga
30 de Outubro The Developers Conference 2011 29
Ferramentas para Cache
● nginx ● Varnish Cache● Apache mod_cache● yslow pra testar
30 de Outubro The Developers Conference 2011 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 31
Regra 4: Interface Uniforme
● Identificação de Recursos
● Manipulação de Representações
● Mensagens auto-descritivas
● Hipermídia
URIs
HTML, JPG, etc
text/html, image/jpg
Links
21 de Agosto The Developers Conference 2011 32
URI
● Identificação universal de recursos
21 de Agosto The Developers Conference 2011 33
URI
● Identificação universal de recursos● Desacoplada da representação
21 de Agosto The Developers Conference 2011 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://[email protected]/path/arquivo.txt● mailto:[email protected] ● …
21 de Agosto The Developers Conference 2011 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://[email protected]/path/arquivo.txt● mailto:[email protected] ● …
● URIs legais não mudam =D
21 de Agosto The Developers Conference 2011 36
http://social.yahooapis.com/v1/user/12345/profile
21 de Agosto The Developers Conference 2011 37
http://social.yahooapis.com/v1/user/12345/profile
Schema Domain Path
21 de Agosto The Developers Conference 2011 38
http://social.yahooapis.com/v1/user/12345/profile
Schema Domain Path
● Representa um perfil
21 de Agosto The Developers Conference 2011 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 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
30 de Outubro The Developers Conference 2011 41
REST em JSON é quase impossível.
30 de Outubro The Developers Conference 2011 42
Hipermídia
● href=”http://example.org/foobar”
● href=”/foobar”
● href=”//example.org/foobar”
Identificação absoluta
Identificação relativa ao domínio
Identificação relativa ao esquema
30 de Outubro The Developers Conference 2011 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 44
Regra 5: Camadas
● Simplicidade
● Extensibilidade
● Escalabilidade
30 de Outubro The Developers Conference 2011 45
Regra 5: Camadas
● Simplicidade
● Extensibilidade
● Escalabilidade
Implementação independente
30 de Outubro The Developers Conference 2011 46
Regra 5: Camadas
● Simplicidade
● Extensibilidade
● Escalabilidade
Firewalls, segurança, proxies
Implementação independente
30 de Outubro The Developers Conference 2011 47
Regra 5: Camadas
● Simplicidade
● Extensibilidade
● Escalabilidade
Firewalls, segurança, proxies
Implementação independente
Cache, balanceamento de carga
30 de Outubro The Developers Conference 2011 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 49
Regra Dica 6: Código sob Demanda
● CSS
● Javascript
30 de Outubro The Developers Conference 2011 50
Regra Dica 6: Código sob Demanda
● CSS
● JavascriptComportamento
Apresentação
30 de Outubro The Developers Conference 2011 51
Regra Dica 6: Código sob Demanda
● CSS● Estilos● Media queries● ...
● JavascriptComportamento
Apresentação
30 de Outubro The Developers Conference 2011 52
Regra Dica 6: Código sob Demanda
● CSS● Estilos● Media queries● ...
● Javascript● AJAX● Feature Detection● ...
Comportamento
Apresentação
30 de Outubro The Developers Conference 2011 53
Ferramentas pra Código sob Demanda
● Modernizr (http://modernizr.com)
● Frameless (http://framelessgrid.com)
30 de Outubro The Developers Conference 2011 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 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 56
Perguntas?
30 de Outubro The Developers Conference 2011 57
Obrigado!