Apresentação efetuada na QConSP 2012 sobre arquitetura na Cloud e como a Chaordic Systems evoluiu sua arquitetura utilizando a Amazon Web Services nos últimos anos.
2. Alguns números
1.100 rps
na última Black Friday
1 Bi requisições
por mês na API
6TB Cassandra
de dados no
115 milhões
de produtos recomendados/dia 23 milhões
de usuários
3. Próximos minutos
Etapas na construção de uma plataforma
elástica, escalável e disponível
na nuvem da Amazon
4. A Chaordic
Desde 2009 desenvolve solução de
personalização para ecommerce
14. Desafios
Operar nos TOP ecommerces do país;
Alta Disponibilidade;
Desempenho;
Escalabilidade;
Demanda imprevisível, efeito TV;
Big Data + RecSys;
Prover 100% de conteúdo dinâmico;
16. 1ª Fase Iníciamos com a Saraiva;
Não eramos multi-tentant;
Escalabilidade Ctrl + C, Ctrl + V;
MyISAM com Insert Delayed;
Melhoria no desempenho, EhCache;
Monit garantia disponibilidade;
Pingdom alertava, FailOver era manual;
18. 1ª Fase
Pascoa 2011, ops! Falha no AWS;
New Relic como APM;
Tunning da JVM ConcMarkSweepGC;
+IOPS no MySQL, RAID0 com 4EBS;
Replicação Master/Slave para Report;
20. 2ª Fase
Novos clientes na plataforma;
Criação de CDN própria + DynECT;
Balanceamento de carga com ELB;
Nginx + Tomcat + HAProxy;
Cache distribuída com Memcached;
MySQL todo em memória, evita EBS;
Scale Up e Out para Natal e Black Friday;
22. 3ª Fase
3ª Fase
Tomcat por Jetty = 3,5x mais rps;
Auto Scale e Spot Instances = Tio Patinhas;
Migração MySQL para Cassandra;
Puppet + Git = Gerência de configuração;
Nagios + Ganglia = Monitoração detalhada;
RecSys via MapReduce;
26. Melhorando nosso desempenho
Desempenho Jul/11 vs Jul/12
1200
1000
800
600
400
200
0
Jul-11 Jul-12
Milhões de Requisições Tempo de Resposta (ms)
27. e também tivemos sorte
MySQL em disco efêmero sem backup;
Bug no script de backup do Cassandra;
Ilesos no último crash da AWS;
Java Leap Second não nos afetou;
28. Lições aprendidas
Itere rapidamente e em pequenos passos;
Observe o que funciona;
Debugue em produção;
Mude muito e frequentemente;
Aprenda a falhar e quebrar as coisas;
Integração contínua ajuda a evitar problemas;
Cloud pode viabilizar seu negócio;