🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Serverless WordPress con AWS Lambda y Cloudflare Workers

Actualizado el 8 de junio de 2026

[INFO] Este artículo está diseñado para administradores de sistemas, desarrolladores y entusiastas de WordPress que buscan llevar su sitio al siguiente nivel de rendimiento y escalabilidad, utilizando las últimas tecnologías serverless de 2025.

La arquitectura tradicional de WordPress, basada en un servidor web (Apache/Nginx), PHP y MySQL, ha sido el estándar durante más de una década. Sin embargo, en 2025, la necesidad de escalar bajo demanda, reducir costes operativos y minimizar la latencia global ha hecho que el modelo serverless sea no solo viable, sino la opción preferida para sitios de alto tráfico. Combinar AWS Lambda para el procesamiento dinámico (PHP) y Cloudflare Workers para la capa de borde (caching, lógica de red) permite construir un WordPress que es prácticamente inmune a picos de tráfico, con un coste basado únicamente en el uso real.

Este enfoque elimina la necesidad de gestionar servidores, parches de SO o escalado manual. En su lugar, se ejecuta código en respuesta a eventos (peticiones HTTP) en la nube de AWS, y se distribuye el contenido estático y las reglas de negocio a través de la red global de Cloudflare.

¿Por qué Serverless para WordPress en 2025?

El modelo serverless resuelve los problemas fundamentales del WordPress tradicional:

  • Escalado infinito: AWS Lambda escala automáticamente desde cero hasta miles de ejecuciones concurrentes sin intervención manual.
  • Coste reducido: Solo pagas por el tiempo de computación real (milisegundos) y las solicitudes. Sin servidores ociosos.
  • Mantenimiento cero: AWS se encarga de la infraestructura subyacente. Tú solo subes tu código (PHP, plugins, temas).
  • Rendimiento global: Cloudflare Workers actúa como proxy inverso en el edge, cacheando respuestas HTML y sirviendo assets estáticos desde la memoria en más de 330 ciudades.
  • Seguridad mejorada: La superficie de ataque se reduce drásticamente al eliminar servidores tradicionales. El ataque DDoS se mitiga en la capa de Cloudflare.

Sin embargo, no es una solución trivial. Requiere un cambio de paradigma en cómo se almacena el estado y se ejecuta el código.

Componentes Clave de la Arquitectura

Para construir un WordPress serverless funcional, necesitamos los siguientes componentes:

  1. AWS Lambda + Lambda Layers: Para ejecutar PHP 8.x y WordPress.
  2. Amazon RDS (Aurora Serverless v2) o Amazon DynamoDB: Base de datos escalable. Aurora Serverless es la opción más compatible con WordPress.
  3. Amazon S3: Para almacenar archivos multimedia (wp-content/uploads).
  4. Amazon CloudFront + API Gateway: Como puerta de enlace HTTP para invocar Lambda.
  5. Cloudflare Workers: Para la lógica de borde, caché avanzada, redirecciones y optimización de assets.

### Flujo de una Petición

  1. Usuario: Solicita https://tusitio.com/articulo-ejemplo.
  2. Cloudflare Workers: Intercepta la petición. Si existe una copia en caché (TTL configurado), la sirve directamente desde el edge. Si no, reenvía la petición a CloudFront.
  3. CloudFront + API Gateway: Enruta la petición a la función Lambda correspondiente.
  4. AWS Lambda: Ejecuta PHP-FPM, carga WordPress, procesa la URL y consulta la base de datos (Aurora Serverless).
  5. Respuesta: Lambda genera el HTML completo y lo devuelve a CloudFront, que lo reenvía a Cloudflare Workers. Workers cachea la respuesta para futuras peticiones.

Implementación Paso a Paso

1. Preparar el Entorno AWS

Primero, necesitas una cuenta de AWS y la CLI configurada.

Crear el bucket S3 para media:

aws s3api create-bucket --bucket misitio-wordpress-media --region us-east-1

