O documento descreve a evolução da arquitetura da Chaordic Systems ao longo dos anos para dar suporte ao crescimento exponencial do negócio. A empresa migrou de uma única instância para várias instâncias, adotou balanceamento de carga, cache em memória e banco de dados replicado para melhorar o desempenho e disponibilidade. Recentemente mudou para um modelo NoSQL e auto escalonamento na nuvem da AWS.
3. A Chaordic
Desafios
Próximos minutos Evoluções
Futuro
Conclusões
10/25/2011
4. A Chaordic
Desde 2009 desenvolve solução de
personalização;
Nascida a partir do Netflix prize;
Sediada em Florianópolis;
Escritório em São Paulo;
10/25/2011
10. RecSys + Big Data
Operar nos TOP ecommerces do país
Alta Disponibilidade
Escalabilidade
Desempenho
Desafios 100% do conteúdo provido é dinâmico
10/25/2011
11. ~5 TB de BD;
Mais de 1 Bi requisições/mês na API;
67 mil RPM - Última Black Friday;
Alguns
4 milhões de produtos;
Números
34 milhões de recomendações
geradas/dia;
27 milhões de usuários;
250GB de JS comprimidos servidos/dia;
10/25/2011
14. Pangeia ~2,5 anos atrás;
Em negociações com a Saraiva;
Tomcat6, MySQL5.1 = 1 instância c1.xlarge;
Sem Alta Disponibilidade, Escalabilidade;
Suporte a SSL, Desempenho aceitável;
Snapshots diários como forma de backup;
Primórdio
10/25/2011
15. Primórdio
14GB BD;
Evolução 15 milhões acessos/mês;
Núm. 1,8 mil RPM;
1 instância;
Primórdio
10/25/2011
17. Começo da separação ~2 anos atrás;
No ar com a Saraiva;
Tomcat6 + EhCache = Aumento Desempenho;
MySQL dedicado e Data Files no disco efêmero;
Monitoração com Monit e notificação via Pingdom;
Evolução Snapshots + Data Files no S3 diários para bkp;
1a Etapa
10/25/2011
18. Tuning JVM;
Ambiente não suporta grandes paralisações;
Alterado GC para UseConcMarkSweepGC;
Menos tempo em GC, menos FullGC;
Evolução Maior desempenho da JVM;
1a Etapa
10/25/2011
19. Evolução - 1a Etapa
23GB BD;
Evolução 28 milhões acessos/mês;
Núm. 3 mil RPM;
2 instâncias;
1a Etapa
10/25/2011
21. ~1,5 anos atrás;
NewRelic como solução de APM;
Novos clientes = Multi-tenant;
MySQL c/ RAID0 4 EBS, maior volume IO;
Evolução MySQL replicado Master/Slave;
2a Etapa
Revisão do plano de continuidade do
negócio devido a falha na Amazon Páscoa
2011;
10/25/2011
22. Evolução - 2a Etapa
35 GB BD;
36 milhões acessos/mês;
8 mil RPM;
4 instâncias;
10/25/2011
24. ~1 ano atrás;
Nova.com = Extra + PontoFrio + Casas Bahia;
CDN própria + DynDNS = Static HA;
ELB, Nginx + Tomcat6 + HAProxy;
MySQL Memória, CacheDist com Memcache;
Evolução Scale Up + Scale Out para Black Friday e Natal;
3a Etapa
10/25/2011
25. Aumento da contenção de escrita no banco;
HiLo para geração de IDs;
Utilização de INSERT DELAYED no MyISAM;
Evolução
Tabelas carregadas para memória, evita EBS;
3a Etapa HAProxy de MySQL para fail over do banco;
10/25/2011
26. Evolução - 3a Etapa
118 GB BD;
630 milhões acessos/mês;
24 mil RPM;
10 instâncias;
10/25/2011
28. ~ 6 meses atrás;
Troca tomcat por jetty = 3x mais requisições;
Auto Scale e Spot Instances = Tio Patinhas;
Evolução Migração MySQL para Cassandra = NoSQL;
4a Etapa
Puppet + S3 = Instâncias voláteis, menor
dependência do Health Dashboard AWS;
Nagios + Ganglia = Monitoração detalhada;
Pagamento via wire-transfer = Tributos;
10/25/2011
30. Finalizar migração MySQL, Cassandra;
RecSys via Map Reduce;
Nacionalização da operação = reduz latência,
Futuro porém aumenta custo em 30%;
Cassandra, Hadoop e Pig;
Backup e Fail Over para outro provedor de cloud;
10/25/2011
31. Sem DataCenter, focamos no core da empresa;
Cloud: Flexibilidade + Escalabilidade = Economia;
Porque Amazon AWS?
● Possuem API para todos serviços;
Conclusão ● Frequência em novos produtos e serviços;
● Preços diminuem com regularidade;
● Fornecedor IaaS: maior liberdade, maior
aprendizagem;
● Democratização da Cloud real no Brasil;
● Qualidade do serviço oferecido;
10/25/2011