Casos de ÉxitoBlog
Hospitality y Retail

Plataforma POS Multi-Tenant: Build, Operate, Transfer

Una cadena de restauración española con más de 200 ubicaciones en 3 países necesitaba migrar de un POS monolítico legacy a una plataforma cloud-native multi-tenant — con cero interrupción operativa.

40%

Reducción Costes Cloud

200+

Ubicaciones Migradas

12

Meses Duración Total

Industria

Hospitality y Retail

Modelo

Build-Operate-Transfer

Duración

12 meses

Equipo

8 especialistas

Resultado Clave

200+ ubicaciones migradas

Contexto del Cliente

La Situación del Cliente

El cliente es un grupo de restauración de rápido crecimiento con sede en España, operando más de 200 ubicaciones en España, Portugal y Francia. Su sistema de Punto de Venta (POS) — la columna vertebral de las operaciones diarias — era una aplicación monolítica legacy construida internamente hace más de una década. Gestionaba la gestión de pedidos, pantalla de cocina, procesamiento de pagos, seguimiento de inventario y reporting básico para cada ubicación.

El monolito había alcanzado sus límites. Los costes de hosting cloud se disparaban porque el sistema no podía escalar eficientemente — los datos de cada ubicación residían en una única base de datos compartida, y las cargas de pico del servicio de cenas causaban latencia notable en todos los restaurantes. Añadir nuevas funcionalidades requería despliegues coordinados que afectaban a las más de 200 ubicaciones simultáneamente, con cualquier regresión impactando los ingresos en toda la cadena.

Una expansión de franquicias a nuevos mercados requería aislamiento de datos multi-tenant que la arquitectura existente simplemente no podía proporcionar. Los franquiciados necesitaban sus propios menús personalizables, precios, programas de fidelización y dashboards operativos — mientras que el equipo corporativo requería reporting consolidado y gestión centralizada de plantillas de menú.

El CTO del cliente quería que un equipo externo construyera la nueva plataforma, la estabilizara en producción y luego transfiriera las operaciones y el conocimiento a un equipo interno de ingeniería ampliado. El modelo Build-Operate-Transfer fue el requisito explícito desde el inicio, con hitos claros para cada fase.

Alcance y Enfoque

La Estructura del Engagement BOT

Envadel fue contratado bajo un contrato Build-Operate-Transfer completo de 12 meses con tres fases definidas: Build (meses 1-4) — arquitectura, desarrollo y despliegue de la nueva plataforma POS multi-tenant; Operate (meses 5-8) — operación de la plataforma en producción, migración incremental de ubicaciones, estabilización y optimización; Transfer (meses 9-12) — apoyo en contratación, formación, documentación y traspaso gradual al nuevo equipo interno del cliente.

El enfoque priorizó la migración incremental: la nueva plataforma se desplegó junto al sistema legacy, con ubicaciones migradas en oleadas de 20-30 restaurantes. Cada oleada incluía una fase piloto (2-3 ubicaciones durante 1 semana), validación y luego migración masiva. Una capa de sincronización de datos en tiempo real aseguraba que el reporting corporativo fuera preciso independientemente de qué plataforma estuviera ejecutando cada ubicación individual.

Cada fase BOT tenía criterios de salida explícitos y gates de aprobación ejecutiva. La fase Build requería pasar tests de aceptación para todos los módulos core (pedidos, pagos, inventario, reporting, multi-tenancy). La fase Operate requería más de 200 ubicaciones migradas con éxito con un uptime del 99,5%+. La fase Transfer requería arquitectura documentada, runbooks, procedimientos de guardia y un nuevo equipo interno operando de forma independiente durante 30 días.

Composición del Equipo

Composición Completa del Equipo BOT

El equipo de Envadel operó como una unidad autónoma con propiedad total del delivery. La composición del equipo evolucionó a lo largo de las fases: el equipo completo de ingeniería estuvo presente durante Build y Operate, con una reducción planificada durante Transfer a medida que los ingenieros del cliente asumían el control.

