SlideShare a Scribd company logo
1 of 68
Download to read offline
[ Empowering Business.
                  Architecting IT ]



1                                     © Copyright | www.sensedia.com
REST: Padrões & Melhores Práticas



2                                 © Copyright | www.sensedia.com
Quem somos nós

    alessandro.oliveira@sensedia.com
    @aro1976



    felipe.firmo@sensedia.com
    @felipe_firmo


3                                      © Copyright | www.sensedia.com
Público Alvo
                 API Designer



    Diretor                         Arquiteto




       Gerente                  Programador



4                                               © Copyright | www.sensedia.com
Agenda
    •   Sobre a Sensedia
    •   SOAP vs. REST
    •   Elegibilidade de REST
    •   Desafios de REST
    •   Padrões e Melhores Práticas REST
    •   Ferramentas
    •   Q&A


5                                          © Copyright | www.sensedia.com
[ Sobre a
          Sensedia ]

            Nosso core é Arquitetura de TI:
            Serviços & Ferramentas.

            Ajudamos empresas a serem
            Mais Ágeis, Flexíveis e Inovadoras

            Crescimento consistente:
            63% CAGR 2007-2011

6                                                © Copyright | www.sensedia.com
[ Sobre a
          Sensedia ]

            Profundo conhecimento em:
            √ SOA (Service Oriented Architechture)
            √ Governança
            √ Enterprise Architecture
            √ Cloud Computing




7                                                    © Copyright | www.sensedia.com
[ Sobre a
          Sensedia ]

            Posicionado como Visionário no
            Quadrante Mágico do Gartner(1)

            Criada a partir de iniciativa conjunta
            entre Ci&T e Laboratório de Inovação
            da Unicamp.


8                                                    © Copyright | www.sensedia.com
[ Sobre a
          Sensedia ]

            Sede em Campinas, SP e escritórios em
            São Paulo, SP e Philadelphia, EUA




            Campinas, BR   São Paulo, BR   Philadelphia, EUA




9                                                              © Copyright | www.sensedia.com
[ Quem tem experimentado
                a proposta de valor da Sensedia ]




10                                                  © Copyright | www.sensedia.com
SOAP vs. REST



11                   © Copyright | www.sensedia.com
SOAP vs. REST
     • SOAP: Simple Object Access Protocol
     •   Baseado em XML
     •   Padronizado pelo W3C
     •   Soluções de diversos fabricantes
     •   Compatibilidade com diversas linguagens e plataformas
     •   Maior consumo de banda e complexidade na implementação
     •   Contratos fortemente tipados
     •   JSR 224: JavaTM API for XML-Based Web Services (JAX-WS) 2.0


12                                                            © Copyright | www.sensedia.com
Exemplo de Requisição SOAP
     POST /Stock HTTP/1.1
     Host: www.stockexchange.org
     Content-Type: application/soap+xml; charset=utf-8
     Content-Length: 299
     SOAPAction: "http://www.w3.org/2003/05/soap-envelope"

     <?xml version="1.0"?>
     <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
      <soap:Header>
      </soap:Header>
      <soap:Body>
       <m:GetStockPrice xmlns:m="http://www.stockexchange.org/stock">
        <m:StockName>ORCL</m:StockName>
       </m:GetStockPrice>
      </soap:Body>
     </soap:Envelope>
13                                                                          © Copyright | www.sensedia.com
SOAP vs. REST
     • REST: REpresentational State Transfer
     • É um estilo arquitetural, portanto, não necessariamente
       um PADRÃO
     • Fortemente baseado na semantica do HTTP
         Operações: GET, POST, PUT, PATCH, DELETE
     • Virtualmente suportado por qualquer cliente HTTP
         Hypertext Transfer Protocol HTTP 1.1 - http://tools.ietf.org/html/rfc2616
         PATCH Method for HTTP - http://tools.ietf.org/html/rfc5789
     • Menor consumo de banda e overhead de processamento
     • Contratos Fracos

14                                                                        © Copyright | www.sensedia.com
Exemplo de uma requisição REST
     GET /stocks?name=ORCL HTTP/1.1




15                                     © Copyright | www.sensedia.com
Desafios REST



16                   © Copyright | www.sensedia.com
Desafios REST
     • Talvez o REST como um estilo arquitetural seja MUITO
       ABSTRATO
     • Padronização é necessária?
     • Os designers de API podem utilizar diversas abordagens
       para cada tema
     • Cada opção possui prós e contras, que precisam ser
       ponderados durante a fase de design
     • A governança pode se tornar muito complexa


17                                                       © Copyright | www.sensedia.com
Elegibilidade REST



18                        © Copyright | www.sensedia.com
Elegibilidade REST vs. SOAP
                            Aspect                  SOAP               REST
     Público Alvo                              Interno/Parceiros    Qualquer Um
     Volume de Processamento                      Moderado         Alto, com Picos
     Transação Distribuida / Orquestração        WS-* / BPEL       Não Padronizado
     Semântica de Consistência de Dados        Comumente ACID        Comumente
                                                                      Eventual
     Contratos Fortemente Tipados              Yes / WSDL / XSD     WADL? / Não
                                                                    Padronizado
     Segurança                                  Basic / Digest /   Basic / Digest /
                                                 WS-Security       OAuth / OpenID
     Ferramentas Automatizadas                 Bastante maduras    Não são maduras
     Suporte de Linguagens de Programação            Boa              Excelente
     Interoperabilidade entre implementações   Bastante maduras    Não são maduras



19                                                                      © Copyright | www.sensedia.com
Padrões REST



20                  © Copyright | www.sensedia.com
Grupos dos Padrões REST
     • Estratégia de
       Implementação
     • Segurança
     • Formato de Dados
     • Respostas Parciais
     • Design



21                                        © Copyright | www.sensedia.com
Estratégia de Implementação
     • Construir tudo do zero
     • Reutilizar o legado




22                                          © Copyright | www.sensedia.com
Construir Tudo do Zero
     •   Cenário
           Infraestrutura atual inexistente ou
              obsoleta
     •   Solução
           Criação de uma arquitetura de
              referência
           Avaliar a utilização de diversos tipos de
              banco de dados
           Utilização de cache distribuído
           Utilização de JMS para operações
              assíncronas
     •   Impactos
           Necessária a avaliação de diversas
              opções
           Análise de impacto de cada escolha
23                                                      © Copyright | www.sensedia.com
Reutilizar o Legado
     •   Cenário
           Já existem sistemas que provem todas
              as informações a serem publicadas
     •   Solução
           Modificação da arquitetura de
              referência atual para acomodar novos
              requisitos
           Utilização de JMS para operações
              assíncronas
     •   Impactos
           Risco de sobrecarga nos sistemas
              legados
           Menor flexibilidade no design da
              solução
           Maior latência em consultas
24                                                    © Copyright | www.sensedia.com
Segurança
     •   Recurso Público
     •   Autenticação no Recurso
     •   Autenticação por Terceiros
     •   Autorização pelo Recurso
     •   Autorização Centralizada
     •   Criptografia das Requisições/Respostas
     •   Criptografia do Canal


25                                                © Copyright | www.sensedia.com
Autenticação no Recurso
     •   Cenário                                    Usuário
           Restrição de acesso a um conjunto     Identificado
             de usuários conhecidos
     •   Solução
           Utilizar uma base LDAP, SQL,           Recurso
             chave/valor
           Criptografia de senhas usando       JavaEE Container
             algoritmos one-way usando salt
     •   Impactos                                    JAAS
           Risco na proteção da base de
             senhas
           Overhead na autenticação                LDAP

