Construindo um avião
em pleno vôo na nuvem


Matheus Rossato
 rossato@chaordic.com.br
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
Próximos minutos


Etapas na construção de uma plataforma
    elástica, escalável e disponível
         na nuvem da Amazon
A Chaordic




   Desde 2009 desenvolve solução de
    personalização para ecommerce
Alguns Clientes
Chaordic OnSite
Chaordic Mail
Visão geral
A Chaordic
   Floripa
A Chaordic
   Floripa
A Chaordic
   Floripa
A Chaordic
    Sampa
A Chaordic
    Sampa
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;
Mãos a obra
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;
1ª Fase
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;
1ª Fase
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;
2ª Fase
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;
3ª Fase
Ganhamos escalabilidade
Permitindo crescer rapidamente

              Requisições mensal 2011
     1200
     1000
      800
      600
      400
      200
       0




                      Requisições
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)
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;
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;
Obrigado!
Agora,




            Matheus Rossato
                 @chaordicsystems

QConSP 2012 - Construindo um avião em pleno vôo na nuvem

  • 1.
    Construindo um avião empleno vôo na nuvem Matheus Rossato rossato@chaordic.com.br
  • 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 naconstruçã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
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
    A Chaordic Floripa
  • 10.
    A Chaordic Floripa
  • 11.
    A Chaordic Floripa
  • 12.
  • 13.
  • 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;
  • 15.
  • 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;
  • 17.
  • 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;
  • 19.
  • 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;
  • 21.
  • 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;
  • 23.
  • 24.
  • 25.
    Permitindo crescer rapidamente Requisições mensal 2011 1200 1000 800 600 400 200 0 Requisições
  • 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 tivemossorte 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 rapidamentee 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;
  • 29.
    Obrigado! Agora, Matheus Rossato @chaordicsystems