MongoDB @ Globo.com

43
MONGODB @ GLOBO.COM Julho/2011

description

Estes são os slides da apresentação sobre o uso do MongoDB no projeto Cartola FC da Globo.com. Vc pode ver o vídeo dessa apresentação no link: http://www.gonow.com.br/blog/2011/07/29/o-mongodb-aplicado-ao-cartolafc-da-globo-com/

Transcript of MongoDB @ Globo.com

Page 1: MongoDB @ Globo.com

MONGODB @ GLOBO.COM

Julho/2011

Page 3: MongoDB @ Globo.com

• Provedora de serviços tecnológicos e plataformas web para as empresas Globo

• Líder nos segmentos de notícias, esportes e entretenimento

Page 4: MongoDB @ Globo.com

Números de Junho/2011:

•Mais de 70 milhões de visitantes únicos (cookies distintos)

•Mais de 550 milhões de visitas

•Mais de 3 bilhões de pageviews, em quase 300.000 páginas distintas

Page 5: MongoDB @ Globo.com
Page 6: MongoDB @ Globo.com

•Maior aplicação dinâmica da Globo.com

•Maior Fantasy Game da internet brasileira

•Mais de 2 milhões de usuários cadastrados

• 15 milhões de visitas em junho

•Quase 90 milhões de pageviews em junho

•Quase 30k sessões simultâneas nos picos de acesso

Page 7: MongoDB @ Globo.com

• Gráfico do datacenter

Page 8: MongoDB @ Globo.com

O DESAFIO

Desenvolver uma aplicação de mural, com capacidade para atender ao volume de

acesso do Cartola, com alta performance e disponibilidade.

Page 9: MongoDB @ Globo.com
Page 10: MongoDB @ Globo.com
Page 11: MongoDB @ Globo.com
Page 12: MongoDB @ Globo.com

PREMISSAS

• Velocidade

• Robustez

• Escalabilidade

• Perda de mensagens não é critico

• Indisponibilidade inicial é tolerável

Page 13: MongoDB @ Globo.com

MYSQL X

MONGODB

Page 14: MongoDB @ Globo.com

MONGODB - VANTAGENS

• Velocidade

• Sem necessidade de um ORM

• Acesso mais natural aos dados

• Sem schema / sem migrations (com exceções)

• Failover automático

• Possibilidade de escalar escritas com sharding

Page 15: MongoDB @ Globo.com

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

Page 16: MongoDB @ Globo.com

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

Page 17: MongoDB @ Globo.com

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

Page 18: MongoDB @ Globo.com

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

Page 19: MongoDB @ Globo.com

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

Page 20: MongoDB @ Globo.com

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

Page 21: MongoDB @ Globo.com

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

Page 22: MongoDB @ Globo.com

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

Page 23: MongoDB @ Globo.com

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

Page 24: MongoDB @ Globo.com

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

Page 25: MongoDB @ Globo.com

TECNOLOGIAS

•Ngnix - Webserver

• Tornado - Application

• Beanstalk - Fila

•Memcached

• AsyncMongo (ao invés do PyMongo)

•MongoDB

Page 26: MongoDB @ Globo.com

• 01 database server - MongoDB

• 01 application server

• 01 collection com 100 milhões de mensagens

• Resultado: 300 requests/segundo

• Com 02 application + Memcached: 1.000 reqs/sec

TESTES DE PERFORMANCE

Page 27: MongoDB @ Globo.com

//newsfeed.post - Original{ id : 1223, post_origem_id: 1123, data: "200411300746400000", mensagem: "Minha mensagem", Liga: { id: 1930, nome: "Liga 1930", slug: "liga-1930" } time: { id: 1005, nome: "Time 1005", slug: "time-1005", flashvars: {...} }}

//newsfeed.post - Final{ data: "Tue Jun 15 2010 9:00:00 GMT-0400" mensagem: "Minha mensagem" liga: { id: 1930 nome: "Liga 1930" slug: "liga-1930" } comentarios:[ { id: 251902, data: "Tue Jun 16 2010 11:00:00 GMT-0400", mensagem: "Legal!", time: {...} }, { id: 251903, data: "Tue Jun 16 2010 14:00:00 GMT-0400", mensagem: "Nem tanto..." time: {...} } ]}

Page 28: MongoDB @ Globo.com

WORKING SET

Trabalhar com um working set reduzido, minimizando o impacto das

consultas ao banco

Page 29: MongoDB @ Globo.com

ARQUITETURA

Primário

Secundário

Arbitro

Page 30: MongoDB @ Globo.com

ARQUITETURA

Primário

Secundário

Arbitro

Cartola

Page 31: MongoDB @ Globo.com

ARQUITETURA

Primário

Secundário

Arbitro

Primário

Secundário

Cartola Replica Set 2

Page 32: MongoDB @ Globo.com

RESULTADOS

•Deploy feito em maio/2011

• Banco funcionando 24/7

•Nenhum incidente reportado desde a implantação

• 1 milhão de mensagens publicadas

Page 33: MongoDB @ Globo.com

RESULTADO

Page 34: MongoDB @ Globo.com

LIÇÕES APRENDIDAS

• Embedding vs Referencing

•Minimizar o tamanho dos documentos

• Escolher corretamente os data types

• Reduza o working set

Page 35: MongoDB @ Globo.com

OUTROS PROJETOS

Page 36: MongoDB @ Globo.com

RECEITAS.COM

Page 37: MongoDB @ Globo.com
Page 38: MongoDB @ Globo.com

CATALOGO DE VÍDEOS

Page 39: MongoDB @ Globo.com
Page 40: MongoDB @ Globo.com

PARTICIPAÇÕES

Page 41: MongoDB @ Globo.com
Page 42: MongoDB @ Globo.com

PERGUNTAS?

Page 43: MongoDB @ Globo.com

OBRIGADO! :)

twitter : @cyberelfoemail: [email protected]