SlideShare ist ein Scribd-Unternehmen logo
1 von 57
Downloaden Sie, um offline zu lesen
REST: Faça o Serviço Direito




30 de Outubro   The Developers Conference 2011   1
beta
REST: Faça o Serviço Direito




30 de Outubro   The Developers Conference 2011          2
Alexandre Gomes Gaigalas
http://about.me/alganet




30 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 e técnicas




30 de Outubro       The Developers Conference 2011   4
REST não é apenas para APIs.




30 de Outubro    The Developers Conference 2011   5
30 de Outubro   The Developers Conference 2011   6
Roy Fielding



30 de Outubro    The Developers Conference 2011   7
Arquitetura

 Como você organiza elementos de software para
           alcançar certos objetivos.




30 de Outubro   The Developers Conference 2011   8
Arquitetura
                    Dados, componentes e conectores

Como você organiza elementos de software para
          alcançar certos objetivos.




30 de Outubro   The Developers Conference 2011        9
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
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
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
Regra 1: Cliente-Servidor

 ●
     Portabilidade

 ●
     Escalabilidade

 ●




30 de Outubro          The Developers Conference 2011   13
Regra 1: Cliente-Servidor

     Desktop, Mobile, API, etc.
 ●
     Portabilidade

 ●
     Escalabilidade

 ●




30 de Outubro                 The Developers Conference 2011   14
Regra 1: Cliente-Servidor

     Desktop, Mobile, API, etc.
 ●
     Portabilidade
Múltiplos servidores e clientes
 ●
     Escalabilidade

 ●




30 de Outubro                 The Developers Conference 2011   15
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
Ferramentas Cliente-Servidor

 ●
     Apache HTTP Server
 ●
     nginx
 ●
     curl
 ●
     Zend_Http_Client
 ●
     github.com/educoder/pest
 ●
     ...



30 de Outubro       The Developers Conference 2011   17
Nosso Projeto
 ●
     Instalação em 10 servidores.
 ●
     API, Mobile, Desktop.




30 de Outubro       The Developers Conference 2011   18
Regra 2: Sem Estado




30 de Outubro       The Developers Conference 2011   19
Regra 2: Sem Estado

 ●
     Visibilidade

 ●
     Confiabilidade

 ●
     Escalabilidade



30 de Outubro         The Developers Conference 2011   20
Regra 2: Sem Estado

 Monitoramento, estatísticas
 ●
     Visibilidade

 ●
     Confiabilidade

 ●
     Escalabilidade



30 de Outubro             The Developers Conference 2011   21
Regra 2: Sem Estado

   Monitoramento, estatísticas
  ●
      Visibilidade
Recuperação de falhas simplificada
  ●
      Confiabilidade

  ●
      Escalabilidade



 30 de Outubro              The Developers Conference 2011   22
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
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
Regra 3: Cache

 ●
     Eficiência

 ●
     Performance

 ●
     Escalabilidade



30 de Outubro         The Developers Conference 2011   25
Regra 3: Cache

        Menos requisições
 ●
     Eficiência

 ●
     Performance

 ●
     Escalabilidade



30 de Outubro               The Developers Conference 2011   26
Regra 3: Cache

        Menos requisições
 ●
     Eficiência
 Menor latência para o cliente
 ●
     Performance

 ●
     Escalabilidade



30 de Outubro               The Developers Conference 2011   27
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
Ferramentas para Cache

 ●
     nginx
 ●
     Varnish Cache
 ●
     Apache mod_cache
 ●
     yslow pra testar




30 de Outubro         The Developers Conference 2011   29
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
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
URI
 ●
     Identificação universal de recursos




21 de Agosto        The Developers Conference 2011   32
URI
 ●
     Identificação universal de recursos
 ●
     Desacoplada da representação




21 de Agosto        The Developers Conference 2011   33
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
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
http://social.yahooapis.com/v1/user/12345/profile




21 de Agosto         The Developers Conference 2011      36
http://social.yahooapis.com/v1/user/12345/profile

           Schema   Domain                             Path




