Sin servidor
Resumen
La arquitectura sin servidor (serverless) es una arquitectura en la que se delega al proveedor de la nube la gestión de la infraestructura, como el aprovisionamiento de servidores, el escalado, la aplicación de parches y la respuesta a fallos. Los desarrolladores se centran en escribir el código de la aplicación y no necesitan pensar en cuándo, en qué servidor ni en cuántos se ejecuta ese código. No significa que «no haya servidores», sino que «no gestionas los servidores».
El pago por uso y la estructura de costes
Una gran característica de la arquitectura sin servidor es el modelo de pago por uso, en el que se cobra solo por las solicitudes que se producen. Los servidores tradicionales funcionan las 24 horas, así que generan costes incluso de madrugada, cuando el tráfico es cero. Con la arquitectura sin servidor, si no hay solicitudes, tampoco se paga por la ejecución correspondiente.
Para el desarrollo personal y los servicios pequeños, esta característica es una gran ventaja. En un servicio con unos pocos miles de solicitudes al mes, el número de solicitudes cabe en la capa gratuita de AWS Lambda (1 millón de solicitudes al mes). Aunque el servicio crezca y aumente el tráfico, como se amplía automáticamente, la carga de planificar la capacidad de antemano es pequeña.
El arranque en frío y cómo afrontarlo
Uno de los retos de la arquitectura sin servidor es el arranque en frío. Si pasa cierto tiempo sin solicitudes, el entorno de ejecución se elimina, y en la siguiente solicitud hay que volver a crear el entorno. El tiempo que tarda esta inicialización va de menos de 100 milisegundos a más de 1 segundo.
Hay varias formas de reducir el efecto del arranque en frío. Elegir el entorno de ejecución (la velocidad de arranque cambia según el tipo), reducir el tamaño del paquete de despliegue o usar Provisioned Concurrency (una función que reserva entornos de ejecución de antemano), entre otras. En un servicio como un buzón de preguntas, que debe responder en tiempo real a las acciones de los usuarios, hace falta un diseño que reduzca la sensación del arranque en frío.
La configuración sin servidor del servicio de buzón de preguntas
El servicio de buzón de preguntas está formado por completo con arquitectura sin servidor, desde la interfaz hasta el servidor de aplicación. La interfaz es Next.js desplegado en Lambda con OpenNext, y la API se ofrece con Lambda Function URL. La base de datos es DynamoDB, el envío de tokens de autenticación usa SES y el filtrado de contenido usa Bedrock.
Con esta configuración no hay trabajo de gestión de los propios servidores, y el coste de la infraestructura sube y baja según el tráfico. Si mantienes una instancia de EC2 funcionando todo el tiempo, pagas según las horas de funcionamiento aunque no haya tráfico, pero con la configuración sin servidor es más fácil contener el gasto mientras hay poco tráfico.