MongoDB @ Globo.com

Post on 18-Dec-2014

6.149 views 3 download

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

MONGODB @ GLOBO.COM

Julho/2011

FRANKLIN AMORIM

email: franklin@corp.globo.comtwitter : @cyberelfo

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

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

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

•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

• Gráfico do datacenter

O DESAFIO

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

acesso do Cartola, com alta performance e disponibilidade.

PREMISSAS

• Velocidade

• Robustez

• Escalabilidade

• Perda de mensagens não é critico

• Indisponibilidade inicial é tolerável

MYSQL X

MONGODB

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

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

VISÃO SIMPLIFICADA

Nginx/Tornado MongoDB

TECNOLOGIAS

•Ngnix - Webserver

• Tornado - Application

• Beanstalk - Fila

•Memcached

• AsyncMongo (ao invés do PyMongo)

•MongoDB

• 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

//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: {...} } ]}

WORKING SET

Trabalhar com um working set reduzido, minimizando o impacto das

consultas ao banco

ARQUITETURA

Primário

Secundário

Arbitro

ARQUITETURA

Primário

Secundário

Arbitro

Cartola

ARQUITETURA

Primário

Secundário

Arbitro

Primário

Secundário

Cartola Replica Set 2

RESULTADOS

•Deploy feito em maio/2011

• Banco funcionando 24/7

•Nenhum incidente reportado desde a implantação

• 1 milhão de mensagens publicadas

RESULTADO

LIÇÕES APRENDIDAS

• Embedding vs Referencing

•Minimizar o tamanho dos documentos

• Escolher corretamente os data types

• Reduza o working set

OUTROS PROJETOS

RECEITAS.COM

CATALOGO DE VÍDEOS

PARTICIPAÇÕES

PERGUNTAS?

OBRIGADO! :)

twitter : @cyberelfoemail: franklin@corp.globo.com