21 de Agosto          The Developers Conference 2011          37
http://social.yahooapis.com/v1/user/12345/profile

           Schema   Domain                             Path


 ●
     Representa um perfil




21 de Agosto          The Developers Conference 2011          38
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
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
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 ao domínio

 ●
     href=”/foobar”
            Identificação relativa ao esquema

 ●
     href=”//example.org/foobar”



30 de Outubro                 The Developers Conference 2011   42
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
Regra 5: Camadas

 ●
     Simplicidade

 ●
     Extensibilidade

 ●
     Escalabilidade



30 de Outubro         The Developers Conference 2011   44
Regra 5: Camadas

 Implementação independente
 ●
     Simplicidade

 ●
     Extensibilidade

 ●
     Escalabilidade



30 de Outubro           The Developers Conference 2011   45
Regra 5: Camadas

 Implementação independente
 ●
     Simplicidade
  Firewalls, segurança, proxies
 ●
     Extensibilidade

 ●
     Escalabilidade



30 de Outubro               The Developers Conference 2011   46
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
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
Regra Dica 6: Código sob Demanda

 ●
     CSS




 ●
     Javascript




30 de Outubro     The Developers Conference 2011   49
Regra Dica 6: Código sob Demanda

 ●
     CSS                        Apresentação




 ●
     Javascript               Comportamento




30 de Outubro     The Developers Conference 2011   50
Regra Dica 6: Código sob Demanda

 ●
     CSS                               Apresentação
     ●
         Estilos
     ●
         Media queries
     ●
         ...
 ●
     Javascript                      Comportamento




30 de Outubro            The Developers Conference 2011   51
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
Ferramentas pra Código sob
                  Demanda

 ●
     Modernizr (http://modernizr.com)

 ●
     Frameless (http://framelessgrid.com)




30 de Outubro      The Developers Conference 2011   53
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
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
Perguntas?




30 de Outubro   The Developers Conference 2011   56
Obrigado!




30 de Outubro   The Developers Conference 2011   57

Weitere ähnliche Inhalte

Ähnlich wie Faça o Serviço Direito com REST

Desenvolvimento de uma plataforma de bookmarking social com Django e TDD
Desenvolvimento de uma plataforma de bookmarking social com Django e TDDDesenvolvimento de uma plataforma de bookmarking social com Django e TDD
Desenvolvimento de uma plataforma de bookmarking social com Django e TDDRodrigo Fernandes
 
API management: um aliado para construção de APIs
API management: um aliado para construção de APIsAPI management: um aliado para construção de APIs
API management: um aliado para construção de APIsRafael de Paula Souza
 
Containers e DevOps
Containers e DevOps Containers e DevOps
Containers e DevOps Raul Leite
 
Developer Experience no Nubank
Developer Experience no NubankDeveloper Experience no Nubank
Developer Experience no NubankLetticia Nicoli
 
Metodologia Desenvolvimento do Prefeitura Livre
Metodologia Desenvolvimento do Prefeitura LivreMetodologia Desenvolvimento do Prefeitura Livre
Metodologia Desenvolvimento do Prefeitura LivreGeoLivre Conference
 
Adobe flash platform fabricio
Adobe flash platform fabricioAdobe flash platform fabricio
Adobe flash platform fabricioFabricioManzi
 
Adobe flash platform bem 2009
 Adobe flash platform bem 2009 Adobe flash platform bem 2009
Adobe flash platform bem 2009FabricioManzi
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com AngularElmano Cavalcanti
 
Docker como super comando
Docker como super comandoDocker como super comando
Docker como super comandoRafael Gomes
 
Aula 06 projetos multimídia
Aula 06   projetos multimídiaAula 06   projetos multimídia
Aula 06 projetos multimídiaFábio Costa
 
Aula 06 projetos multimídia
Aula 06   projetos multimídiaAula 06   projetos multimídia
Aula 06 projetos multimídiaFábio Costa
 
RedGate .NET Reflector
RedGate .NET ReflectorRedGate .NET Reflector
RedGate .NET ReflectorNuno Gomes
 
Drupal 8: desenvolvendo fora da ilha
Drupal 8: desenvolvendo fora da ilhaDrupal 8: desenvolvendo fora da ilha
Drupal 8: desenvolvendo fora da ilhaLuiz Filho
 
LPUG #17 - Esqueçam o Liferay, usem antes Liferay - 2022-09-28.pdf
LPUG #17 - Esqueçam o Liferay, usem antes Liferay - 2022-09-28.pdfLPUG #17 - Esqueçam o Liferay, usem antes Liferay - 2022-09-28.pdf
LPUG #17 - Esqueçam o Liferay, usem antes Liferay - 2022-09-28.pdfFernando Fernández
 
Docker: Uso no dia a dia de desenvolvimento
Docker: Uso no dia a dia de desenvolvimentoDocker: Uso no dia a dia de desenvolvimento
Docker: Uso no dia a dia de desenvolvimentoMarcela Carvalho
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKRyan Padilha
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 

Ähnlich wie Faça o Serviço Direito com REST (20)

Desenvolvimento de uma plataforma de bookmarking social com Django e TDD
Desenvolvimento de uma plataforma de bookmarking social com Django e TDDDesenvolvimento de uma plataforma de bookmarking social com Django e TDD
Desenvolvimento de uma plataforma de bookmarking social com Django e TDD
 
API management: um aliado para construção de APIs
API management: um aliado para construção de APIsAPI management: um aliado para construção de APIs
API management: um aliado para construção de APIs
 
Containers e DevOps
Containers e DevOps Containers e DevOps
Containers e DevOps
 
Developer Experience no Nubank
Developer Experience no NubankDeveloper Experience no Nubank
Developer Experience no Nubank
 
Metodologia Desenvolvimento do Prefeitura Livre
Metodologia Desenvolvimento do Prefeitura LivreMetodologia Desenvolvimento do Prefeitura Livre
Metodologia Desenvolvimento do Prefeitura Livre
 
Adobe flash platform fabricio
Adobe flash platform fabricioAdobe flash platform fabricio
Adobe flash platform fabricio
 
Django
DjangoDjango
Django
 
Adobe flash platform bem 2009
 Adobe flash platform bem 2009 Adobe flash platform bem 2009
Adobe flash platform bem 2009
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
 
Docker como super comando
Docker como super comandoDocker como super comando
Docker como super comando
 
Aula 06 projetos multimídia
Aula 06   projetos multimídiaAula 06   projetos multimídia
Aula 06 projetos multimídia
 
Aula 06 projetos multimídia
Aula 06   projetos multimídiaAula 06   projetos multimídia
Aula 06 projetos multimídia
 
RedGate .NET Reflector
RedGate .NET ReflectorRedGate .NET Reflector
RedGate .NET Reflector
 
Drupal 8: desenvolvendo fora da ilha
Drupal 8: desenvolvendo fora da ilhaDrupal 8: desenvolvendo fora da ilha
Drupal 8: desenvolvendo fora da ilha
 
LPUG #17 - Esqueçam o Liferay, usem antes Liferay - 2022-09-28.pdf
LPUG #17 - Esqueçam o Liferay, usem antes Liferay - 2022-09-28.pdfLPUG #17 - Esqueçam o Liferay, usem antes Liferay - 2022-09-28.pdf
LPUG #17 - Esqueçam o Liferay, usem antes Liferay - 2022-09-28.pdf
 
BDD com SpecFlow
BDD com SpecFlowBDD com SpecFlow
BDD com SpecFlow
 
Bdd com spec flow
Bdd com spec flowBdd com spec flow
Bdd com spec flow
 
Docker: Uso no dia a dia de desenvolvimento
Docker: Uso no dia a dia de desenvolvimentoDocker: Uso no dia a dia de desenvolvimento
Docker: Uso no dia a dia de desenvolvimento
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 

Mehr von Alexandre Gaigalas

Domine Validação de Dados em 45min
Domine Validação de Dados em 45minDomine Validação de Dados em 45min
Domine Validação de Dados em 45minAlexandre Gaigalas
 
Mágica com Manipulação de Imagens - TDC 2011 Goiânia
Mágica com Manipulação de Imagens - TDC 2011 GoiâniaMágica com Manipulação de Imagens - TDC 2011 Goiânia
Mágica com Manipulação de Imagens - TDC 2011 GoiâniaAlexandre Gaigalas
 
assertTrue($tdd) - Latinoware 2011
assertTrue($tdd) - Latinoware 2011assertTrue($tdd) - Latinoware 2011
assertTrue($tdd) - Latinoware 2011Alexandre Gaigalas
 
REST: Faça o Serviço Direito
REST: Faça o Serviço DireitoREST: Faça o Serviço Direito
REST: Faça o Serviço DireitoAlexandre Gaigalas
 
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011Alexandre Gaigalas
 
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12Alexandre Gaigalas
 
Varrendo APIs REST em Larga Escala utilizando PHP
Varrendo APIs REST em Larga Escala utilizando PHPVarrendo APIs REST em Larga Escala utilizando PHP
Varrendo APIs REST em Larga Escala utilizando PHPAlexandre Gaigalas
 

Mehr von Alexandre Gaigalas (11)

Domine Validação de Dados em 45min
Domine Validação de Dados em 45minDomine Validação de Dados em 45min
Domine Validação de Dados em 45min
 
As Mudanças Culturais do PHP
As Mudanças Culturais do PHPAs Mudanças Culturais do PHP
As Mudanças Culturais do PHP
 
PHP Maroto
PHP MarotoPHP Maroto
PHP Maroto
 
Mágica com Manipulação de Imagens - TDC 2011 Goiânia
Mágica com Manipulação de Imagens - TDC 2011 GoiâniaMágica com Manipulação de Imagens - TDC 2011 Goiânia
Mágica com Manipulação de Imagens - TDC 2011 Goiânia
 
assertTrue($tdd) - Latinoware 2011
assertTrue($tdd) - Latinoware 2011assertTrue($tdd) - Latinoware 2011
assertTrue($tdd) - Latinoware 2011
 
REST: Faça o Serviço Direito
REST: Faça o Serviço DireitoREST: Faça o Serviço Direito
REST: Faça o Serviço Direito
 
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011
 
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
 
GET /conceitos HTTP/1.1
GET /conceitos HTTP/1.1GET /conceitos HTTP/1.1
GET /conceitos HTTP/1.1
 
assertTrue($tdd)
assertTrue($tdd)assertTrue($tdd)
assertTrue($tdd)
 
Varrendo APIs REST em Larga Escala utilizando PHP
Varrendo APIs REST em Larga Escala utilizando PHPVarrendo APIs REST em Larga Escala utilizando PHP
Varrendo APIs REST em Larga Escala utilizando PHP
 

Faça o Serviço Direito com REST

  • 1. REST: Faça o Serviço Direito 30 de Outubro The Developers Conference 2011 1
  • 2. beta REST: Faça o Serviço Direito 30 de Outubro The Developers Conference 2011 2
  • 3. Alexandre Gomes Gaigalas http://about.me/alganet 30 de Outubro The Developers Conference 2011 3
  • 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
  • 6. 30 de Outubro The Developers Conference 2011 6
  • 7. Roy Fielding 30 de Outubro The Developers Conference 2011 7
  • 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
  • 37. http://social.yahooapis.com/v1/user/12345/profile Schema Domain Path 21 de Agosto The Developers Conference 2011 37
  • 38. http://social.yahooapis.com/v1/user/12345/profile Schema Domain Path ● Representa um perfil 21 de Agosto The Developers Conference 2011 38
  • 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
  • 56. Perguntas? 30 de Outubro The Developers Conference 2011 56
  • 57. Obrigado! 30 de Outubro The Developers Conference 2011 57