Lo que construimos, con la factura al lado.
Cada caso muestra la arquitectura, las decisiones que tomamos y lo que dejamos fuera a propósito, con el coste mensual partida a partida. Empezamos por nuestra propia plataforma, porque es la que podemos publicar sin pedir permiso a nadie. Los casos de clientes irán llegando a medida que los autoricen.
Dos casos por ahora.
Tres apps con base de datos, backend y frontend por 12 USD al mes
Una instancia Graviton, MySQL y tres contenedores de backend detrás de Caddy, frontends en S3 y CloudFront, sin IPv4 pública. Menos que una base de datos gestionada sola.
Leer el caso Cloud · AWS · WebUna web bilingüe y una app React servidas por céntimos
Un bucket, una distribución de CloudFront y una función de 40 líneas para URLs limpias. Fuentes propias, TLS de ACM y un solo script de despliegue para las dos.
Leer el casoTres apps con base de datos, backend y frontend alojadas desde 12 USD al mes.
Nuestra propia plataforma: tres aplicaciones web, cada una con frontend, API y base de datos MySQL, en producción sobre AWS. Todo junto cuesta menos que una sola instancia de base de datos gestionada, sin ningún truco que no recomendaríamos a un cliente.
| Partida | Qué cubre | USD / mes |
|---|---|---|
| EC2 t4g.small, Compute Savings Plan de un año | MySQL 8, tres contenedores de backend y Caddy, 730 horas. Sin pago inicial; 13,4 USD bajo demanda | 8,5 |
| EBS gp3, 20 GB | Sistema operativo, imágenes, volumen de la base de datos y certificados | 1,8 |
| Route 53 | Una zona alojada y las consultas DNS de todos los subdominios | 0,6 |
| Snapshots de EBS | Copia incremental diaria del volumen, tres días de retención | 0,4 |
| S3 y CloudFront | Tres frontends estáticos y una distribución por app, también delante de las API; certificados TLS de ACM | < 0,1 |
| Dirección IPv4 pública | Ninguna. La instancia es solo IPv6 y CloudFront llega a ella por IPv6. Serían 3,7 USD | 0 |
| Transferencia de salida | CloudFront dentro de su capa gratuita; los primeros 100 GB al mes desde EC2 son gratis | 0 |
| Total | Compromiso de un año solo sobre la instancia | ≈ 11,5 |
Cómo está montado
Un solo stack de Docker Compose para la infraestructura compartida: MySQL con un buffer pool de 128 MB, phpMyAdmin accesible solo desde la instancia y Caddy como proxy inverso. Cada app añade su propio compose con un contenedor de backend de 512 MB en la red compartida. CloudFront va delante de todo, termina TLS y habla con el origen por IPv6, así que la instancia no necesita IPv4 pública. La administración va por Session Manager, que es gratis.
Lo que no te da
No hay alta disponibilidad: una instancia en una zona, así que un evento de mantenimiento supone minutos de caída. La recuperación es desde el snapshot diario. Encaja para herramientas internas, productos en fase inicial y demos. Cuando una app necesite más, se mueve solo esa a Fargate o RDS y el resto se queda donde está. Paramos aquí a propósito: una t4g.micro o una reserva de tres años rascarían unos dólares más a costa de margen o de flexibilidad.
Precios de eu-west-1 (Irlanda) en septiembre de 2026, sin impuestos. El mismo stack bajo demanda, con IPv4 pública y siete días de snapshots, sale por unos 20,5 USD al mes.
Una web bilingüe y una app React servidas por céntimos.
Esta web y la aplicación de Skyline comparten un bucket de S3 y una distribución de CloudFront. Inglés en la raíz, español en /es/ y la app en /app/. Sin servidor, sin framework en las páginas públicas y sin nada cargado de terceros.
| Pieza | Decisión | Por qué |
|---|---|---|
| Almacenamiento | Un bucket privado de S3, leído solo por CloudFront mediante origin access control | Sin bucket público, un solo sitio que sincronizar |
| URLs | Una CloudFront Function reescribe /cloud a /cloud.html y /es/ a /es/index.html; las URLs con .html o /index.html redirigen a la forma limpia | Una URL canónica por página |
| Idiomas | Inglés por defecto, español en /es/ con hreflang en cada página y en el sitemap; el selector de idioma apunta a la misma página en el otro idioma | La página correcta en cada mercado |
| Caché | HTML cinco minutos; fuentes y assets con hash de la app un año e inmutables; el index.html de la app nunca se cachea | Publicación inmediata, repeticiones baratas |
| Errores | S3 devuelve un 404 real y CloudFront sirve una página 404 propia con la navegación del sitio | Sin pantallas de error en blanco |
| TLS y DNS | Certificado de ACM en el dominio propio, zona en Route 53 | Certificado gratis, renovación automática |
| Puntos de presencia | Price class 100: solo los bordes de CloudFront en Europa y Norteamérica, donde está la audiencia | La tarifa por GB más baja |
| Despliegue | Un script compila la app, sincroniza web y app con sus políticas de caché e invalida la distribución | Un comando, menos de dos minutos |
Cómo está montado
Las páginas públicas son ficheros HTML planos con una hoja de estilos compartida, escritos para cargar en un solo viaje: fuentes precargadas, todo el layout en un CSS y los diagramas en SVG en línea. La app React se compila con Vite y se despliega bajo /app/ con nombres de fichero con hash, así que solo su documento de entrada necesita una caché corta. Todo está descrito en Terraform junto al resto de la plataforma, y la misma distribución va delante de las API del caso de hosting de arriba.
Lo que no te da
Ni renderizado en servidor ni gestor de contenidos: editar una página es editar HTML y lanzar el script de despliegue. Vale para una web de una docena de páginas mantenida por ingenieros. Si marketing necesitara publicar a diario, pondríamos un generador de sitios estáticos delante y mantendríamos el mismo bucket y la misma distribución.
Precios de eu-west-1 (Irlanda) en septiembre de 2026, sin impuestos. La capa gratuita permanente de CloudFront cubre 1 TB de transferencia y 10 millones de peticiones al mes. La zona alojada ya está contada en el caso de hosting.
¿Quieres que tu caso se parezca a estos?
Un diagnóstico de diez días con acceso de solo lectura te da primero los números.