Disponibilidade e performance na Black Friday

A Black Friday é o segundo período mais importante para o comercio eletrônico brasileiro, perdendo em nível de faturamento apenas para o natal. Em 2019, as vendas nos 4 dias de Black Friday foram de R$ 3,2 bilhões segundo a revista Veja, aumento de 23,6% em relação ao ano anterior.

Ainda que em 2020 o comercio em geral tenha tido baixas devido ao COVID-19, a expectativa é que a Black Friday deste ano tem potencial de vendas ainda acima do ano anterior, sendo assim, é esperado que neste ano de 2020 a Black Friday no Brasil siga crescendo em faturamento.

Tecnicamente, a Black Friday é um grande desafio para equipes de infraestrutura de TI que precisam preparar suas aplicações para lidar com o aumento expressivo de tráfego da data, iniciando seu planejamento (na maioria dos casos) com meses de antecedência, regrados a testes de volumetria e escalabilidade.

Normalmente, times de infraestrutura buscam desenvolver aplicações escaláveis e que possam se adequar de acordo com o volume de tráfego e requisições que suas aplicações recebem, sempre buscando otimizar custos. É o desafio de operar algo complexo com o menor custo possível.

Neste artigo, falaremos um pouco sobre a aplicação de cache e CDN em comércios eletrônicos com o objetivo de apresentar soluções para lidar com o alto volume de tráfego da data.

Como a CDN pode ajudar na Black Friday:

Utilizar um recurso de CDN é essencial, principalmente se seu e-commerce tem a expectativa de receber um alto volume de tráfego durante a Black Friday.

Basicamente, a CDN faz cache de aplicações e passa a entrega-las através de múltiplos pontos, acelerando a entrega (por reduzir latência) e dando mais escalabilidade para aplicações. Caso queira conhecer mais sobre CDN, recomendamos a leitura dessa pagina – O que é CDN

Por exemplo, uma aplicação convencional normalmente é composta por um servidor de hospedagem que está preparado para receber um determinado volume de tráfego. Se eventualmente se este site recebe mais tráfego do que está preparado, haverá problemas de lentidão ou até mesmo, queda da infraestrutura.

Agora, se pensarmos nesta mesma infraestrutura utilizando uma CDN, este mesmo site passa a ser entregues através de outros pontos de distribuição, trazendo maior redundância para a infraestrutura de hospedagem e dando mais escalabilidade para a aplicação, uma vez que este site não precisa mais lidar com todas as requisições, já que boa parte será absorvida pelo serviço de CDN.

Porém, é fundamental entender que apenas utilizar uma CDN não é sinônimo de escalabilidade, afinal, por padrão, a grande maioria dos serviços de CDN faz cache de assets estáticos (imagens, js, css…), lendo automaticamente a extensão dos objetos, o que pode reduzir o uso e largura de banda de sua aplicação, mas ainda será necessário que elementos dinâmicos (como html, json…) sejam entregues diretamente de sua infraestrutura de hospedagem, sendo assim, para efetivamente dar mais escalabilidade para seu comercio eletrônico com uma CDN, é fundamental implementar estratégias de cache dinâmico.

Cuidados para implementar cache dinâmico em e-commerce:

Em boa parte dos casos, implementar cache dinâmico em um e-commerce é algo simples de ser feito, e na grande maioria dos casos, pode ser resolvido através de regras de cache (aqui na GoCache, chamamos de Smart Rules).

Primeiro, é necessário avaliar como seu site lida com carinhos de compras, áreas logadas, checkout de pagamento, etc.. É necessário nesta primeira etapa avaliar todo o conteúdo que pode ser “sensível a cache”.

Um exemplo são aplicações em Magento 1 em que normalmente os usuários logados recebem os cookies frontend e adminhtml, sendo assim, uma boa prática seria definir na CDN que qualquer usuário com esses cookies não recebam itens dinâmicos em cache. Outro exemplo, ainda pensando em Magento 1 é excluir alguns patchs do cache, como por exemplo /add /administrator /customer /index.php /cart.

Já as aplicações em Magento 2, normalmente utilizam carrinhos em ajax e que podem ser configurados para não fazer cache por padrão, trazendo ainda mais eficiência de cache para essas aplicações, mas ainda assim, é aconselhável entender os cookies que identificam sessões e usuários, como por exemplo admin, PHPSESSID e private_content_version que normalmente são excluídos do cache e os patchs /checkout /sales /admin /customer /rest /intelipost_quote /wishlist /giftcard /reward /review /newsletter que normalmente são configurados para não fazer cache. 

Outro CMS bastante utilizado é o WordPress, mais especificamente em sua versão Woocomerce, destinada para e-commerce.

Por padrão, o Woocomerce inseri alguns cookies sempre que um usuário coloca algo no carinho, como por exemplo, woocommerce_cart_hash e woocommerce_items_in_cart, sendo assim, uma boa prática para essa plataforma é deixar de fazer cache dinâmico para usuários com esses cookies. Além disso, também é interessante excluir de cache áreas mais sensíveis, como /carrinho /cart /minha-conta entre outros.

Basicamente, precisamos avaliar cada aplicação para entender seu funcionamento, evitando que informações sensíveis sejam cacheadas, comprometendo a experiência de seus usuários finais.