26                                                                 © Copyright | www.sensedia.com
Autenticação por Terceiros
     •   Cenário                                           Usuário
           Usuários não são conhecidos                  Identificado
             previamente pelo recurso
           Informações de identidade são de
             propriedade de terceiros              Resource
                                                                   Facebook
     •   Solução                                    Owner
           Configurar autenticação utilizando
             plataforma de terceiros, tais como:
               –   Facebook                        Recurso              API
               –   Twitter
     •   Impactos
           Dependência de fatores externos                         Base de
                                                                    Usuários
27                                                                      © Copyright | www.sensedia.com
Segurança
        autenticação por terceiros




     Referência: https://developers.facebook.com/docs/concepts/login/login-architecture/
28                                                                                  © Copyright | www.sensedia.com
Formato de Dados
     • Versionamento de Recursos
     • Multiplos formatos




29                                        © Copyright | www.sensedia.com
Versionamento de Recursos
     •   Cenário
           É necessário fazer alterações                    /pedidos
              incompatíveis no recurso
           Não é possível assegurar a migração de
              todos os clientes ao mesmo tempo
     •   Solução                                     V 1.0              V 2.0
           Manter por um período determinado
              mais de uma versão do recurso em
              operação
                                                     V 1.1
     •   Impactos
           Complexidade de Governança
           Aumento de custos de operação e
              desenvolvimento


30                                                                       © Copyright | www.sensedia.com
Versionamento de Recursos
     •   Nenhum Versionamento
           Funciona como se o recurso       /pedidos
            estivesse sempre na versão 1
           Impede a inclusão de novos
            atributos obrigatórios            V 1.0
           Impede a retirada de
            atributos
           Tende a deixar os recursos        V 1.1
            muito complexos
           Ao longo do tempo pode ser
            insustentável                     V 1.2

                                           Versão Única
31                                                        © Copyright | www.sensedia.com
Versionamento de Recursos
     • Versionamento na URI                                 /pedidos
           Ex: http://api.sensedia.com/v1/pedidos
           Viola HATEOAS
           Fácil roteamento entre servidores
                                                   /v1/pedidos     /v2/pedidos
           Fácil manutenção de código
           Não requer a utilização de cabeçalhos




32                                                                © Copyright | www.sensedia.com
Versionamento de Recursos
     • Versionamento na Query String
                                                              /pedidos
         Ex: http://api.sensedia.com/pedidos?_version=1
         Viola HATEOAS
         Parâmetro é opcional ou obrigatório?       /pedidos?        /pedidos?
         Difícil manutenção de código              _version=1       _version=2
         Não requer a utilização de cabeçalhos




33                                                                  © Copyright | www.sensedia.com
Versionamento de Recursos
     • Versionamento no Media Type
         Ex: http://api.sensedia.com/pedidos
           – Accepts: vnd.sensedia.com.pedidos+json; version=1

         Dificulta a implementação de clientes
         Dificulta o acesso via browser (não deve ter versão default,
          certo?)
         Moderada complexidade na manutenção de código




34                                                                   © Copyright | www.sensedia.com
Versionamento de Recursos
     Nenhum             URI                 Query String   VND
     Twitter até 2009   Twitter após 2009   Facebook       Azure
     Flickr             Foursquare          Google Data    GitHub (v 3)
                        Dropbox             Netflix *
                        GitHub (v 2)        PayPal
                        Yammer              EBay
                        Delicious
                        Last FM
                        Twillio



35                                                                 © Copyright | www.sensedia.com
Múltiplos Formatos
     •   Cenário
           Dependendo do recurso, talvez seja              /pedidos/ABCD-1234
              importante representá-lo de diversas
              formas.
     •   Solução
           Possibilitar que o cliente passe no      JSON                            XML
              header Accept, o formato desejado.
           Prover diversas alternativas de
              renderização dependendo do tipo do
              recurso
                                                        ICAL              PDF
     •   Impactos
           Flexibilidade do uso pelos clientes
           Aumento de complexidade na
              implementação

36                                                                         © Copyright | www.sensedia.com
Respostas Parciais
     • Paginação de Consultas
     • Subconjunto de Atributos




37                                           © Copyright | www.sensedia.com
Paginação de Consultas              /pedidos
     •   Cenário
           Os resultados de pesquisas são muito     Cliente   Página 1
              grandes, sendo desnecessário ou
              inviável o acesso de uma única vez
           Necessário a redução de custos de rede
              principalmente em mobile                         Página 2
     •   Solução
           Dividir o conjunto de recursos em
              páginas minimizando o tamanho de                 Página 3
              cada requisição
     •   Impactos
           O sistema provedor das informações
              precisa suportar paginação                       Página 4
           Necessário a utilização de caches para
              consultas
38                                                              © Copyright | www.sensedia.com
Paginação de Consultas
     • Sem Paginação
           Ex: http://api.sensedia.com/v1/pedidos
           Resultados potencialmente muito grandes
           Inviável para mobile
           Pode demandar muita infraestrutura de rede
           Simples para implementar, independente da estratégia de
            implementação utilizada




39                                                                © Copyright | www.sensedia.com
Paginação de Consultas
     • Paginação na URI
       –   Ex 1: http://api.sensedia.com/v1/pedidos/3/50
            » Página 3 com 50 registros
       –   Ex 2: http://api.sensedia.com/v1/pedidos/3
            » Página 3
       –   Confunde com a URI para acesso a um elemento do conjunto:
            » http://api.sensedia.com/v1/pedidos/ABCD-12345




40                                                              © Copyright | www.sensedia.com
Paginação de Consultas
     • Paginação na Query String
       –   Ex: http://api.sensedia.com/v1/pedidos?_pagina=3&_tamanho=50
       –   Flexível pois o cliente pode ou não utilizar esse recurso
       –   Pode definir o tamanho da página que é mais adequado para o consumo
       –   Query String => Restrições
       –   Opção recomendada para uso geral




41                                                                  © Copyright | www.sensedia.com
Paginação de Consultas: Cases Query String
         • Facebook                            • Twitter
              Offset Based                         Time Based
                 – Limit
                                                       – Until
                 – Offset
                                                       – Count
              Time Based
                 – Until                            Cursor Based
                 – Since                               – Since_id
                 – Limit                               – Max_id
              Cursor Based
                                                       – Count
                 – Limit
                 – Before
                 – After


     Referência: https://developers.facebook.com/docs/reference/api/pagination/
42             https://dev.twitter.com/docs/api/1.1/get/search/tweets     © Copyright | www.sensedia.com
Paginação de Consultas
     • Paginação usando HTTP Headers
       –   Ex: http://api.sensedia.com/v1/pedidos
       –   Requer uso do cabeçalho Range na requisição
            » Range: pagina=3/50
       –   Na resposta pode ser utilizado:
            » Content-Range: pagina=3/50
       –   Dificulta o uso no browser
       –   Dificulta configuração HTTP Cache
       –   Mantém a QueryString livre de metadados


43                                                       © Copyright | www.sensedia.com
Subconjunto de Atributos
     Exemplo Filtro Positivo:
     http://api.sensedia.com/v1/pedidos?_atributos=cliente,data,status,total
     [{
              “cliente”: {
                        “codigo”: “ABCD-1234”
              },
              “data”:"2012-10-09T01:01:01",
              "status": "AGUARDANDO_PAGAMENTO",
              “total”: 9.99
     }]

44                                                                   © Copyright | www.sensedia.com
Subconjunto de Atributos
     Exemplo Filtro Positivo:
     http://api.sensedia.com/v1/pedidos?_atributos=codigo,status
     [{
              “codigo”: “ABCD-1234”,
              "status": "AGUARDANDO_PAGAMENTO”
     },
     {
              “codigo”: “EFGH-3456”,
              "status": ”ENTREGUE”
     }]