Configurar Aurora Serverless v2:

aws rds create-db-cluster \
    --db-cluster-identifier wordpress-serverless \
    --engine aurora-mysql \
    --engine-version 8.0.mysql_aurora.3.02.0 \
    --serverless-v2-scaling-configuration MinCapacity=0.5,MaxCapacity=8 \
    --master-username admin \
    --master-user-password TuContraseñaSegura

2. Empaquetar WordPress para Lambda

No puedes subir WordPress directamente. Necesitas empaquetarlo en un Layer de Lambda junto con PHP.

Estructura del Layer:

php-wordpress-layer/
├── php/
│   ├── bin/
│   │   └── php
│   └── lib/
│       └── libphp.so
└── wordpress/
    ├── wp-config.php
    ├── wp-content/
    ├── wp-includes/
    └── ...

Crear el Layer:

# Compilar PHP con las extensiones necesarias (PDO, MySQL, GD, etc.)
# Luego empaquetar
zip -r php-wordpress-layer.zip php wordpress
aws lambda publish-layer-version \
    --layer-name php-wordpress \
    --zip-file fileb://php-wordpress-layer.zip \
    --compatible-runtimes provided.al2023

3. Configurar la Función Lambda

La función Lambda actuará como el servidor web. Debe incluir un bootstrap que ejecute PHP-FPM.

Ejemplo de bootstrap (script de entrada):

#!/bin/sh
# Iniciar PHP-FPM
/opt/php/sbin/php-fpm -y /opt/php/etc/php-fpm.conf -c /opt/php/etc/php.ini

# Leer evento de API Gateway y pasar a WordPress
# (Usar un wrapper como 'bref' o 'serverless-wp')

Configurar API Gateway:

Crea una API HTTP y asocia la función Lambda como destino. Define rutas como /{proxy+} para capturar todas las peticiones.

4. Integrar Cloudflare Workers

Cloudflare Workers es el cerebro del edge. Aquí es donde realmente optimizamos el rendimiento.

Workers Script básico:

// cloudflare-worker.js
addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
  const url = new URL(request.url)
  
  // 1. Cachear respuestas HTML dinámicas (con TTL personalizado)
  if (url.pathname.startsWith('/wp-admin')) {
    // No cachear admin
    return fetch(request)
  }
  
  // 2. Cachear en el edge durante 1 hora para páginas públicas
  const cacheKey = new Request(url.toString(), request)
  const cache = caches.default
  let response = await cache.match(cacheKey)
  
  if (!response) {
    response = await fetch(request) // Va a CloudFront -> Lambda
    response = new Response(response.body, response)
    response.headers.set('Cache-Control', 'public, max-age=3600')
    event.waitUntil(cache.put(cacheKey, response.clone()))
  }
  
  // 3. Optimizar assets estáticos (imágenes, CSS, JS)
  if (url.pathname.match(/\.(jpg|jpeg|png|gif|svg|css|js)$/)) {
    // Redirigir directamente a S3 para evitar Lambda
    const s3Url = `https://misitio-wordpress-media.s3.amazonaws.com${url.pathname}`
    return fetch(s3Url)
  }
  
  return response
}

[TIP] Usa Workers para implementar lógica de redirección 301, A/B testing o incluso servir contenido en diferentes idiomas sin tocar el backend.

Consideraciones Críticas y Desafíos

Estado Efímero y Sesiones

Lambda no mantiene estado. Las sesiones de PHP (por defecto basadas en archivos) no funcionan. Debes usar un almacenamiento externo:

  • Redis (ElastiCache): Para sesiones y caché de objetos de WordPress.
  • DynamoDB: Para sesiones persistentes.

Configurar sesiones con Redis en wp-config.php:

define('WP_REDIS_HOST', 'turediscluster.xxxxxx.ng.0001.use1.cache.amazonaws.com');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_DATABASE', 0);
define('WP_CACHE_KEY_SALT', 'misitio');

