CloudflareMódulo IV · Producción · Capítulo 15 de 15Nivel: BásicoEn desarrollo

15. Cuándo no usar Cloudflare

Cuándo no elegiría Cloudflare, qué usaría en su lugar, cuánta dependencia del proveedor asumes con cada pieza y una lista final para producción.

En desarrollo. La publico antes de terminarla porque ya puede servirte; la iré completando y anotaré los cambios al final.

Víctor Rodríguez5 min de lectura
Una persona con un mapa ante un cruce de caminos hacia distintas nubes.

Qué vas a aprender

  • En qué casos elegiría otra plataforma, y cuál.
  • Cuánto te atas a Cloudflare con cada pieza.
  • Una lista final para pasar de la idea a producción.

Conocimientos iniciales

Si alguna de estas preguntas no te suena, ábrela: está explicada desde cero.

  • ¿Qué es un contenedor?

    Un paquete con tu programa y todo lo que necesita para funcionar (sistema, librerías), que se ejecuta igual en cualquier máquina. Docker es la herramienta más conocida.

  • ¿Qué es la dependencia del proveedor?

    Lo difícil que te resultaría irte a otro proveedor. Cuanto más usas piezas que solo existen en uno, más te cuesta cambiar.

  • ¿Qué significa serverless?Repaso

    Forma de ejecutar código sin gestionar servidores: subes tu código y el proveedor lo ejecuta cuando llega una petición. Pagas por uso y, si nadie lo usa, no pagas nada. Los servidores existen, pero no son tu problema.

    Lo vimos en el capítulo 1.

Después de catorce capítulos contando lo que me funciona, toca lo contrario. Cloudflare es mi opción por defecto para proyectos personales y de I+D, pero no para todo. Estos son los casos en los que elegiría otra cosa, con el porqué y la alternativa.

Para quién es

Para quien está decidiendo la plataforma de un proyecto nuevo o se pregunta si llevar uno existente a Cloudflare.

Al terminar tendrás los casos en los que yo elegiría otra cosa, cuánta dependencia del proveedor asumes con cada pieza y una lista de comprobación para pasar de la idea a producción.

Cuándo elegiría otra cosa

flowchart TD
    A[Proyecto nuevo] --> B{¿Más de 128 MB por petición<br/>o CPU constante?}
    B -->|Sí| C{¿Cabe en un contenedor<br/>pequeño y a ratos?}
    C -->|Sí| CT[Cloudflare Containers]
    C -->|No| VM[Servidor o PaaS<br/>con máquina dedicada]
    B -->|No| D{¿Todo lo demás<br/>ya está en AWS?}
    D -->|Sí| AWS[Lambda y servicios de AWS]
    D -->|No| E{¿Base relacional<br/>grande y única?}
    E -->|Sí| PG[Workers + Hyperdrive + Postgres]
    E -->|No| CF[Workers + D1 + R2]
Caso Por qué no Cloudflare (solo) Qué usaría
Mucha memoria o CPU constante (vídeo, compilaciones, modelos propios) 128 MB por isolate; la CPU se paga por milisegundo Containers, o una máquina dedicada si es 24/7
El resto de la empresa está en AWS (datos, permisos, equipos) Tráfico entre nubes, dos sistemas de permisos, dos facturas Lambda y los servicios de AWS
Una base relacional grande y con muchas escrituras 10 GB por base de datos en D1 Postgres gestionado (con Hyperdrive si el código sigue en Workers)
Librerías que necesitan Node.js completo o binarios nativos La compatibilidad es amplia, no total Containers o un servidor Node
Procesos de horas sin pasos intermedios Límites de CPU y duración Containers, o colas en otra plataforma
Residencia de datos o certificaciones muy concretas Hay opciones (Data Localization Suite), pero en planes Enterprise El proveedor que ya cumpla el requisito

Containers: la salida sin salir

