Como suportar o aumento de cargas no sistema: falamos sobre os preparativos em grande escala para a Black Friday

Oi, Habr!

Em 2017, durante a Black Friday, a carga aumentou quase uma vez e meia e nossos servidores chegaram ao limite. Ao longo do ano, o número de clientes cresceu significativamente e ficou claro que sem uma preparação preliminar cuidadosa, a plataforma pode simplesmente não suportar as cargas de 2018.

Estabelecemos o objetivo mais ambicioso possível: queríamos estar totalmente preparados para qualquer surto de atividade, mesmo o mais poderoso, e começámos a lançar novas capacidades antecipadamente ao longo do ano.

Nosso CTO Andrey Chizh (chizh_andrey) conta como nos preparamos para a Black Friday 2018, quais medidas tomamos para evitar quedas e, claro, os resultados dessa preparação tão cuidadosa.

Como suportar o aumento de cargas no sistema: falamos sobre os preparativos em grande escala para a Black Friday

Hoje quero falar sobre os preparativos para a Black Friday 2018. Por que agora, quando a maior parte das grandes vendas já passou? Começamos a nos preparar cerca de um ano antes dos eventos de grande escala e, por tentativa e erro, encontramos a solução ideal. Recomendamos que você tome cuidado com as estações quentes com antecedência e evite golpes que possam surgir nos momentos mais inoportunos.
O material será útil para quem deseja extrair o máximo lucro dessas ações, pois O lado técnico da questão não é inferior ao lado do marketing aqui.

Características de tráfego em grandes vendas

Ao contrário da crença popular, a Black Friday não é apenas um dia por ano, mas quase uma semana inteira: as primeiras ofertas de desconto chegam 7 a 8 dias antes da venda. O tráfego do site começa a crescer suavemente ao longo da semana, atinge seu pico na sexta-feira e cai drasticamente no sábado, para os níveis normais da loja.

Como suportar o aumento de cargas no sistema: falamos sobre os preparativos em grande escala para a Black Friday

É importante considerar isto: as lojas online tornam-se especialmente sensíveis a qualquer “lentidão” no sistema. Além disso, nossa linha de newsletter por e-mail também teve um aumento significativo no número de envios.

É estrategicamente importante passarmos pela Black Friday sem travamentos, porque... As funcionalidades mais importantes dos websites e newsletters das lojas dependem do funcionamento da plataforma, nomeadamente:

  • Rastreamento e emissão de recomendações de produtos,
  • Emissão de materiais relacionados (por exemplo, imagens do design de blocos de recomendação, como setas, logotipos, ícones e outros elementos visuais),
  • Fornecer imagens de produtos no tamanho necessário (para esses fins temos o “ImageResizer” - um subsistema que baixa uma imagem do servidor da loja, compacta-a ​​no tamanho necessário e, por meio de servidores de cache, produz imagens do tamanho necessário para cada produto em cada bloco de recomendação).

Na verdade, durante a Black Friday 2019, a carga do serviço aumentou 40%, ou seja, o número de eventos que o sistema Retail Rocket rastreia e processa em sites de lojas online aumentou de 5 para 8 mil solicitações por segundo. Devido ao fato de estarmos nos preparando para cargas mais sérias, sobrevivemos facilmente a tal onda.

Como suportar o aumento de cargas no sistema: falamos sobre os preparativos em grande escala para a Black Friday

Treinamento geral

A Black Friday é uma época movimentada para todo o varejo e e-commerce em particular. O número de usuários e sua atividade neste momento estão crescendo significativamente, por isso, como sempre, nos preparamos minuciosamente para esse período agitado. Acrescentemos aqui o fato de termos muitas lojas online conectadas não só na Rússia, mas também na Europa, onde a excitação é muito maior, e conseguimos um nível de paixão pior que as séries brasileiras. O que precisa ser feito para estar totalmente preparado para cargas maiores?

Trabalhando com servidores

Primeiro, era necessário descobrir exatamente o que precisávamos para aumentar a potência do servidor. Já em agosto, começamos a encomendar novos servidores especificamente para a Black Friday – no total adicionamos 10 máquinas adicionais. Em novembro eles estavam totalmente em combate.

Ao mesmo tempo, algumas das máquinas de construção foram reinstaladas para uso como servidores de aplicativos. Imediatamente os preparamos para utilizar diferentes funções: tanto para emissão de recomendações quanto para o serviço ImageResizer, para que, dependendo do tipo de carga, cada um deles pudesse ser utilizado para uma dessas funções. No modo normal, os servidores Application e ImageResizer possuem funções claramente definidas: o primeiro emite recomendações, o segundo fornece imagens para cartas e blocos de recomendação em sites de compras online. Em preparação para a Black Friday, foi decidido fazer todos os servidores de dupla finalidade para equilibrar o tráfego entre eles dependendo do tipo de download.

Em seguida, adicionamos dois grandes servidores para Kafka (Apache Kafka) e obtivemos um cluster de 5 máquinas poderosas. Infelizmente, nem tudo correu tão bem como gostaríamos: durante o processo de sincronização de dados, duas novas máquinas ocuparam toda a largura do canal da rede, e tivemos que descobrir com urgência como realizar o processo de adição de forma rápida e segura para o toda infraestrutura. Para resolver esse problema, nossos administradores tiveram que sacrificar valentemente seus finais de semana.

Trabalhando com dados

Além dos servidores, decidimos otimizar arquivos para aliviar a carga e um grande passo para nós foi a tradução de arquivos estáticos. Todos os arquivos estáticos que antes estavam hospedados em servidores foram movidos para S3 + Cloudfront. Há muito tempo que queríamos fazer isso, pois a carga do servidor estava próxima dos valores limites, e agora surgiu uma grande oportunidade.

Uma semana antes da Black Friday, aumentamos o tempo de armazenamento em cache de imagens para 3 dias, para que, se o ImageResizer travasse, as imagens armazenadas anteriormente em cache seriam recuperadas do CDN. Também reduziu a carga em nossos servidores, pois quanto mais tempo a imagem fica armazenada, menos vezes precisamos gastar recursos no redimensionamento.

E por último mas não menos importante: 5 dias antes da Black Friday, foi anunciada uma moratória sobre a implantação de qualquer nova funcionalidade, bem como sobre qualquer obra de infraestrutura - todas as atenções estão voltadas para o enfrentamento do aumento de cargas.

Planos para responder a situações difíceis

Não importa a qualidade da preparação, os fakaps são sempre possíveis. E desenvolvemos 3 planos de resposta para possíveis situações críticas:

  • redução de carga,
  • desabilitando alguns serviços,
  • desligamento completo do serviço.

Plano A: Reduzir a carga. Deveria ter sido ativado se, devido a um aumento na carga, nossos servidores ultrapassassem os tempos de resposta aceitáveis. Neste caso, preparamos mecanismos para reduzir gradativamente a carga, transferindo parte do tráfego para servidores Amazon, que simplesmente responderiam a todas as solicitações com “200 OK” e dariam uma resposta vazia. Entendemos que se tratava de uma degradação da qualidade do serviço, mas a escolha entre o facto do serviço não funcionar ou não apresentar recomendações para cerca de 10% do tráfego é óbvia.

Plano B: Desativar serviços. Degradação parcial implícita do serviço. Por exemplo, reduzindo a velocidade de cálculo de recomendações pessoais para descarregar algumas bases de dados e canais de comunicação. Em modo normal, as recomendações são calculadas em tempo real, criando uma versão diferente da loja online para cada visitante, mas em condições de aumento de carga, a redução da velocidade permite que outros serviços core continuem a funcionar.

Plano C: no caso do Armagedom. Caso ocorra uma falha completa do sistema, preparamos um plano que nos permitirá estar desconectados de nossos clientes com segurança. Os compradores da loja simplesmente deixarão de ver as recomendações; o desempenho da loja online não será prejudicado de forma alguma. Para fazer isso, teríamos que redefinir nosso arquivo de integração para que novos usuários parassem de interagir com o serviço. Ou seja, desabilitaríamos nosso código de rastreamento principal, o serviço pararia de coletar dados e calcular recomendações e o usuário simplesmente veria uma página sem blocos de recomendação. Para todos aqueles que já receberam um arquivo de integração, oferecemos a opção de mudar o registro DNS para Amazon e o stub 200 OK.

Resultados de

Lidamos com toda a carga mesmo sem a necessidade de usar máquinas de construção adicionais. E graças à preparação antecipada, não precisámos de nenhum dos planos de resposta desenvolvidos. Mas todo o trabalho realizado é uma experiência inestimável que nos ajudará a lidar com os fluxos de tráfego mais inesperados e enormes.
Tal como em 2017, a carga do serviço aumentou 40% e o número de utilizadores nas lojas online aumentou 60% na Black Friday. Todas as dificuldades e erros ocorreram durante o período preparatório, o que salvou a nós e aos nossos clientes de situações imprevistas.

Como você está lidando com a Black Friday? Como você se prepara para cargas críticas?

Fonte: habr.com

Adicionar um comentário