Plugins y Temas Incompatibles

Muchos plugins asumen un sistema de archivos persistente. Por ejemplo, plugins de caché como W3 Total Cache o WP Super Cache no funcionan. Debes usar alternativas serverless:

  • Caché de página: Workers (como vimos arriba).
  • Caché de objetos: Redis.
  • Plugins de formularios: Usar servicios externos (HubSpot, Mailchimp).
  • Actualizaciones automáticas: Deshabilitarlas. El despliegue se hace vía CI/CD.

Base de Datos: Conexiones y Latencia

Aurora Serverless v2 escala a cero, pero la primera conexión después de un periodo de inactividad puede tardar varios segundos (cold start de BD). Para mitigarlo:

  • Usa un pool de conexiones: RDS Proxy de AWS.
  • Mantén la BD "caliente": Programa una petición cada 5 minutos.

Ventajas de Rendimiento y Coste

Costes en 2025

ComponenteCoste Aproximado (sin tráfico)
AWS Lambda (1M requests/mes)~$0.20
Aurora Serverless v2 (0.5 ACU)~$15/mes
S3 (10GB)~$0.25
Cloudflare Workers (10M requests)Gratis (plan gratuito)
Total estimado~$15.50/mes

Para un sitio con 100,000 visitas/mes, el coste puede ser inferior a $20/mes, comparado con los $50-$100 de un VPS tradicional.

Rendimiento

  • TTFB (Time to First Byte): Reducido de 200-400ms a 20-50ms gracias al edge caching de Workers.
  • Escalado: Puede manejar picos de 10,000 peticiones concurrentes sin degradación.
  • Uptime: AWS reporta 99.99% de disponibilidad.

Despliegue Automatizado con CI/CD

Para gestionar actualizaciones de WordPress, temas y plugins, necesitas un pipeline de despliegue.

Ejemplo con GitHub Actions:

name: Deploy WordPress Serverless

on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build Lambda Layer
        run: |
          make build-layer
      - name: Deploy to AWS
        run: |
          aws lambda update-function-code --function-name wordpress-lambda --zip-file fileb://wordpress-layer.zip
      - name: Clear Cloudflare Cache
        run: |
          curl -X POST "https://api.cloudflare.com/client/v4/zones/ZONE_ID/purge_cache" \
               -H "Authorization: Bearer ${{ secrets.CF_TOKEN }}" \
               -H "Content-Type: application/json" \
               --data '{"purge_everything":true}'

[WARNING] Nunca subas archivos directamente a S3 o Lambda a través de FTP. Usa siempre un pipeline de CI/CD para mantener la integridad y seguridad.

Conclusión: ¿Es para ti?

La arquitectura serverless WordPress con AWS Lambda y Cloudflare Workers no es para todos. Es ideal para:

  • Sitios con tráfico variable (picos estacionales).
  • Proyectos que necesitan alta disponibilidad y rendimiento global.
  • Equipos que ya usan AWS y buscan reducir costes operativos.
  • Desarrolladores que quieren experimentar con la vanguardia de la infraestructura en 2025.

No es recomendable para:

  • Sitios con mucho contenido dinámico generado por usuarios (foros, ecommerce complejo).
  • Proyectos donde el equipo no tiene experiencia en DevOps/serverless.
  • Sitios que dependen de plugins de terceros no compatibles.

En 2025, serverless ya no es el futuro, es el presente. Con las herramientas adecuadas (Bref, Serverless Framework, Terraform), montar un WordPress serverless es un proyecto de fin de semana. La recompensa: un sitio ultrarrápido, escalable y con un coste predecible.

[INFO] Si decides implementar esta arquitectura, empieza con un sitio de staging. Migra contenido de prueba, mide el rendimiento con Lighthouse y ajusta el TTL de Workers. Una vez validado, lanza el sitio de producción con un DNS cut-over controlado.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel