El término serverless hace referencia a un modelo de arquitectura en la nube en el que los desarrolladores pueden ejecutar código sin gestionar la infraestructura subyacente. En lugar de preocuparse por servidores, escalabilidad o administración, el proveedor de la nube se encarga de todo eso. Aunque el nombre sugiere que no hay servidores, en realidad estos siguen existiendo, pero el desarrollador no necesita gestionarlos directamente. Este enfoque permite concentrarse en la lógica de la aplicación, liberando tiempo y recursos.
El enfoque serverless está basado en un modelo en el que los recursos de cómputo se asignan de manera dinámica y se facturan según el uso real. No hay necesidad de mantener servidores en ejecución constantemente, ya que las funciones se ejecutan solo cuando son invocadas y se cobran en función del tiempo que permanecen activas.
1. Sin gestión de servidores: No necesitas provisionar, escalar ni gestionar servidores. Todo esto lo maneja el proveedor de la nube.
2. Escalabilidad automática: El sistema escala automáticamente, adaptándose a las demandas de tráfico o carga de trabajo, sin intervención manual.
3. Pago por uso: Se cobra solo por el tiempo de ejecución de la función, lo que significa que no pagas por recursos inactivos.
4. Despliegue rápido: Al eliminar la complejidad de la infraestructura, los desarrolladores pueden centrarse exclusivamente en escribir código y desplegar aplicaciones rápidamente.
AWS Lambda es la plataforma serverless de Amazon Web Services (AWS) que permite ejecutar código en respuesta a eventos sin necesidad de aprovisionar o gestionar servidores. Lambda ejecuta tu código solo cuando es necesario y escala automáticamente según la cantidad de solicitudes recibidas.
1. Función Lambda: En AWS Lambda, el código se organiza en funciones. Una función Lambda es un fragmento de código que se ejecuta en respuesta a un evento desencadenante. Cada función tiene un objetivo claro y debe realizar una única tarea específica.
2. Eventos desencadenantes: Lambda se basa en eventos para ejecutar funciones. Un evento puede ser un cambio en una base de datos, una solicitud HTTP a través de Amazon API Gateway, la modificación de un archivo en Amazon S3 o incluso la publicación de un mensaje en una cola de Amazon SQS. Al ocurrir el evento, Lambda ejecuta automáticamente la función.
3. Capa de ejecución: AWS Lambda soporta varios lenguajes de programación como Python, Node.js, Java, Go y más. Cuando se ejecuta una función Lambda, AWS carga el código dentro de un entorno de ejecución preconfigurado que incluye todo lo necesario para ejecutar el código.
4. Ejecución en contenedores: Cada vez que se invoca una función Lambda, AWS Lambda inicia un contenedor liviano que aísla la ejecución de esa función. Estos contenedores son gestionados completamente por AWS y son destruidos al finalizar la ejecución, optimizando los recursos.
Crear una función Lambda en AWS es un proceso sencillo. A continuación, se describen los pasos básicos:
1. Escribir el código de la función: Puedes escribir tu código directamente en la consola de AWS o cargarlo como un archivo ZIP o contenedor Docker.
2. Configurar el desencadenante: AWS Lambda necesita un evento para iniciar la ejecución de la función. Esto puede ser configurado desde la consola seleccionando servicios como S3, API Gateway, DynamoDB, entre otros.
3. Asignar permisos con IAM: Para que Lambda interactúe con otros servicios de AWS, es necesario asignar permisos mediante IAM (Identity and Access Management). Esto se hace creando roles que permitan a Lambda acceder a los recursos necesarios.
4. Configurar tiempo de ejecución y memoria: AWS Lambda permite ajustar el tiempo máximo de ejecución (hasta 15 minutos) y la cantidad de memoria asignada a la función (desde 128 MB hasta 10 GB).
5. Ejecutar y monitorear: Una vez desplegada la función, puedes monitorear su comportamiento en tiempo real utilizando AWS CloudWatch, que proporciona métricas y logs detallados de la ejecución.
exports.handler = async (event) => {
const name = event.name || "Mundo";
const response = {
statusCode: 200,
body: `Hola, ${name}!`
};
return response;
};
En este ejemplo, la función Lambda responde con un saludo en función de un parámetro name
pasado en el evento. Si no se proporciona un nombre, se usa "Mundo" por defecto.
AWS Lambda se integra de manera nativa con varios servicios de AWS, lo que lo convierte en una herramienta extremadamente versátil. Algunas de las integraciones más comunes son:
1. Procesamiento de datos en tiempo real: Lambda es ideal para el procesamiento de datos en tiempo real, como la transformación de datos, indexación y análisis cuando se almacenan o modifican en Amazon S3 o DynamoDB.
2. Desarrollo de microservicios: Las funciones Lambda son pequeñas y están desacopladas, lo que las convierte en bloques de construcción perfectos para arquitecturas de microservicios, donde cada función se encarga de una tarea específica.
3. Automatización de tareas en la nube: Con Lambda puedes automatizar tareas comunes de infraestructura como el escalado automático, backup de datos y despliegue de actualizaciones.
4. Creación de APIs sin servidores: Utilizando Lambda con API Gateway, puedes crear APIs escalables sin la necesidad de gestionar servidores, lo que simplifica enormemente el desarrollo de aplicaciones web o móviles.
El modelo serverless y, en particular, AWS Lambda han revolucionado la forma en que se construyen y despliegan las aplicaciones modernas. Al eliminar la necesidad de gestionar servidores y escalar automáticamente según la demanda, Lambda permite a los desarrolladores enfocarse en escribir código de valor, mejorar la eficiencia operativa y reducir costos. Aunque tiene algunas limitaciones, sus beneficios lo convierten en una excelente opción para muchas aplicaciones en la nube.
Jorge García
Fullstack developer