Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Como um grande sistema REST funciona - arquitetura e desempenho

3,395 views

Published on

Published in: Technology
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • David parabéns pelo post, muito bom.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Como um grande sistema REST funciona - arquitetura e desempenho

  1. 1. Como um grande sistema REST funciona Arquitetura e Desempenho FISL 2013
  2. 2. David Robert davidrobert@gmail.com twitter: @while42 github: davidrobert
  3. 3. AMBIENTE
  4. 4. Criar um Gerenciador e Publicador de conteúdo digital para o Grupo Abril
  5. 5. Criar um Gerenciador e Publicador de conteúdo digital ...
  6. 6. Criar um Gerenciador e Publicador de conteúdo digital ... Qual?
  7. 7. Criar um Gerenciador e Publicador de conteúdo digital ... Matérias Chamadas Estabelecimentos Imagens Atrações Famosos Carros Receitas Jogos Infográficos etc etc ... Qual?
  8. 8. Criar um Gerenciador e Publicador de conteúdo digital ... Publicar Onde?
  9. 9. Criar um Gerenciador e Publicador de conteúdo digital ... Web Mobile - Tablets - CELULARES SMART TV API's Publicar Onde?
  10. 10. gráfica distribuidora educação
  11. 11. Playboy Veja Quatro Rodas Super Interessante Placar
  12. 12. “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
  13. 13. CMS’s existem desde os anos 90. Por que reiventamos a roda?
  14. 14. Porque temos alta diversidade de requisitos negócios pessoas orçamentos prioridades culturas {
  15. 15. Como construir uma boa arquitetura?
  16. 16. Integração o velho problema
  17. 17. Banco de Dados Solução Prática #1
  18. 18. Solução Prática #2 Transferência de Arquivos
  19. 19. Solução Prática #3 Web Services
  20. 20. Como são os Web Services hoje?
  21. 21. Como são os Web Services hoje? ● WSDL ● SOAP ● XML ● RPC (Remote Procedure Call) etc
  22. 22. 1) Precisamos disso tudo mesmo?
  23. 23. 2) Alguém já não resolveu isso?
  24. 24. 3) Como avaliar se é uma boa arquitetura?
  25. 25. boa arquitetura necessidades atendidas custo aceitável = + * ß ß quão bem o seu cliente sabe pedir o que quer MTRH MTRH mean time to recovery happiness
  26. 26. ALEXANDRIA
  27. 27. diretoria digital Playbo y Vej a Quatro Rodas
  28. 28. RAIO X
  29. 29. 16 sites em produção
  30. 30. +/- 60 desenvolvedores 13 arquitetos de software 6 Gerentes de Projeto 4 Gerentes de Produto 1 Advocate da Plataforma
  31. 31. ● MongoDB ● MySQL ● Hbase ● HDFS ● PostgreSQL ● memcached ● redis ● Ruby ● Java ● Javascript ● rails ● sinatra ● goliath ● node.js ● play ● jetty ● tokamak ● cachebag ● restfulie Linguagens Storages Frameworks outros ● Solr ● Hadoop ● RabbitMQ ● Varnish ● New Relic ● Tracelytics https://github.com/abril
  32. 32. Infraestrutura Alexandria + sites ● 91 VMs para ambientes dev, qa, stage ● AMC (Abril Mídia Cloud): private cloud (Xen/Open Stack) ● ou VMWare ● ~100 VMs + 20 físicas para produção ● Data center próprio, AWS, Heroku ● Total aproximado: 220 máquinas
  33. 33. +15 milhões de pageviews (de jan até fev de 2013)
  34. 34. HTTP
  35. 35. 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
  36. 36. 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
  37. 37. data-entry ● entrada da Redação ● aplicação web ● ~ 1 para cada domínio ● “API explorer”
  38. 38. sitetools● admin do site ● manipulação das áreas e templates ● agiliza criação de produtos ● a fronteira com o usuário ● opcional
  39. 39. HTTP domínio serviço data-entry sitetools
  40. 40. system of systems
  41. 41. Como integrar?
  42. 42. REST
  43. 43. Por que escolhemos REST?
  44. 44. Por que escolhemos REST? ● Protocolo de transferência bastante utilizado ● Escalabilidade ● Performance alta ● Alta disponibilidade ● Permitir evolução sem parar o sistema ● Permitir evolução sem quebrar os clientes ● Segurança
  45. 45. Por que escolhemos REST? ● HTTP ● Escalabilidade ● Performance alta ● Alta disponibilidade ● Permitir evolução sem parar o sistema ● Permitir evolução sem quebrar os clientes ● Segurança
  46. 46. Por que escolhemos REST? ● HTTP ● Web Cache ● Performance alta ● Alta disponibilidade ● Permitir evolução sem parar o sistema ● Permitir evolução sem quebrar os clientes ● Segurança
  47. 47. Por que escolhemos REST? ● HTTP ● Web Cache ● Web Proxy (localização geografica) ● Alta disponibilidade ● Permitir evolução sem parar o sistema ● Permitir evolução sem quebrar os clientes ● Segurança
  48. 48. Por que escolhemos REST? ● HTTP ● Web Cache ● Web Proxy (localização geografica) ● Load Balancers "comoditizados" ● Permitir evolução sem parar o sistema ● Permitir evolução sem quebrar os clientes ● Segurança
  49. 49. Por que escolhemos REST? ● HTTP ● Web Cache ● Web Proxy (localização geografica) ● Load Balancers "comoditizados" ● Load Balancers ● Permitir evolução sem quebrar os clientes ● Segurança
  50. 50. Por que escolhemos REST? ● HTTP ● Web Cache ● Web Proxy (localização geografica) ● Load Balancers "comoditizados" ● Load Balancers ● HTML, JSON, XML ● Segurança
  51. 51. Por que escolhemos REST? ● HTTP ● Web Cache ● Web Proxy (localização geografica) ● Load Balancers "comoditizados" ● Load Balancers ● HTML, JSON, XML ● HTTPS / TLS
  52. 52. Como integrar e ter baixo acoplamento?
  53. 53. Como integrar e ter baixo acoplamento? Interface Uniforme
  54. 54. resouce identification http://editorial.api.abril.com.br/materia/dicas http://editorial.api.abril.com.br/materia/ac23657fg http://bebe.abril.com.br/materia/ac23657fg
  55. 55. resources
  56. 56. resources { "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)
  57. 57. representations JSON
  58. 58. e um tiquinho assim de XML ou melhor, de application/opensearchdescription+xml representations
  59. 59. <?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?} &amp;tipo={grafo:tipo}"/> <Query role="example" title="Exemplo de valores dos parâmetros" grafo:usuario="id do usuario" grafo:tipo="segue |seguido_por " /> </OpenSearchDescription> representations
  60. 60. hypermedia Exemplo: criar uma atividade de um usuário no site. Sabendo somente o entrypoint: http://socialcore.api.abril.com.br
  61. 61. POST http://socialcore.api.abril.com.br/ Accept: application/json hypermedia
  62. 62. POST??? hypermedia
  63. 63. HTTP/1.1 405 Method Not Allowed Allow: GET hypermedia
  64. 64. GET http://socialcore.api.abril.com.br/ Accept: application/json hypermedia
  65. 65. HTTP/1.1 200 OK Content-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" } ] } hypermedia
  66. 66. GET http://socialcore.api.abril.com.br/atividade Accept: application/json hypermedia
  67. 67. HTTP/1.1 200 OK Content-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" } ] } hypermedia
  68. 68. GET http://socialcore.api.abril.com.br/atividade/template Accept: application/json hypermedia
  69. 69. HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 { "atividade": { "app": "", "created_at": "", "usuario": "", "tipo": "", "objeto": { "tipo": "" }, "resultado": { "tipo": "" } }, (continua) hypermedia
  70. 70. "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" } ] } hypermedia
  71. 71. POST http://socialcore.api.abril.com.br/atividade Accept: application/json Content-Type: application/json; charset=utf-8 Authentication: 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" } } } hypermedia
  72. 72. HTTP/1.1 422 Unprocessable Entity Content-Type: application/json; charset=utf-8 { "tipo_recurso":"erro", "atividade":{ "usuario":"", }, "erros":[ {"atributo":"usuario","mensagem":["é obrigatório"]} ] } hypermedia
  73. 73. POST http://socialcore.api.abril.com.br/atividade Accept: application/json Content-Type: application/json; charset=utf-8 Authentication: 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" } } } hypermedia
  74. 74. HTTP/1.1 201 Created Content-Type: application/json; charset=utf-8 Location: http://socialcore.api.abril.com. br/atividade/0922307 o/ hypermedia
  75. 75. application protocol HTTPstatus codes representation metadata resource metadata control data
  76. 76. e a performance disso tudo ai?
  77. 77. a requisição mais rapida que o servidor executa é aquela que ele não executa
  78. 78. estratégia de cache HTTP é imprescindível Palestra: Abusando nas requisições HTTP sem medo http://goo.gl/k29NU
  79. 79. Lições aprendidas
  80. 80. pontos importantes em performance client origin 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
  81. 81. ● Lei de Postel "Seja conservador no que faz, seja liberal no que você aceita dos outros" ●
  82. 82. ● Lei de Postel "Seja conservador no que faz, seja liberal no que você aceita dos outros" ● REST é uma arquitetura de longo prazo ●
  83. 83. ● 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 ●
  84. 84. ● 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 ●
  85. 85. ● 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 ●
  86. 86. ● 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
  87. 87. Assumimos que nossa arquitetura está válida
  88. 88. necessidades atendidas custo aceitável + * ß MTRH mas...
  89. 89. e quando REST não for suficiente?
  90. 90. não use REST
  91. 91. Os responsáveis
  92. 92. PERGUNTAS ?
  93. 93. engineering.abril.com.br digital.abril.com.br Obrigado! David Robert

×