Cloudflare Containers ejecuta una imagen de contenedor (con Linux, más memoria y cualquier binario) controlada desde un Worker y un Durable Object. Sirve para el caso “todo me cabe en Workers menos esta pieza”. Así encajan las piezas:

flowchart LR
    P[Petición] --> W[Worker]
    W --> DO[Durable Object<br/>arranca y controla el contenedor]
    DO --> C[Contenedor<br/>Linux, más memoria, cualquier binario]

Solo está en el plan de pago y se cobra por uso:

Recurso Incluido al mes Después
Memoria 25 GiB-hora 0,0000025 $ por GiB-segundo
CPU 375 vCPU-minutos 0,00002 $ por vCPU-segundo
Disco 200 GB-hora 0,00000007 $ por GB-segundo
Salida de datos (Norteamérica y Europa) 1 TB 0,025 $ por GB

Workers, Lambda o un servidor: comparación rápida

Cloudflare Workers AWS Lambda Servidor o PaaS (VPS, Fly, Railway…)
Arranque Milisegundos De ~100 ms a segundos Siempre encendido
Regiones Toda la red, sin elegir Una región por función Las que contrates
Coste en reposo 0 $ 0 $ Lo que cueste la máquina
Memoria máxima 128 MB Hasta 10 GB La de la máquina
Salida de datos Gratis Se paga Según el proveedor
Ecosistema Creciendo, integrado El más amplio Cualquier cosa
Cuándo Proyectos nuevos, APIs, webs, I+D Empresas ya en AWS Cargas constantes o software que no cabe en serverless

La comparación detallada, con costes para el mismo tráfico, está en Workers frente a Lambda (próximamente).

Cuánta dependencia del proveedor asumes

No todas las piezas atan igual. Así lo veo yo:

Pieza Dependencia Por qué
Hono / tu código HTTP Baja Hono funciona en Node, Deno, Bun y Lambda
R2 Baja API compatible con S3: cambias el endpoint
D1 Baja-media Es SQLite: exportas y lo cargas en otro sitio. Las consultas cambian poco si vas a Postgres
KV Media Fácil de sustituir por Redis, pero con otra semántica de consistencia
Queues Media El patrón es estándar; el código del consumidor cambia poco
Workers AI / AI Gateway Baja Los modelos son abiertos y el gateway admite otros proveedores
Durable Objects Alta No hay un equivalente directo en otras nubes
Workflows Alta Hay alternativas (Temporal, Step Functions), pero hay que reescribir

Lista de comprobación: de la idea a producción

Lo que reviso antes de abrir una aplicación al público, con el capítulo de cada punto:

  • Dominio propio con DNSSEC y SSL en modo estricto (cap. 2).
  • tsc y pruebas antes de cada despliegue (cap. 3).
  • Secretos con wrangler secret put; nada en el repositorio.
  • Migraciones compatibles hacia atrás y una copia exportada antes de las arriesgadas (cap. 5).
  • Autorización en cada consulta, también en R2 y Vectorize.
  • Trabajo pesado en colas o Workflows, con cola de mensajes muertos (cap. 7).
  • SPF, DKIM y DMARC si envías correo (cap. 8).
  • Turnstile en formularios públicos y limitación en el login (cap. 11).
  • Logs, Issues y alertas de errores y de facturación (cap. 12).
  • Límites de gasto en el código: max_tokens, max_retries, tamaños máximos (cap. 13).
  • Staging y previews protegidos con Access; vuelta atrás probada (cap. 14).

Resumen

  • Cloudflare para proyectos nuevos, APIs, webs, SaaS pequeños y prototipos de I+D.
  • Containers para la pieza que no cabe en un Worker; otra plataforma si es la mayor parte del sistema.
  • La dependencia del proveedor se concentra en Durable Objects y Workflows: úsalos donde aporten.
  • Con la lista de comprobación, la aplicación de la guía está lista para producción.

Recursos

¿Te ha servido? Esto forma parte de un libro que estoy escribiendo: Cloudflare de cero a producción. Ver el índice provisional →