E-commerce · Venta de electrónica

De editar por FTP a un pipeline gestionado con IA en una semana

Dos tiendas online, 42.000 productos sincronizados desde 1C y cambios hechos directamente en el servidor en producción. Una semana después, el dueño publicaba cambios describiéndoselos a un agente de IA.

~1 semana
desde el primer vistazo hasta un pipeline con controles funcionando
42.000
productos sincronizados desde 1C, intactos tras el cambio
6 h
intervalo de copia de la base de datos, con restauración probada
Al día siguiente
en producción los primeros cambios pedidos por el dueño

La situación

Una cadena regional de electrónica y portátiles tiene dos tiendas online en OpenCart y ocStore, con unos 42.000 productos. Los productos, precios y existencias llegan desde 1C, el sistema contable de la empresa.

Con los años, las tiendas se habían ido cambiando como se cambian muchas tiendas: directamente en el servidor.

  • No había Git. Varios usuarios de FTP tenían acceso de escritura a producción.
  • phpMyAdmin estaba abierto a internet.
  • En el webroot había volcados de la base de datos, archivos comprimidos y scripts sueltos. Uno ejecutaba ALTER TABLE al abrirlo en el navegador y otro enviaba un correo.
  • PHP podía ejecutarse en cualquier sitio y el endpoint de intercambio con 1C aceptaba peticiones de cualquiera.

Todavía no había pasado nada grave. Pero cualquier cambio era arriesgado y nadie sabía decir con exactitud qué había en el servidor.

Qué hicimos

Primero, la seguridad.

  • Copias cifradas fuera del servidor: la base de datos cada 6 horas y los archivos cada noche, con una restauración verificada por checksum.
  • Bastionamos el servidor:
    • los puertos 80/443 solo aceptan tráfico de la CDN;
    • PHP solo se ejecuta en los puntos de entrada propios de la tienda;
    • el endpoint de 1C solo acepta la IP del servidor de 1C;
    • SSH solo con clave, y eliminamos el FTP.
  • Los archivos retirados fueron a cuarentena, no a la papelera.

El código, a Git.

  • Tras buscar secretos filtrados, las dos tiendas pasaron a una organización privada de GitHub que es propiedad del cliente.
  • Un servidor de staging separado recibió una copia saneada de la base de datos. En staging, los pagos, la analítica, los píxeles, los afiliados y el login social están desactivados, y los dominios se reescriben.

El pipeline.

  • Cada pull request se revisa automáticamente: sintaxis PHP (para la versión del servidor), secretos filtrados y archivos prohibidos.
  • Los cambios de riesgo se marcan para que los revise un ingeniero: configuración, CI, dependencias, SQL, el intercambio con 1C, módulos OCMOD y código que borra datos.
  • Cada despliegue a producción pasa por un control en el propio servidor. Hace una copia de la base de datos, despliega el código, reconstruye las modificaciones y comprueba que la web responde. Si no, vuelve atrás por sí solo.
  • Una comprobación nocturna de desviaciones compara producción con Git y abre un ticket si algo ha cambiado fuera del pipeline. Los despliegues quedan bloqueados hasta que se resuelve.

Entrega al dueño. El dueño instaló las apps de Claude y GitHub, unos diez minutos. Ahora pide cambios en lenguaje normal, los revisa en staging y los aprueba. Los primeros arreglos visibles para los clientes, una redirección de idioma y el marcado de producto, salieron al día siguiente.

Extras

Con la tienda ya fácil de cambiar sin riesgo, añadir automatización fue sencillo:

  • un artículo de blog redactado por IA cada mañana, que revisa el encargado;
  • publicaciones automáticas en Telegram: precios diarios, avisos de “ha bajado de precio” y una selección semanal para el canal de la tienda.