45                                                                 © Copyright | www.sensedia.com
Subconjunto de Atributos
     Exemplo Filtro Negativo
     http://api.sensedia.com/v1/pedidos/4780-DEFG?_atributos=!itens
     {
             “codigo”:”4780-DEFG”,
             “cliente”: {
                        “codigo”: “ABCD-1234”
             },
             “data”:"2012-10-09T01:01:01",
             "status": "AGUARDANDO_PAGAMENTO",
             “total”: 9.99
     }

46                                                               © Copyright | www.sensedia.com
Design
     •   Evitar refreshes desnecessários
     •   Referências fracas entre recursos
     •   Contrato Uniforme
     •   Processamento Assíncrono




47                                           © Copyright | www.sensedia.com
Evitar refreshes desnecessários
•    Cenário                                          GET /v1/pedidos/ABCD-1234 HTTP/1.1
       Refreshes desnecessários podem
          impactar o potencial de escalabilidade da
          API                                         Cache-Control: max-age=86400
       Recursos possuem diferences                   Etag: 69fafe9b
          características quanto a volatilidade de    {
          dados
                                                          “codigo”:”ABCD-1234”,
•    Solução
                                                          ”status”:”AGUARDANDO_PAGAMENTO”
       Identificar essas características de
          volatilidade de dados                       }
       Instrumentar os clientes e HTTP caches
•    Impactos
       Maior esforço em tempo de design
       Maior esforço na implementação das
          operações
48                                                                             © Copyright | www.sensedia.com
Volatilidade de Dados
      Estavel
                                            Muito
     durante a
                                           Estavel
      sessão


                                           Estavel




     Instável



49                                       © Copyright | www.sensedia.com
Volatilidade de Dados
     • Categorias                      • Clientes
         Alteração 1 vez ao mês           Alterações somente na
         Aceita até 1 semana de             sessão
           defasagem                       Não há defasagem
     • Produtos                        • Pedidos
         Alteração 1 vez por semana       Alterações frequentes
         Acetavel até 1 dia de            Não é aceitavel defasagem
           defasagem




50                                                            © Copyright | www.sensedia.com
Evitar Refreshes Desnecessários
     • Definir HTTP Headers (na resposta):
         Last-Modified: http://tools.ietf.org/html/rfc2616#section-13.3.1
         Cache-Control: http://tools.ietf.org/html/rfc2616#section-14.9
         ETag: http://tools.ietf.org/html/rfc2616#section-13.3.2




51                                                                 © Copyright | www.sensedia.com
Referências fracas entre recursos
•    Cenário
       Todos os recursos estão de certa forma
          associados                                 Clientes      Pedidos
       Não é possível manipular todos os
          recursos de uma só vez
•    Solução
       Análise do modelo conceitual para           Categorias    Produtos
          identificar as composições
       Agrupar as composições em um único
          recurso
       Definir associação fraca entre recursos
•    Impactos
       Possibilita a instrumentação de caches de
          forma mais efetiva
52                                                               © Copyright | www.sensedia.com
Referências fracas entre recursos

     Referências
       Fortes

                        Referências
                          Fracas




53                                             © Copyright | www.sensedia.com
Referências fracas entre recursos
     Produto:                              Categoria:
     {                                     {
                “codigo”:”ABCD-1234”,               “codigo”:”EFGH-5678”,
                “descricao”:”…”,                    “nome”:”smartphones”
                “preco”: 10.00,            }
                “categoria”: {
                         “codigo”:”EFGH-
     5678”
                }
     }




54                                                                   © Copyright | www.sensedia.com
Referências fracas entre recursos - URIs
     •    /categorias
     •    /categorias/{codigo}
     •    /produtos
     •    /produtos/{codigo}
     •    /clientes
     •    /clientes/{codigo}
     •    /clientes/{codigo}/enderecos
     •    /clientes/{codigo}/enderecos/{codigo}
     •    /pedidos
     •    /pedidos/{codigo}
     •    /pedidos/{codigo}/itens
     •    /pedidos/{codigo}/itens/{codigo}
55                                                © Copyright | www.sensedia.com
Contrato Uniforme
•    Cenário
                                                         POST /pedidos HTTP/1.1
       A manipulação dos recursos devem se
         comportar de forma idêntica
•    Solução
       Definir quais as operações HTTP serão aceitas   201                         500
       Definir um cojunto de códigos de retorno de
         sucesso e erro padronizados
       Revisar o comportamento de todos os
         recursos                                             401         403
•    Impactos
       Aumento no custo de desenvolvimento inicial
       Redução de complexidade no consumo dos
         recursos
56                                                                     © Copyright | www.sensedia.com
HTTP Status Codes – Casos de Sucesso
     200 OK: aceito para GET
     201 Created: aceito para POST, indica que o recurso foi criado com
     sucesso, deverá existir o header Location: indicando a URI do novo
     recurso.
     202 Accepted: aceito para POST, PUT, PATCH e DELETE, indica que o
     recurso criado representa um processo assíncrono, portanto, além do
     header Location, deverá retornar o conteúdo com um atributo status.
     Posteriormente o recurso poderá ser consultado para avaliar a alteração
     do status.
     204 No Content: aceito para PUT, PATCH e DELETE

57                                                                    © Copyright | www.sensedia.com
HTTP Status Codes – Casos de Erro
     • Exceção de negócio – retorna código 422;
     • Exceção do cliente – família 400:
          400 - Requisição Mal Formada;
          401 - Requisição Requer Autenticação;
          403 - Requisição Negada;
          404 - Recurso não Encontrado;
          405 - Método não Permitido;
     • Exceção do Servidor – retorna código 500;
     Além do código de retorno http, os detalhes do erro devem ser
     retornados no payload, com um link para a documentação do erro;


58                                                                © Copyright | www.sensedia.com
Processamento Assíncrono
•    Cenário
       As operações que modificam o estado, POST,
         PUT, PATCH e DELETE podem demorar,
         principalmente quando dependem do
         legado
•    Solução
       Armazenar a requisição de forma imediata
       Retornar para o cliente com um ticket para
         que ele possa consultar o status
         posteriormente
       Notificação de alteração de estado
•    Impactos
       Maior complexidade na implementação do
59       cliente e do recurso                        © Copyright | www.sensedia.com
Processamento Síncrono




60                            © Copyright | www.sensedia.com
Recursos com Processamento Assíncrono
     • São recursos que representam (ou iniciam) a execução de processos
       de longa duração.
     • Na criação de um novo recurso, deverá retornar o código 202 –
       Requisição Aceita
     • Eventuais erros de negócio deverão ser representados na forma de
       “status”, que poderão ser consultados de forma subsequente.
     • Notificação de Fim de Trabalho:
          Dispositivos Móveis e Desktops: Polling
          Outros Sistemas: Notificação de Eventos


61                                                                 © Copyright | www.sensedia.com
Processamento Assíncrono - Polling




62                                   © Copyright | www.sensedia.com
Processamento Assíncrono - Callback




63                                   © Copyright | www.sensedia.com
Ferramentas



64                 © Copyright | www.sensedia.com
[ Componentes
  Tecnológicos ]

Partners Apps
 / Commerce     REST API Traffic
                                       API               Internal Call
                                                                                                                    Business
                                                                                                                   Application 1
                                                                                         ESB
   Platforms                         Gateway
                                                                                                                    Business
                                                                                                                   Application 2
                                                                       Monitoring              Internal Services
                                   Control API Traffic
                                                           Policy                              Discovery
                                                           Deploy



                                                             Publish
 Developers     Web Browser          Partners                                              API
                                      Portal                Get API Usage                Manager


                                   Engage Developers                                Manage API documentation,
                                                                                    Access Keys and Usage
Q&A



66         © Copyright | www.sensedia.com
Contatos

     alessandro.oliveira@sensedia.com
     @aro1976



     felipe.firmo@sensedia.com
     @felipe_firmo


