Saltar a contenido

Typesense como alternativa a Algolia: costo de migrar después de lanzar

Evaluación de la pregunta concreta: lanzar ahora con Algolia y migrar a Typesense más adelante, medida en tres ejes —trabajo, reversibilidad y costo— sobre el acoplamiento real del repositorio al 21/08/2026.

Alcance. Las cifras de superficie salen de medir el código. Las de costo son un modelo, no una cotización: dependen del volumen de búsquedas y de la factura real, ninguno de los dos disponible en los repositorios. Están marcadas como tales.

Respuesta corta

Lanzar con Algolia. La búsqueda no está en el camino crítico del lanzamiento —lo están las nueve funcionalidades de backend sin validar y el 61 % del catálogo sin shipping profile— y sustituir el motor hoy inserta entre tres y cinco semanas de trabajo en una ruta que ya tiene bloqueos mayores.

La migración posterior es viable y su costo no crece solo con el tiempo, sino con cinco anclas concretas que sí se pueden contener desde ahora con uno a tres días de trabajo. Sin esa contención, el costo de migrar se duplica en pocos meses; con ella, se mantiene estable.

Superficie acoplada a Algolia, medida

Capa Archivos Líneas del archivo Qué contiene
Consultas de servidor 1 (lib/algolia-products.ts) 953 11 funciones exportadas, sintaxis filters de Algolia, índices réplica
Interfaz de búsqueda (InstantSearch) 4 importan react-instantsearch 763 + 432 + 289 + 131 9 hooks distintos, facetas, rango de precio, scroll infinito
Autocompletado 2 (SearchBar, SearchModal) 489 + 85 @algolia/autocomplete-js con tres fuentes
Clientes 3 instancias 9 + 9 + inline Una de ellas (lib/algolia.ts) sin ninguna importación
Vocabulario y datos del CMS 5 archivos de esquema — Etiquetas «Colección de Algolia», «Query JSON de Algolia»; filterValue que guarda nombres de índice réplica
Alimentación del índice 0 archivos — No existe en ninguno de los tres repositorios

25 archivos tocan Algolia (5.983 líneas), pero solo 151 líneas nombran al proveedor. El acoplamiento es superficial en veintitrés archivos y profundo en dos.

flowchart TB
    subgraph SUP[Superficie acoplada]
        A[lib/algolia-products.ts<br/>953 líneas · servidor]
        B[InstantSearch<br/>4 archivos · 9 hooks]
        C[SearchBar · autocomplete<br/>489 líneas]
        D[CMS · filterType · filterValue<br/>filterQuery]
    end
    E[(Índice de Algolia)]
    F[[Alimentación del índice<br/>fuera de los repositorios]]
    A --> E
    B --> E
    C --> E
    D -.descriptores.-> A
    F --> E
    style F fill:#fff7ed,stroke:#c2410c

Qué sobrevive y qué se reescribe

Pieza Destino con Typesense Veredicto
Hooks y widgets de InstantSearch typesense-instantsearch-adapter traduce el protocolo Sobrevive — cambia el cliente, no los componentes
@algolia/autocomplete-js Biblioteca de interfaz agnóstica del proveedor Sobrevive — se reescriben las tres fuentes de datos
lib/algolia-products.ts filter_by, facet_by, sort_by, query_by Reescritura completa
Índices réplica para colecciones y orden sort_by explícito en la consulta Reescritura, más simple que el original
Índice de sugerencias Colección de sugerencias más reglas de analítica de Typesense Reimplementación
Atributos buscables, ranking y sinónimos Esquema de la colección y configuración de Typesense Reimplementación — hoy vive en el panel de Algolia, no en el repositorio
Alimentación del índice Escritura contra la API de Typesense Reimplementación por un tercero — no está en estos repositorios
Descriptores del CMS con nombre de réplica o JSON de Algolia Valores neutrales Migración de datos, coordinada con contenido cargado

Dos observaciones que reducen el trabajo real frente al aparente:

  • searchPaginated() recibe el criterio de orden como _sortBy y no lo usa: el ordenamiento del lado del servidor no está entregado hoy, de modo que no hay comportamiento que replicar.
  • lib/algolia.ts y la plantilla algolia-store-template son código muerto: no los importa ningún módulo.

Trabajo estimado

Estimación por analogía con el tamaño y la naturaleza de cada archivo. Excluye la alimentación del índice cuando la ejecute un tercero.

Tarea Días-persona
Adaptador de InstantSearch y consolidación de clientes 1 – 2
Reescritura de las 11 funciones de consulta de servidor 3 – 5
Fuentes del autocompletado y modal de búsqueda 1 – 2
Esquema de la colección, atributos buscables, ranking y sinónimos 1 – 2
Sugerencias de búsqueda sobre analítica de Typesense 1 – 2
Infraestructura: contenedor, respaldos, monitoreo, staging y producción 2 – 4
Migración de descriptores del CMS y ajuste de vocabulario 1 – 2
Pruebas de regresión de búsqueda, facetas y grillas de contenido 2 – 3
Total sin la alimentación del índice 12 – 22
Alimentación del índice, si la asume el equipo propio +3 – 10

Del orden de tres a cinco semanas persona. La cifra es prácticamente la misma hoy que dentro de seis meses: lo que cambia con el tiempo no es el código, son las anclas.

Reversibilidad: las cinco anclas

