Para aqueles que estão mexendo com o marketing ou simplesmente acessam o fluxo, a Black Friday é um hype, pedidos malucos e multidões de clientes.
É bom preparar a infraestrutura para o influxo com antecedência, mas quem pensamos nessas coisas com antecedência? Mas, às vezes, a decisão de participar é tomada no dia anterior.
Assim, o feriado do consumismo começou, os servidores da loja online começaram a piscar alegremente, o call center superaqueceu e os serviços de entrega oferecem entrega em algum lugar de janeiro.
O que fazer, relaxar e ver a luta fakap filosoficamente ou bravamente?

Acompanhei a infraestrutura de servidor das lojas online durante a Black Friday e nunca fui contatado com antecedência ou tive tempo para me preparar. Compartilho minha experiência com aqueles que receberão o mesmo pedido hoje.
(Você tem sorte se conseguir fazer o certo, ou seja, configurar o monitoramento em alguns meses, analisar tráfego, gargalos, arquitetura do projeto, realizar testes de estresse, se necessário, reconstruir a arquitetura junto com os desenvolvedores, conectar previamente capacidades adicionais do servidor. falaremos sobre a abordagem correta em outra ocasião, aqui sobre medidas de incêndio).
Montamos monitoramento
Eu acho que o monitoramento é primário em qualquer caso. Ainda haverá problemas, mas graças aos cronogramas de monitoramento, você pode entender onde estão os gargalos agora.
Se possível, uso soluções como Zabbix / Prometheus / ELK (dependendo da arquitetura); caso contrário, conecto rapidamente o SaaS como okmeter.io. Mesmo que a venda dure apenas um dia, você não poderá observar vários indicadores em um monitor como um dia zulu consecutivo.
Ainda são ótimas ferramentas blackfire.io/newrelic.com para criação de perfis, pinba.org para analisar páginas de "desaceleração" em geral.
O blackfire / newrelic ajudará a resolver o problema em uma página específica, o pinba ajudará você a ver quais páginas são carregadas com mais frequência e são executadas por mais tempo (tudo está pronto para uso no Bitrix, por exemplo, mas tente ir ao painel de administração e trabalhar lá quando o servidor e o site já está muito ruim).
Cortar o excesso
Eu desligo tudo o que pode ser desligado: módulos condicionalmente desnecessários no momento, todo tipo de beleza, etc.
A venda é um processo simples, um grande desconto em vários produtos. Um visitante com olhos ardentes quer escolher um produto até que esteja esgotado, fazer um pedido, obter um desconto, efetuar um pagamento.
Assinando a newsletter, registrando-se no site, pesquisando sobre a qualidade do serviço - tudo isso não está mais interessado no cliente agora, esses módulos podem ser desativados ou simplificados. Desligo tudo sem o qual o site possa funcionar silenciosamente por alguns dias.
Um caso da prática: durante a Black Friday, depurei um servidor em execução com muito tráfego e, após duas horas, o módulo de serviço de entrega ficou muito lento, o que acessa serviços externos e calcula automaticamente o custo de entrega para cada pedido. Quando o tráfego cresceu centenas de vezes, esses serviços externos simplesmente deixaram de lidar.
Você pode apenas sentar e pensar, e o que poderia acontecer no seu site / em um aplicativo móvel / etc?
Deixando cair
Estou me preparando para o fato de que qualquer serviço cairá de qualquer maneira. Nesse caso, você precisa mostrar aos visitantes pelo menos alguma coisa.
Por exemplo, um módulo de serviço de entrega que não esteja funcionando ou uma forma de pagamento não deve bloquear todo o pedido; o usuário pode voltar amanhã e concluir seu pedido.
Nas páginas de erro dos anos 50, mostro o email ou o número de telefone do departamento de vendas.
error_page 500 502 503 504 /50x.html; location = /50x.html { root /srv/www/yourwebsite.com/htdocs/sale-contacts/; }
Levante uma cópia do site
Se é possível ter uma cópia do site para testar alterações, isso é muito bom. Não estou falando de um sistema de implantação estabelecido :)
A propósito, os serviços em nuvem modernos permitirão que você faça uma cópia rápida e fácil do servidor de batalha.
Estudo de caso: um site, cuja infraestrutura eu ajudei a manter durante a Black Friday, depois de otimizar pelos desenvolvedores (parcialmente em movimento), adicionando recursos, otimizando o software, começou a trabalhar de maneira mais ou menos tolerável com tráfego pesado, mas ainda muito desacelerou ao fazer pedidos. Os usuários pensaram que os pedidos não estavam sendo enviados e, por precaução, pressionaram o botão de checkout várias vezes. Várias figuras pressionaram o botão 300 vezes! Ótimo teste de estresse :) Centenas de vezes mais visitantes e cerca de 300 pedidos mais! :)
Serviços CDN
Você pode ficar sem a CDN, mas se os servidores objetivamente não conseguirem lidar com o retorno da quantidade certa de estática, isso é necessário.
Você pode conectar rapidamente uma CDN para CMS popular, como
1C-Bitrix ,
Wordpress . Mas você não pode configurar a CDN em qualquer lugar, é necessário ter cuidado.
AntidDoS
Eu recomendo conectar os serviços AntiDDoS e não se esqueça de avançar (caso contrário, com uma carga repentina, sem se adaptar ao tráfego normal, eles poderão começar a bloquear visitantes legítimos).
Por um determinado período, isso pode ser feito gratuitamente:
Adicionar recursos do servidor
Prevemos a possibilidade de adicionar recursos. Será possível adicionar recursos ao servidor principal, criar um novo nó para consultas paralelas, um nó para mysql, etc. Se não for você, um contratado contratado agradecerá muito por isso.
É conveniente se o seu provedor puder hospedar servidores físicos e na nuvem (Selectel.ru, Servers.com).
Vamos lá
A coisa mais perigosa são os primeiros minutos após os boletins. O cache ainda não foi aquecido, existem poucas estatísticas, você ainda não conhece os recursos do sistema (se você não realizou testes sérios com antecedência).
Algumas configurações
Armazenamento em cache no nginx
Criaremos um cache de 500 MB por 3 horas para todas as páginas, exceto as páginas do pedido.
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=blackfriday_cache:180m max_size=500m inactive=7d; # blackfriday_cache, 180 proxy_cache_key "$request_method$scheme$host$request_uri"; proxy_cache_use_stale error timeout invalid_header http_500; map $uri $cookie_nocache { # , ; 1 - , 0 - "/order" "1"; "/bitrix" "1"; default "0"; } location / { .... proxy_hide_header "Set-Cookie"; # proxy_ignore_headers "X-Accel-Expires"; proxy_ignore_headers "Expires"; proxy_ignore_headers "Cache-Control"; proxy_ignore_headers "Set-Cookie"; add_header X-Cache $upstream_cache_status; ... proxy_no_cache $cookie_nocache; # , map; 1 - proxy_cache blackfriday_cache; # proxy_cache_valid 180m; # 180 proxy_cache_valid 404 1m; # 404 - 1 .... proxy_pass http://backend; # } location @backend { .... # }
Materiais adicionais muito, links:
O canal de 100 mbit permite fornecer 12 páginas com 1 MB por segundo, ou seja, 43 mil por hora; O nginx é capaz de fornecer esse volume, mesmo em um servidor barato.
Distribuímos solicitações entre vários nós (o site deve estar pronto para funcionar com vários nós da web)
Via DNS Round-Robin
(tenha cuidado aqui, esse método não é mais suportado corretamente por muitos provedores de DNS)
$ dig lifehacker.ru +short 136.243.37.180 136.243.37.178
Via upstream nginx
$ cat nginx.conf upstream backend { server backend1.yoursite.com; server backend2.yoursite.com; } server { server_name yoursite.com; location / { proxy_pass http://backend; } } location @backend { .... # }
Via Cloudflare, Qrator, etc.
Eles têm a capacidade de definir vários back-end diretamente do painel; a atualização da configuração geralmente é instantânea.
Calmamente
Acontece que é impossível garantir um trabalho perfeito, mas a principal coisa para os negócios é que o sistema basicamente funciona. Deixe devagar, mas deve permitir que os usuários façam pedidos, e não pressione F5 sem parar. "Miserável, inibidor, dividindo os nervos de todos", milhares de clientes o usam ao mesmo tempo e fazem, fazem, fazem pedidos e cada um deles é valioso. Vi exemplos em que um dia a loja fez uma reviravolta de seis meses e o resultado valeu a pena todos os nervos.
Vendas de sucesso para você :)