67                                      © Copyright | www.sensedia.com
Thank You!



     [ Empowering Business.
                   Architecting IT ]



68                                     © Copyright | www.sensedia.com

More Related Content

What's hot

Indicadores para APIs
Indicadores para APIsIndicadores para APIs
Indicadores para APIsSensedia
 
O poder das APIs
O poder das APIsO poder das APIs
O poder das APIsSensedia
 
Repensando o ESB: sua arquitetura SOA, usando APIs
Repensando o ESB: sua arquitetura SOA, usando APIsRepensando o ESB: sua arquitetura SOA, usando APIs
Repensando o ESB: sua arquitetura SOA, usando APIsFábio Rosato
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaSensedia
 
APIs Atributos e Tecnologia
APIs Atributos e TecnologiaAPIs Atributos e Tecnologia
APIs Atributos e TecnologiaFábio Rosato
 
APIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a pontaAPIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a pontaJosé Vahl
 
Vida longa para SOA com microservices
Vida longa para SOA com microservicesVida longa para SOA com microservices
Vida longa para SOA com microservicesFábio Rosato
 
Impacto das mega tendências io t, cloud e mobile na arquitetura das grandes e...
Impacto das mega tendências io t, cloud e mobile na arquitetura das grandes e...Impacto das mega tendências io t, cloud e mobile na arquitetura das grandes e...
Impacto das mega tendências io t, cloud e mobile na arquitetura das grandes e...Fábio Rosato
 
Expondo APIs de back-ends legados e travados
Expondo APIs de back-ends legados e travadosExpondo APIs de back-ends legados e travados
Expondo APIs de back-ends legados e travadosFábio Rosato
 
Case Sensedia Catho
Case Sensedia CathoCase Sensedia Catho
Case Sensedia CathoSensedia
 
Vida longa para soa com microservices
Vida longa para soa com microservicesVida longa para soa com microservices
Vida longa para soa com microservicesFábio Rosato
 
Modelo de arquitetura orientada a serviços para sistemas
Modelo de arquitetura orientada a serviços para sistemasModelo de arquitetura orientada a serviços para sistemas
Modelo de arquitetura orientada a serviços para sistemasLeandro Najm
 
Engenharia de software orientada a servicos
Engenharia de software orientada a servicosEngenharia de software orientada a servicos
Engenharia de software orientada a servicosLeonardo Eloy
 
Economia das APIs - Uma visão de negócios
Economia das APIs - Uma visão de negóciosEconomia das APIs - Uma visão de negócios
Economia das APIs - Uma visão de negóciosEdgar Silva
 
Case Sensedia Cielo
Case Sensedia CieloCase Sensedia Cielo
Case Sensedia CieloSensedia
 
Governança SOA
Governança SOAGovernança SOA
Governança SOASensedia
 
SOA - Uma Breve Introdução
SOA - Uma Breve IntroduçãoSOA - Uma Breve Introdução
SOA - Uma Breve IntroduçãoAndré Borgonovo
 
Palestra sobre a SOA foi destaque no Ciasc
Palestra sobre a SOA foi destaque no Ciasc  Palestra sobre a SOA foi destaque no Ciasc
Palestra sobre a SOA foi destaque no Ciasc guest880159
 
Skalena - Overview de Soluções
Skalena - Overview de Soluções Skalena - Overview de Soluções
Skalena - Overview de Soluções Edgar Silva
 

What's hot (20)

Indicadores para APIs
Indicadores para APIsIndicadores para APIs
Indicadores para APIs
 
O poder das APIs
O poder das APIsO poder das APIs
O poder das APIs
 
Repensando o ESB: sua arquitetura SOA, usando APIs
Repensando o ESB: sua arquitetura SOA, usando APIsRepensando o ESB: sua arquitetura SOA, usando APIs
Repensando o ESB: sua arquitetura SOA, usando APIs
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha Básica
 
APIs Atributos e Tecnologia
APIs Atributos e TecnologiaAPIs Atributos e Tecnologia
APIs Atributos e Tecnologia
 
APIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a pontaAPIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a ponta
 
Vida longa para SOA com microservices
Vida longa para SOA com microservicesVida longa para SOA com microservices
Vida longa para SOA com microservices
 
Impacto das mega tendências io t, cloud e mobile na arquitetura das grandes e...
Impacto das mega tendências io t, cloud e mobile na arquitetura das grandes e...Impacto das mega tendências io t, cloud e mobile na arquitetura das grandes e...
Impacto das mega tendências io t, cloud e mobile na arquitetura das grandes e...
 
Expondo APIs de back-ends legados e travados
Expondo APIs de back-ends legados e travadosExpondo APIs de back-ends legados e travados
Expondo APIs de back-ends legados e travados
 
Case Sensedia Catho
Case Sensedia CathoCase Sensedia Catho
Case Sensedia Catho
 
Vida longa para soa com microservices
Vida longa para soa com microservicesVida longa para soa com microservices
Vida longa para soa com microservices
 
Modelo de arquitetura orientada a serviços para sistemas
Modelo de arquitetura orientada a serviços para sistemasModelo de arquitetura orientada a serviços para sistemas
Modelo de arquitetura orientada a serviços para sistemas
 
Engenharia de software orientada a servicos
Engenharia de software orientada a servicosEngenharia de software orientada a servicos
Engenharia de software orientada a servicos
 
Economia das APIs - Uma visão de negócios
Economia das APIs - Uma visão de negóciosEconomia das APIs - Uma visão de negócios
Economia das APIs - Uma visão de negócios
 
Case Sensedia Cielo
Case Sensedia CieloCase Sensedia Cielo
Case Sensedia Cielo
 
Governança SOA
Governança SOAGovernança SOA
Governança SOA
 
SOA - Uma Breve Introdução
SOA - Uma Breve IntroduçãoSOA - Uma Breve Introdução
SOA - Uma Breve Introdução
 
Governança SOA Microsoft
Governança SOA MicrosoftGovernança SOA Microsoft
Governança SOA Microsoft
 
Palestra sobre a SOA foi destaque no Ciasc
Palestra sobre a SOA foi destaque no Ciasc  Palestra sobre a SOA foi destaque no Ciasc
Palestra sobre a SOA foi destaque no Ciasc
 
Skalena - Overview de Soluções
Skalena - Overview de Soluções Skalena - Overview de Soluções
Skalena - Overview de Soluções
 

Viewers also liked

Hadoop - Primeiros passos
Hadoop - Primeiros passosHadoop - Primeiros passos
Hadoop - Primeiros passosSensedia
 
Hackathons & Innovation: como engajar desenvolvedores em torno da sua empresa...
Hackathons & Innovation: como engajar desenvolvedores em torno da sua empresa...Hackathons & Innovation: como engajar desenvolvedores em torno da sua empresa...
Hackathons & Innovation: como engajar desenvolvedores em torno da sua empresa...Sensedia
 
Open API Strategy, by Sensedia
Open API Strategy, by SensediaOpen API Strategy, by Sensedia
Open API Strategy, by SensediaSensedia
 
Construção de APIs para apps móveis
Construção de APIs para apps móveisConstrução de APIs para apps móveis
Construção de APIs para apps móveisSensedia
 
Case Sensedia B2W
Case Sensedia B2WCase Sensedia B2W
Case Sensedia B2WSensedia
 
Microservices: Uma visão Pragmática e Prática - Parte 2
Microservices: Uma visão Pragmática e Prática - Parte 2Microservices: Uma visão Pragmática e Prática - Parte 2
Microservices: Uma visão Pragmática e Prática - Parte 2WSO2
 
2016 05-21 - api gateway (apresentação).pptx (2)
2016 05-21 - api gateway (apresentação).pptx (2)2016 05-21 - api gateway (apresentação).pptx (2)
2016 05-21 - api gateway (apresentação).pptx (2)Claudio Eduardo de Oliveira
 