Ancla Estado hoy Cómo crece Contención (costo bajo, ahora)
Alimentación del índice Un solo destino, mantenido por un equipo externo Migrar después obliga al integrador a hacer el trabajo dos veces Documentar el esquema del documento indexado como contrato del feed, independiente del motor
Configuración en el panel Desconocida; no está versionada Cada sinónimo, regla de merchandising o réplica que cree el equipo comercial es trabajo invisible a rehacer Prohibir configuración solo-en-panel: versionarla como archivo aplicado por script
Datos del CMS con sintaxis del proveedor filterQuery (JSON de Algolia) y filterValue con nombres de réplica Cada fila que cargan los editores suma migración de datos Neutralizar etiquetas y valores; unificar filterType — ya pendiente en el RF-005 del CMS
Analítica e historial de búsqueda Sin uso comprobado Las sugerencias derivadas de analítica no son portables: migrar las reinicia Asumirlo, o mantener las sugerencias como dato propio
Funciones propietarias Ninguna en uso: sin Recommend, sin personalización, sin pruebas A/B Adoptar cualquiera de ellas cierra la puerta No adoptarlas mientras la decisión esté abierta

La reversibilidad hoy es alta: no hay ninguna función propietaria en uso, el servidor concentra todas las consultas en un solo archivo y la interfaz depende de un protocolo que Typesense sabe hablar por adaptador. La cuarta y la quinta ancla son las únicas irreversibles, y ninguna está activa.

Costo

Estructura, no cifras

Algolia Typesense
Modelo Servicio administrado, cobro por operación de búsqueda y por registros indexados Software libre autoalojado, o servicio administrado por hora de cómputo
Qué escala el costo El tráfico La memoria del índice, no el tráfico
Costo de infraestructura propia Ninguno Un contenedor con memoria suficiente para el índice completo
Costo de operación Ninguno Respaldos, monitoreo, actualizaciones y disponibilidad
Piso Plan gratuito acotado, suficiente para desarrollo Cercano a cero si entra en un servidor existente

Lo que dispara el consumo en este storefront

Tres decisiones de implementación multiplican las operaciones de búsqueda, y conviene tenerlas presentes antes de leer cualquier factura:

  1. La portada consulta el índice. Cada bloque de cuadrícula de la home resuelve contra Algolia en el servidor, sin caché propia: una visita a la portada equivale a tantas operaciones como grillas tenga.
  2. La tienda es dinámica (force-dynamic) y usa InstantSearch: cada tecla y cada refinamiento de faceta es una operación.
  3. El autocompletado consulta dos índices por tecla —sugerencias y productos—, de modo que una sola sesión de búsqueda genera decenas de operaciones.

Con ese patrón, el consumo mensual se cuenta en cientos de miles de operaciones incluso con tráfico moderado. El costo de Typesense, en cambio, es indiferente a ese volumen: el catálogo publicado —del orden de 2.600 productos— entra holgadamente en el nodo más chico.

Consecuencia práctica

  • A tráfico bajo, ambas opciones son baratas y Algolia además ahorra operación.
  • A tráfico real de retail, Algolia es varias veces más caro en dinero y Typesense varias veces más caro en horas. El punto de cruce depende de cuánto valga una hora del equipo frente al precio por mil operaciones.
  • La decisión de costo, por lo tanto, no se puede cerrar sin dos datos que no están en el repositorio: el volumen de operaciones del último mes y la factura vigente.

Riesgos de cada camino

Camino Riesgo principal
Lanzar con Algolia y migrar después Que las anclas crezcan sin control —sobre todo configuración en el panel y datos del CMS— y que la migración pase de tres semanas a dos meses
Migrar antes de lanzar Sumar tres a cinco semanas a un lanzamiento cuyo camino crítico es otro, y estrenar simultáneamente motor de búsqueda y tienda, sin línea de base contra la cual comparar
Quedarse en Algolia Costo proporcional al tráfico, y dependencia de un proveedor para una función que hoy resuelve también la portada

Recomendación

Lanzar con Algolia, y aplicar ahora las medidas de contención —entre uno y tres días de trabajo— que mantienen la migración en su costo actual:

  1. Encapsular las consultas detrás de una interfaz propia, sin vocabulario del proveedor en las firmas; eliminar el cliente y la plantilla muertos.
  2. Versionar toda la configuración del motor; ninguna definición que exista únicamente en el panel.
  3. Reemplazar el uso de índices réplica por orden explícito —que además hoy no está entregado.
  4. Neutralizar el vocabulario y los valores del CMS: sin JSON del proveedor y sin nombres de índice en el contenido.
  5. No adoptar funciones propietarias mientras la decisión permanezca abierta.
  6. Documentar el esquema del documento indexado como contrato del feed, para que el integrador pueda apuntar a cualquiera de los dos motores.

Con esas seis medidas, la migración queda como una tarea acotada de tres a cinco semanas, ejecutable cuando aparezca el disparador: que la factura supere el costo de operar el motor propio, o que el equipo comercial requiera merchandising sobre los resultados.

Pendiente de confirmar

Ninguno de estos datos está en los repositorios; todos cambian la conclusión de costo:

  1. Quién alimenta el índice, con qué herramienta y con qué frecuencia.
  2. Volumen de operaciones de búsqueda del último mes y plan contratado.
  3. Qué hay configurado en el panel de Algolia: réplicas, sinónimos, reglas, atributos buscables.
  4. Cuántas filas de contenido usan filterQuery o nombres de índice réplica en filterValue.
  5. Tolerancia a indisponibilidad del buscador, que define si Typesense necesita alta disponibilidad —tres nodos— o alcanza con uno.

Hallazgo colateral

scripts/populate-suggestions.js contiene la clave de administración de Algolia y el identificador de aplicación escritos en el código, versionados en el repositorio. Es independiente de esta decisión y conviene rotar la credencial y moverla a variable de entorno, tanto si se migra como si no.