SlideShare una empresa de Scribd logo
1 de 61
em produção
        dá pra confiar?



Antonio Marques - @acmarques
  André Ferraz - @deferraz
Em produção há quase 2 anos
       em diversas aplicações
Mas por que MongoDB?

Laggard
• Reescrita incremental de sistema legado
• Alterações de modelo frequentes
• Muitas migrations...
Mas Rails com MySQL
               é tão legal!
Laggard
Novidades interessantes surgindo




              +
Novidades interessantes surgindo




http://railscasts.com/episodes/194-mongodb-and-
                    mongomapper
E então começou a saga do early adopter
Primeira semana em produção
Primeira semana em produção
NoMemoryError (failed to allocate memory):
 /usr/lib/ruby/gems/1.8/gems/mongodb-mongo-0.9/lib/mongo/db.rb: 326:in `recv'
 /usr/lib/ruby/gems/1.8/gems/mongodb-mongo-0.9/lib/mongo/db.rb: 326:in `receive_full'
 /usr/lib/ruby/gems/1.8/gems/mongodb-mongo-0.9/lib/mongo/cursor.rb: 206:in `object_from_stream'
 /usr/lib/ruby/gems/1.8/gems/mongodb-mongo-0.9/lib/mongo/cursor.rb: 191:in `next_object_on_wire'
 /usr/lib/ruby/gems/1.8/gems/mongodb-mongo-0.9/lib/mongo/cursor.rb: 157:in `read_objects_off_wire'
 /usr/lib/ruby/gems/1.8/gems/mongodb-mongo-0.9/lib/mongo/cursor.rb: 153:in `read_all'
Primeira semana em produção
NoMemoryError (failed to allocate memory):
 /usr/lib/ruby/gems/1.8/gems/mongodb-mongo-0.9/lib/mongo/db.rb: 326:in `recv'
 /usr/lib/ruby/gems/1.8/gems/mongodb-mongo-0.9/lib/mongo/db.rb: 326:in `receive_full'
 /usr/lib/ruby/gems/1.8/gems/mongodb-mongo-0.9/lib/mongo/cursor.rb: 206:in `object_from_stream'
 /usr/lib/ruby/gems/1.8/gems/mongodb-mongo-0.9/lib/mongo/cursor.rb: 191:in `next_object_on_wire'
 /usr/lib/ruby/gems/1.8/gems/mongodb-mongo-0.9/lib/mongo/cursor.rb: 157:in `read_objects_off_wire'
 /usr/lib/ruby/gems/1.8/gems/mongodb-mongo-0.9/lib/mongo/cursor.rb: 153:in `read_all'




                            Mas o servidor tem memória livre!
Primeira semana em produção
NoMemoryError (failed to allocate memory):
 /usr/lib/ruby/gems/1.8/gems/mongodb-mongo-0.9/lib/mongo/db.rb: 326:in `recv'
 /usr/lib/ruby/gems/1.8/gems/mongodb-mongo-0.9/lib/mongo/db.rb: 326:in `receive_full'
 /usr/lib/ruby/gems/1.8/gems/mongodb-mongo-0.9/lib/mongo/cursor.rb: 206:in `object_from_stream'
 /usr/lib/ruby/gems/1.8/gems/mongodb-mongo-0.9/lib/mongo/cursor.rb: 191:in `next_object_on_wire'
 /usr/lib/ruby/gems/1.8/gems/mongodb-mongo-0.9/lib/mongo/cursor.rb: 157:in `read_objects_off_wire'
 /usr/lib/ruby/gems/1.8/gems/mongodb-mongo-0.9/lib/mongo/cursor.rb: 153:in `read_all'




  mongo driver atualizado para versão 0.11 e adicionada configuração
  específica para Passenger em config/initializers/mongo.rb
Ferrando a vida dos sysadmins
Backporting
Backporting
Segurança / Autorização

• RW User / RO User
• No Roles
• Plain String Key Exchange (Replica Set / Sharding)
Conhecimento

• Evite ser o unico ponto focal
• Aprendeu algo novo? Repasse ao time
Troubleshooting / Debugging

• Cluster Offline


• Repair Database
Alta Disponibilidade




 com Replica Sets
Replica Sets

            Server A
              slave     sync




Server B      sync     Server C
  slave                  master




            Web App
Replica Sets

            Server A
              slave     sync




Server B      sync     Server C
  slave                  master




            Web App
Replica Sets

            Server A
   voting     slave




Server B               Server C
  slave                  master




            Web App
