Despliegue en AWS: ¿Dónde alojar mi aplicación web?
Al finalizar este tema
Comprenderá las diferencias entre los principales métodos de despliegue de aplicaciones web y podrá elegir la opción adecuada según la escala de su proyecto.
Funciona bien en local, pero...
Mi sitio web se ejecuta en localhost:3000. El diseño es correcto y las funciones operan bien. Ahora quiero mostrárselo a mis amigos. Sin embargo, localhost:3000 solo es accesible desde mi propia computadora.
Para que otras personas puedan acceder, debo subir el código a un servidor conectado a Internet. Esto se conoce como despliegue (Deploy). El problema es que hay demasiadas opciones.
Lo más básico: alquilar un servidor (EC2)
AWS EC2 consiste en alquilar una computadora conectada a Internet. Solo hay que crear un servidor Ubuntu, conectarse mediante SSH, instalar Node.js, subir el código y realizar el npm start.
ssh ubuntu@13.124.xx.xxgit clone https://github.com/me/my-app.gitcd my-appnpm installnpm startVentajas: Tengo control total sobre el servidor. Puedo instalar cualquier software que desee.
Desventajas: Debo gestionar todo el servidor por mi cuenta. Aplicar parches de seguridad, configurar certificados HTTPS, reiniciar el servidor si falla y añadir más servidores si aumenta el tráfico... Todo esto es mi responsabilidad.
Usar EC2 para proyectos pequeños puede resultar excesivo. Sin embargo, para servicios a gran escala o cuando se requieren configuraciones de servidor especiales, EC2 es la opción más flexible.
Para sitios estáticos: S3 + CloudFront
Cuando el resultado de la compilación de React, Vue o Next.js (exportación estática) sean archivos HTML, CSS y JS, no se necesita un servidor. Basta con almacenar los archivos y servirlos cuando se reciban las solicitudes.
AWS S3 es un servicio de almacenamiento de archivos. Solo hay que subir los resultados de la compilación y habilitar el alojamiento web. Si se añade CloudFront (CDN) delante, se puede acceder rápidamente desde cualquier parte del mundo.
compilación → subida a S3 → conexión con CloudFront → configuración de dominioEl costo mensual es prácticamente nulo. Para proyectos personales con poco tráfico, el costo es de apenas unos pocos wones al mes.
Serverless: Lambda
Se utiliza AWS Lambda cuando se necesita un servidor API pero no se desea administrar EC2. Al implementar una función, esta solo se ejecuta cuando se recibe una solicitud; si no se utiliza, el costo es cero.
exports.handler = async (event) => {
const name = event.queryStringParameters.name;
return {
statusCode: 200,
body: JSON.stringify({ message: `Hello, ${name}!` }),
};
};Al implementar esta función en Lambda y conectarla a API Gateway, se puede acceder a través de https://xxx.execute-api.ap-northeast-2.amazonaws.com/hello?name=world.
Es ideal para APIs que no requieren que el servidor esté siempre activo, procesamiento de eventos y tareas programadas (cron jobs). Sin embargo, la primera invocación puede presentar un arranque en frío (latencia inicial), por lo que se debe tener precaución en servicios donde la respuesta en tiempo real es crítica.
Una opción más sencilla: PaaS
Aunque AWS es potente, requiere mucho tiempo de aprendizaje. IAM, VPC, grupos de seguridad, balanceadores de carga... hay una enorme cantidad de configuraciones por realizar.
Por ello, existen servicios que simplifican el despliegue:
Vercel — La empresa creadora de Next.js. Al conectar un repositorio de GitHub, se realiza un despliegue automático con cada push. Casi no requiere configuración.
Netlify — Especializado en sitios estáticos y funciones serverless. Ofrece una experiencia similar a Vercel.
Railway / Render — Ofrecen una flexibilidad similar a EC2, pero reduciendo la carga de administración. Admiten despliegues basados en Docker.
Estos servicios utilizan internamente nubes como AWS o GCP, pero gestionan las configuraciones complejas por usted. Para proyectos personales o las etapas iniciales de una startup, esta es la opción más realista.
¿Cómo elegir?
Solo HTML/CSS/JS → S3, Vercel, Netlify (alojamiento estático)
API en Node.js → Vercel, Railway, Lambda
DB + backend fullstack → Railway, Render, EC2
Tráfico masivo + infraestructura personalizada → EC2 + ALB + RDS (conjunto completo de AWS)Si es la primera vez, lo común es empezar con Vercel o Railway y, a medida que el servicio crezca, migrar a AWS.
Claves
El despliegue consiste en subir el código a un servidor conectado a Internet. Las opciones básicas son AWS EC2 (gestión directa del servidor), S3 (archivos estáticos) y Lambda (serverless). Para empezar rápidamente, lo ideal son las PaaS como Vercel o Railway; si se requiere un control total, EC2 es la opción adecuada.