
Introducción
El partner‑marketing self‑hosted exige operaciones fiables: seguimiento consistente, almacenamiento seguro de datos y actualizaciones planificadas sin interrupciones. Affilentra proporciona la base software como aplicación PHP/MySQL. Esta guía muestra de forma práctica cómo ejecutar Affilentra como una aplicación en contenedores —con Docker‑Compose para instalaciones sencillas y Kubernetes para entornos de producción escalables y tolerantes a fallos. Enfoque: persistencia para MySQL, copias de seguridad, gestión de secretos y actualizaciones sin tiempo de inactividad para las ediciones PRO & NETWORK.
Resumen de arquitectura
Componentes típicos de una instalación de Affilentra:
- Aplicación PHP (Affilentra): interfaz web, API, scheduler/jobs
- Servidor web (Nginx/Apache) o reverse‑proxy (Traefik/Ingress)
- Base de datos MySQL (almacenamiento persistente)
- Opcional: Redis para sesiones/cache, SMTP para envío de correo, almacenamiento de objetos para assets
- Monitorización, logging, jobs de backup
De forma lógica permanecen separados los roles de operador, comerciante y partner; la plataforma proporciona el marco técnico.
Docker‑Compose: configuración pragmática para producción
Para instalaciones pequeñas y medianas, Docker‑Compose suele ser suficiente. Componentes importantes:
- Servicio "app": PHP‑FPM o PHP con servidor web embebido. Monte el código de la aplicación en modo de solo lectura y configure una carpeta de subidas persistente.
- Servicio "db": MySQL 8, con un volumen persistente para /var/lib/mysql.
- Reverse‑proxy: Traefik o un contenedor Nginx, certificados TLS externos.
- Opcional: redis, mailer, contenedor de backup.
Las variables de entorno (DB_HOST, DB_NAME, DB_USER, DB_PASSWORD) no deberían quedar expuestas en el archivo Compose. Use un archivo .env con permisos restrictivos o Docker Secrets en despliegues Swarm. Persistencia: utilice volúmenes con nombre o montajes de host en discos dedicados.
Backup y restauración: planifique un contenedor de backup separado o un cron job que genere regularmente un mysqldump consistente y escriba los volúmenes cifrados en un destino externo (compatible con S3). Pruebe los procesos de restauración con regularidad.
Kubernetes: manifiestos listos para producción
Kubernetes ofrece mejor escalado, tolerancia a fallos e integraciones. Recursos recomendados:
- Deployment para la aplicación Affilentra con probes de readiness/liveness (p. ej., endpoint de salud de la aplicación).
- StatefulSet para MySQL con PersistentVolumeClaims (PV/PVC) y una StorageClass adecuada (CSI‑plugin para nube/entorno on‑prem).
- Service (ClusterIP) para la comunicación interna; Ingress (o controlador de Ingress) para acceso externo con TLS.
- ConfigMap para configuración no sensible; Secrets para credenciales de base de datos, claves de API y contraseñas SMTP.
- Job/CronJob para migraciones de base de datos, backups y tareas de mantenimiento periódicas.
StatefulSet garantiza que los Pods de MySQL permanezcan ligados de forma estable a Volúmenes Persistentes. Utilice VolumeSnapshots (si su proveedor de almacenamiento lo admite) además de mysqldump para recuperaciones más rápidas.
Persistencia para MySQL & Estrategias de backup
Reglas básicas para la integridad de los datos:
- Utilice PersistentVolumes dedicados con una StorageClass confiable. Evite el almacenamiento efímero para bases de datos.
- Realice backups lógicos regulares (mysqldump o mydumper) para cumplir con requisitos de auditoría y migración.
- Complete, cuando sea necesario, con backups físicos (p. ej. Percona XtraBackup) o snapshots del storage para volúmenes grandes de datos.
- Almacene los backups cifrados y de forma redundante (al menos offsite). Pruebe las restauraciones en un entorno aislado.
- Planifique la retención de backups y las políticas de conservación acorde a los requisitos de cumplimiento.
En la práctica: un CronJob crea dumps diarios, un snapshot semanal proporciona puntos de restauración rápidos; jobs automatizados de verificación aseguran que los dumps sean legibles.
Gestión de Secrets
Los secrets son críticos para la seguridad y la disponibilidad operativa:
- Docker‑Compose: use Docker Secrets o un .env cifrado; restrinja los permisos de archivo.
- Kubernetes: almacene valores sensibles en Secrets y utilice herramientas como Sealed‑Secrets o External‑Secrets para habilitar flujos GitOps de forma segura.
- Para la gestión centralizada en entornos más grandes, se recomienda un secret‑store como HashiCorp Vault o un Cloud‑KMS.
Reemplace los secrets de forma cíclica y documente los controles de acceso por rol (operadores vs. comerciantes vs. partners).
Actualizaciones sin downtime
Las actualizaciones sin interrupciones son clave en redes de partners. Procedimiento:
- Configure Rolling‑Updates para los despliegues de la aplicación y utilice Readiness‑Probes, de modo que solo los Pods saludables reciban tráfico.
- Para esquemas de bases de datos: opte por pasos de migración compatibles hacia atrás. Ejecute las migraciones en dos fases (Write‑compatible, Read‑compatible) o utilice feature‑flags.
- Ejecute pasos críticos de migración como Jobs de Kubernetes, que se ejecuten fuera de las rutas de producción, o use patrones Blue‑Green/Canary a nivel de Ingress para desviar el tráfico de forma gradual.
- Sesiones y cachés: externalice el estado de sesión (p. ej. Redis), de modo que los Pods puedan ser reemplazados libremente.
- Prepare un escenario breve de fallback (imagen de rollback, snapshot de la base de datos) en lugar de ventanas de mantenimiento largas.
Así reduce el riesgo de indisponibilidad durante las actualizaciones para PRO & NETWORK Editionen, incluso con un gran número de usuarios.
Monitoring, Logging, Operaciones
Un despliegue estable se basa en la supervisión y métricas visibles:
- Recoja logs de forma centralizada (ELK/EFK, Loki) e instrumente métricas de la aplicación (Prometheus, Grafana).
- Configure alertas para tasas de error, latencias, utilización de disco y fallos de copia de seguridad.
- Documente runbooks para incidentes comunes: restauración de DB, fallo de red, renovación de TLS.
Checklist práctica para el arranque en producción
Pasos breves y manejables:
- 1) Preparar el entorno: host, clúster Kubernetes o Docker‑Host con almacenamiento suficiente.
- 2) Crear storage y secrets: configurar PV/PVC, StorageClass, Secret‑Store.
- 3) Deployment base: arrancar la app + MySQL, ejecutar el job de migraciones, realizar smoke tests.
- 4) Activar backup y monitoring y probar el restore.
- 5) Definir estrategia de actualizaciones: Rolling/Blue‑Green, planificar jobs de migración y feature‑flags.
- 6) Publicar el manual de operaciones con roles y responsabilidades.
Conclusión y siguiente paso
Affilentra puede contenerizarse de forma flexible — desde setups sencillos con Docker‑Compose hasta deployments escalables con Kubernetes. Lo decisivo es la persistencia duradera para MySQL, procesos de backup y restore probados, un manejo seguro de los secrets y una estrategia de actualizaciones que minimice el downtime. Apoye en Readiness‑Probes, almacenes de sesión externos y cambios seguros para migraciones para operar de forma estable las ediciones PRO & NETWORK.
Siguiente paso
Probar Affilentra usted mismo
Plataforma unificada que reúne de forma transparente la puesta en producción, el tracking, la validación de conversiones, el cálculo de comisiones y el pago, con roles claramente separados; opción de instalación self-hosted con licencia perpetua sin participación en los ingresos; los comerciantes mantienen el control sobre productos, condiciones y materiales publicitarios; los partners reciben enlaces de tracking personales y un historial de pagos trazable.
