Enterprise Search
Minorista

MercadoLibre: Impulsando el principal mercado en línea de América Latina

RESUMEN

  • 4
    millones de vendedores
  • 20
    millones de productos
  • 100
    tiempos de respuesta de búsqueda en milisegundos

El desafío

¿Cómo proporcionar a millones de vendedores en un mercado en línea acceso rápido y confiable a toda la información de sus productos?

La solución

Usando Elasticsearch para garantizar una búsqueda rápida con disponibilidad las 24 horas, los 7 días de la semana

Lo destacado de este caso de estudio

Impulsar el comercio electrónico

  • Permitir que los vendedores accedan a los datos críticos del producto
  • Optimizar la administración del producto
  • Ofrecer disponibilidad las 24 horas, los 7 días de la semana

Asegurar la escalabilidad

  • Prestar servicio a 4 millones de vendedores
  • Manejar un crecimiento de 12 millones a 20 millones de listados de productos
  • Agregar servidores en segundos según sea necesario

El principal mercado en línea de América Latina

Con base en Argentina, MercadoLibre es el mercado en línea más grande de América Latina, socio de ventas latinoamericano de eBay, y opera de forma similar a este acercando a millones de compradores y vendedores. La empresa tiene 4 millones de vendedores activos con 20 millones de productos en tiempo real.

"Antes de usar Elasticsearch, usábamos la base de datos Redis", explica Federico Ocampo, el líder de proyecto en MercadoLibre. "Pero Redis no está diseñado para ser un motor de búsqueda. Teníamos que reindexar todos nuestros datos cada vez que queríamos agregar un atributo nuevo. Redis no escalaba y no proporcionaba la alta disponibilidad que necesitábamos".

Desarrollamos nuestras API de búsqueda rápida y fácilmente con Elasticsearch.

– Silvina Lucero, Ingeniera sénior de software, MercadoLibre

Reforzando la experiencia de millones de vendedores

Hoy en día, MercadoLibre usa Elasticsearch para la sección de "Mi cuenta" del sitio, en donde los vendedores administran sus productos para la venta. Cuando los vendedores ingresan al sistema, pueden ver una lista de cada producto que están vendiendo (llamada "Mis artículos"), la cual se llena y se puede buscar a través de Elasticsearch. El vendedor puede editar atributos, verificar las cantidades y cambiar precios desde esa lista.

A veces, puede buscar a través de miles de artículos. Un usuario típico de MercadoLibre puede vender unos cuantos miles de productos, pero algunos de ellos llegan hasta los 50 000 artículos. Elasticsearch permite que los vendedores puedan encontrar productos a través de filtros basados en una variedad de parámetros, como tipo de producto, precio, cantidad o fecha en la que se publicó.

"La sección de Mi cuenta del sistema es fundamental", dice Ocampo. "Sin la capacidad de buscar a través de los artículos, los vendedores no podrían ver sus productos, agregar productos nuevos, hacer cambios a las descripciones y ajustar los precios; los vendedores no podrían vender. Todo el sistema quedaría paralizado si no tuviéramos una forma fácil para que puedan buscar y administrar sus artículos".

Para un usuario que vende miles de productos, la búsqueda evidentemente es esencial. Pero incluso el usuario que solo vende algunos artículos también depende de Elasticsearch para administrar esos productos. Elasticsearch no solo permite que los vendedores administren miles de productos, sino que también ayuda a que millones de usuarios gestionen sus negocios sin importar el número de listados de productos. Los ingresos de la empresa dependen directamente de la habilidad del vendedor para administrar los productos que vende, y Elasticsearch lo hace posible.

Todos los front-ends de MercadoLibre requieren las API en el backend. Las API están disponibles para cualquiera que desee crear una aplicación basada en MercadoLibre. Estas pueden usarse para muchos propósitos diferentes, tanto internos como externos. Como Elasticsearch funcionó tan bien, MercadoLibre comenzó a usarlo de otras formas a través de las API. Primero, implementaron una API sobre Elasticsearch para ayudar a que los usuarios busquen preguntas hechas por compradores y respuestas de los vendedores, el método clave de comunicación entre compradores y vendedores antes de la venta. Entonces, crearon una segunda API que ayudaba a que los usuarios busquen los pedidos.

"Desarrollamos nuestras API de búsqueda rápida y fácil con Elasticsearch", dice Silvina Lucero, ingeniera de software sénior en MercadoLibre. " Estos eran dos proyectos nuevos con requisitos muy diferentes, y Elasticsearch se adaptó bien a ambos".

Elasticsearch entrega un rendimiento de búsqueda en tiempo real

"La búsqueda en tiempo real es importante para nosotros, ya que tan pronto como el vendedor publica un artículo nuevo, quiere que aparezca en la lista", explica Ocampo. "Así que necesitamos que ese proceso sea tan rápido como sea posible. Con Elasticsearch, los artículos pueden buscarse 1 o 2 segundos después de que se publican".

El rendimiento de la respuesta de búsqueda también es importante para MercadoLibre. La búsqueda de Mi cuenta recibe 6000 solicitudes por minuto, mientras las otras funciones reciben hasta 2000 solicitudes por minuto, y todos los resultados deben devolverse rápidamente, porque los usuarios de comercio electrónico tienen poca tolerancia para los problemas de rendimiento.

