SlideShare uma empresa Scribd logo
1 de 44
Dividir para conquistar
        Usando Ruby
Bruno Grasselli
     @grasselli
MinhaApp
Produtos/Admin
 Usuários/Admin
  MinhaApp

 Produtos/Site
Produtos/Admin      Imagens/Admin Expurgo Cache
Usuários/Admin Relatórios/Admin

Crop de imagens     MinhaApp Índice para busca

                              Fale conosco/Site
Produtos/Site    Fale conosco/Site
Problemas com merge!
Feature de uma equipe quebrando a
              outra
Rollback único!
Fez Sucesso!
MinhaApp
MinhaApp
MinhaApp   MinhaApp   MinhaApp


MinhaApp   MinhaApp   MinhaApp


MinhaApp   MinhaApp   MinhaApp
Escalar ficou caro!
Pense em dividir!
1
Produtos/Admin      Imagens/Admin Expurgo Cache
Usuários/Admin Relatórios/Admin

Crop de imagens     MinhaApp Índice para busca

                              Fale conosco/Site
Produtos/Site    Fale conosco/Site
Admin



 Site
Escala mais fácil!
Admin



Site
Admin                 Admin



Site   Site       Site   Site       Site   Site
Produtos      Imagens      Usuários


           Admin    Site
REST
REST

• ActiveResource
REST

• ActiveResource
• Restfulie
REST

• ActiveResource
• Restfulie
• Roar
Aplicações mais simples
Sinatra
              Rack



Aplicações mais simples
Menor impacto em
   produção
2
Produtos/Admin    Imagens/Admin Expurgo Cache
Usuários/Admin Relatórios/Admin

Crop de imagens   MinhaApp Índice para busca
Processamento
assíncrono com filas
Admin


                        Fila

  Consumidor        Consumidor          Consumidor
crop de imagens   índice para busca   expurgo de cache
Clientes de fila
      (RabbitMQ)

• AMQP
• Bunny
Consumidores


• DaemonKit
3
Produtos/Admin   Imagens/Admin
Usuários/Admin Relatórios/Admin
                 MinhaApp
Rails Engines!
Produtos               Imagens

           MinhaApp

Usuários              Relatórios
Melhor paralelismo
Resumindo...
Não é fácil
IMHO, compensa!
Dúvidas?
Obrigado!

Mais conteúdo relacionado

Semelhante a dividir-aplicacao-ruby-microservicos-escala

Imagens com Escalabilidade - Arquitetura de Dados
Imagens com Escalabilidade - Arquitetura de DadosImagens com Escalabilidade - Arquitetura de Dados
Imagens com Escalabilidade - Arquitetura de DadosFelipe Caparelli
 
Aplicações Web - um estudo sobre React
Aplicações Web - um estudo sobre ReactAplicações Web - um estudo sobre React
Aplicações Web - um estudo sobre ReactJean Carlo Emer
 
Atualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.xAtualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.xRodrigo Urubatan
 
Desenvolvendo APPs Com Angular.JS + Cordova
Desenvolvendo APPs Com Angular.JS �+ CordovaDesenvolvendo APPs Com Angular.JS �+ Cordova
Desenvolvendo APPs Com Angular.JS + CordovaGustavo Costa
 
Apresentacaofinal
ApresentacaofinalApresentacaofinal
Apresentacaofinaldecatv
 
Ruby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e PráticaRuby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e PráticaGabriel Molter
 
Performance Front-end
Performance Front-endPerformance Front-end
Performance Front-endDescomplica
 
Portando sua aplicação web para iphone
Portando sua aplicação web para iphonePortando sua aplicação web para iphone
Portando sua aplicação web para iphoneRenato Nitta
 
Desenvolvimento Client-Side 2016
Desenvolvimento Client-Side 2016Desenvolvimento Client-Side 2016
Desenvolvimento Client-Side 2016Huge
 

Semelhante a dividir-aplicacao-ruby-microservicos-escala (12)

Imagens com Escalabilidade - Arquitetura de Dados
Imagens com Escalabilidade - Arquitetura de DadosImagens com Escalabilidade - Arquitetura de Dados
Imagens com Escalabilidade - Arquitetura de Dados
 
Aplicações Web - um estudo sobre React
Aplicações Web - um estudo sobre ReactAplicações Web - um estudo sobre React
Aplicações Web - um estudo sobre React
 
Magento: Mitos vs Vantagens
Magento: Mitos vs VantagensMagento: Mitos vs Vantagens
Magento: Mitos vs Vantagens
 
Atualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.xAtualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.x
 
Web Offline
Web OfflineWeb Offline
Web Offline
 
Desenvolvendo APPs Com Angular.JS + Cordova
Desenvolvendo APPs Com Angular.JS �+ CordovaDesenvolvendo APPs Com Angular.JS �+ Cordova
Desenvolvendo APPs Com Angular.JS + Cordova
 
Apresentacaofinal
ApresentacaofinalApresentacaofinal
Apresentacaofinal
 
Ruby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e PráticaRuby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e Prática
 
Performance Front-end
Performance Front-endPerformance Front-end
Performance Front-end
 
Portando sua aplicação web para iphone
Portando sua aplicação web para iphonePortando sua aplicação web para iphone
Portando sua aplicação web para iphone
 
Desenvolvimento Client-Side 2016
Desenvolvimento Client-Side 2016Desenvolvimento Client-Side 2016
Desenvolvimento Client-Side 2016
 
Bdd e ci
Bdd e ciBdd e ci
Bdd e ci
 

dividir-aplicacao-ruby-microservicos-escala

Notas do Editor

  1. \n
  2. \n\n\n\n
  3. aplicação monolítica\nbom começo\nvocê deve ir por partes\n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n