Rest with grails 3
Rest with grails 3Rest with grails 3
Rest with grails 3Jenn Strater
 
APIs do Jeito Certo
APIs do Jeito CertoAPIs do Jeito Certo
APIs do Jeito CertoRavan Scafi
 
Design APIs Restful, DevWeek Porto Alegre
Design APIs Restful, DevWeek Porto AlegreDesign APIs Restful, DevWeek Porto Alegre
Design APIs Restful, DevWeek Porto AlegreKleber Bacili
 
Develop and Deploy Cloud-Native Apps as Resilient Microservice Architectures
Develop and Deploy Cloud-Native Apps as Resilient Microservice ArchitecturesDevelop and Deploy Cloud-Native Apps as Resilient Microservice Architectures
Develop and Deploy Cloud-Native Apps as Resilient Microservice ArchitecturesAll Things Open
 
Caso de Estudo CNova
Caso de Estudo CNovaCaso de Estudo CNova
Caso de Estudo CNovaSensedia
 
SOA @ T-Mobile: Automatic Service Provisioning to the ESB
SOA @ T-Mobile: Automatic Service Provisioning to the ESBSOA @ T-Mobile: Automatic Service Provisioning to the ESB
SOA @ T-Mobile: Automatic Service Provisioning to the ESBunknown08
 

Viewers also liked (17)

Hadoop - Primeiros passos
Hadoop - Primeiros passosHadoop - Primeiros passos
Hadoop - Primeiros passos
 
Hackathons & Innovation: como engajar desenvolvedores em torno da sua empresa...
Hackathons & Innovation: como engajar desenvolvedores em torno da sua empresa...Hackathons & Innovation: como engajar desenvolvedores em torno da sua empresa...
Hackathons & Innovation: como engajar desenvolvedores em torno da sua empresa...
 
Open API Strategy, by Sensedia
Open API Strategy, by SensediaOpen API Strategy, by Sensedia
Open API Strategy, by Sensedia
 
Construção de APIs para apps móveis
Construção de APIs para apps móveisConstrução de APIs para apps móveis
Construção de APIs para apps móveis
 
Case Sensedia B2W
Case Sensedia B2WCase Sensedia B2W
Case Sensedia B2W
 
Microservices: Uma visão Pragmática e Prática - Parte 2
Microservices: Uma visão Pragmática e Prática - Parte 2Microservices: Uma visão Pragmática e Prática - Parte 2
Microservices: Uma visão Pragmática e Prática - Parte 2
 
2016 05-21 - api gateway (apresentação).pptx (2)
2016 05-21 - api gateway (apresentação).pptx (2)2016 05-21 - api gateway (apresentação).pptx (2)
2016 05-21 - api gateway (apresentação).pptx (2)
 
Rest with grails 3
Rest with grails 3Rest with grails 3
Rest with grails 3
 
APIs do Jeito Certo
APIs do Jeito CertoAPIs do Jeito Certo
APIs do Jeito Certo
 
Design APIs Restful, DevWeek Porto Alegre
Design APIs Restful, DevWeek Porto AlegreDesign APIs Restful, DevWeek Porto Alegre
Design APIs Restful, DevWeek Porto Alegre
 
Develop and Deploy Cloud-Native Apps as Resilient Microservice Architectures
Develop and Deploy Cloud-Native Apps as Resilient Microservice ArchitecturesDevelop and Deploy Cloud-Native Apps as Resilient Microservice Architectures
Develop and Deploy Cloud-Native Apps as Resilient Microservice Architectures
 
Soa Fundamentos
Soa FundamentosSoa Fundamentos
Soa Fundamentos
 
Caso de Estudo CNova
Caso de Estudo CNovaCaso de Estudo CNova
Caso de Estudo CNova
 
SOA @ T-Mobile: Automatic Service Provisioning to the ESB
SOA @ T-Mobile: Automatic Service Provisioning to the ESBSOA @ T-Mobile: Automatic Service Provisioning to the ESB
SOA @ T-Mobile: Automatic Service Provisioning to the ESB
 
MicroServices sur AWS
MicroServices sur AWSMicroServices sur AWS
MicroServices sur AWS
 
Introdução à Microservices
Introdução à MicroservicesIntrodução à Microservices
Introdução à Microservices
 
SOA vs EDA
SOA vs EDASOA vs EDA
SOA vs EDA
 

Similar to REST - padrões e melhores práticas

REST: Padrões e Melhores Práticas
REST: Padrões e Melhores PráticasREST: Padrões e Melhores Práticas
REST: Padrões e Melhores PráticasAlessandro Oliveira
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edtedbrunoaalves
 
Uaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoUaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoRogerio Fontes
 
Pense Aberto, Pense Linux
Pense Aberto, Pense LinuxPense Aberto, Pense Linux
Pense Aberto, Pense Linuxaviram
 
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
 
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
De zero a cem em cloud computing  transformando idéias em aplicações em pouco...De zero a cem em cloud computing  transformando idéias em aplicações em pouco...
De zero a cem em cloud computing transformando idéias em aplicações em pouco...Ricardo Martinelli de Oliveira
 
Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Renato Groff
 
Curso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksCurso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksJonata Weber
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021Renato Groffe
 
Arquitetura de Microservicos
Arquitetura de MicroservicosArquitetura de Microservicos
Arquitetura de MicroservicosNorberto Enomoto
 
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Renato Groff
 
Soa – Woa Rest Arquiteturas
Soa – Woa   Rest ArquiteturasSoa – Woa   Rest Arquiteturas
Soa – Woa Rest Arquiteturasrafaslide
 
Habilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosHabilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosJeison Barros
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021Renato Groffe
 
Keynote nuvem estaleiro_ics
Keynote nuvem estaleiro_icsKeynote nuvem estaleiro_ics
Keynote nuvem estaleiro_icsHoracio Ibrahim
 

Similar to REST - padrões e melhores práticas (20)

REST: Padrões e Melhores Práticas
REST: Padrões e Melhores PráticasREST: Padrões e Melhores Práticas
REST: Padrões e Melhores Práticas
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edted
 
Uaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoUaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - Introdução
 
Ria
RiaRia
Ria
 
Pense Aberto, Pense Linux
Pense Aberto, Pense LinuxPense Aberto, Pense Linux
Pense Aberto, Pense Linux
 
Sua aplicação nas nuvens com open shift
Sua aplicação nas nuvens com open shiftSua aplicação nas nuvens com open shift
Sua aplicação nas nuvens com open shift
 
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
 
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
De zero a cem em cloud computing  transformando idéias em aplicações em pouco...De zero a cem em cloud computing  transformando idéias em aplicações em pouco...
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
 
Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016
 
Curso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksCurso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – Frameworks
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
 
Arquitetura de Microservicos
Arquitetura de MicroservicosArquitetura de Microservicos
Arquitetura de Microservicos
 
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
 
Soa – Woa Rest Arquiteturas
Soa – Woa   Rest ArquiteturasSoa – Woa   Rest Arquiteturas
Soa – Woa Rest Arquiteturas
 
Habilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosHabilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dados
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
 
Computação em nuvem e Windows Azure
Computação em nuvem e Windows AzureComputação em nuvem e Windows Azure
Computação em nuvem e Windows Azure
 
Keynote nuvem estaleiro_ics
Keynote nuvem estaleiro_icsKeynote nuvem estaleiro_ics
Keynote nuvem estaleiro_ics
 
Ass - RIA
Ass - RIAAss - RIA
Ass - RIA
 

More from Sensedia

Case Sensedia Simpress
Case Sensedia SimpressCase Sensedia Simpress
Case Sensedia SimpressSensedia
 
Case Cnova Page
Case Cnova PageCase Cnova Page
Case Cnova PageSensedia
 
