Muchas veces me preguntan cómo hago mis páginas web.
Dónde las hosteo, cómo son tan rápidas, cómo tienen elementos dinámicos y cómo las publico tan rápido.
Tengo muchísimas webs para cursos, programas, proyectos personales y más.
Y aun así, mi cuenta de AWS tiene una factura de menos de 5 dólares por mes. La mayoría del gasto se lo lleva Route53.
¿Cómo es posible?
La respuesta no te va a sorprender: uso AWS Serverless para todas mis páginas web.
En este post te muestro cómo lo hago.
Arquitectura
Todas mis webs siguen un mismo patrón.
La estructura es sencilla y siempre repito los mismos componentes. Solo cambia el contenido.
Me gusta hacerlo así porque cuando vuelvo a un proyecto sé exactamente qué me voy a encontrar.
-
Contenido estático: lo hosteo en AWS Amplify. Por debajo usa S3 + CDN y no tengo que configurar nada. Además, me da integración continua con GitHub, algo clave porque el frontend es lo que más cambio seguido.
-
Autenticación: uso Cognito. Muchas veces con el Hosted UI, que ya resuelve login y registro de usuarios sin esfuerzo. En proyectos donde quiero más control, construyo mi propia pantalla de login.
-
Backend: mi combo favorito es API Gateway + Lambda + DynamoDB. Resuelve el 99% de mis necesidades. Y siempre aseguro mis APIs con Cognito y authorizers en API Gateway.
Detalles de implementación
-
Frontend: uso mucho Astro con componentes de React. Astro genera sitios estáticos súper rápidos, y React me permite agregar partes dinámicas. Lo mejor de los dos mundos.
-
Backend: escribo mis funciones de Lambda en TypeScript. También la infraestructura la defino en TypeScript usando AWS CDK.
-
Despliegues: nunca despliego a mano. Tengo GitHub Actions que cada vez que hago un commit, se despliegan automáticamente la infraestructura y el código. Esto me ahorra errores y tiempo.
-
Analíticas: para entender quién visita mis sitios uso esta librería open source: serverless-website-analytics. Me encanta porque combina todas mis webs en un único dashboard.
Reflexiones finales
-
A veces las arquitecturas más simples son las más potentes.
-
Esta arquitectura sencilla no es solo para proyectos personales. Empresas como Neiman Marcus y Noom la usan en producción todos los días.
-
Si necesitás GraphQL APIs, podés reemplazar API Gateway por AppSync fácilmente.
-
CI/CD e Infraestructura como Código no son opcionales, aunque tu proyecto sea personal. Te ayudan a mantener las aplicaciones en el tiempo, y tu futuro yo te lo va a agradecer.