MongoDB em producao

4,305 views
4,171 views

Published on

Palestra realizada no TDC2011

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,305
On SlideShare
0
From Embeds
0
Number of Embeds
188
Actions
Shares
0
Downloads
0
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • MongoDB em producao

    1. 1. em produção dá pra confiar?Antonio Marques - @acmarques André Ferraz - @deferraz
    2. 2. Em produção há quase 2 anos em diversas aplicações
    3. 3. Mas por que MongoDB?Laggard
    4. 4. • Reescrita incremental de sistema legado• Alterações de modelo frequentes• Muitas migrations...
    5. 5. Mas Rails com MySQL é tão legal!Laggard
    6. 6. Novidades interessantes surgindo +
    7. 7. Novidades interessantes surgindohttp://railscasts.com/episodes/194-mongodb-and- mongomapper
    8. 8. E então começou a saga do early adopter
    9. 9. Primeira semana em produção
    10. 10. Primeira semana em produçãoNoMemoryError (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
    11. 11. Primeira semana em produçãoNoMemoryError (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!
    12. 12. Primeira semana em produçãoNoMemoryError (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
    13. 13. Ferrando a vida dos sysadmins
    14. 14. Backporting
    15. 15. Backporting
    16. 16. Segurança / Autorização• RW User / RO User• No Roles• Plain String Key Exchange (Replica Set / Sharding)
    17. 17. Conhecimento• Evite ser o unico ponto focal• Aprendeu algo novo? Repasse ao time
    18. 18. Troubleshooting / Debugging• Cluster Offline• Repair Database
    19. 19. Alta Disponibilidade com Replica Sets
    20. 20. Replica Sets Server A slave syncServer B sync Server C slave master Web App
    21. 21. Replica Sets Server A slave syncServer B sync Server C slave master Web App
    22. 22. Replica Sets Server A voting slaveServer B Server C slave master Web App
    23. 23. Replica Sets Server A slave syncServer B Server C master Web App
    24. 24. Replica Sets Server A slave syncServer B Server C master Web App
    25. 25. Replica Sets Server A slave syncServer B Server C master Web App
    26. 26. Replica Sets Server A slave sync syncServer B Server C master slave Web App
    27. 27. Mas não tão simples...
    28. 28. Necessário atualizar aplicação para o driver mais recente
    29. 29. Necessário atualizar aplicação para o driver mais recente
    30. 30. Configurar a aplicação para usar o Replica SetAlterar classe de conexãoTratar tipos específicos de exceção
    31. 31. 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
    32. 32. Próximos passos
    33. 33. Sharding
    34. 34. Sharding Server AWeb App
    35. 35. ShardingServer A Web App
    36. 36. ShardingServer A Server B Web App
    37. 37. ShardingServer A Server B Server C Web App
    38. 38. ShardingServer A Server B Server C Server D Web App
    39. 39. ShardingServer A Server B Server C Server D Server N Web App
    40. 40. ShardingServer A Server B Server C Server D Server N mongos Web App
    41. 41. Sharding Server A Server B Server C Server D Server NConfigConfig mongos Web AppConfig
    42. 42. Sharding Server A Server B Server C Server D Server NConfigConfig mongos Web AppConfig
    43. 43. Sharding Server A Server B Server C Server D Server NConfigConfig mongos Web AppConfig
    44. 44. Sharding + Replica Set mongos Web App
    45. 45. Sharding + Replica Set mongos Web App
    46. 46. Sharding + Replica Set mongos Web App
    47. 47. 2.0
    48. 48. 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
    49. 49. 2.0 Muito barulho
    50. 50. 2.0
    51. 51. 2.0
    52. 52. 2.0 Muito boato
    53. 53. 2.0
    54. 54. E não é só a Locaweb que utiliza MongoDB...
    55. 55. E não é só a Locaweb que utiliza MongoDB...
    56. 56. PERGUNTAS ?http://twitter.com/acmarques http://blog.acmarques.com http://twitter.com/deferraz http://blog.ferraz.info
    57. 57. OBRIGADO!

    ×