Tech Lead / Arquitecto (1) — Node.js, sistemas multi-tenant

Ing. Full-Stack Sr. (2) — TypeScript, React, PostgreSQL

Ing. Backend Sr. (1) — Event-driven, Redis, integraciones

Ing. DevOps / Plataforma (1) — Azure, Terraform, K8s

Ing. QA Automation (1) — Testing E2E, Cypress

Project Manager (1) — Delivery ágil, gestión de stakeholders

Consultor UX/UI (parcial) — Design system, interfaces POS

Especialista en Migración de Datos (1) — ETL, mapeo de datos legacy

Arquitectura y Tecnología

Arquitectura y Decisiones Técnicas

La nueva plataforma se construyó sobre Node.js con TypeScript para los servicios backend y React con TypeScript para el frontend (interfaz del terminal POS, pantalla de cocina, dashboard de gestión). PostgreSQL fue la base de datos principal, usando políticas de row-level security (RLS) y esquemas con alcance de tenant para aplicar el aislamiento de datos a nivel de base de datos — asegurando que ninguna consulta de un tenant pudiera acceder a los datos de otro, incluso en caso de bugs a nivel de aplicación.

Redis sirvió múltiples propósitos: gestión de sesiones para terminales POS, sincronización de cola de pedidos en tiempo real entre los sistemas POS y pantalla de cocina, y caché de configuraciones de menú y reglas de precios. Una arquitectura event-driven usando RabbitMQ gestionaba los flujos asíncronos: confirmaciones de procesamiento de pagos, actualizaciones de inventario y agregación de reporting entre ubicaciones. Cada ubicación mantenía un buffer local de eventos para resiliencia offline — si la conectividad se interrumpía, el POS continuaba operando y sincronizaba al reconectarse.

La infraestructura se ejecutó en Azure (proveedor cloud existente del cliente), completamente codificada con Terraform. AKS (Azure Kubernetes Service) alojaba la capa de aplicación con auto-scaling configurado por servicio. Azure Database for PostgreSQL proporcionó el tier de base de datos gestionada con backups automatizados, recuperación point-in-time y réplicas de lectura para la carga de reporting. Azure CDN sirvió el frontend React, y Azure Front Door proporcionó balanceo de carga global y protección WAF.

Las herramientas de migración se construyeron a medida: un pipeline ETL personalizado extraía datos de la base de datos MySQL legacy, los transformaba al nuevo esquema multi-tenant (añadiendo tenant IDs, normalizando estructuras de menú, mapeando referencias de pago legacy) y los cargaba en PostgreSQL. La migración de cada ubicación era atómica y reversible — si alguna verificación de validación fallaba, la ubicación se revertía automáticamente al sistema legacy sin pérdida de datos.

Node.jsTypeScriptReactPostgreSQLRedisDockerKubernetesAzureTerraformRabbitMQNginxCypress

Seguridad y Cumplimiento

Seguridad y Cumplimiento de Pagos

El procesamiento de pagos se gestionó a través de pasarelas de pago certificadas PCI-DSS de terceros (Adyen, Redsys). La plataforma POS nunca almacenó datos de tarjeta — se usaron referencias tokenizadas para todos los flujos de pago. El cumplimiento PCI-DSS se mantuvo mediante segmentación de red, comunicaciones cifradas y evaluaciones regulares de vulnerabilidades de la capa de integración de pagos.

El aislamiento de datos multi-tenant se aplicó en tres niveles: middleware de aplicación (inyección de contexto de tenant), base de datos (PostgreSQL RLS) e infraestructura (políticas de red a nivel de namespace en Kubernetes). Un test de penetración realizado por una firma independiente validó que no era posible ninguna filtración de datos entre tenants a través de ningún vector de ataque probado.

El cumplimiento GDPR fue crítico dada la operación transfronteriza (España, Portugal, Francia). Los datos de clientes (programas de fidelización, historial de pedidos) se almacenaron con gestión explícita de consentimiento, las políticas de retención de datos eran configurables por jurisdicción, y se construyó una API de "derecho de supresión" en la plataforma desde el día uno. Todo el procesamiento de datos se documentó en un registro de datos conforme al GDPR compartido con el DPO del cliente.