Case Cnova-en
Case Cnova-enCase Cnova-en
Case Cnova-enSensedia
 
Case Simpress
Case SimpressCase Simpress
Case SimpressSensedia
 
Open Banking Platform - Intro
Open Banking Platform - IntroOpen Banking Platform - Intro
Open Banking Platform - IntroSensedia
 
Modelo Canônico: Vilão ou Mocinho?
Modelo Canônico: Vilão ou Mocinho?Modelo Canônico: Vilão ou Mocinho?
Modelo Canônico: Vilão ou Mocinho?Sensedia
 
Estratégia de APIs Abertas
Estratégia de APIs AbertasEstratégia de APIs Abertas
Estratégia de APIs AbertasSensedia
 
2o workshop governanca soa na pratica
2o workshop governanca soa na pratica2o workshop governanca soa na pratica
2o workshop governanca soa na praticaSensedia
 
Integração ensemble e governança repository
Integração ensemble e governança repositoryIntegração ensemble e governança repository
Integração ensemble e governança repositorySensedia
 
Webinar: Maturidade e Roadmap SOA
Webinar: Maturidade e Roadmap SOAWebinar: Maturidade e Roadmap SOA
Webinar: Maturidade e Roadmap SOASensedia
 

More from Sensedia (10)

Case Sensedia Simpress
Case Sensedia SimpressCase Sensedia Simpress
Case Sensedia Simpress
 
Case Cnova Page
Case Cnova PageCase Cnova Page
Case Cnova Page
 
Case Cnova-en
Case Cnova-enCase Cnova-en
Case Cnova-en
 
Case Simpress
Case SimpressCase Simpress
Case Simpress
 
Open Banking Platform - Intro
Open Banking Platform - IntroOpen Banking Platform - Intro
Open Banking Platform - Intro
 
Modelo Canônico: Vilão ou Mocinho?
Modelo Canônico: Vilão ou Mocinho?Modelo Canônico: Vilão ou Mocinho?
Modelo Canônico: Vilão ou Mocinho?
 
Estratégia de APIs Abertas
Estratégia de APIs AbertasEstratégia de APIs Abertas
Estratégia de APIs Abertas
 
2o workshop governanca soa na pratica
2o workshop governanca soa na pratica2o workshop governanca soa na pratica
2o workshop governanca soa na pratica
 
Integração ensemble e governança repository
Integração ensemble e governança repositoryIntegração ensemble e governança repository
Integração ensemble e governança repository
 
Webinar: Maturidade e Roadmap SOA
Webinar: Maturidade e Roadmap SOAWebinar: Maturidade e Roadmap SOA
Webinar: Maturidade e Roadmap SOA
 

