Capítulo 18¶
Arquitecturas de proyectos reales¶
Cómo combinar Cloudflare, Firebase y AWS para construir aplicaciones profesionales¶
Objetivo¶
Este capítulo tiene una meta decisiva dentro del libro: que el lector aprenda a diseñar arquitecturas completas antes de escribir una sola línea de código, combinando de forma racional Cloudflare, Firebase, GitHub y AWS para construir aplicaciones modernas, seguras, escalables y de bajo costo.[cite:160][cite:164][cite:111][cite:127][cite:129]
Al finalizar, el lector será capaz de descomponer un proyecto en piezas arquitectónicas, seleccionar servicios adecuados para cada necesidad, anticipar riesgos operativos y justificar técnicamente por qué una solución debe vivir en una sola plataforma o en una arquitectura híbrida.[cite:166][cite:111][cite:127]
¿Qué aprenderás?¶
- Por qué la arquitectura importa más que el lenguaje de programación.
- Cómo diseñar un sistema desde el problema y no desde la herramienta.
- Cómo combinar hosting, edge, autenticación, base de datos, almacenamiento, correo, monitoreo y seguridad.
- Cómo pensar crecimiento desde 100 usuarios hasta 1,000,000 sin rehacer todo.
- Cómo estimar costos y elegir entre Cloudflare, Firebase, AWS o una combinación de ellos.[cite:111][cite:142][cite:148][cite:128]
Introducción¶
Muchas personas creen que un proyecto tecnológico se define por el lenguaje de programación que utiliza. Se preguntan si conviene JavaScript, Python, PHP o Go, y a partir de ahí intentan imaginar el resto. Sin embargo, en proyectos reales, el lenguaje suele ser una decisión secundaria comparada con la arquitectura. Dos equipos pueden usar exactamente el mismo lenguaje y obtener resultados radicalmente distintos: uno termina con un sistema mantenible, seguro y escalable; el otro, con una maraña difícil de operar.
Eso ocurre porque la arquitectura responde preguntas más profundas. ¿Dónde vive el frontend? ¿Quién autentica? ¿Dónde se almacenan los archivos? ¿Qué servicio resuelve el correo? ¿Qué pasa cuando el tráfico se multiplica por diez? ¿Cómo se registran las acciones sensibles? ¿Cómo se protege el sistema frente a abuso, errores o crecimiento inesperado? Un lenguaje no responde eso por sí mismo.
Arquitectura de software¶
La arquitectura de software es la organización estructural del sistema: sus componentes, responsabilidades, límites, integraciones y flujos. En otras palabras, es la forma en que las piezas del sistema se relacionan para resolver un problema.
Arquitectura en la nube¶
La arquitectura en la nube traslada esas decisiones al terreno de la infraestructura distribuida. Ya no solo se decide cómo se organiza el código, sino dónde viven los servicios, cómo se conectan, qué proveedor resuelve cada capa y cómo se aprovechan las capacidades administradas de la nube.
Arquitectura distribuida¶
Una arquitectura distribuida reparte responsabilidades entre múltiples componentes y, a menudo, entre distintas ubicaciones o servicios. Hoy casi todas las aplicaciones reales son distribuidas en algún grado, incluso aunque parezcan pequeñas.
Desacoplamiento¶
Desacoplar significa evitar que una pieza dependa excesivamente de otra. Por ejemplo, si el envío de correos depende de la misma lógica crítica que sirve el frontend, un problema en correo puede arrastrar al resto del sistema. Si ambas piezas están desacopladas, el fallo se aísla mejor.
Escalabilidad¶
Escalabilidad es la capacidad de crecer sin romperse. No se trata solo de “aguantar más usuarios”, sino de hacerlo de forma previsible y económicamente sensata.
Alta disponibilidad¶
Alta disponibilidad significa diseñar para seguir operando incluso cuando fallan algunos componentes. En la nube, eso implica redundancia, distribución y eliminación de puntos únicos de fallo.[cite:133]
Modularidad¶
La modularidad consiste en separar el sistema en piezas comprensibles y con responsabilidades claras. Una arquitectura modular no solo escala mejor: también se mantiene, se prueba y se evoluciona mejor.
Metodología para diseñar una arquitectura¶
Antes de ver proyectos concretos, hace falta una metodología reutilizable.
Paso 1: Definir el problema¶
Una arquitectura no empieza con un catálogo de servicios. Empieza con una pregunta: ¿qué problema se quiere resolver?
No es lo mismo diseñar:
- Un sitio institucional.
- Un LMS con miles de alumnos.
- Un sistema de credenciales con validación pública.
- Una plataforma de IA con RAG y documentos.
Cuando el problema está mal definido, la arquitectura se convierte en decoración técnica.
Paso 2: Identificar usuarios¶
Hay que identificar quién usará el sistema y cómo lo hará.
Ejemplos:
- Visitantes públicos.
- Administradores.
- Docentes.
- Estudiantes.
- Padres de familia.
- Validadores externos.
- APIs o servicios automáticos.
Cada tipo de usuario crea requisitos distintos de autenticación, rendimiento, permisos y UX.
Paso 3: Identificar datos¶
Después hay que responder: ¿qué datos existen y qué valor tienen?
- Datos públicos.
- Datos privados.
- Archivos grandes.
- Datos estructurados.
- Logs.
- Auditoría.
- Eventos analíticos.
- Metadata.
No todos los datos deben vivir en la misma tecnología.
Paso 4: Elegir almacenamiento¶
Aquí suele aparecer una distinción esencial:
- Base de datos relacional para relaciones y consistencia.
- Base documental para estructuras flexibles y rapidez de producto.
- Object storage para archivos.
- KV o caché para respuestas rápidas.
- Vector storage para búsqueda semántica.
Cloudflare ofrece D1, R2, KV y Vectorize como primitives integradas al ecosistema Workers.[cite:164][cite:166] Firebase ofrece Firestore, Realtime Database y Storage como parte de su propuesta BaaS.[cite:111] AWS, por su parte, cubre almacenamiento de objetos con S3, NoSQL con DynamoDB y relacional administrado con RDS.[cite:148][cite:135]
Paso 5: Elegir autenticación¶
La autenticación debe decidirse pronto. Firebase Authentication es especialmente fuerte cuando se necesita rapidez de implementación y múltiples proveedores.[cite:111] Cloudflare Access y modelos propios con Workers pueden ser útiles para apps internas o capas específicas, mientras AWS también ofrece mecanismos más amplios dentro de su ecosistema, aunque no con el mismo enfoque BaaS inmediato que Firebase.
Paso 6: Elegir backend¶
El backend puede adoptar varias formas:
- Workers para lógica edge ligera y APIs rápidas.[cite:163][cite:166]
- Cloud Functions para eventos integrados con Firebase.[cite:111]
- Lambda para ecosistemas profundamente AWS.[cite:144]
- Backend propio si el proyecto exige control total.
Paso 7: Elegir hosting¶
Para frontend moderno, Cloudflare Pages ofrece despliegue full-stack sobre la red global de Cloudflare y una integración muy natural con Workers.[cite:166] Firebase Hosting ofrece una experiencia muy conveniente dentro del ecosistema Firebase.[cite:111] AWS puede resolver hosting con S3, CloudFront u otras piezas, pero a menudo con más ensamblaje visible.
Paso 8: Elegir dominio y DNS¶
El dominio no es un detalle administrativo: es parte de la arquitectura. Cloudflare destaca en DNS autoritativo y capa perimetral, y Route 53 resuelve bien este papel cuando la operación principal vive en AWS.[cite:166][cite:135]
Paso 9: Elegir CDN¶
Si el proyecto ya usa Cloudflare como entrada, el CDN y la optimización perimetral suelen venir implícitos en gran parte del diseño.[cite:166] En AWS, CloudFront cumple ese rol como CDN administrado.[cite:144]
Paso 10: Elegir monitoreo¶
Cloudflare ofrece observabilidad para Workers mediante logs y traces, y recomienda complementar análisis específicos con Workers Analytics Engine cuando haga falta instrumentación custom.[cite:90][cite:32] AWS se apoya fuertemente en CloudWatch para logs, métricas y alarmas.[cite:142] Firebase aporta analytics de producto y otros servicios observables desde su ecosistema.[cite:111]
Arquitectura 1¶
Sitio institucional¶
Un sitio institucional para una escuela parece simple, pero si se diseña bien puede convertirse en la base estable de presencia digital durante años.
Requisitos¶
- Dominio propio.
- DNS confiable.
- Sitio público rápido.
- Páginas informativas.
- Formulario de contacto.
- Correo institucional.
- Analítica básica.
Arquitectura propuesta¶
Usuario
|
v
Internet
|
v
Cloudflare DNS / CDN / WAF
|
v
Cloudflare Pages
|
+----> GitHub (deploy)
|
+----> Worker para formulario
|
+----> Amazon SES o Google Workspace (correo)
|
+----> Analytics
Justificación por componente¶
- Dominio: identidad institucional estable.
- DNS en Cloudflare: rapidez de resolución, gestión centralizada y capa perimetral.[cite:166]
- Cloudflare Pages: ideal para un sitio estático o semiestático con despliegue desde GitHub.[cite:166]
- GitHub: control de versiones y publicación ordenada.
- Worker para formulario: evita exponer directamente un backend tradicional y permite validación, rate limiting y envío seguro.[cite:32][cite:167]
- Correo: puede resolverse con Google Workspace para operación institucional o con SES para flujos programáticos.
- Analytics: Cloudflare Web Analytics o equivalente, según la profundidad requerida.[cite:166]
Recorrido completo¶
- El usuario entra al dominio.
- Cloudflare resuelve DNS y entrega el sitio desde Pages.
- Si envía un formulario, el frontend llama un Worker.
- El Worker valida datos, aplica límites de abuso y reenvía la solicitud al servicio de correo o almacenamiento correspondiente.[cite:32][cite:167]
- Se registra analítica básica del sitio.
Costos aproximados¶
Para una escuela pequeña o mediana, esta arquitectura puede mantenerse en un costo muy bajo si el tráfico es razonable y el uso del formulario es moderado. La gran ventaja es que evita backend dedicado y reduce muchísimo la complejidad operacional.
Arquitectura 2¶
Blog profesional¶
Un blog profesional parece un caso sencillo, pero cuando se piensa bien implica SEO, caché, multimedia, dominio, automatización editorial y escalabilidad.
Requisitos¶
- Hosting estático o híbrido.
- Excelente SEO.
- Caché global.
- Imágenes optimizadas.
- Posibilidad de CMS o flujo Markdown.
- Buen rendimiento en móvil.
Arquitectura propuesta¶
Usuario
|
v
Cloudflare DNS / CDN
|
v
Cloudflare Pages
|
+----> GitHub repo con contenido Markdown
|
+----> R2 para imágenes y multimedia
|
+----> Analytics
Explicación¶
- Hosting: Pages es ideal para contenido estático y despliegue editorial moderno.[cite:166]
- SEO: HTML prerenderizado, URLs limpias, performance alta.
- Caché y CDN: Cloudflare actúa de forma natural como red de entrega global.[cite:166]
- Optimización multimedia: R2 o imágenes optimizadas según flujo elegido.[cite:160][cite:166]
- GitHub: flujo editorial versionado.
Ventaja principal¶
Esta arquitectura es muy barata, muy rápida y extremadamente mantenible. Es un ejemplo clásico de cómo una buena arquitectura hace innecesario un backend pesado.
Arquitectura 3¶
Plataforma educativa¶
Ahora entramos en un escenario mucho más complejo: una plataforma tipo LMS.
Requisitos¶
- Usuarios autenticados.
- Cursos.
- Evaluaciones.
- Archivos.
- Videos.
- Notificaciones.
- Certificados.
- Roles.
- Seguridad.
- Escalabilidad.
Arquitectura propuesta¶
Usuario
|
v
Cloudflare
|
+----> Pages (frontend)
+----> Workers (API edge / middleware)
|
+----> Firebase Authentication
+----> Firestore
+----> Firebase Storage / R2
+----> Cloud Functions
+----> Cloud Messaging
+----> Amazon SES
Decisiones clave¶
- Frontend en Cloudflare Pages por despliegue rápido y edge global.[cite:166]
- Autenticación con Firebase Authentication por velocidad y proveedores integrados.[cite:111]
- Datos operativos en Firestore si el modelo documental encaja bien.[cite:111]
- Archivos en Firebase Storage o R2 según patrón de acceso y afinidad ecosistémica.[cite:111][cite:160]
- Notificaciones push con FCM.[cite:111]
- Correos con SES si se necesita robustez transaccional y escalabilidad programática.
- Workers como capa intermedia para reglas adicionales, rutas públicas, rate limiting y APIs edge.[cite:32][cite:163]
Seguridad¶
- Auth centralizada.
- Reglas Firestore/Storage.
- Workers como filtro perimetral adicional.
- Rate limiting por ruta o actor cuando haya endpoints sensibles.[cite:32][cite:167]
- Logs y trazabilidad de operaciones administrativas.
Escalabilidad¶
Esta arquitectura escala razonablemente bien si se diseñan bien los patrones de lectura de Firestore, el almacenamiento de archivos y la separación entre frontend, lógica edge y automatizaciones.
Arquitectura 4¶
Sistema de Credenciales Digitales¶
Este caso merece especial detalle porque combina identidad, archivos, validación pública, trazabilidad y automatización.
Componentes obligatorios¶
- Cloudflare Pages.
- Workers.
- R2.
- Firebase Authentication.
- Firestore.
- Amazon SES.
- Amazon Polly.
- GitHub.
- Dominios.
- DNS.
- QR.
- Validación.
- Firma digital.
- Subida de fotografías.
- Panel administrativo.
Arquitectura propuesta¶
+----------------------+
| Usuario final |
+----------+-----------+
|
v
Internet
|
v
+---------------------------+
| Cloudflare DNS / CDN / WAF|
+-------------+-------------+
|
+--------------+---------------+
| |
v v
+-------------------+ +-------------------+
| Cloudflare Pages | | Cloudflare Worker |
| Frontend / Panel | | API / Middleware |
+---------+---------+ +---------+---------+
| |
| +------> Rate limiting / logs
| [cite:32][cite:167]
|
+------> Firebase Authentication
|
+------> Firestore
|
+------> R2 (fotos, PDFs, QR)
|
+------> Amazon SES (correos)
|
+------> Amazon Polly (audio accesible)
|
+------> GitHub (despliegue)
Recorrido completo: alta de credencial¶
- El administrador entra al panel servido desde Pages.
- Se autentica con Firebase Authentication.[cite:111]
- El panel consulta Firestore para cargar escuelas, plantillas y usuarios.[cite:111]
- La fotografía del alumno se sube a R2 mediante un flujo controlado por Worker, que valida tamaño, tipo y permisos.[cite:160][cite:164]
- Firestore guarda la metadata de la credencial: folio, escuela, alumno, rutas de archivo, estado, fecha de emisión.
- El Worker genera o solicita la construcción del QR con el identificador público.
- El sistema puede generar PDF o vista pública validable.
- SES envía notificación al usuario o institución cuando la credencial está lista.
- Polly puede generar audio accesible o una locución breve con datos generales para usos específicos.
Validación pública¶
Validador externo
|
v
QR escaneado
|
v
Dominio público en Cloudflare
|
v
Worker valida folio / token / firma
|
+----> Firestore consulta metadata
+----> R2 recupera documento o imagen necesaria
|
v
Página pública de validación
Firma digital¶
La firma digital puede resolverse de varias formas, pero arquitectónicamente debe pensarse como una capa separada del documento visible. Es decir, el sistema debe distinguir entre:
- Documento o credencial presentada al usuario.
- Registro fuente de emisión.
- Evidencia criptográfica o sello de validación.
Subida de fotografías¶
La subida de fotografías no debe ir directamente desde el cliente a un bucket abierto. Debe pasar por autenticación y autorización claras, idealmente con Worker intermedio o credenciales temporales controladas.
Panel administrativo¶
El panel administrativo debe quedar claramente aislado del flujo público. No solo por URL distinta, sino por:
- Auth obligatoria.
- Roles y permisos.
- Registro de actividad.
- Rate limiting selectivo.
- Logs de operaciones sensibles.
Por qué esta arquitectura funciona¶
Porque cada pieza resuelve lo que mejor sabe hacer:
- Pages: frontend rápido.
- Workers: control edge y lógica pública segura.[cite:163][cite:166]
- R2: archivos y binarios.[cite:160][cite:164]
- Firebase Auth: identidad.[cite:111]
- Firestore: metadata y estado del sistema.[cite:111]
- SES: correo programático.
- Polly: voz accesible.
Arquitectura 5¶
NLink¶
Un acortador profesional de enlaces parece pequeño, pero en realidad es un gran ejercicio arquitectónico: redirección rápida, estadísticas, panel, API, dominios personalizados y escalabilidad global.
Arquitectura propuesta¶
Usuario
|
v
Cloudflare DNS
|
v
Worker de redirección
|
+----> D1 (lookup del código)
+----> Analytics Engine / logs
+----> Worker QR endpoint
+----> Panel en Pages
Explicación¶
- Workers: perfectos para redirecciones de baja latencia.[cite:163][cite:166]
- D1: adecuado para mapping estructurado de códigos, destinos y metadata.[cite:164][cite:166]
- Analytics: medición de clics, origen, fecha, campaña.
- Panel en Pages: administración desacoplada del runtime de redirección.
- Dominios personalizados: por cliente o campaña.
Escalabilidad¶
La clave está en separar:
- Ruta de redirección ultra rápida.
- Ruta administrativa.
- Ruta analítica.
- Generación de QR.
Si todo vive junto y con la misma prioridad, la experiencia se degrada rápido.
Arquitectura 6¶
IA El Profe¶
Este caso exige combinar frontend, auth, archivos, embeddings y recuperación semántica.
Componentes obligatorios¶
- Workers AI.
- Vectorize.
- R2.
- Pages.
- Workers.
- Authentication.
- Historial.
- Documentos.
- Embeddings.
- RAG.
- Panel administrativo.
Arquitectura propuesta¶
Usuario
|
v
Cloudflare Pages
|
+----> Firebase Authentication
|
+----> Workers API
|
+----> R2 (documentos fuente)
+----> Vectorize (embeddings / búsqueda)
+----> Workers AI (inferencia)
+----> D1 o Firestore (historial / usuarios / configuración)
Justificación¶
Cloudflare documenta que su plataforma integra Workers AI, Vectorize, D1, R2 y otros bindings como primitives directamente consumibles desde Workers, lo cual hace muy natural una arquitectura de IA full-stack en su ecosistema.[cite:160][cite:164][cite:166]
RAG¶
El flujo RAG puede entenderse así:
- Se cargan documentos a R2.
- Un proceso extrae texto y genera embeddings.
- Los embeddings se guardan en Vectorize.
- El usuario pregunta desde la app.
- El Worker consulta Vectorize, recupera contexto y llama Workers AI.
- La respuesta se compone y devuelve al frontend.
Historial y panel¶
El historial puede vivir en Firestore o D1 según el patrón de datos. Si lo central es relación documental flexible y rapidez de cliente, Firestore puede resultar cómodo. Si se necesita más estructura SQL y control relacional, D1 puede ser preferible.
Arquitectura 7¶
Sistema Escolar Integral¶
Aquí se junta prácticamente todo.
Requisitos¶
- Asistencia.
- Calificaciones.
- Credenciales.
- Mensajería.
- Notificaciones.
- Documentos.
- Padres.
- Docentes.
- Directivos.
- Panel administrativo.
- Reportes.
Arquitectura propuesta¶
Usuarios (padres / alumnos / docentes / directivos)
|
v
Cloudflare
|
+---------+----------+
| |
v v
Pages frontend Workers API / middleware
| |
+----> Firebase Authentication
|
+----> Firestore / D1 (según módulo)
|
+----> R2 / Firebase Storage (archivos)
|
+----> Cloud Messaging / SES
|
+----> Reportes / funciones auxiliares
Diseño modular recomendado¶
No conviene meter todo en un solo backend lógico. Mejor pensar módulos:
- Identidad.
- Académico.
- Asistencia.
- Credenciales.
- Mensajería.
- Documentos.
- Reportes.
- Auditoría.
Cada módulo puede compartir frontend, auth y ciertos servicios, pero mantener fronteras claras de datos y responsabilidad.
Integraciones¶
Cloudflare + GitHub¶
Es probablemente una de las integraciones más naturales del libro. GitHub gobierna versión y despliegue; Cloudflare Pages publica; Workers complementa backend edge.
Cloudflare + Firebase¶
Muy útil cuando se desea combinar:
- Frontend y edge en Cloudflare.
- Auth, Firestore o Messaging en Firebase.
Este patrón es especialmente bueno para productos que necesitan moverse rápido sin renunciar a una capa perimetral moderna.
Cloudflare + AWS¶
Aquí AWS entra mejor como proveedor especializado:
- SES para correo.
- Polly para voz.
- S3 para flujos específicos.
- Lambda o RDS cuando un módulo lo justifique.
Cloudflare + Google Workspace¶
Muy útil para escuelas y organizaciones que necesitan:
- Correo institucional.
- Calendario.
- Documentos colaborativos.
- Gestión operativa fuera del core de la app.
Cloudflare + Telegram¶
Workers puede actuar como receptor y emisor para bots, alertas o automatizaciones Telegram sin necesidad de backend tradicional pesado.
Cloudflare + APIs externas¶
Workers es especialmente bueno como capa de composición y seguridad delante de APIs de terceros.
Seguridad¶
La seguridad no se agrega al final. Se diseña desde la arquitectura.
Authentication¶
Cada arquitectura debe decidir cómo identifica usuarios. Para apps abiertas al público con panel administrativo, Firebase Authentication puede simplificar mucho.[cite:111]
Authorization¶
No basta con autenticar. Hay que decidir qué puede hacer cada actor.
Roles¶
Ejemplos comunes:
- Superadmin.
- Administrador institucional.
- Docente.
- Alumno.
- Padre.
- Validador externo.
Permisos¶
Los permisos deben ser más granulares que los roles cuando el sistema crece. Un rol puede ser “docente”, pero los permisos específicos pueden variar por escuela, grupo o módulo.
Backups¶
Toda arquitectura seria necesita estrategia de respaldo.
- D1: exportaciones y respaldo periódico según criticidad.
- Firestore: políticas de export o snapshots según entorno.
- R2/S3: versionado o redundancia según el caso.
Logs¶
Los logs deben capturar operaciones sensibles, errores y eventos de seguridad.
Auditoría¶
En sistemas educativos o de credenciales, la auditoría no es opcional. Debe quedar registro de:
- Quién hizo qué.
- Cuándo.
- Desde dónde.
- Sobre qué recurso.
- Con qué resultado.
Protección DDoS y Firewall¶
Cloudflare aporta una ventaja enorme aquí gracias a su red, WAF y controles perimetrales.[cite:166][cite:167]
Rate Limiting¶
Cloudflare documenta rate limiting tanto a nivel WAF como a nivel Worker bindings, permitiendo reglas por API key, ruta, usuario o clase de cliente.[cite:32][cite:167][cite:168]
Secrets¶
Los secretos nunca deben quedar hardcodeados en frontend o repositorios. Deben almacenarse en el sistema de secretos correspondiente del proveedor y exponerse solo al runtime seguro.
Escalabilidad¶
Una arquitectura profesional no debe rehacerse por completo cada vez que el número de usuarios crece un orden de magnitud.
De 100 a 1,000 usuarios¶
Prioridad:
- Simplicidad.
- Bajo costo.
- Pocas piezas.
Una arquitectura Pages + Workers + Firebase Auth + Firestore + R2 suele ser más que suficiente.
De 1,000 a 10,000 usuarios¶
Prioridad:
- Separar rutas públicas y administrativas.
- Añadir observabilidad real.
- Afinar reglas de seguridad.
- Revisar costos de lecturas, almacenamiento y email.
De 10,000 a 100,000 usuarios¶
Prioridad:
- Caché inteligente.
- Rate limiting.
- Desacoplamiento de procesos pesados.
- Estrategias de partición lógica por cliente, escuela o módulo.
- Auditoría madura.
De 100,000 a 1,000,000 usuarios¶
Prioridad:
- Modularización fuerte.
- Observabilidad avanzada.
- Procesamiento asincrónico.
- Revisión seria de costos por servicio.
- Capacidad de sustituir un componente sin rediseñar todo.
La arquitectura correcta no es la que evita cualquier cambio. Es la que permite evolucionar sin traumas.
Costos¶
El costo nunca debe analizarse de forma aislada por proveedor. Debe analizarse por patrón de uso.
Sitio institucional¶
Generalmente gana Cloudflare por simplicidad y costo bajo cuando el sitio es principalmente estático.
Blog profesional¶
Cloudflare vuelve a ser muy competitivo por Pages, caché y despliegue simple.
Plataforma educativa¶
Una arquitectura híbrida suele ser más razonable:
- Cloudflare para frontend y edge.
- Firebase para auth y parte del backend BaaS.
- AWS solo cuando se necesita correo masivo o voz.
Credenciales Digitales¶
Suele ganar una arquitectura híbrida porque rara vez un solo proveedor resuelve óptimamente frontend, validación pública, auth, archivos, correo y voz al mismo tiempo.
NLink¶
Suele ganar Cloudflare casi puro: Workers + D1 + Analytics + Pages.
IA El Profe¶
Puede ganar Cloudflare como núcleo si el enfoque principal es edge AI con Workers AI y Vectorize.[cite:160][cite:161]
Comparativa general¶
- Cloudflare: muy competitivo en edge, frontend, red y primitives integradas.[cite:166]
- Firebase: muy fuerte en auth, BaaS y velocidad de producto.[cite:111]
- AWS: muy fuerte en especialización de servicios e infraestructura amplia.[cite:127][cite:148][cite:142]
- Arquitectura híbrida: suele ser la mejor cuando el proyecto tiene necesidades diversas y claras.
Nota de rigor¶
Una estimación numérica exacta para cada arquitectura requeriría consolidar las páginas oficiales vigentes de pricing de todos los servicios implicados, algo que excede esta iteración. Por rigor técnico, aquí se presentan comparativas cualitativas y decisiones estructurales, no cifras inventadas.
Diagramas ASCII¶
Diagrama base general¶
Usuario
|
v
Internet
|
v
Cloudflare
|
+----> Pages
+----> Workers
|
+----> Firebase Authentication
+----> Firestore
+----> R2
+----> D1
+----> AWS (SES / Polly / S3)
+----> Analytics
|
v
Respuesta
Diagrama detallado de arquitectura híbrida completa¶
+------------------+
| Usuario |
+---------+--------+
|
v
+------------------+
| Internet |
+---------+--------+
|
v
+------------------------------+
| Cloudflare DNS / CDN / WAF |
+---------+--------------------+
|
+------+------+
| |
v v
+--------+ +----------------+
| Pages | | Workers |
| Front | | API / Edge |
+---+----+ +--------+-------+
| |
| +----> D1
| +----> R2
| +----> Vectorize
| +----> Workers AI
| +----> Rate limiting
| +----> Logs / Analytics
|
+----> Firebase Authentication
+----> Firestore
+----> Cloud Messaging
+----> Storage (si aplica)
+----> Cloud Functions (si aplica)
+----> AWS SES
+----> AWS Polly
+----> AWS S3 (si aplica)
Buenas prácticas¶
- Diseñar desde el problema, no desde el proveedor.
- Elegir la tecnología por patrón de acceso y responsabilidad.
- Mantener separadas las rutas públicas y administrativas.
- Diseñar auth y permisos desde el inicio.
- Usar el edge para lo que realmente aporta valor.
- Mantener observabilidad y auditoría desde etapas tempranas.[cite:90][cite:142]
- No cargar a una sola base de datos con todo el sistema por comodidad.
- Documentar la arquitectura antes de programar.
Errores comunes¶
- Empezar el proyecto eligiendo framework y no arquitectura.
- Usar Firebase, AWS o Cloudflare “porque sí”, sin justificar cada pieza.
- Tratar Firestore como si fuera SQL o D1 como si fuera un data warehouse.
- Enviar archivos grandes a través de rutas no diseñadas para eso.
- No separar backend administrativo y validación pública.
- No pensar en logs ni auditoría hasta que aparece un incidente.
- Diseñar para 100 usuarios una app que claramente apunta a 100,000.
Curiosidades¶
- Cloudflare presenta su plataforma de desarrollo como un conjunto de primitivas integradas, lo que facilita pensar arquitecturas por composición y no como servicios aislados.[cite:166]
- Los bindings de Workers incluyen acceso directo a D1, R2, Vectorize, Queues, Rate Limiting y otros recursos, lo que reduce fricción al diseñar backends modulares en el edge.[cite:164]
- Firebase sigue siendo una de las opciones más cómodas para identidad y BaaS por la cantidad de servicios sin costo base en Spark y Blaze, como Analytics, App Check, Cloud Messaging, Crashlytics y Remote Config.[cite:111]
- AWS conserva una ventaja enorme cuando el proyecto necesita servicios especializados muy maduros, como object storage con S3, observabilidad con CloudWatch o voz con Polly.[cite:148][cite:142][cite:128]
Resumen¶
La arquitectura es el verdadero plano del sistema. El lenguaje, el framework y hasta la base de datos importan, pero su valor depende de cómo encajan dentro de una estructura coherente.
Un proyecto profesional se diseña respondiendo preguntas: quién usa el sistema, qué datos existen, qué partes son públicas, qué partes son privadas, qué debe escalar primero, qué debe auditarse, qué servicio resuelve mejor cada responsabilidad y cómo evitar que el crecimiento destruya la simplicidad inicial.
Cloudflare, Firebase y AWS no deben verse como religiones tecnológicas. Deben verse como cajas de herramientas. Cloudflare destaca en edge, frontend y red. Firebase destaca en identidad y BaaS. AWS destaca en amplitud y especialización. El arquitecto profesional no idolatra una sola caja: combina piezas con criterio.
Glosario¶
- Arquitectura de software: estructura general del sistema y sus relaciones.
- Arquitectura en la nube: diseño de servicios, infraestructura y flujos sobre proveedores cloud.
- Arquitectura distribuida: sistema compuesto por múltiples componentes interconectados.
- Desacoplamiento: separación entre piezas para reducir dependencia rígida.
- Escalabilidad: capacidad de crecer sin rediseño total.
- Alta disponibilidad: capacidad de seguir operando pese a fallos parciales.
- Modularidad: organización del sistema en componentes claros.
- Pages: plataforma de frontend y aplicaciones full-stack en Cloudflare.[cite:166]
- Workers: funciones serverless globales de Cloudflare.[cite:163]
- R2: almacenamiento de objetos dentro del ecosistema Cloudflare.[cite:160][cite:164]
- D1: base de datos SQL serverless para Workers y Pages.[cite:166][cite:164]
- Vectorize: servicio de búsqueda vectorial integrado con Workers.[cite:164]
- Workers AI: plataforma de inferencia AI de Cloudflare.[cite:160][cite:161]
- Firestore: base de datos documental de Firebase.[cite:111]
- Firebase Authentication: servicio de identidad de Firebase.[cite:111]
- SES: servicio de email programático de AWS.
- Polly: servicio de texto a voz de AWS.[cite:128]
- CloudWatch: monitoreo, métricas y logs de AWS.[cite:142]
- Rate Limiting: control de frecuencia de solicitudes para prevenir abuso.[cite:32][cite:167]
- Auditoría: registro trazable de acciones relevantes del sistema.
20 preguntas de autoevaluación¶
- ¿Por qué la arquitectura importa más que el lenguaje de programación?
- ¿Qué diferencia existe entre arquitectura de software y arquitectura en la nube?
- ¿Qué significa desacoplar un sistema?
- ¿Cómo se define correctamente el problema antes de elegir servicios?
- ¿Por qué identificar usuarios cambia la arquitectura?
- ¿Cómo decidir si un dato debe ir a SQL, NoSQL, object storage o vector storage?
- ¿Cuándo tiene sentido usar Firebase Authentication?[cite:111]
- ¿Cuándo tiene sentido usar Workers como backend principal?[cite:163][cite:166]
- ¿Por qué un sitio institucional puede vivir casi por completo en Cloudflare?
- ¿Qué módulo de una plataforma educativa suele requerir más cuidado arquitectónico?
- ¿Por qué un sistema de credenciales digitales necesita separar panel administrativo y validación pública?
- ¿Qué hace de NLink un excelente caso para Workers + D1?
- ¿Qué papel cumplen Vectorize y Workers AI en una plataforma RAG?[cite:160][cite:161][cite:164]
- ¿Qué ventajas ofrece una arquitectura híbrida frente a una mono-plataforma?
- ¿Qué capas mínimas de seguridad debería tener un sistema escolar?
- ¿Cómo debe evolucionar la arquitectura entre 100 y 100,000 usuarios?
- ¿Por qué el monitoreo y la auditoría deben pensarse desde el inicio?[cite:90][cite:142]
- ¿Qué errores comunes destruyen la mantenibilidad de una arquitectura?
- ¿Cómo justificarías el uso de AWS solo para SES y Polly dentro de una arquitectura mayoritariamente Cloudflare?
- ¿Cómo diseñarías la arquitectura completa de una plataforma educativa nacional antes de escribir código?
Proyecto práctico¶
El proyecto práctico consiste en diseñar la arquitectura completa de una plataforma educativa nacional para aproximadamente 100,000 usuarios.
Objetivo¶
Proponer una arquitectura profesional lista para iniciar desarrollo, justificar cada decisión tecnológica, estimar costos de forma cualitativa, identificar riesgos, proponer medidas de seguridad y explicar cómo evolucionará durante los próximos cinco años.
Supuestos del sistema¶
- 100,000 usuarios registrados.
- Múltiples escuelas o instituciones.
- Paneles para docentes, alumnos, padres y directivos.
- Documentos, credenciales y reportes.
- Notificaciones por correo y push.
- Validación pública de credenciales.
- Módulo futuro de IA educativa.
Arquitectura propuesta¶
+------------------+
| Usuarios |
+--------+---------+
|
v
+-------------+
| Internet |
+------+------+
|
v
+----------------------------------+
| Cloudflare DNS / CDN / WAF |
+---------------+------------------+
|
+---------------------------+----------------------------+
| | |
v v v
+--------------------+ +--------------------+ +------------------+
| Cloudflare Pages | | Cloudflare Workers | | Public validation |
| Frontend principal | | APIs / middleware | | routes / QR |
+----------+---------+ +----------+---------+ +---------+--------+
| | |
| +----> D1 (módulos SQL) |
| +----> R2 (fotos / PDFs) |
| +----> Rate limiting |
| +----> Logs / traces |
| +----> Vectorize futuro |
| +----> Workers AI futuro |
| |
+----> Firebase Authentication
+----> Firestore (usuarios / estado / mensajería ligera)
+----> Cloud Messaging
+----> Storage opcional heredado
+----> Cloud Functions opcionales
|
+----> AWS SES (correo transaccional e institucional)
+----> AWS Polly (accesibilidad y voz)
+----> GitHub (repositorio y despliegue)
Justificación tecnológica¶
Cloudflare como capa principal¶
Se elige Cloudflare como infraestructura principal porque concentra:
- DNS.
- CDN.
- WAF.
- Pages.
- Workers.
- R2.
- Rate limiting.
- Observabilidad edge.
Esto permite una capa pública muy rápida, distribuida y segura.[cite:166][cite:167][cite:32]
Firebase Authentication¶
Se elige Firebase Authentication porque resuelve rápidamente identidad para múltiples tipos de usuario y proveedores sin obligar a construir todo el sistema de auth desde cero.[cite:111]
Firestore¶
Se usa para componentes donde el modelo documental es cómodo:
- perfiles de usuario,
- estados livianos,
- configuraciones,
- notificaciones,
- ciertos módulos operativos.
D1¶
Se reserva para módulos más relacionales o tabulares, por ejemplo:
- asistencias,
- calificaciones,
- relaciones escuela-grupo-curso,
- bitácoras con estructura definida.
R2¶
Se usa para fotografías, constancias, PDFs, plantillas y binarios del sistema.[cite:160][cite:164]
SES¶
Se usa para correo transaccional a gran escala: altas, confirmaciones, avisos y comunicación institucional.
Polly¶
Se usa para accesibilidad, lectura de materiales y componentes de audio institucional.[cite:128]
Riesgos principales¶
- Exceso de lecturas en Firestore por mal modelado.
- Mezcla excesiva entre módulos documentales y relacionales.
- Falta de trazabilidad de operaciones administrativas.
- Growth inesperado en envío de correo o almacenamiento.
- Dependencia poco clara entre Workers y servicios externos.
Medidas de seguridad¶
- Auth obligatoria para paneles.
- Roles y permisos granulares.
- WAF y rate limiting perimetral.[cite:167][cite:32]
- Logs de operaciones sensibles.
- Separación total entre validación pública y panel interno.
- Gestión estricta de secrets.
- Auditoría administrativa.
- Backups y versionado de activos críticos.
Evolución a cinco años¶
Año 1¶
Lanzamiento del núcleo: frontend, auth, usuarios, cursos, asistencias, documentos y credenciales.
Año 2¶
Mejora de observabilidad, paneles más complejos, reportes y control administrativo más granular.
Año 3¶
Mayor automatización, optimización de costos, reestructuración de módulos de mayor carga y expansión de integraciones.
Año 4¶
Incorporación sólida de IA educativa: RAG, búsqueda documental y asistentes por rol mediante Vectorize y Workers AI.[cite:160][cite:161]
Año 5¶
Consolidación nacional, multiinstitución madura, auditoría avanzada, aislamiento por clientes grandes y arquitectura más orientada a dominios internos.
Lección final del proyecto¶
La arquitectura correcta no es la más “impresionante” ni la que usa más servicios. Es la que resuelve el problema con claridad, puede crecer sin traicionar su simplicidad inicial y mantiene separadas las responsabilidades críticas. Diseñar así es, en realidad, una forma de escribir software antes del código.