Proceso de Delivery

Delivery por Fases y Gobernanza

La fase Build (meses 1-4) siguió sprints de 2 semanas con sesiones de demo cada sprint al CTO y director de operaciones del cliente. El primer despliegue en producción (piloto con 3 ubicaciones) ocurrió al final del mes 3, proporcionando feedback temprano del mundo real que dio forma al trabajo de build restante. Decisiones clave — como añadir capacidades de resiliencia offline — surgieron de este feedback del piloto.

La fase Operate (meses 5-8) cambió a una pista dual: desarrollo continuo de funcionalidades en sprints más un workstream dedicado de migración. Las ubicaciones se migraron en oleadas de 20-30, con cada oleada tomando aproximadamente 2 semanas (piloto → validar → migración masiva). Se estableció un war room durante los fines de semana de migración con equipos de operaciones de Envadel y del cliente presentes para resolución de incidencias en tiempo real.

La fase Transfer (meses 9-12) se estructuró en torno a la transferencia de conocimiento y construcción del equipo. El equipo de Envadel realizó más de 40 horas de sesiones de formación grabadas cubriendo decisiones de arquitectura, runbooks operativos, procedimientos de despliegue y guías de troubleshooting. El cliente contrató a 4 nuevos ingenieros durante esta fase, cada uno emparejado con un ingeniero de Envadel para transferencia de conocimiento práctica.

El reporting ejecutivo siguió la misma cadencia durante todo el proceso: estado semanal, resumen ejecutivo mensual y revisiones de phase-gate en cada transición (Build→Operate, Operate→Transfer). La Transfer se completó formalmente cuando el equipo del cliente operó de forma independiente durante 30 días consecutivos con métricas que cumplían los umbrales de SLA acordados.

Resultados e Impacto

Resultados Medibles

40%

Reducción en costes de infraestructura cloud vs. sistema legacy

3x

Ciclo de despliegue de funcionalidades más rápido (de 6 a 2 semanas)

200+

Ubicaciones migradas sin incidentes que impactaran ingresos

10 meses

Transfer completada (2 meses antes de la estimación inicial)

99,8%

Uptime de la plataforma en todas las ubicaciones post-migración

40+ hrs

Material de formación grabado entregado durante la fase de transfer

Lecciones Aprendidas

Insights Clave de Este Engagement

1

El modelo Build-Operate-Transfer funciona mejor con criterios de salida explícitos y medibles para cada fase. Definir "cómo se ve terminado" por adelantado — incluyendo umbrales de uptime, objetivos de finalización de migración y períodos de operación independiente — evitó ambigüedades y aseguró transiciones fluidas.

2

La estrategia de migración pilot-first fue esencial para un rollout de más de 200 ubicaciones. El piloto de 3 ubicaciones en el mes 3 reveló requisitos operativos (resiliencia offline, tolerancia de latencia de pantalla de cocina) que habrían sido costosos de incorporar posteriormente. La exposición temprana a producción des-riesgó toda la migración.

3

PostgreSQL row-level security resultó ser la elección correcta para aislamiento de datos multi-tenant en este contexto. Proporcionó defense-in-depth a nivel de base de datos sin la complejidad operativa de schema-per-tenant, mientras satisfacía los requisitos de auditoría de seguridad independiente para el aislamiento de datos de franquicias.

4

La transferencia de conocimiento no es un ejercicio de documentación — es un proceso de mentoring. El mecanismo de transfer más efectivo fue emparejar a los nuevos ingenieros del cliente con miembros del equipo de Envadel en tareas e incidentes reales de producción, no simplemente entregar documentación escrita.

Hablemos de un Desafío Similar

Agenda una discovery call confidencial para explorar cómo podemos entregar resultados medibles para tu organización.

Agendar Llamada