Una característica de Elasticsearch llamada "Asiganción personalizada" permite que MercadoLibre asignar los datos de usuarios a un único shard. En un funcionamiento normal, las búsquedas en Elasticsearch se transmiten a todos los shards en el índice. Los índices de usuarios múltiples suelen contener muchos shards para admitir el crecimiento futuro, pero esto puede impactar en la latencia de la búsqueda debido a la sobrecarga que se produce al buscar muchísimos shards simultáneamente.

Con Elasticsearch, los artículos pueden buscarse 1 o 2 segundos después de que se publican.

– Federico Ocampo, Líder de proyecto, MercadoLibre

Al permitir la asignación personalizada, los documentos de los clientes se colocan automáticamente en un único shard. Ahora, Elasticsearch puede buscar un solo shard en lugar de hacer transmisiones. Este enfoque limita la solicitud de búsqueda a un solo servidor, reduce la sobrecarga de llevar a cabo búsquedas y produce respuestas de búsqueda instantáneas. La asignación/enrutamiento personalizado permite la escalabilidad de usuarios múltiples con un gran número de shards sin sacrificar la latencia de la búsqueda.

"En un principio, para buscar pedidos usábamos MongoDB", recuerda Waisgold. "Pero las agragaciones y otras características de búsqueda no funcionaban muy bien.

Cuando migramos a Elasticsearch, la búsqueda de pedidos comenzó a funcionar muy bien, especialmente para los vendedores grandes. Anteriormente, teníamos un tiempo de respuesta de 2 segundos para los vendedores más grandes, y con Elasticsearch se redujo a 100 milisegundos".

Elasticsearch ofrece la posibilidad de agregar o quitar un servidor nuevo en 1 segundo. Tenemos más y más datos cada mes, y necesitamos agregar servidores nuevos, y Elasticsearch es genial para eso.

– Federico Ocampo, Líder de proyecto, MercadoLibre

La confiabilidad de escalabilidad y el mantenimiento bajo equivalen a una productividad alta

"Como trabajamos en muchos países diferentes, con diferentes husos horarios, tenemos que estar disponibles las 24 horas, los 7 días de la semana", indica Ocampo. "Para MercadoLibre, la confiabilidad es fundamental. No podemos dejar que el sistema se caiga si un servidor colapsa. Si un servidor se cae, los vendedores no podrán vender, y ese es un problema de verdad. Así que necesitamos estar seguros de que tenemos una disponibilidad alta".

"Elasticsearch ofrece réplicas, y réplicas dinámicas que nos ayudan a aumentar o disminuir la cantidad de réplicas en el tiempo de ejecución", continúa. "Hemos encontrado un equilibrio entre la disponibilidad alta y el rendimiento, y la cantidad de servidores ideales para nosotros".

La disponibilidad era un problema en el pasado, cuando MercadoLibre usaba Redis. Cada vez que tenían que reindexar o agregar un servidor nuevo, pasaban un día con el sistema de Mi cuenta caído. Elasticsearch reindexa en tiempo real continuamente, por lo que ahora el sistema nunca se cae.

"Antes, teníamos que gastar varias horas a la semana del tiempo del desarrollador en el mantenimiento del sistema», agrega Ocampo". " Con Elasticsearch, no necesitamos hacer eso. No necesita ningún tipo de mantenimiento, y estamos muy seguros de que funciona bien. Elasticsearch cumple en el ahorro de horas y de dinero».

Hace 2 años, MercadoLibre hospedaba 12 millones de listados activos. Hoy, tiene 20 millones. Entonces, el crecimiento es significativo, y la escalabilidad es fundamental.

"Antes de Elasticsearch, agregar un servidor nuevo requería reindexar toda la base de datos, lo que causaba un tiempo de inactividad enorme", concluye Ocampo.

"No era una opción. Elasticsearch ofrece la posibilidad de agregar o quitar un servidor nuevo en 1 segundo. Tenemos más y más datos cada mes y necesitamos agregar servidores nuevos, y Elasticsearch es genial para eso".


Productos usados

Los beneficios de MercadoLibre al usar Elasticsearch

  • Aumento en los ingresos

    Las poderosas capacidades de búsqueda y el tiempo de respuesta rápido de Elasticsearch permiten que los vendedores puedan llevar a cabo negocios, lo que impacta directamente en la capacidad de MercadoLibre de generar ingresos.

  • Disponibilidad confiable

    Como no hay necesidad de deshabilitar el sistema para la reindexación (por ejemplo, debido a la administración de datos, o al agregar servidores nuevos), Elasticsearch asegura un tiempo de actividad las 24 horas, los 7 días de la semana, en la arena competitiva de comercio electrónico.

  • Escalabilidad simple

    Con Elasticsearch, MercadoLibre puede agregar servidores nuevos en segundos, según sea necesario, para administrar el crecimiento de los usuarios y los listados de productos por millones.

  • Mayor productividad en equipo

    Elasticsearch no requiere ningún tipo de mantenimiento y fomenta el desarrollo optimizado, lo que mejora la productividad en equipo y le ahorra tiempo y dinero a MercadoLibre.