REST - padrões e melhores práticas

  • 1. [ Empowering Business. Architecting IT ] 1 © Copyright | www.sensedia.com
  • 2. REST: Padrões & Melhores Práticas 2 © Copyright | www.sensedia.com
  • 3. Quem somos nós alessandro.oliveira@sensedia.com @aro1976 felipe.firmo@sensedia.com @felipe_firmo 3 © Copyright | www.sensedia.com
  • 4. Público Alvo API Designer Diretor Arquiteto Gerente Programador 4 © Copyright | www.sensedia.com
  • 5. Agenda • Sobre a Sensedia • SOAP vs. REST • Elegibilidade de REST • Desafios de REST • Padrões e Melhores Práticas REST • Ferramentas • Q&A 5 © Copyright | www.sensedia.com
  • 6. [ Sobre a Sensedia ] Nosso core é Arquitetura de TI: Serviços & Ferramentas. Ajudamos empresas a serem Mais Ágeis, Flexíveis e Inovadoras Crescimento consistente: 63% CAGR 2007-2011 6 © Copyright | www.sensedia.com
  • 7. [ Sobre a Sensedia ] Profundo conhecimento em: √ SOA (Service Oriented Architechture) √ Governança √ Enterprise Architecture √ Cloud Computing 7 © Copyright | www.sensedia.com
  • 8. [ Sobre a Sensedia ] Posicionado como Visionário no Quadrante Mágico do Gartner(1) Criada a partir de iniciativa conjunta entre Ci&T e Laboratório de Inovação da Unicamp. 8 © Copyright | www.sensedia.com
  • 9. [ Sobre a Sensedia ] Sede em Campinas, SP e escritórios em São Paulo, SP e Philadelphia, EUA Campinas, BR São Paulo, BR Philadelphia, EUA 9 © Copyright | www.sensedia.com
  • 10. [ Quem tem experimentado a proposta de valor da Sensedia ] 10 © Copyright | www.sensedia.com
  • 11. SOAP vs. REST 11 © Copyright | www.sensedia.com
  • 12. SOAP vs. REST • SOAP: Simple Object Access Protocol • Baseado em XML • Padronizado pelo W3C • Soluções de diversos fabricantes • Compatibilidade com diversas linguagens e plataformas • Maior consumo de banda e complexidade na implementação • Contratos fortemente tipados • JSR 224: JavaTM API for XML-Based Web Services (JAX-WS) 2.0 12 © Copyright | www.sensedia.com
  • 13. Exemplo de Requisição SOAP POST /Stock HTTP/1.1 Host: www.stockexchange.org Content-Type: application/soap+xml; charset=utf-8 Content-Length: 299 SOAPAction: "http://www.w3.org/2003/05/soap-envelope" <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Header> </soap:Header> <soap:Body> <m:GetStockPrice xmlns:m="http://www.stockexchange.org/stock"> <m:StockName>ORCL</m:StockName> </m:GetStockPrice> </soap:Body> </soap:Envelope> 13 © Copyright | www.sensedia.com
  • 14. SOAP vs. REST • REST: REpresentational State Transfer • É um estilo arquitetural, portanto, não necessariamente um PADRÃO • Fortemente baseado na semantica do HTTP  Operações: GET, POST, PUT, PATCH, DELETE • Virtualmente suportado por qualquer cliente HTTP  Hypertext Transfer Protocol HTTP 1.1 - http://tools.ietf.org/html/rfc2616  PATCH Method for HTTP - http://tools.ietf.org/html/rfc5789 • Menor consumo de banda e overhead de processamento • Contratos Fracos 14 © Copyright | www.sensedia.com
  • 15. Exemplo de uma requisição REST GET /stocks?name=ORCL HTTP/1.1 15 © Copyright | www.sensedia.com
  • 16. Desafios REST 16 © Copyright | www.sensedia.com
  • 17. Desafios REST • Talvez o REST como um estilo arquitetural seja MUITO ABSTRATO • Padronização é necessária? • Os designers de API podem utilizar diversas abordagens para cada tema • Cada opção possui prós e contras, que precisam ser ponderados durante a fase de design • A governança pode se tornar muito complexa 17 © Copyright | www.sensedia.com
  • 18. Elegibilidade REST 18 © Copyright | www.sensedia.com
  • 19. Elegibilidade REST vs. SOAP Aspect SOAP REST Público Alvo Interno/Parceiros Qualquer Um Volume de Processamento Moderado Alto, com Picos Transação Distribuida / Orquestração WS-* / BPEL Não Padronizado Semântica de Consistência de Dados Comumente ACID Comumente Eventual Contratos Fortemente Tipados Yes / WSDL / XSD WADL? / Não Padronizado Segurança Basic / Digest / Basic / Digest / WS-Security OAuth / OpenID Ferramentas Automatizadas Bastante maduras Não são maduras Suporte de Linguagens de Programação Boa Excelente Interoperabilidade entre implementações Bastante maduras Não são maduras 19 © Copyright | www.sensedia.com
  • 20. Padrões REST 20 © Copyright | www.sensedia.com
  • 21. Grupos dos Padrões REST • Estratégia de Implementação • Segurança • Formato de Dados • Respostas Parciais • Design 21 © Copyright | www.sensedia.com
  • 22. Estratégia de Implementação • Construir tudo do zero • Reutilizar o legado 22 © Copyright | www.sensedia.com
  • 23. Construir Tudo do Zero • Cenário  Infraestrutura atual inexistente ou obsoleta • Solução  Criação de uma arquitetura de referência  Avaliar a utilização de diversos tipos de banco de dados  Utilização de cache distribuído  Utilização de JMS para operações assíncronas • Impactos  Necessária a avaliação de diversas opções  Análise de impacto de cada escolha 23 © Copyright | www.sensedia.com
  • 24. Reutilizar o Legado • Cenário  Já existem sistemas que provem todas as informações a serem publicadas • Solução  Modificação da arquitetura de referência atual para acomodar novos requisitos  Utilização de JMS para operações assíncronas • Impactos  Risco de sobrecarga nos sistemas legados  Menor flexibilidade no design da solução  Maior latência em consultas 24 © Copyright | www.sensedia.com
  • 25. Segurança • Recurso Público • Autenticação no Recurso • Autenticação por Terceiros • Autorização pelo Recurso • Autorização Centralizada • Criptografia das Requisições/Respostas • Criptografia do Canal 25 © Copyright | www.sensedia.com
  • 26. Autenticação no Recurso • Cenário Usuário  Restrição de acesso a um conjunto Identificado de usuários conhecidos • Solução  Utilizar uma base LDAP, SQL, Recurso chave/valor  Criptografia de senhas usando JavaEE Container algoritmos one-way usando salt • Impactos JAAS  Risco na proteção da base de senhas  Overhead na autenticação LDAP 26 © Copyright | www.sensedia.com
  • 27. Autenticação por Terceiros • Cenário Usuário  Usuários não são conhecidos Identificado previamente pelo recurso  Informações de identidade são de propriedade de terceiros Resource Facebook • Solução Owner  Configurar autenticação utilizando plataforma de terceiros, tais como: – Facebook Recurso API – Twitter • Impactos  Dependência de fatores externos Base de Usuários 27 © Copyright | www.sensedia.com
  • 28. Segurança autenticação por terceiros Referência: https://developers.facebook.com/docs/concepts/login/login-architecture/ 28 © Copyright | www.sensedia.com
  • 29. Formato de Dados • Versionamento de Recursos • Multiplos formatos 29 © Copyright | www.sensedia.com
  • 30. Versionamento de Recursos • Cenário  É necessário fazer alterações /pedidos incompatíveis no recurso  Não é possível assegurar a migração de todos os clientes ao mesmo tempo • Solução V 1.0 V 2.0  Manter por um período determinado mais de uma versão do recurso em operação V 1.1 • Impactos  Complexidade de Governança  Aumento de custos de operação e desenvolvimento 30 © Copyright | www.sensedia.com
  • 31. Versionamento de Recursos • Nenhum Versionamento  Funciona como se o recurso /pedidos estivesse sempre na versão 1  Impede a inclusão de novos atributos obrigatórios V 1.0  Impede a retirada de atributos  Tende a deixar os recursos V 1.1 muito complexos  Ao longo do tempo pode ser insustentável V 1.2 Versão Única 31 © Copyright | www.sensedia.com
  • 32. Versionamento de Recursos • Versionamento na URI /pedidos  Ex: http://api.sensedia.com/v1/pedidos  Viola HATEOAS  Fácil roteamento entre servidores /v1/pedidos /v2/pedidos  Fácil manutenção de código  Não requer a utilização de cabeçalhos 32 © Copyright | www.sensedia.com
  • 33. Versionamento de Recursos • Versionamento na Query String /pedidos  Ex: http://api.sensedia.com/pedidos?_version=1  Viola HATEOAS  Parâmetro é opcional ou obrigatório? /pedidos? /pedidos?  Difícil manutenção de código _version=1 _version=2  Não requer a utilização de cabeçalhos 33 © Copyright | www.sensedia.com
  • 34. Versionamento de Recursos • Versionamento no Media Type  Ex: http://api.sensedia.com/pedidos – Accepts: vnd.sensedia.com.pedidos+json; version=1  Dificulta a implementação de clientes  Dificulta o acesso via browser (não deve ter versão default, certo?)  Moderada complexidade na manutenção de código 34 © Copyright | www.sensedia.com
  • 35. Versionamento de Recursos Nenhum URI Query String VND Twitter até 2009 Twitter após 2009 Facebook Azure Flickr Foursquare Google Data GitHub (v 3) Dropbox Netflix * GitHub (v 2) PayPal Yammer EBay Delicious Last FM Twillio 35 © Copyright | www.sensedia.com
  • 36. Múltiplos Formatos • Cenário  Dependendo do recurso, talvez seja /pedidos/ABCD-1234 importante representá-lo de diversas formas. • Solução  Possibilitar que o cliente passe no JSON XML header Accept, o formato desejado.  Prover diversas alternativas de renderização dependendo do tipo do recurso ICAL PDF • Impactos  Flexibilidade do uso pelos clientes  Aumento de complexidade na implementação 36 © Copyright | www.sensedia.com
  • 37. Respostas Parciais • Paginação de Consultas • Subconjunto de Atributos 37 © Copyright | www.sensedia.com
  • 38. Paginação de Consultas /pedidos • Cenário  Os resultados de pesquisas são muito Cliente Página 1 grandes, sendo desnecessário ou inviável o acesso de uma única vez  Necessário a redução de custos de rede principalmente em mobile Página 2 • Solução  Dividir o conjunto de recursos em páginas minimizando o tamanho de Página 3 cada requisição • Impactos  O sistema provedor das informações precisa suportar paginação Página 4  Necessário a utilização de caches para consultas 38 © Copyright | www.sensedia.com
  • 39. Paginação de Consultas • Sem Paginação  Ex: http://api.sensedia.com/v1/pedidos  Resultados potencialmente muito grandes  Inviável para mobile  Pode demandar muita infraestrutura de rede  Simples para implementar, independente da estratégia de implementação utilizada 39 © Copyright | www.sensedia.com
  • 40. Paginação de Consultas • Paginação na URI – Ex 1: http://api.sensedia.com/v1/pedidos/3/50 » Página 3 com 50 registros – Ex 2: http://api.sensedia.com/v1/pedidos/3 » Página 3 – Confunde com a URI para acesso a um elemento do conjunto: » http://api.sensedia.com/v1/pedidos/ABCD-12345 40 © Copyright | www.sensedia.com
  • 41. Paginação de Consultas • Paginação na Query String – Ex: http://api.sensedia.com/v1/pedidos?_pagina=3&_tamanho=50 – Flexível pois o cliente pode ou não utilizar esse recurso – Pode definir o tamanho da página que é mais adequado para o consumo – Query String => Restrições – Opção recomendada para uso geral 41 © Copyright | www.sensedia.com
  • 42. Paginação de Consultas: Cases Query String • Facebook • Twitter  Offset Based  Time Based – Limit – Until – Offset – Count  Time Based – Until  Cursor Based – Since – Since_id – Limit – Max_id  Cursor Based – Count – Limit – Before – After Referência: https://developers.facebook.com/docs/reference/api/pagination/ 42 https://dev.twitter.com/docs/api/1.1/get/search/tweets © Copyright | www.sensedia.com
  • 43. Paginação de Consultas • Paginação usando HTTP Headers – Ex: http://api.sensedia.com/v1/pedidos – Requer uso do cabeçalho Range na requisição » Range: pagina=3/50 – Na resposta pode ser utilizado: » Content-Range: pagina=3/50 – Dificulta o uso no browser – Dificulta configuração HTTP Cache – Mantém a QueryString livre de metadados 43 © Copyright | www.sensedia.com
  • 44. Subconjunto de Atributos Exemplo Filtro Positivo: http://api.sensedia.com/v1/pedidos?_atributos=cliente,data,status,total [{ “cliente”: { “codigo”: “ABCD-1234” }, “data”:"2012-10-09T01:01:01", "status": "AGUARDANDO_PAGAMENTO", “total”: 9.99 }] 44 © Copyright | www.sensedia.com
  • 45. Subconjunto de Atributos Exemplo Filtro Positivo: http://api.sensedia.com/v1/pedidos?_atributos=codigo,status [{ “codigo”: “ABCD-1234”, "status": "AGUARDANDO_PAGAMENTO” }, { “codigo”: “EFGH-3456”, "status": ”ENTREGUE” }] 45 © Copyright | www.sensedia.com
  • 46. Subconjunto de Atributos Exemplo Filtro Negativo http://api.sensedia.com/v1/pedidos/4780-DEFG?_atributos=!itens { “codigo”:”4780-DEFG”, “cliente”: { “codigo”: “ABCD-1234” }, “data”:"2012-10-09T01:01:01", "status": "AGUARDANDO_PAGAMENTO", “total”: 9.99 } 46 © Copyright | www.sensedia.com
  • 47. Design • Evitar refreshes desnecessários • Referências fracas entre recursos • Contrato Uniforme • Processamento Assíncrono 47 © Copyright | www.sensedia.com
  • 48. Evitar refreshes desnecessários • Cenário GET /v1/pedidos/ABCD-1234 HTTP/1.1  Refreshes desnecessários podem impactar o potencial de escalabilidade da API Cache-Control: max-age=86400  Recursos possuem diferences Etag: 69fafe9b características quanto a volatilidade de { dados “codigo”:”ABCD-1234”, • Solução ”status”:”AGUARDANDO_PAGAMENTO”  Identificar essas características de volatilidade de dados }  Instrumentar os clientes e HTTP caches • Impactos  Maior esforço em tempo de design  Maior esforço na implementação das operações 48 © Copyright | www.sensedia.com
  • 49. Volatilidade de Dados Estavel Muito durante a Estavel sessão Estavel Instável 49 © Copyright | www.sensedia.com
  • 50. Volatilidade de Dados • Categorias • Clientes  Alteração 1 vez ao mês  Alterações somente na  Aceita até 1 semana de sessão defasagem  Não há defasagem • Produtos • Pedidos  Alteração 1 vez por semana  Alterações frequentes  Acetavel até 1 dia de  Não é aceitavel defasagem defasagem 50 © Copyright | www.sensedia.com
  • 51. Evitar Refreshes Desnecessários • Definir HTTP Headers (na resposta):  Last-Modified: http://tools.ietf.org/html/rfc2616#section-13.3.1  Cache-Control: http://tools.ietf.org/html/rfc2616#section-14.9  ETag: http://tools.ietf.org/html/rfc2616#section-13.3.2 51 © Copyright | www.sensedia.com
  • 52. Referências fracas entre recursos • Cenário  Todos os recursos estão de certa forma associados Clientes Pedidos  Não é possível manipular todos os recursos de uma só vez • Solução  Análise do modelo conceitual para Categorias Produtos identificar as composições  Agrupar as composições em um único recurso  Definir associação fraca entre recursos • Impactos  Possibilita a instrumentação de caches de forma mais efetiva 52 © Copyright | www.sensedia.com
  • 53. Referências fracas entre recursos Referências Fortes Referências Fracas 53 © Copyright | www.sensedia.com
  • 54. Referências fracas entre recursos Produto: Categoria: { { “codigo”:”ABCD-1234”, “codigo”:”EFGH-5678”, “descricao”:”…”, “nome”:”smartphones” “preco”: 10.00, } “categoria”: { “codigo”:”EFGH- 5678” } } 54 © Copyright | www.sensedia.com
  • 55. Referências fracas entre recursos - URIs • /categorias • /categorias/{codigo} • /produtos • /produtos/{codigo} • /clientes • /clientes/{codigo} • /clientes/{codigo}/enderecos • /clientes/{codigo}/enderecos/{codigo} • /pedidos • /pedidos/{codigo} • /pedidos/{codigo}/itens • /pedidos/{codigo}/itens/{codigo} 55 © Copyright | www.sensedia.com
  • 56. Contrato Uniforme • Cenário POST /pedidos HTTP/1.1  A manipulação dos recursos devem se comportar de forma idêntica • Solução  Definir quais as operações HTTP serão aceitas 201 500  Definir um cojunto de códigos de retorno de sucesso e erro padronizados  Revisar o comportamento de todos os recursos 401 403 • Impactos  Aumento no custo de desenvolvimento inicial  Redução de complexidade no consumo dos recursos 56 © Copyright | www.sensedia.com
  • 57. HTTP Status Codes – Casos de Sucesso 200 OK: aceito para GET 201 Created: aceito para POST, indica que o recurso foi criado com sucesso, deverá existir o header Location: indicando a URI do novo recurso. 202 Accepted: aceito para POST, PUT, PATCH e DELETE, indica que o recurso criado representa um processo assíncrono, portanto, além do header Location, deverá retornar o conteúdo com um atributo status. Posteriormente o recurso poderá ser consultado para avaliar a alteração do status. 204 No Content: aceito para PUT, PATCH e DELETE 57 © Copyright | www.sensedia.com
  • 58. HTTP Status Codes – Casos de Erro • Exceção de negócio – retorna código 422; • Exceção do cliente – família 400:  400 - Requisição Mal Formada;  401 - Requisição Requer Autenticação;  403 - Requisição Negada;  404 - Recurso não Encontrado;  405 - Método não Permitido; • Exceção do Servidor – retorna código 500; Além do código de retorno http, os detalhes do erro devem ser retornados no payload, com um link para a documentação do erro; 58 © Copyright | www.sensedia.com
  • 59. Processamento Assíncrono • Cenário  As operações que modificam o estado, POST, PUT, PATCH e DELETE podem demorar, principalmente quando dependem do legado • Solução  Armazenar a requisição de forma imediata  Retornar para o cliente com um ticket para que ele possa consultar o status posteriormente  Notificação de alteração de estado • Impactos  Maior complexidade na implementação do 59 cliente e do recurso © Copyright | www.sensedia.com
  • 60. Processamento Síncrono 60 © Copyright | www.sensedia.com
  • 61. Recursos com Processamento Assíncrono • São recursos que representam (ou iniciam) a execução de processos de longa duração. • Na criação de um novo recurso, deverá retornar o código 202 – Requisição Aceita • Eventuais erros de negócio deverão ser representados na forma de “status”, que poderão ser consultados de forma subsequente. • Notificação de Fim de Trabalho:  Dispositivos Móveis e Desktops: Polling  Outros Sistemas: Notificação de Eventos 61 © Copyright | www.sensedia.com
  • 62. Processamento Assíncrono - Polling 62 © Copyright | www.sensedia.com
  • 63. Processamento Assíncrono - Callback 63 © Copyright | www.sensedia.com
  • 64. Ferramentas 64 © Copyright | www.sensedia.com
  • 65. [ Componentes Tecnológicos ] Partners Apps / Commerce REST API Traffic API Internal Call Business Application 1 ESB Platforms Gateway Business Application 2 Monitoring Internal Services Control API Traffic Policy Discovery Deploy Publish Developers Web Browser Partners API Portal Get API Usage Manager Engage Developers Manage API documentation, Access Keys and Usage
  • 66. Q&A 66 © Copyright | www.sensedia.com
  • 67. Contatos alessandro.oliveira@sensedia.com @aro1976 felipe.firmo@sensedia.com @felipe_firmo 67 © Copyright | www.sensedia.com
  • 68. Thank You! [ Empowering Business. Architecting IT ] 68 © Copyright | www.sensedia.com