Industria Hospitalidad
Cliente Arenas del Mar Resort (Costa Rica)
Año 2023
Stack Laravel · Livewire · Stripe

Reconstruir el stack de reservas de un resort 5 estrellas — sin sacarlo de línea

El motor de reservas legacy de Arenas del Mar les costaba comisiones de OTA sobre clientes directos. Lo reemplazamos bajo tráfico en vivo, con cero downtime durante el cutover. Las reservas directas crecieron 52% interanual.

+52%
Reservas directas interanual
Reconstruir el stack de reservas de un resort 5 estrellas — sin sacarlo de línea

El desafío

Un motor de reservas envejecido en Vue 2 + Laravel 7. Los pagos con Stripe funcionaban, pero el flujo de reserva perdía sesiones en móvil, el dashboard del staff requería VPN para acceder, y el resort pagaba 15% de comisión de OTA sobre clientes que habían tecleado `arenasdelmar.com` directamente en su navegador. Seis meses para temporada alta.

Nuestra solución

Reconstruir el flujo público de reservas en Livewire 4 por la velocidad (sin tiempo de arranque de SPA), mantener el core de Laravel, reemplazar el admin legacy con Filament, y enrutar cada ruta pública a través de Cloudflare Workers para A/B testear el flujo nuevo contra el viejo sin tocar el código de origen. El cutover fue un cambio de 12 líneas en la config del worker a las 4am de un martes.

Los resultados

Reservas directas 52% arriba interanual, seis meses post-migración. El abandono de carrito bajó de 38% a 24% en móvil. El resort mantuvo abiertos los canales de OTA, pero su participación en las reservas cayó de 71% a 49%. Cero downtime durante el cutover.

El cutover

La parte difícil de migrar un motor de reservas no es el motor nuevo — es el cutover. Preparamos la reconstrucción durante 12 semanas, con el motor nuevo respondiendo al 5% del tráfico vía una regla de ruta de Cloudflare Worker durante las últimas 3 semanas antes del lanzamiento. Para cuando movimos la regla al 100% a las 4am de un martes, teníamos:

  • 3 semanas de tráfico real de producción en el motor nuevo
  • 14.000+ reservas de prueba exitosas (algunas reales, algunas QA shadow)
  • Un plan de rollback que era un cambio de 12 líneas en la config del worker

El “lanzamiento” fue un no-evento. El equipo miró dashboards por 2 horas, no vio anomalías, y se volvió a dormir.

Qué le advertiríamos al siguiente cliente

No subestimes la integración de email. Los correos de confirmación de reserva son el asesino silencioso de estas migraciones — el resort tenía 22 plantillas de email distintas entre confirmación, modificación, cancelación y solicitudes de dieta, todas renderizadas desde un motor de plantillas legacy que nadie entendía. Portar eso tomó más tiempo que el flujo de reservas en sí. Presupuestá 30% del proyecto para eso.

“Pensábamos que una reconstrucción significaba seis semanas de 'perdón, intentá de nuevo.' Tuvimos cero downtime visible al cliente y un aumento medible en reservas directas en menos de tres meses.”
Roberto Sandoval Gerente General, Arenas del Mar
§ — Sé el próximo

¿Listo para ser
el próximo caso?