Replica Sets

             Server A
               slave
     sync




Server B                Server C
  master




             Web App
Replica Sets

             Server A
               slave
     sync




Server B                Server C
  master




             Web App
Replica Sets

             Server A
               slave
     sync




Server B                Server C
  master




             Web App
Replica Sets

             Server A
               slave
     sync                 sync




Server B                Server C
  master                  slave




             Web App
Mas não tão simples...
Necessário atualizar aplicação para o
       driver mais recente
Necessário atualizar aplicação para o
       driver mais recente
Configurar a aplicação para usar o
             Replica Set
Alterar classe de conexão



Tratar tipos específicos de exceção
Atualizar o MongoDB para versões a
            partir da 1.8.x

 As primeiras versões a suportar Replica Sets (1.6.x)
apresentam falhas no sistema de votação em algumas
                      situações

  http://groups.google.com/group/mongodb-user/
    browse_thread/thread/6bee27d40a269eab
Próximos passos
Sharding
Sharding


 Server A




Web App
Sharding


Server A




           Web App
Sharding


Server A   Server B




                      Web App
Sharding


Server A   Server B    Server C




                      Web App
Sharding


Server A   Server B    Server C   Server D




                      Web App
Sharding


Server A   Server B    Server C   Server D   Server N




                      Web App
Sharding


Server A   Server B      Server C   Server D   Server N




                      mongos               Web App
Sharding


  Server A   Server B      Server C   Server D   Server N




Config


Config
                        mongos               Web App
Config
Sharding


  Server A   Server B      Server C   Server D   Server N




Config


Config
                        mongos               Web App
Config
Sharding


  Server A   Server B      Server C   Server D   Server N




Config


Config
                        mongos               Web App
Config
Sharding + Replica Set




      mongos        Web App
Sharding + Replica Set




      mongos        Web App
Sharding + Replica Set




      mongos        Web App
2.0
2.0




• Journaling habilitado por padrão
• Sharding Authentication
• Prioridade em nós de Replica Sets
• Data center awareness
• Modo manutenção
• Novas funções de Query
• Shell customizável
2.0




      Muito barulho
2.0
2.0
2.0




      Muito boato
2.0
E não é só a Locaweb que utiliza MongoDB...
E não é só a Locaweb que utiliza MongoDB...
PERGUNTAS ?

http://twitter.com/acmarques
 http://blog.acmarques.com

 http://twitter.com/deferraz
    http://blog.ferraz.info
OBRIGADO!

Más contenido relacionado

Destacado

User manual hl_wp_clone_feature
User manual hl_wp_clone_featureUser manual hl_wp_clone_feature
User manual hl_wp_clone_featureDebjani Roy
 
Geluidsisolatie versie 1 nvm som (1)
Geluidsisolatie versie 1 nvm    som (1)Geluidsisolatie versie 1 nvm    som (1)
Geluidsisolatie versie 1 nvm som (1)Quietroom Label
 
Produtividade
ProdutividadeProdutividade
ProdutividadeFGV-EAESP
 
Paper mill – comana, romania
Paper mill – comana, romaniaPaper mill – comana, romania
Paper mill – comana, romaniabalada65
 
CSS3 Transitions
CSS3 TransitionsCSS3 Transitions
CSS3 Transitionshstryk
 
Comparison contrast
Comparison contrastComparison contrast
Comparison contrastLes Davy
 
Kallio: Kasvamme yhdessä – nuoret ja vanhemmat pohtivat yhdessä nuoruutta
Kallio: Kasvamme yhdessä – nuoret ja vanhemmat pohtivat yhdessä nuoruuttaKallio: Kasvamme yhdessä – nuoret ja vanhemmat pohtivat yhdessä nuoruutta
Kallio: Kasvamme yhdessä – nuoret ja vanhemmat pohtivat yhdessä nuoruuttaKouluterveyskysely
 
Advertising Tips for Your Publication
Advertising Tips for Your PublicationAdvertising Tips for Your Publication
Advertising Tips for Your Publicationmarinabooh
 
Paananen:Syrjäytymisen juurilla
Paananen:Syrjäytymisen juurilla Paananen:Syrjäytymisen juurilla
Paananen:Syrjäytymisen juurilla Kouluterveyskysely
 
Dumb criminals
Dumb criminalsDumb criminals
Dumb criminalsLes Davy
 

Destacado (18)

User manual hl_wp_clone_feature
User manual hl_wp_clone_featureUser manual hl_wp_clone_feature
User manual hl_wp_clone_feature
 
Geluidsisolatie versie 1 nvm som (1)
Geluidsisolatie versie 1 nvm    som (1)Geluidsisolatie versie 1 nvm    som (1)
Geluidsisolatie versie 1 nvm som (1)
 
Produtividade
ProdutividadeProdutividade
Produtividade
 
Track1
Track1Track1
Track1
 
Paper mill – comana, romania
Paper mill – comana, romaniaPaper mill – comana, romania
Paper mill – comana, romania
 
直接照会により公開された芸術監督データ
直接照会により公開された芸術監督データ直接照会により公開された芸術監督データ
直接照会により公開された芸術監督データ
 
Guide leaving your small business
Guide leaving your small businessGuide leaving your small business
Guide leaving your small business
 
CSS3 Transitions
CSS3 TransitionsCSS3 Transitions
CSS3 Transitions
 
Comparison contrast
Comparison contrastComparison contrast
Comparison contrast
 
Actividad nº 1
Actividad nº 1Actividad nº 1
Actividad nº 1
 
Kallio: Kasvamme yhdessä – nuoret ja vanhemmat pohtivat yhdessä nuoruutta
Kallio: Kasvamme yhdessä – nuoret ja vanhemmat pohtivat yhdessä nuoruuttaKallio: Kasvamme yhdessä – nuoret ja vanhemmat pohtivat yhdessä nuoruutta
Kallio: Kasvamme yhdessä – nuoret ja vanhemmat pohtivat yhdessä nuoruutta
 
Hp云管理平台3.0
Hp云管理平台3.0Hp云管理平台3.0
Hp云管理平台3.0
 
Advertising Tips for Your Publication
Advertising Tips for Your PublicationAdvertising Tips for Your Publication
Advertising Tips for Your Publication
 
O3sac energia-jpb 2012
O3sac energia-jpb 2012O3sac energia-jpb 2012
O3sac energia-jpb 2012
 
Heart Attack
Heart AttackHeart Attack
Heart Attack
 
072773167 x hydraulicb
072773167 x hydraulicb072773167 x hydraulicb
072773167 x hydraulicb
 
Paananen:Syrjäytymisen juurilla
Paananen:Syrjäytymisen juurilla Paananen:Syrjäytymisen juurilla
Paananen:Syrjäytymisen juurilla
 
Dumb criminals
Dumb criminalsDumb criminals
Dumb criminals
 

Similar a MongoDB em producao

Futuro do ASP.NET vNext - MVP ShowCast
Futuro do ASP.NET vNext - MVP ShowCast Futuro do ASP.NET vNext - MVP ShowCast
Futuro do ASP.NET vNext - MVP ShowCast Eduardo Pires
 
Introducao ao desenvolvimento web com Rails
Introducao ao desenvolvimento web com RailsIntroducao ao desenvolvimento web com Rails
Introducao ao desenvolvimento web com RailsKaton Agência Digital
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemRodrigo Valerio
 
Estratégia de middleware microsoft
Estratégia de middleware microsoftEstratégia de middleware microsoft
Estratégia de middleware microsoftEvilázaro Alves
 
Java, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a ObjetosJava, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a ObjetosJoão Longo
 
SATADS 2019 - Desenvolvimento com recursos da AWS
SATADS 2019 - Desenvolvimento com recursos da AWSSATADS 2019 - Desenvolvimento com recursos da AWS
SATADS 2019 - Desenvolvimento com recursos da AWSAnderson Contreira
 
Maven 3, Sonar e Hudson
Maven 3, Sonar e HudsonMaven 3, Sonar e Hudson
Maven 3, Sonar e HudsonRodrigo Branas
 
TDC 2012 Florianópolis - Padrões (Patterns) de desenvolvimento com Windows Azure
TDC 2012 Florianópolis - Padrões (Patterns) de desenvolvimento com Windows AzureTDC 2012 Florianópolis - Padrões (Patterns) de desenvolvimento com Windows Azure
TDC 2012 Florianópolis - Padrões (Patterns) de desenvolvimento com Windows AzureLuciano Condé
 
[Mini Palestra] - Deploy de-apps-php-com-capistrano
[Mini Palestra] - Deploy de-apps-php-com-capistrano[Mini Palestra] - Deploy de-apps-php-com-capistrano
[Mini Palestra] - Deploy de-apps-php-com-capistranoCode Experts Learning
 
