Documentación legal
SLA y Recuperación ante Desastres
suba — Service Level Agreement & DRP · Última actualización: Marzo 2026
6. Acuerdo de Nivel de Servicio (SLA)
Aplicable a planes de pago (Básico, Profesional, Premium)
6.1 Disponibilidad (Uptime)
suba se compromete a mantener una disponibilidad del servicio de:
| Plan | Uptime Garantizado | Crédito por incumplimiento |
|---|---|---|
| Básico | 99.5% mensual | 5% del mes facturado por cada 0.5% por debajo |
| Profesional | 99.9% mensual | 10% del mes facturado por cada hora de caída adicional |
| Premium | 99.9% mensual + soporte prioritario | 15% del mes facturado por cada hora de caída adicional |
Cálculo de disponibilidad:Uptime % = ((Total minutos del mes - Minutos de inactividad no planificada) / Total minutos del mes) × 100
El SLA NO aplica para:
- Mantenimiento programado (notificado con ≥24h de antelación)
- Interrupciones causadas por el usuario (uso indebido, exceso de carga intencional)
- Causas de fuerza mayor (desastres naturales, cortes masivos de infraestructura de terceros)
- Ataques DDoS activos fuera del rango de mitigación contratado
6.2 Tiempos de Respuesta de Soporte
| Plan | Canal | Tiempo de primera respuesta |
|---|---|---|
| Gratis | Documentación | Sin SLA |
| Básico | 48 horas hábiles | |
| Profesional | 24 horas hábiles | |
| Premium | Chat + Email | 4 horas hábiles |
6.3 Ventanas de Mantenimiento
- Mantenimiento planificado: Domingos entre 02:00 y 06:00 hora Perú (UTC-5)
- Notificación mínima: 24 horas antes por email y notificación in-app
- El mantenimiento planificado no cuenta como tiempo de inactividad para el cálculo de SLA
6.4 Monitoreo
El estado del servicio y el historial de incidentes se publican en status.suba.app. Internamente el sistema usa:
- Prometheus para métricas en tiempo real
- Grafana para dashboards de infraestructura
- Alertas automáticas vía Prometheus Alertmanager
- Endpoint
/healthcon estado de MongoDB y Redis en tiempo real
6.5 Solicitud de Créditos por SLA
Para solicitar créditos por incumplimiento del SLA:
- Enviar email a [email protected] dentro de los 7 días posteriores al incidente
- Incluir: fecha/hora del incidente y evidencia del impacto
- suba verificará contra los logs internos y responderá en ≤5 días hábiles
- Los créditos se aplican al siguiente período de facturación (no se emiten reembolsos en efectivo)
7. Plan de Recuperación ante Desastres (DRP)
Documento público — Versión 1.0 — Marzo 2026
7.1 Objetivos
RTO
4 horas
Recovery Time Objective — tiempo máximo hasta restaurar el servicio
RPO
24 horas
Recovery Point Objective — máxima pérdida de datos aceptable
7.2 Estrategia de Backups
Base de Datos MongoDB
- Backup completo: diario, generado a las 03:00 hora Perú (UTC-5)
- Retención: 30 días de backups diarios
- Almacenamiento en ubicación geográficamente separada del servidor principal
- Verificación de integridad: hash SHA-256 de cada backup
- Restauración probada mensualmente en entorno de staging
Redis (caché y sesiones)
- Redis Persistence (AOF + RDB snapshot) habilitado
- Snapshots cada 15 minutos en producción
- Los datos de Redis son recuperables desde la última snapshot; las sesiones activas se recrean al reconectar
Archivos de uploads (imágenes)
- Sincronización a almacenamiento secundario: diaria
- Retención: 90 días de versiones
7.3 Procedimiento de Recuperación ante Fallo Crítico
0–15 min
Detección
- Alertas automáticas de Prometheus/Alertmanager notifican al equipo técnico
- Verificación del estado en dashboards de Grafana
- Comunicación pública en página de estado
15–60 min
Diagnóstico
- Identificación del componente afectado: MongoDB, Redis, servidor Node.js, red
- Evaluación del impacto y decisión de recuperación
1–4 horas
Recuperación
- Si es fallo de servidor: activar instancia de standby/failover
- Si es corrupción de datos: restaurar desde último backup verificado
- Si es fallo de Redis: reiniciar con persistencia AOF; las sesiones se recrean desde MongoDB
Post-recuperación
Verificación
- Pruebas de smoke test en todos los módulos críticos
- Confirmación de integridad de datos con hash comparison
- Comunicación de resolución en página de estado
48h post-incidente
Post-Mortem
- Análisis de causa raíz
- Implementación de medidas preventivas
- Actualización de este DRP si corresponde
7.4 Graceful Shutdown
El servidor implementa manejo de señales SIGTERM y SIGINT para:
- Dejar de aceptar nuevas conexiones
- Completar las peticiones HTTP en curso
- Cerrar conexiones a MongoDB y Redis de forma limpia
- Registrar el cierre en los logs
7.5 Notificación a Usuarios
- Incidentes que afecten disponibilidad por más de 15 minutos: notificación en página de estado y email a usuarios afectados
- Incidentes de seguridad que involucren datos de usuarios: notificación dentro de 72 horas conforme a normativa aplicable
8. Portabilidad de Datos
Todo usuario tiene derecho a exportar sus datos en cualquier momento, sin costo adicional.
8.1 Datos Exportables
| Módulo | Formatos | Plan requerido |
|---|---|---|
| Catálogo de productos | CSV, JSON | Profesional+ |
| Historial de ventas | CSV, JSON | Profesional+ |
| Registro de clientes | CSV, JSON | Profesional+ |
| Historial de gastos | CSV, JSON | Profesional+ |
| Lotes y vencimiento | CSV, JSON | Profesional+ |
| Proveedores | CSV, JSON | Profesional+ |
| Logs de auditoría | JSON | Premium |
| Reporte completo del negocio | PDF, JSON | Profesional+ |
8.2 Cómo Exportar
Desde la app Android
- Ir a Reportes → botón Exportar
- Seleccionar rango de fechas y módulos a exportar
- Elegir formato (CSV o JSON)
- Descargar o compartir el archivo
Desde el panel web
- Ir a Reportes → Exportar datos
- Seleccionar período y tipo de datos
- Descargar archivo
8.3 Eliminación de Cuenta y Datos
Al solicitar la eliminación de cuenta:
- Los datos están disponibles para exportación durante 30 días
- Pasado ese período, se eliminan de forma permanente e irrecuperable
- Los datos cifrados con E2EE son irrecuperables incluso para suba (zero-knowledge)
- Los logs de auditoría de seguridad se retienen por obligación legal por 90 días adicionales antes de eliminarse
¿Tienes preguntas sobre el SLA?
Escríbenos a [email protected] · Soporte general: [email protected]