SlideShare ist ein Scribd-Unternehmen logo
1 von 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!

Weitere ähnliche Inhalte

Andere mochten auch

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
 
Paper mill – comana, romania
Paper mill – comana, romaniaPaper mill – comana, romania
Paper mill – comana, romania
balada65
 
CSS3 Transitions
CSS3 TransitionsCSS3 Transitions
CSS3 Transitions
hstryk
 
Comparison contrast
Comparison contrastComparison contrast
Comparison contrast
Les Davy
 
Advertising Tips for Your Publication
Advertising Tips for Your PublicationAdvertising Tips for Your Publication
Advertising Tips for Your Publication
marinabooh
 
Dumb criminals
Dumb criminalsDumb criminals
Dumb criminals
Les Davy
 

Andere mochten auch (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
 

Ähnlich wie MongoDB em producao

Estratégia de middleware microsoft
Estratégia de middleware microsoftEstratégia de middleware microsoft
Estratégia de middleware microsoft
Evilá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 Objetos
João Longo
 

Ähnlich wie 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
 

Kürzlich hochgeladen

Kürzlich hochgeladen (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 

MongoDB em producao

Hinweis der Redaktion

  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