Construindo uma empresa de serviço Web baseada em Software Livre e Colaboraçã...
Construindo uma empresa de serviço Web baseada em Software Livre e Colaboraçã...Construindo uma empresa de serviço Web baseada em Software Livre e Colaboraçã...
Construindo uma empresa de serviço Web baseada em Software Livre e Colaboraçã...Marco Gomes
 
Escalabilidade com docker - ASP.NET Conference 2016
Escalabilidade com docker - ASP.NET Conference 2016Escalabilidade com docker - ASP.NET Conference 2016
Escalabilidade com docker - ASP.NET Conference 2016Rodolfo Fadino Junior
 
Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infosimples
 
Light Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsLight Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsCaio Ribeiro Pereira
 
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
 
Dockerizando aplicações em uma Fintech
Dockerizando aplicações em uma FintechDockerizando aplicações em uma Fintech
Dockerizando aplicações em uma FintechRafael Gomes
 
Docker Swarm - Sua aplicação pronta para escalar
Docker Swarm - Sua aplicação pronta para escalarDocker Swarm - Sua aplicação pronta para escalar
Docker Swarm - Sua aplicação pronta para escalargustavomtborges
 

Similar a MongoDB em producao (20)

Futuro do ASP.NET vNext - MVP ShowCast
Futuro do ASP.NET vNext - MVP ShowCast Futuro do ASP.NET vNext - MVP ShowCast
Futuro do ASP.NET vNext - MVP ShowCast
 
Introducao ao desenvolvimento web com Rails
Introducao ao desenvolvimento web com RailsIntroducao ao desenvolvimento web com Rails
Introducao ao desenvolvimento web com Rails
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvem
 
Estratégia de middleware microsoft
Estratégia de middleware microsoftEstratégia de middleware microsoft
Estratégia de middleware microsoft
 
Java, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a ObjetosJava, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a Objetos
 
SATADS 2019 - Desenvolvimento com recursos da AWS
SATADS 2019 - Desenvolvimento com recursos da AWSSATADS 2019 - Desenvolvimento com recursos da AWS
SATADS 2019 - Desenvolvimento com recursos da AWS
 
Maven 3, Sonar e Hudson
Maven 3, Sonar e HudsonMaven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
 
Continuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na NuvemContinuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na Nuvem
 
Arquiteturas Cloud na AWS: Uma Introducao
Arquiteturas Cloud na AWS: Uma IntroducaoArquiteturas Cloud na AWS: Uma Introducao
Arquiteturas Cloud na AWS: Uma Introducao
 
TDC 2012 Florianópolis - Padrões (Patterns) de desenvolvimento com Windows Azure
TDC 2012 Florianópolis - Padrões (Patterns) de desenvolvimento com Windows AzureTDC 2012 Florianópolis - Padrões (Patterns) de desenvolvimento com Windows Azure
TDC 2012 Florianópolis - Padrões (Patterns) de desenvolvimento com Windows Azure
 
[Mini Palestra] - Deploy de-apps-php-com-capistrano
[Mini Palestra] - Deploy de-apps-php-com-capistrano[Mini Palestra] - Deploy de-apps-php-com-capistrano
[Mini Palestra] - Deploy de-apps-php-com-capistrano
 
Construindo uma empresa de serviço Web baseada em Software Livre e Colaboraçã...
Construindo uma empresa de serviço Web baseada em Software Livre e Colaboraçã...Construindo uma empresa de serviço Web baseada em Software Livre e Colaboraçã...
Construindo uma empresa de serviço Web baseada em Software Livre e Colaboraçã...
 
Netbeans Slides
Netbeans SlidesNetbeans Slides
Netbeans Slides
 
Escalabilidade com docker - ASP.NET Conference 2016
Escalabilidade com docker - ASP.NET Conference 2016Escalabilidade com docker - ASP.NET Conference 2016
Escalabilidade com docker - ASP.NET Conference 2016
 
Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)
 
Light Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsLight Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.js
 
Asa cpbr4
Asa cpbr4Asa cpbr4
Asa cpbr4
 
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
 
Dockerizando aplicações em uma Fintech
Dockerizando aplicações em uma FintechDockerizando aplicações em uma Fintech
Dockerizando aplicações em uma Fintech
 
Docker Swarm - Sua aplicação pronta para escalar
Docker Swarm - Sua aplicação pronta para escalarDocker Swarm - Sua aplicação pronta para escalar
Docker Swarm - Sua aplicação pronta para escalar
 

MongoDB em producao

Notas del editor

  1. \n
  2. \n
  3. \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
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n