alexandria: um sistema de sistemas para publicação de conteúdo digital utilizando rest e...
DESCRIPTION
A palestra irá apresentar os desafios e as lições aprendidas em 3 anos de desenvolvimento de uma plataforma para gerência e publicação de conteúdo digital na Abril Mídia que aplica os conceitos de arquiteturas REST e APIs Hipermídia para conseguir entregar um grande volume de informação em diversos tipos de dispositivos. A plataforma é constituída de inúmeros domínios de informação, modulares e independentes, que se integram para permitir a criação de produtos digitais de forma mais ágil. Atualmente a plataforma suporta 14 sites e mais de 12 milhões de pageviews/mês e possui uma arquitetura poliglota, ou seja, com uma grande variedade de linguagens e tecnologias utilizadas.TRANSCRIPT
![Page 1: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/1.jpg)
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando
REST e Hipermídia
Luís Cipriani @lfcipriani (twitter, linkedin, github, ...)Seminário de Sistemas - IME (2013-04-08)
![Page 2: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/2.jpg)
engineering.abril.com.br
talleye.com
![Page 3: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/3.jpg)
hoje nós vamos falar sobre...
![Page 4: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/4.jpg)
REST
![Page 5: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/5.jpg)
Someone published a new REST API
Let’s check it out!! \o/
![Page 6: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/6.jpg)
mmm...
just another HTTP-based RPC...http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
![Page 7: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/7.jpg)
por que há tanto mal entendimento em relação ao REST?
![Page 8: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/8.jpg)
quem entende errado, está fazendo errado?
![Page 9: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/9.jpg)
boaarquitetura
necessidadesatendidas
custoaceitável
= + * ß
ß quão bem o seu cliente sabe pedir o que quer :-P
MTRH
MTRH mean time to recovery happiness
![Page 10: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/10.jpg)
hoje nós vamos falar sobre...
![Page 11: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/11.jpg)
a nossa implementação do estilo arquitetural para
sistemas baseados em rede proposto pelo Roy Fielding, mais conhecida
como...
![Page 12: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/12.jpg)
REST
![Page 13: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/13.jpg)
RAIO X
![Page 14: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/14.jpg)
“organizações que projetam sistemas são restritas a produzir projetos que são cópias das estruturas de
comunicação dessas organizações”
Lei de Conway
http://www.melconway.com/Home/Conways_Law.html
![Page 15: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/15.jpg)
gráfica
distribuidora
educação
![Page 16: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/16.jpg)
Playboy Veja
Viaje Aqui
Recreio
Bravo!
![Page 17: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/17.jpg)
CMS’s existem desde os anos 90.
Por que reiventamos a roda?
![Page 18: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/18.jpg)
Porque temos alta diversidade
de
requisitosnegóciospessoas
orçamentosprioridades
culturas
{
![Page 19: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/19.jpg)
diretoria digitalPlayboy
Bravo!
Recreio
![Page 20: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/20.jpg)
14 sites em produção(em abr/2013)
![Page 21: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/21.jpg)
50 desenvolvedores12 arquitetos de software
6 Gerentes de Projeto4 Gerentes de Produto
1 Advocate da Plataforma(em abr/2013)
![Page 22: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/22.jpg)
• MongoDB• MySQL• Hbase• HDFS• PostgreSQL• memcached• redis
• ruby• java• javascript
• rails• sinatra• goliath• node.js• play• jetty• tokamak• cachebag• HTTPMonkey
linguagens storage frameworks outros
• Solr• Hadoop• RabbitMQ• Varnish• New Relic
https://github.com/abril
![Page 23: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/23.jpg)
infraestrutura Alexandria + sites
• 91 VMs para ambientes dev, qa, stage• AMC (Abril Mídia Cloud): private cloud (Xen/Open Stack)• ou VMWare
• ~100 VMs + 16 físicas para produção• Data center próprio, AWS, Heroku
• Total aproximado: 207 máquinas (abr/2013)
![Page 24: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/24.jpg)
12,5 milhões de pageviews(de 15/jan até 14/fev de 2013)
![Page 25: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/25.jpg)
HTTP
![Page 26: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/26.jpg)
domínio
• acesso e manipulação de recursos• implementa regras de negócio• servidor HTTP + base de dados• infra “isolada”• ~ 8 domínios• ex: editorial (matérias, galerias, etc), anotações (comentários), estabelecimentos, mídia, pessoas
![Page 27: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/27.jpg)
serviço
• consumo e manipulação de recursos• servidor HTTP + (opcional base de dados)• infra “isolada”• ~ 12 serviços• ex: console, socialcore, search, Abril ID, abr.io, etc
![Page 28: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/28.jpg)
data-entry• entrada da Redação• aplicação web• ~ 1 para cada domínio• “API explorer”
![Page 29: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/29.jpg)
![Page 30: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/30.jpg)
sitetools• admin do site• manipulação das áreas e templates• agiliza criação de produtos• a fronteira com o usuário• opcional
![Page 31: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/31.jpg)
![Page 32: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/32.jpg)
HTTP
domínio
serviço
data-entry sitetools
![Page 33: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/33.jpg)
system of systems
![Page 34: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/34.jpg)
REST
![Page 35: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/35.jpg)
Por que escolhemos REST?
image from Roy Fielding dissertation (pag. 85)
![Page 36: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/36.jpg)
REST= +LCODC$SS
Porque...
U
o_O
![Page 37: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/37.jpg)
REST= +LCODC$SS UClient-Server
• Separação de responsabilidades• Escalabilidade (simplificação)• Evolução independente
http://byterot.blogspot.co.uk/2012/06/what-i-think-coupling-is.html
![Page 38: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/38.jpg)
REST= +LCODC$SS UClient-Server no Alexandria
• Separação de responsabilidades • entre domínios e sites• entre domínios e data entries• entre domínios e serviços
• Escalabilidade• funcionalidade implementada nos clients• domínios só lidam com recursos (simplicidade)
• Evolução independente• em certos pontos da arquitetura não há• falta retro-compatibilidade
![Page 39: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/39.jpg)
REST= +LCODC$SS U
• Visibilidade• Escalabilidade (recursos alocados)• Confiabilidade
• Performance de rede
Stateless
![Page 40: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/40.jpg)
Stateless no Alexandria
• HATEOAS implementado nas APIs• cookies nas operações destrutivas
REST= +LCODC$SS U
![Page 41: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/41.jpg)
REST= +LCODC$SS U
• Eficiência• Escalabilidade• Performance percebida pelo usuário
• Confiabilidade
Cache
![Page 42: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/42.jpg)
Cache no Alexandria
• Built-in no protocolo HTTP• shared-caches instanciados entre alguns nós• pesquisa sobre caches locais• nem todos os nós implementam estratégia de cache• purge de recursos diretamente no cache
REST= +ULCODC$SS
![Page 43: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/43.jpg)
REST= +LCODC$SS U
• Encapsula complexidade• Evolvabilidade• Simplicidade
• Performance percebida pelo usuário
Layered System
![Page 44: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/44.jpg)
• shared-caches• gateways para expor API para a Web• balanceadores de carga• encapsulamento de autenticação corporativa• encapsulamento de legado• permite evolução incremental do legado
REST= +ULCODC$SSLayered System no Alexandria
![Page 45: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/45.jpg)
REST= +LCODC$SS U
• Extensibilidade• Simplificação do client
• Visibilidade
Code-on-demand
![Page 46: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/46.jpg)
• widgets dos data-entries• no futuro, o console também será instanciado assim• é um elemento importante do REST que foi esquecido por um tempo pela nossa arquitetura
REST= +ULCODC$SSCode-on-demand no Alexandria
![Page 47: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/47.jpg)
REST= +LCODC$SS U
• Simplificação pela generalidade• Visibilidade• Desacoplamento• Evolvabilidade
• Performance percebida pelo usuário• Restrita a dados com granularidade larga
Uniform interface
![Page 48: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/48.jpg)
REST=
niform interface no Alexandria
+LCODC$SS
U
![Page 49: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/49.jpg)
Uresource identification
URIuniversal resource identifier
![Page 50: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/50.jpg)
Uresource identification
/:tipo_recurso/:id
![Page 51: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/51.jpg)
Uresource identification
http://editorial.api.abril.com.br/materia/dicas
http://editorial.api.abril.com.br/materia/ac23657fg
http://bebe.abril.com.br/materia/ac23657fg
![Page 52: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/52.jpg)
Uresources
![Page 53: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/53.jpg)
Uresources
{ "tipo_recurso" : "materia", "link" : [ { "href" : "http://editorial.api.abril.com.br/materia/4f0dea5a1e13694", "rel" : "self", "type" : "application/json" }, { "href" : "http://editorial.api.abril.com.br/materias", "rel" : "materias", "type" : "application/json" } ], "id" : "http://editorial.api.abril.com.br/materia/4f0dea5a1e13694", "slug" : "o-quintal-da-realeza", "marca" : "viajeaqui", "status" : "disponivel", "descricao_conteudo" : "O quintal da realeza", "fonte" : "viajeaqui",
(continua)
![Page 54: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/54.jpg)
Uresources "criacao" : { "usuario" : "Miguel Icassatti", "data" : "2012-01-11T18:00:26-02:00" }, "ultima_atualizacao" : { "usuario" : "Miguel Icassatti", "data" : "2012-01-19T16:47:18-02:00" }, "disponibilizacao" : { "usuario" : "Miguel Icassatti", "data" : "2012-01-11T18:05:44-02:00" }, "conteudos_relacionados" : [ { "slug" : "4f0deb759d0a73284d00001e", "link" : { "href" : "http://editorial.api.abril.com.br/galerias_multimidia/4f0deb759d0a73284", "rel" : "galeria_multimidia", "type" : "application/json" }, "preview" : "http://imgms.alexandria.abril.com.br/10/thumbnail-240x240-a1.jpeg", "tipo_recurso" : "galeria_multimidia", "fonte" : "viajeaqui", "credito" : "(não especificado)", "descricao" : "Fotos das atrações e estabelecimentos de Windsor, cidade da Inglaterra", "id" : "http://editorial.api.abril.com.br/galerias_multimidia/4f0deb759d0a73284d00001e", "titulo" : "Especial viajeaqui em Londres" } ],
(continua)
![Page 55: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/55.jpg)
Uresources
"rotulos_controlados" : [ "Londres2012" ], "tags" : [ "Londres", "restaurantes", "atrações" ], "editorias" : [ "Matérias" ], "categorias" : [ "Turismo e Lazer", "Turismo e Lazer::Cidade", "Turismo e Lazer::PaÃs" ], "autor" : "Miguel Icassatti", "titulo" : "O quintal da realeza", "chapeu" : "Windsor", "subtitulo" : "Nossa viagem pela Inglaterra tem a primeira parada na histórica Windsor.", "corpo" : "<p>Localizada à s margens do rio Tâmisa, que corta também Londres, a cidade de Windsor já foi sede da monarquia britânica.</p>"}
![Page 56: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/56.jpg)
Urepresentations
JSON
![Page 57: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/57.jpg)
Urepresentations
e um tiquinho assim de XML
ou melhor,de application/opensearchdescription+xml
![Page 58: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/58.jpg)
Urepresentations
<?xml version="1.0" encoding="UTF-8"?><OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:grafo="http://socialcore.api.abril.com.br/grafo/busca">
<ShortName>Buscar relacionamentos</ShortName> <Description>Busca de relacionamentos no grafo</Description>
<Url type="application/json" template="http://socialcore.api.abril.com.br/grafo/busca?usuario={grafo:usuario?}&tipo={grafo:tipo}"/>
<Query role="example" title="Exemplo de valores dos parâmetros" grafo:usuario="id do usuario" grafo:tipo="segue |seguido_por " />
</OpenSearchDescription>
![Page 59: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/59.jpg)
Uhypermedia
image from the book Rest in Practice (by Jim Webber) (pag. 14)
![Page 60: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/60.jpg)
Uhypermedia
Exercício: criar uma atividade de um usuário no site.
Você só sabe o entrypoint:
http://socialcore.api.abril.com.br
![Page 61: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/61.jpg)
Uhypermedia
POST http://socialcore.api.abril.com.br/Accept: application/json
![Page 62: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/62.jpg)
Uhypermedia
POST???
![Page 63: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/63.jpg)
Uhypermedia
HTTP/1.1 405 Method Not AllowedAllow: GET
![Page 64: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/64.jpg)
Uhypermedia
GET http://socialcore.api.abril.com.br/Accept: application/json
![Page 65: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/65.jpg)
UhypermediaHTTP/1.1 200 OKContent-Type: application/json; charset=utf-8{ "titulo": "socialcore", "link": [ { "href": "http://socialcore.api.abril.com.br/", "rel": "self", "type": "application/json" }, { "href": "http://socialcore.api.abril.com.br/atividade", "rel": "atividade", "type": "application/json" }, { "href": "http://socialcore.api.abril.com.br/grafo", "rel": "grafo", "type": "application/json" } ]}
![Page 66: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/66.jpg)
Uhypermedia
GET http://socialcore.api.abril.com.br/atividadeAccept: application/json
![Page 67: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/67.jpg)
Uhypermedia
HTTP/1.1 200 OKContent-Type: application/json; charset=utf-8{ "titulo": "Entry Point de Atividades", "link": [ { "href": "http://socialcore.api.abril.com.br/atividade/template", "rel": "template", "type": "application/json" }, { "href": "http://socialcore.api.abril.com.br/atividade/busca/descritor", "rel": "search", "type": "application/opensearchdescription+xml" }, { "href": "http://socialcore.api.abril.com.br/atividade/stat/descritor", "rel": "stat", "type": "application/opensearchdescription+xml" } ]}
![Page 68: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/68.jpg)
Uhypermedia
GET http://socialcore.api.abril.com.br/atividade/templateAccept: application/json
![Page 69: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/69.jpg)
Uhypermedia
HTTP/1.1 200 OKContent-Type: application/json; charset=utf-8{ "atividade": { "app": "", "created_at": "", "usuario": "", "tipo": "", "objeto": { "tipo": "" }, "resultado": { "tipo": "" } },
(continua)
![Page 70: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/70.jpg)
Uhypermedia
"link": [ { "href": "http://socialcore.api.abril.com.br/atividade", "rel": "atividade", "type": "application/json" }, { "href": "http://socialcore.api.abril.com.br/atividade/busca/descritor", "rel": "search", "type": "application/opensearchdescription+xml" }, { "href": "http://socialcore.api.abril.com.br/atividade/stat/descritor", "rel": "stat", "type": "application/opensearchdescription+xml" } ]}
![Page 71: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/71.jpg)
UhypermediaPOST http://socialcore.api.abril.com.br/atividadeAccept: application/jsonContent-‐Type: application/json; charset=utf-‐8Authentication: Basic 37rnx9w87rjdw87gri
{ "atividade": { "app": "http://aapg.api.abril.com.br/produtos/1", "created_at": 1325086429, "tipo": "comentar", "objeto": { "descricao": "Titulo da materia", "id": "http://veja.abril.com.br/noticia/economia/confianca-da", "tipo": "materia" }, "resultado": { "corpo": "otima materia", "id": "http://veja.abril.com.br/noticia/economia/confianca-da/comments/1", "tipo": "comentario" } }}
![Page 72: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/72.jpg)
Uhypermedia
HTTP/1.1 422 Unprocessable EntityContent-Type: application/json; charset=utf-8{ "tipo_recurso":"erro", "atividade":{ "usuario":"", }, "erros":[ {"atributo":"usuario","mensagem":["é obrigatório"]} ]}
![Page 73: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/73.jpg)
UhypermediaPOST http://socialcore.api.abril.com.br/atividadeAccept: application/jsonContent-‐Type: application/json; charset=utf-‐8Authentication: Basic 37rnx9w87rjdw87gri
{ "atividade": { "app": "http://aapg.api.abril.com.br/produtos/1", "created_at": 1325086429, "usuario": "http://aapg.api.abril.com.br/usuarios/2", "tipo": "comentar", "objeto": { "descricao": "Titulo da materia", "id": "http://veja.abril.com.br/noticia/economia/confianca-da", "tipo": "materia" }, "resultado": { "corpo": "otima materia", "id": "http://veja.abril.com.br/noticia/economia/confianca-da/comments/1", "tipo": "comentario" } }}
![Page 74: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/74.jpg)
Uhypermedia
HTTP/1.1 201 CreatedContent-Type: application/json; charset=utf-8Location: http://socialcore.api.abril.com.br/atividade/0922307
\o/
![Page 75: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/75.jpg)
Uapplication protocol
HTTPstatus codes
representation metadataresource metadata
control data
![Page 76: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/76.jpg)
Lições aprendidas
![Page 77: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/77.jpg)
pontos importantes em performance
clientorigin server
• performance dos connectors• non-blocking HTTP clients
• cache local• middleware architecture• libs padronizadas
• short stacks• evented servers• libs padronizadas
• good TTL strategy• middleware architecture
• caches• HTTP plumbing
![Page 78: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/78.jpg)
• Lei de Postel• Seja conservador no que faz, seja liberal no que você aceita dos outros
• REST é uma arquitetura de longo prazo
• Defenda com todas as suas forças:• seus metadados (recursos)• sua interface
• Documentação é essencial
• Independência de desenvolvimento dos nós tem suas desvantagens
• medir/monitorar o desempenho é importantíssimo
![Page 79: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/79.jpg)
Assumimos que nossa arquitetura está válida.
![Page 80: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/80.jpg)
necessidadesatendidas
custoaceitável + * ß
MTRH
mas...
![Page 81: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/81.jpg)
e quando REST não for suficiente?
![Page 82: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/82.jpg)
não use REST
![Page 83: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/83.jpg)
Os responsáveis
![Page 84: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/84.jpg)
![Page 85: Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utilizando REST e Hípermídia](https://reader034.vdocuments.net/reader034/viewer/2022052601/55935c741a28ab69648b45b5/html5/thumbnails/85.jpg)
• bit.ly/abril_qcon_refs
• engineering.abril.com.br
• talleye.com
• digital.abril.com.br
Obrigado!