Orquestrar um Thumbnailer de forma eficiente com o serviço Managed Kubernetes
OVHcloud e Todocoleccion


30 milhões
de lotes

200 milhões
de imagens armazenadas

625 000
visitantes por dia
O contexto
A Todocoleccion é a maior comunidade online de compra e venda em leilão de antiguidades, arte, livros e todo o tipo de objetos de coleção. Há 25 anos que a Todocoleccion oferece aos seus utilizadores uma vitrina na qual podem vender ou adquirir bens.
Com mais de 30 milhões de lotes para vender, distribuídos por mais de 2000 categorias, a empresa oferece um catálogo «cheio de emoções, sentimentos e memórias repletas de histórias; histórias de uma comunidade composta por pequenos grupos com interesses culturais variados que tornam o mundo do colecionismo tão especial».
Para permitir que esta comunidade venda e compre tais objetos, a Todocoleccion disponibiliza todas as ferramentas necessárias à gestão do ciclo de vida de um lote, de acordo com as necessidades dos compradores ou dos vendedores. Os vendedores dispõem de ferramentas para a gestão maciça dos lotes, a importação em grande quantidade ou ainda a gestão do apoio pós-venda, enquanto os compradores beneficiam de ferramentas que lhes permitem comunicar com os vendedores, licitar e fazer ofertas quanto aos lotes que lhes interessam.
Pioneiros no comércio online
Enquanto pioneira no comércio eletrónico, a Todocoleccion não só enfrentou muitos desafios nos últimos 25 anos, como cresceu de forma notável. Na sua primeira versão, o seu site era estático e os lotes a vender eram diretamente editados em HTML. Muito rapidamente, a empresa reorganizou-se com o acolhimento de um novo parceiro, com o objetivo de revolucionar o setor do colecionismo e dos leilões. A empresa emprega atualmente mais de 50 trabalhadores em todo o mundo e possui uma infraestrutura híbrida repartida entre servidores dedicados Bare Metal, Hosted Private Cloud e Public Cloud. Graças ao seu site e à sua aplicação móvel, a Todocoleccion permite que mais de dez milhões de visitantes consultem cem milhões de páginas por mês, num total de transações que ascende a mais de 65 milhões de euros anuais, 80% das quais se realizam em Espanha.
O desafio
Uma infraestrutura para as transações B2B, B2C e C2C
A Todocoleccion representa muitas comunidades com interesses culturais bastante específicos e particulares, mas também de dimensões totalmente diferentes. A fim de proporcionar a cada um destes grupos a segurança e a visibilidade de que necessitam para o seu comércio em linha, a empresa deve ter uma infraestrutura fiável de alta disponibilidade. Além disso, a Todocoleccion dispõe de um stack complexo composto por múltiplas ferramentas OpenSource. Um dos seus maiores desafios é dispor de um uptime o mais próximo possível de 100%.
«A sua gama de soluções físicas e virtuais fez-nos escolher a OVHcloud, a fim de melhorar o desempenho e a escalabilidade da nossa infraestrutura sem ter de manter o nosso próprio datacenter nem utilizar uma quantidade de recursos demasiado grande.»
Joaquín Valdés, CEO, Todocoleccion
Uma grande quantidade de imagens a redimensionar
Atualmente, a empresa dispõe de uma base de dados de mais de 200 milhões de imagens de produtos tanto para venda como já vendidos, e cada uma dessas imagens pode ser visualizada em diferentes resoluções, tamanhos e orientações ou segundo filtros distintos. Estas imagens ocupam 14 TB no Object Storage. A Todocoleccion necessita, portanto, de uma ferramenta de criação de vinhetas altamente disponível e a um custo controlado. Para satisfazer os seus clientes, a Todocoleccion apostou sempre na rapidez e num tempo de latência o mais baixo possível. Assim, a empresa pretendia permitir aos utilizadores o acesso ao seu site com um tempo de resposta das páginas inferior a 200 ms, na medida do possível, sendo que o tempo de latência ideal de um site ronda os 100 ms.
Necessidade de segurança e conformidade
O panorama das startups em Málaga é muito variado. A OVHcloud está fortemente ligada a esse panorama, pois disponibiliza soluções escaláveis a um custo controlado, ideais para as startups e os projetos em fase de arranque. Uma vez que a Todocoleccion está instalada na Europa e lida com comércio eletrónico, a empresa precisa de um fornecedor que satisfaça os requisitos europeus em matéria de segurança e de proteção dos dados dos seus utilizadores.
«Uma das razões, mais cultural, é a de que a OVHcloud é um projeto europeu, com sede em França e numerosas filiais em todo o mundo. A OVHcloud gera emprego, riqueza e, sobretudo, está em conformidade com as regulamentações e as leis em vigor.»
Joaquín Valdés, CEO, Todocoleccion
Assim, para satisfazer as suas necessidades de escalabilidade, de alta disponibilidade e de segurança, ao mesmo tempo que controla os custos da sua infraestrutura, a empresa optou por migrar para a OVHcloud.
O que é um Thumbnailer?
Um Thumbnailer é uma ferramenta/programa que permite gerar miniaturas, ou seja, vinhetas de imagens, para um site. A boa utilização de uma ferramenta de miniaturização de imagens permite, por exemplo, reduzir o tempo de latência de um site e otimizar a experiência dos visitantes.
O utilizador dá ao Thumbnailer um ficheiro e um tamanho-alvo expresso em píxeis, para que o programa crie uma vinheta correspondente aos parâmetros desejados.
Qual é a diferença entre Kubernetes e Docker?
O Kubernetes e o Docker são complementares. Para compreender esta complementaridade, é preciso compreender o que é a conteinerização. Trata-se de um método de compartimentação ao nível do sistema operativo (SO). Permite fazer girar ambientes totalmente isolados uns dos outros, mas que partilham o mesmo «núcleo» da máquina host.
O Docker é uma tecnologia de conteinerização. Os ficheiros binários, as bibliotecas e, de um modo geral, todas as dependências de que uma aplicação necessita para funcionar são colocados numa «caixa», um container, totalmente independente dos outros containers que partilhem o mesmo «núcleo», mas também da infraestrutura subjacente. Como estes contentores podem ser duplicados infinitamente, a sua gestão pode rapidamente tornar-se um desafio. É aqui que entra o Kubernetes. De facto, o Kubernetes é um orquestrador de containers. Permite gerir a totalidade do ciclo de vida dos containers Docker desde a sua criação. A criação e a duplicação destes containers Docker são simplificadas, assim como a sua repartição por diferentes infraestruturas, de forma a permitir uma automatização simplificada da sua gestão. Assim, o Kubernetes permite que os programadores se concentrem no código, sem terem de se preocupar com as camadas subjacentes e a gestão das máquinas virtuais (MV).
A solução
Migração da infraestrutura para a OVHcloud
Em julho de 2019, a Todocoleccion decidiu migrar uma parte da sua infraestrutura para a OVHcloud, de modo a reduzir os custos e manter uma disponibilidade próxima dos 100%, mesmo durante a migração. A empresa escolheu a OVHcloud como novo fornecedor graças a uma vasta gama de soluções físicas e virtuais que lhe permitem melhorar o seu desempenho e a escalabilidade da sua infraestrutura, sem ter de gerir o seu datacenter on premises e evitando o desperdício de recursos. Uma vez que a complexidade do seu stack requer uma oferta adaptada às suas exigências técnicas, a Todocoleccion optou por uma solução de cloud híbrida na qual se utilizam servidores dedicados Bare Metal, Hosted Private Cloud e Public Cloud para responder às diferentes necessidades técnicas e específicas.
«Para além do controlo dos custos, precisávamos de uma alta disponibilidade, de um bom tempo de resposta e de boas medidas de segurança que nos permitissem oferecer os nossos serviços sem interrupções ou então encontrar uma resposta e uma resolução rápida dos incidentes em caso de interrupção.»
Joaquín Valdés, CEO, Todocoleccion
Serviço Managed Kubernetes para o Thumbnailer
Com mais de 30 milhões de lotes a armazenar e apresentar, a Todocoleccion precisa de uma infraestrutura capaz de gerar, armazenar e administrar as vinhetas associadas aos diferentes produtos postos em venda e em leilão no seu site. Para isso, a empresa decidiu, em outubro de 2020, colocar em produção uma ferramenta de miniaturização de imagens para a apresentação dos lotes no site. Essa ferramenta utiliza um cluster Managed Kubernetes para operar o Thumbnailer, a fim de otimizar os recursos associados à criação de vinhetas dos numerosos lotes disponíveis online, enquanto mantém o menor tempo de latência possível. Apesar de as equipas da Todocoleccion desconhecerem o mundo Docker, os elementos do seu serviço informático rapidamente se aperceberam de que o Managed Kubernetes era a solução perfeita para alojar o Thumbnailer.
«Embora a implementação deste projeto tenha inicialmente parecido complexa, congratulamo-nos por termos podido contar com o Adrian, que foi um verdadeiro promotor da OVHcloud e nos acompanhou na utilização do nosso cluster Kubernetes gerido.
O apoio que recebemos esteve à altura das nossas expetativas!»Joaquín Valdés, CEO, Todocoleccion
Automatizar para aumentar a fiabilidade da infraestrutura
A Todocolection também desejava automatizar o máximo possível o ciclo de vida do seu código implementado em Kubernetes. Ao automatizar tanto a forma como as imagens Docker são geradas quanto a sua publicação no Docker Registry, a empresa minimizou as áreas em que é necessária uma intervenção humana na implementação a fim de reduzir os pontos de falha possíveis.
Esta ferramenta de criação de vinhetas é composta por N pods que redimensionam e filtram as imagens importadas para o site da Todocoleccion.
A implementação do Thumbnailer no Kubernetes consiste em 8 a 50 pods criados e eliminados de acordo com uma política de escalabilidade horizontal (H.P.A), a qual acrescenta automaticamente pods quando o CPU atinge 80% da sua capacidade, e elimina-os quando o limite sobe para 50%. Cada pod executa o código do Thumbnailer, constituído por uma aplicação NodeJS, que comunica com o Object Storage da OVHcloud e que, de seguida, transforma a imagem original para a enviar para o CDN através de uma biblioteca C.

