Orquestar un thumbnailer de forma eficaz y potente con el servicio Managed Kubernetes de OVHcloud
Un caso de éxito
30 millones
de lotes
200 millones
de imágenes almacenadas
625 000
de usuarios al día
El contexto
Todocoleccion es la mayor comunidad online de compra-venta y subastas de antigüedades, arte, libros y coleccionismo. Desde hace 25 años, la plataforma ofrece a sus usuarios un escaparate en el que vender y comprar directamente, o pujar en sus subastas.
Con más de 30 millones de lotes a la venta distribuidos en más de 2000 categorías diferentes, la empresa ofrece un catálogo «lleno de emociones, sentimientos y recuerdos llenos de historias; historias que pertenecen a una inmensa comunidad compuesta por pequeños grupos con intereses culturales de lo más diversos y concretos, lo que hace que el mundo del coleccionismo sea tan especial».
Para que esta comunidad pueda vender y comprar estos objetos, Todocoleccion pone a su disposición todas las herramientas necesarias para la gestión del ciclo de vida de un lote, según las necesidades de los compradores y vendedores. Los vendedores disponen de herramientas para la gestión masiva de los lotes, la importación en «batch» o incluso de soporte postventa, mientras que los compradores cuentan con diferentes herramientas para comunicarse con los vendedores, pujar y hacer ofertas por los lotes de su interés.
Pioneros en el sector del comercio electrónico
Como pionero en el sector del comercio electrónico, Todocoleccion ha afrontado diferentes retos en sus 25 años de vida, en los que la empresa ha sabido crecer y expandirse. En su primera versión, el sitio web era estático y los lotes a la venta se editaban directamente en HTML. La empresa se reorganiza rápidamente con la incorporación de un nuevo socio y se marca como objetivo revolucionar el sector del coleccionismo y las subastas. Actualmente, Todocoleccion cuenta con una plantilla de 50 trabajadores en todo mundo y posee una infraestructura híbrida compuesta por servidores dedicados Bare Metal, soluciones Hosted Private Cloud y Public Cloud. A través de su sitio web y de su aplicación móvil, Todocoleccion permite a más de 10 millones de visitantes consultar 100 millones de páginas cada mes, lo que se traduce en una comercialización de más de 65 millones de euros al año, con un 80 % de las transacciones realizadas en España.
El desafío
Una infraestructura para transacciones B2B, B2C y C2C
Todocoleccion está formada por numerosas comunidades con intereses culturales muy concretos y especiales, pero también con tamaños totalmente diferentes. Para ofrecer a cada uno de estos grupos la seguridad y la visibilidad que necesitan para comerciar en internet, la empresa necesita contar una infraestructura de alta disponibilidad y muy fiable. Además, Todocoleccion dispone de un stack bastante complejo compuesto por múltiples herramientas open source. Uno de sus grandes retos es conseguir un «uptime» lo más cercano posible al 100 %.
La gran variedad de soluciones físicas y virtuales de OVHcloud nos hicieron decantarnos por la empresa gala para mejorar el rendimiento y la escalabilidad de nuestra infraestructura sin tener que preocuparnos por el mantenimiento de nuestros propios datacenters ni dilapidar una gran cantidad de recursos.
Joaquín Valdés, CEO de Todocolección
Redimensionamiento de una gran cantidad de imágenes
A día de hoy, la empresa cuenta con una base de datos de más de 200 millones de imágenes de productos tanto a la venta como vendidos, y cada una de estas imágenes puede visualizarse en diferentes resoluciones, tamaños y orientaciones, utilizando múltiples filtros. Estas imágenes ocupan 14 TB en el Object Storage, por lo que Todocoleccion necesita una herramienta de creación de viñetas de alta disponibilidad y a un coste controlado. Para satisfacer las necesidades de sus clientes, Todocoleccion siempre ha apostado por la rapidez y por un tiempo de latencia lo más bajo posible. El objetivo de la empresa es permitir que los usuarios puedan acceder a su sitio web con un tiempo de respuesta de las páginas por debajo de los 200 ms en la medida de lo posible, ya que la latencia óptima de un sitio web es de 100 ms.
Seguridad y conformidad
La escena de las startups en Málaga es muy variada, y OVHcloud siempre ha estado estrechamente ligada a este ecosistema, ya que ofrece soluciones escalables a un precio controlado que se adaptan perfectamente a las necesidades de las startups y los proyectos en fase de inicio. Además, Todocoleccion, con base en Europa y dedicada al comercio online, necesitaba un proveedor capaz de responder a las exigencias europeas en materia de seguridad y protección de los datos de sus usuarios.
Una de las razones, más cultural, es que OVHcloud es un proyecto europeo, con sede en Francia y numerosas filiales en todo el mundo, que genera empleo, riqueza y, sobre todo, cumple con todas las normas y leyes europeas en vigor.
Joaquín Valdés, CEO de Todocolección
Por lo tanto, para satisfacer sus necesidades en materia de escalabilidad, alta disponibilidad y seguridad, pero controlando el coste de su infraestructura, la empresa decidió migrar a OVHcloud.
¿Qué es un thumbnailer?
Un thumbnailer es una herramienta/programa que permite generar miniaturas (imágenes de vista previa con un tamaño de archivo reducido) para un sitio web. El buen uso de estas herramientas de miniaturización de imágenes permite, entre otros, reducir la latencia de un sitio web y optimizar la experiencia de los visitantes.
El usuario le da al thumbnailer un archivo y un tamaño de destino expresado en píxeles para que el programa cree una miniatura con estas características.
¿En qué se diferencian Kubernetes y Docker?
Kubernetes y Docker son dos tecnologías complementarias. Para entender esta complementariedad, en primer lugar debemos saber en qué consiste la contenerización, un método de compartimentación a nivel del sistema operativo (SO) que permite hacer funcionar entornos totalmente aislados unos de otros, pero que comparten el mismo «núcleo» de la máquina host.
Docker es una tecnología de contenerización: los archivos binarios, las librerías y, en general, todas las dependencias que una aplicación necesita para funcionar se colocan en una «caja», es decir, en un contenedor totalmente independiente del resto de contenedores que comparten el mismo «núcleo», pero también de la infraestructura subyacente. Estos contenedores pueden duplicarse hasta el infinito, por lo que su gestión puede complicarse rápidamente. Y aquí es donde interviene Kubernetes, un orquestador de contenedores que permite gestionar todo el ciclo de vida de los contenedores Docker desde su creación. Este servicio simplifica la creación y la duplicación de los contenedores Docker, así como su distribución en diferentes infraestructuras para, en última instancia, permitir una automatización simplificada de esta gestión. Gracias a la tecnología Kubernetes, los desarrolladores pueden centrarse en el código sin tener que preocuparse por las capas subyacentes ni por la gestión de las máquinas virtuales (MV).
La solución
Migrar la infraestructura a OVHcloud
En julio de 2019, Todocoleccion decidió migrar una parte de su infraestructura a OVHcloud con el objetivo de reducir sus costes, pero conservando una disponibilidad cercana al 100%, incluso durante la migración. La empresa eligió a OVHcloud como nuevo proveedor principalmente por la gran variedad de soluciones físicas y virtuales que permitían mejorar su rendimiento y la escalabilidad de su infraestructura sin tener que gestionar su datacenter «on-premises», ni dilapidar una gran cantidad de recursos. La complejidad de su stack requería una solución capaz de responder a sus exigencias técnicas y específicas, por lo que Todocoleccion optó por una solución de cloud híbrido con servidores dedicados Bare Metal, y soluciones Hosted Private Cloud y Public Cloud.
Además de controlar los costes, necesitábamos una alta disponibilidad, un buen tiempo de respuesta y sólidas medidas de seguridad que nos permitieran ofrecer nuestros servicios sin interrupciones y, en caso de producirse, contar con una rápida respuesta y resolución de incidencias.
Joaquín Valdés, CEO de Todocolección
Managed Kubernetes para su thumbnailer
Con más de 30 millones de lotes pendientes de almacenar y ser presentados, Todocoleccion necesitaba una infraestructura capaz de generar, almacenar y gestionar las miniaturas asociadas a los diferentes productos puestos en venta y en subastas de su sitio web. En octubre de 2020, la empresa decide poner en producción una herramienta de miniaturización de imágenes para la visualización de los lotes en su sitio web. Utiliza su cluster Managed Kubernetes para operar su thumbnailer y optimizar los recursos asociados a la creación de imágenes en miniatura de los numerosos lotes disponibles en línea, pero sin renunciar a un tiempo de latencia lo más bajo posible. La principal dificultad a la que tuvieron que enfrentarse los equipos de Todocoleccion fue su desconocimiento del mundo Docker, pero los miembros del equipo de IT se dieron cuenta rápidamente de que Managed Kubernetes era la solución perfecta para alojar su thumbnailer.
Aunque la implementación de este proyecto parecía bastante compleja a primera vista, hemos tenido la suerte de contar con el asesoramiento de Adrián, quien ha hecho un gran trabajo como evangelizador de OVHcloud y nos ha ayudado a utilizar nuestro cluster Kubernetes administrado.
¡El soporte que hemos recibido por parte del equipo de OVHcloud ha estado a la altura de nuestras expectativas!.Joaquín Valdés, CEO de Todocolección
Automatizar para aumentar la fiabilidad de la infraestructura
Todocoleccion también quería automatizar en la medida de lo posible el ciclo de vida del código desplegado en Kubernetes. Al automatizar la forma en la que se generan las imágenes Docker y su publicación en el Docker Registry, la empresa pudo minimizar los puntos en los que era necesaria una intervención manual durante el despliegue y, con ello, reducir los posibles puntos de fallo.
Esta herramienta de creación de miniaturas está compuesta por N pods que redimensionan y filtran las imágenes importadas en el sitio web de Todocoleccion.
El despliegue del thumbnailer en Kubernetes comprende entre 8 y 50 pods que se van creando y eliminando de acuerdo con una política de escalado horizontal (HPA) que añade pods automáticamente cuando la CPU alcanza el 80 % de su capacidad, y los elimina cuando la cuota de CPU está por debajo del 50 %. Cada pod ejecuta el código del thumbnailer, consistente en una aplicación NodeJS que se comunica con el Object Storage de OVHcloud y que, utilizando una librería en C, transforma la imagen original del producto para servirla como contenido estático a la CDN.
Por último, el uso de Kubernetes por parte de Todocoleccion facilita la gestión de un ciclo de vida de software bien definido. La empresa utiliza un pipeline CI/CD basado en GitLab que se encarga de testear el código JavaScript, compilarlo y generar una imagen Docker. Esta imagen se aplica a un cluster Managed Kubernetes para su publicación online. Además de este pipeline CI/CD para gestionar el ciclo de su código, Todocoleccion también despliega herramientas para la correcta monitorización de la aplicación directamente en su cluster Managed Kubernetes, con herramientas como Prometheus y Grafana. Gracias a estas métricas, Todocoleccion puede supervisar cada actualización del código del thumbnailer y asegurarse de que se realiza correctamente. En caso de fallo, el equipo de IT puede actuar con el despliegue de la aplicación de «staging» a producción. El thumbnailer de Todocoleccion sirve más de 46 millones de solicitudes de imágenes a más de 625 000 usuarios cada día. ¡Un ejemplo clásico de cómo utilizar un cluster Managed Kubernetes en pro de la escalabilidad!
El resultado
Tras la migración de su infraestructura a las instancias Public Cloud de OVHcloud en julio de 2019, Todocoleccion redujo en torno a 80 ms el tiempo de respuesta en su sitio web. La herramienta thumbnailer, en producción desde octubre de 2020, permite servir entre 120 y 250 solicitudes por segundo. En tiempos normales, el uso de los recursos es similar al de la implementación anterior. Sin embargo, ahora Todocoleccion puede redimensionar su cluster aumentando el número de nodos de trabajo en función de sus necesidades. De este modo, la empresa puede garantizar una disponibilidad continua, incluso en caso de gran afluencia, activando el autoescalado del pool de nodos de Kubernetes.
En resumen, OVHcloud nos permite conseguir los mismos o incluso mejores resultados que con nuestro anterior proveedor, pero pagando tan solo una fracción del precio.
Joaquín Valdés, CEO de Todocolección
Actualmente, Todocoleccion trabaja para desarrollar el uso de los dispositivos móviles, que ya suponen el 55 % del tráfico actual y de la facturación de la empresa, y seguir ampliando su presencia a escala internacional.