Serverless en TypeScript : votre backend sans serveurs (et sans maux de tête)
Bonjour, collègue ! Si tu as déjà configuré un VPS, lutté avec nginx, surveillé la charge CPU et redémarré PostgreSQL en panne à trois heures du matin — cet article est pour toi. Le monde évolue vers le serverless (calcul sans serveur), et TypeScript est le langage idéal pour sauter dans ce train en marche.
Voyons ce que sont les fonctions serverless, comment les écrire en TypeScript, et quelles plateformes (AWS Lambda, Google Cloud Functions, Yandex Cloud Functions) choisir pour votre projet. Spoiler : il y aura du code, il y aura des exemples, mais il n'y aura pas de serveurs.
Qu'est-ce que le Serverless ? (Spoiler : les serveurs existent quand même)
Le nom « serverless » est un coup de marketing. Les serveurs existent bien sûr, mais tu n'en sais rien et tu ne veux rien en savoir. Tu écris simplement une fonction (généralement en TypeScript), tu la télécharges dans le cloud, et elle s'exécute à la demande. Tu ne paies que pour le temps d'exécution — ni pour un serveur inactif, ni pour la mise à l'échelle.
Cela s'appelle FaaS (Function as a Service). Les principaux avantages :
- Mise à l'échelle automatique — de 0 à 10 000 requêtes par seconde en quelques secondes.
- Économies — vous payez pour les millisecondes d'exécution, pas pour la location d'une machine.
- Moins de DevOps — le cloud met à jour lui-même l'environnement d'exécution, corrige les vulnérabilités.
- TypeScript prêt à l'emploi — tous les grands fournisseurs supportent Node.js, donc TypeScript.
Mais il y a aussi des inconvénients : démarrage à froid (les premières millisecondes de chargement), limite de temps d'exécution (généralement 15 minutes), difficultés de débogage.
Écrivons notre première fonction Serverless en TypeScript pour AWS Lambda
AWS Lambda est le roi du serverless. Commençons par lui. Installez aws-sdk et @types/aws-lambda pour TypeScript.
npm init -ynpm install typescript @types/node aws-lambda --save-devnpx tsc --initCréez le fichier handler.ts :
import { APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';
export const handler = async (event: APIGatewayProxyEvent): Promise<APIGatewayProxyResult> => { const name = event.queryStringParameters?.name || 'Invité'; return { statusCode: 200, headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ message: `Bonjour, ${name}! Ceci est une fonction serverless en TypeScript.`, timestamp: new Date().toISOString(), }), };};Compilez le projet :
npx tsczip -r function.zip .Téléchargez l'archive dans AWS Lambda via la console, spécifiez le runtime Node.js 20.x, et le point d'entrée — handler.handler.
Terminé ! Vous avez maintenant une API HTTP qui ne nécessite pas de serveur. Vous pouvez la connecter à API Gateway et l'utiliser.
Google Cloud Functions : l'alternative TypeScript de Google
Si vous préférez l'écosystème Google (Firebase, BigQuery, GCP), alors Google Cloud Functions est votre choix. La syntaxe ressemble à AWS, mais il y a des nuances.
Installez l'outil :
npm install -g @google-cloud/functions-frameworkCréez index.ts :
import { Request, Response } from 'express';
export const helloWorld = (req: Request, res: Response) => { const name = req.query.name || 'Monde'; res.json({ message: `Bonjour, ${name}! Ceci est Google Cloud Functions en TypeScript.`, timestamp: new Date().toISOString(), });};Pour les tests locaux :
npx @google-cloud/functions-framework --target=helloWorldDéploiement en une commande :
gcloud functions deploy hello-world \ --runtime nodejs20 \ --trigger-http \ --allow-unauthenticated \ --entry-point hell