Por fim, a utilização do Kubernetes pela Todocoleccion facilita a gestão de um ciclo de vida de software bem definido. A empresa utiliza uma pipeline CI/CD baseada em GitLab, que se encarrega de testar o código JavaScript, de o compilar e de gerar uma imagem Docker. Como resultado, essa imagem é aplicada num cluster Managed Kubernetes para ser posta online. Além desta pipeline CI/CD para gerir o ciclo do código, a Todocoleccion também recorre a ferramentas para o acompanhamento de aplicações diretamente no seu cluster Managed Kubernetes, como o Prometheus e o Grafana. Graças a estas medidas, a Todocoleccion observa todas as atualizações do código do Thumbnailer e assegura que elas se desenrolam sem problemas. Assim, em caso de falha, a equipa informática pode atuar da preparação à produção. O Thumbnailer da Todocoleccion permite-lhe responder a mais de 46 milhões de pedidos de imagens, por parte de mais de 625 mil utilizadores por dia. Um exemplo típico de utilização de um Cluster Managed Kubernetes voltado para a escalabilidade!
O resultado
Após a migração da sua infraestrutura para as instâncias Public Cloud da OVHcloud em julho de 2019, a Todocoleccion reduziu em cerca de 80 ms o tempo de resposta do seu site. A ferramenta Thumbnailer, que entrou em produção em outubro de 2020, permite servir de 120 a 250 pedidos por segundo. Em circunstâncias normais, a utilização dos recursos continua a ser semelhante à anterior implementação. Mas uma vantagem de monta é que a Todocoleccion pode redimensionar o seu cluster aumentando o número de nós de trabalho em função das necessidades. Desta forma, a empresa pode garantir uma disponibilidade contínua, mesmo em caso de forte afluência, ativando o auto-scaling dos node-pools do Kubernetes.
«A OVHcloud permite-nos obter os mesmos ou até melhores resultados em comparação com o nosso fornecedor anterior, por uma fração do custo que tínhamos.»
Joaquín Valdés, CEO, Todocoleccion
Agora, a Todocoleccion deseja desenvolver a utilização dos dispositivos móveis, que representam já 55% do tráfego atual e do volume de negócios da empresa, bem como continuar a alargar a sua presença no estrangeiro.