O CartolaFC é o maior fantasy game do Brasil. Não só pela quantidade de usuários, como também pela quantidade de dados manipulados durante as 38 rodadas do Campeonato Brasileiro de futebol. São mais de 3 milhões de usuários que a cada rodada geram 26 milhões de novas linhas no banco de dados.
Do lançamento em 2006 até hoje, evoluímos nossa arquitetura para uma aplicação web capaz de suportar milhares de acessos simultâneos e um grande volume de dados, utilizando tecnologias open source. Nessa palestra iremos apresentar uma visão aprofundada e técnica sobre a aplicação atual e os desafios encontrados ao escalá-la.
Ao assistir a apresentação, você entenderá nossas decisões técnicas – da escolha do banco de dados à definição dos servidores, passando por desafios ao escalar o CartolaFC. Também conhecerá dicas e experiências para auxiliar na construção de suas aplicações web e domar questões de desempenho e escalabilidade.
12. histórico de recordes de times escalados em uma rodada
450K
900K
1,350K
1,800K
2009 2010 2011 2012 2013 2014 2015
1.766.349timesescaladosna
rodada14
13. histórico de recordes de times escalados em uma rodada
450K
900K
1,350K
1,800K
2009 2010 2011 2012 2013 2014 2015
1,766K
1,371K
1,284K1,277K
1,151K
750K
573K
+1Mi
timesescaladosem
menosde24hs
14. histórico de recordes de times escalados em uma rodada
450K
900K
1,350K
1,800K
2009 2010 2011 2012 2013 2014 2015
1,766K
1,371K
1,284K1,277K
1,151K
750K
573K
+200Mi
requestsaAPIem
umdomingo
39. volumedeacessos
pense:
requests dinâmicos com tempo de
resposta em 100ms é aceitável?
e se você tiver 300.000 conexões
simultâneas?
e se depois do request cachearmos
por 15 min em um arquivo estático?
e se você tiver 1.5Mi de times
escalados?
cenário: consulta a pontuação parcial via api
40. volumedeacessos
requests > 100ms viram problema
neste cenário de concorrência
ações:
otimização para ter < 50ms
rever a relevância de cada dado
retornado pela API
mudar a estratégia de entrega da api
problemática
cenário: consulta a pontuação parcial via api
41. testesdeperformance
usar as ferramentas ao longo
do desenvolvimento para
identificar gargalos
http://httpd.apache.org/docs/2.2/programs/ab.html
https://github.com/wg/wrk
wrka HTTP benchmarking tool
apache benchmark
é possível acompanhar a
performance do seu código
rodando testes da sua máquina
não é necessário que sua
aplicação chegue em produção
46. boasestratégias
querys simples
cruzar os dados na aplicação
cachear resultados de querys básicas
saber o que o ORM está fazendo
update? delete + insert
querys com tempo > 50 ms ?
51. 24 Cores CPU
24 Cores CPU ...
multiprocesso
multiprocesso
http://sebastianraschka.com/Articles/2014_multiprocessing_intro.html
https://docs.python.org/2.7/library/multiprocessing.html
52. pré-cache
dados básicos
dados dos atletas
• rodada, partidas, clubes, status, esquema tático …
• info do atleta, pontuação, mercado e filtros
estratégia: cachear as instâncias e
também os relacionamentos
53. pré-cache
dados dos times
dados das ligas
a estratégia: cachear as instâncias e
também os relacionamentos
• info do time, pontuação, escalação
• info da liga, ranking, times de uma liga, ligas de um time