Posts

,

Case Promobit – economizando custos na AWS com a GoCache CDN

Este post é muito especial, pois foi escrito espontâneamente pelo Leandro Menezes dos Anjos, CIO da Promobit.

Aprecie sem moderação!

 

Redução de custos com AWS e CDN

 

Neste artigo, eu gostaria de compartilhar meu feedback de como a GoCache ajudou o Promobit a trafegar com 8x mais requisições por segundo na BlackFriday sem aumentar nossos custos e, o mais importante, com alta performance.

 

Ocupo a posição de CIO no Promobit, sendo o responsável pela infraestrutura da Startup, ou seja, minha responsabilidade vai desde a segurança, estabilidade e escalabilidade até os cuidados com os custos de servidor que nossa plataforma possa gerar.

 

Somos hoje a maior comunidade de compartilhamento de ofertas do Brasil. Desde 2014 estamos desenvolvendo uma plataforma colaborativa capaz de reunir as melhores promoções do e-commerce, sem esquecer da segurança e da qualidade do conteúdo.

A situação

Com o alto crescimento da nossa plataforma, precisamos mudar nossa infraestrutura e, como qualquer empresa, ainda mais sendo uma startup, o custo é uma questão muito importante. Optamos por escolher a AWS (Amazon Web Services) como solução para nossos servidores, pela facilidade de implementação e pelo aparente preço justo pelo serviço.

 

Não se engane: a AWS possui um leque de soluções sem igual, que facilita e muito a vida do seu SysAdmin e muitas vezes até dispensa tal cargo em sua empresa, quando bem praticada a cultura de DevOps. Mas toda facilidade tem seu preço. No caso da AWS, você paga pelo uso.

O problema

Parece justo não é mesmo? O problema acontece quando você precisa escalar. Quando você deixa 1 servidor web virar 8 para aguentar um pico de acessos no BlackFriday e seu trafego de dados passa de 1 terabyte para 3 ou 4 terabytes mensais.

 

Apenas nesses dois fatores o custo se elevaria significativamente, não concorda?

 

Vamos ao mundo real.

 

Em um acesso na timeline do Promobit, temos aproximadamente 30 requisições apenas de produtos listados e fotos de usuários, fora o HTML, Javascript e CSS que são utilizados para renderizar a página.

 

Vamos pensar que essas imagens possuam uma média de 190 bytes (peguei uma como base), 190 x 30 requisições = 5,7KB. Parece pouco, mas vamos pensar que esse trafego é apenas um acesso e um único usuário.

Em um pico de BlackFriday, em que tivemos cerca de 50 mil usuários simultâneos entre Web e Mobile, você chega a 1.500.000 requisições e 285 megabytes, isso com apenas um acesso de cada usuário.

 

Estamos falando apenas de imagens, que são arquivos estáticos e que eu poderia cachear em algum lugar por não haver nenhum processamento por parte do servidor, é apenas servir a imagem.

A solução

Pensando nisso adotamos a GoCache para servir como nossa CDN, ficando responsável por cachear parte do conteúdo e servir esse mesmo conteúdo a nossos usuários sem precisar encostar em nossos servidores novamente.

 

Agora quando um usuário acessa a Timeline e faz aquelas 30 requisições, elas são cacheadas. Na prática, o que acontece é que das 1.500.000 requisições que eu deveria receber apenas por servir imagens, agora eu recebo apenas 30. As outras 1.499.970 requisições a GoCache responde por mim com o conteúdo correto.

 

Com isso obtivemos a economia de uma máquina, uma vez que eu recebia essas requisições pelo meu EC2 e depois redirecionava o acesso aos arquivos em um S3.

Agora eu preciso de menos maquinas WEB e meu site responde mais rápido, uma vez que ele se preocupa apenas com o conteúdo dinâmico, e eu economizo banda do meu S3, que é um dos fatores de custo da AWS.

 

Falando em números:

consumo promobit

Hoje economizamos em média 95% da nossa banda com a CDN e uma média de 87% das requisições nós não precisamos nos preocupar em processar a resposta.

 

Isso reflete em toda a infraestrutura da aplicação. Não utilizamos esse conceito apenas para arquivos estáticos, mas algumas páginas com conteúdo dinâmico também. Então economizamos com nosso trafego interno entre as máquinas, processamento e memória RAM de servidor de banco de dados, servidor de cache, load.balancer, servidores web etc. Ou seja, tudo que possa envolver uma requisição e que eu possa de alguma forma cachear a resposta HTTP, eu posso deixar nas mãos desse serviço.

O resultado

Essa economia resulta diretamente em nosso financeiro, uma vez que um valor que giraria em torno de $1.800,00 na AWS passa a custar uma média de $700,00.

 

Acertamos em adotar a GoCache como parceira. No dia-a-dia, ela não apenas se paga pela economia que gera, mas também agrega em todo nosso ecossistema, oferecendo uma experiência melhor a nossos usuários e entregando nosso conteúdo de forma mais rápida, além da proximidade com seus clientes, em que fazem um ótimo trabalho de coletar feedbacks e implementar funcionalidades que realmente utilizamos.