Serverless en TypeScript: AWS Lambda y alternativas para el backend

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Serverless en TypeScript: tu backend sin servidores (y sin dolores de cabeza)



¡Hola, colega! Si alguna vez has configurado un VPS, has lidiado con nginx, has monitoreado la carga de la CPU y has reiniciado un PostgreSQL caído a las tres de la mañana, este artículo es para ti. El mundo se mueve hacia serverless (computación sin servidor), y TypeScript es el lenguaje ideal para subirte a este tren en plena marcha.



Analicemos qué son las funciones serverless, cómo escribirlas en TypeScript y qué plataformas (AWS Lambda, Google Cloud Functions, Yandex Cloud Functions) elegir para tu proyecto. Spoiler: habrá código, habrá ejemplos, pero no habrá servidores.



¿Qué es Serverless? (Spoiler: los servidores siguen existiendo)



El nombre "serverless" es un truco de marketing. Los servidores, por supuesto, existen, pero tú no sabes nada de ellos y no quieres saberlo. Simplemente escribes una función (generalmente en TypeScript), la subes a la nube y se ejecuta bajo demanda. Pagas solo por el tiempo de ejecución, ni por un servidor inactivo ni por la escalabilidad.



Esto se llama FaaS (Function as a Service). Las principales ventajas son:



  • Escalado automático — de 0 a 10 000 solicitudes por segundo en cuestión de segundos.
  • Ahorro — pagas por milisegundos de ejecución, no por alquilar una máquina.
  • Menos DevOps — la nube actualiza el entorno de ejecución y parchea vulnerabilidades por sí sola.
  • TypeScript listo para usar — todos los grandes proveedores admiten Node.js y, por lo tanto, TypeScript.


Pero también hay desventajas: arranque en frío (primeros milisegundos de carga), límite de tiempo de ejecución (generalmente 15 minutos) y dificultades con la depuración.



Escribiendo nuestra primera función Serverless en TypeScript para AWS Lambda



AWS Lambda es el rey de serverless. Empecemos con él. Instala aws-sdk y @types/aws-lambda para TypeScript.



npm init -ynpm install typescript @types/node aws-lambda --save-devnpx tsc --init


Crea el archivo handler.ts:



import { APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';

export const handler = async (event: APIGatewayProxyEvent): Promise<APIGatewayProxyResult> => { const name = event.queryStringParameters?.name || 'Invitado'; return { statusCode: 200, headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ message: `¡Hola, ${name}! Esta es una función serverless en TypeScript.`, timestamp: new Date().toISOString(), }), };};


Compila el proyecto:



npx tsczip -r function.zip .


Sube el archivo comprimido a AWS Lambda a través de la consola, especifica el runtime Node.js 20.x y como punto de entrada handler.handler.



¡Listo! Ahora tienes una API HTTP que no requiere servidor. Puedes conectarla a API Gateway y usarla.



Google Cloud Functions: la alternativa de Google con TypeScript



Si prefieres el ecosistema de Google (Firebase, BigQuery, GCP), entonces Google Cloud Functions es tu opción. La sintaxis es similar a AWS, pero hay matices.



Instala la herramienta:



npm install -g @google-cloud/functions-framework


Crea index.ts:



import { Request, Response } from 'express';

export const helloWorld = (req: Request, res: Response) => { const name = req.query.name || 'Mundo'; res.json({ message: `¡Hola, ${name}! Esto es Google Cloud Functions en TypeScript.`, timestamp: new Date().toISOString(), });};


Para pruebas locales:



npx @google-cloud/functions-framework --target=helloWorld


Despliegue con un solo comando:



gcloud functions deploy hello-world \  --runtime nodejs20 \  --trigger-http \  --allow-unauthenticated \  --entry-point hell                

Blogs

Book Recommendations