Skip to main content

Les défis de l’architecture serverless pour les développeurs



Les Défis de l’Architecture Serverless pour les Développeurs : Naviguer dans le Paysage du Cloud Sans Serveur

1. Introduction : L’Attrait et la Complexité du Serverless

La promesse de l’informatique sans serveur résonne avec une force particulière dans le paysage technologique actuel. Elle évoque une ère où les développeurs peuvent se concentrer entièrement sur la logique métier, libérés des contraintes d’infrastructure, de la gestion des serveurs et de l’optimisation des ressources. Cette approche, souvent synonyme de réduction des coûts opérationnels, de scalabilité quasi-infinie et d’une vélocité de déploiement accrue, a naturellement captivé l’attention des entreprises et des architectes logiciels. L’engouement est palpable, transformant la manière dont les applications sont conçues, déployées et gérées dans le cloud, notamment en matière de architecture serverless.

Cependant, derrière cette façade séduisante de simplicité et d’efficacité, se cache une réalité plus nuancée. L’adoption de cette technologie, bien que porteuse d’avantages indéniables, confronte les développeurs et les équipes techniques à une série de défis inédits et parfois complexes. Il ne s’agit pas simplement de migrer des applications existantes, mais d’adopter une nouvelle philosophie de conception, de développement et d’opération. Ces obstacles peuvent aller de la courbe d’apprentissage abrupte des nouveaux paradigmes à la gestion délicate de la sécurité, en passant par l’optimisation des coûts et le débogage d’environnements distribués. Pour approfondir ce sujet, consultez découvrir cet article complet.

Cet article se propose d’explorer en profondeur ces défis inhérents à l’intégration de l’architecture serverless. Nous aborderons les aspects techniques et opérationnels qui requièrent une attention particulière, fournissant des pistes de réflexion et des stratégies concrètes pour les surmonter. L’objectif est d’équiper les professionnels avec une compréhension claire des enjeux, leur permettant ainsi de naviguer avec succès dans ce paysage du cloud en constante évolution et de tirer pleinement parti du potentiel du sans serveur.

2. La Courbe d’Apprentissage et l’Écosystème Fragmenté

L’adoption du serverless n’est pas qu’une question technique ; c’est aussi un changement de mentalité profond. Les développeurs habitués aux architectures traditionnelles (monolithiques, microservices sur VMs ou conteneurs) doivent déconstruire leurs acquis pour embrasser les spécificités du sans serveur.

Maîtriser de Nouveaux Paradigmes de Développement

Le cœur de l’architecture serverless réside dans le développement de fonctions éphémères et sans état (stateless), déclenchées par des événements. Cette approche nécessite une refonte de la manière dont les applications sont conçues :

  • Décomposition Fonctionnelle : Les applications sont découpées en unités de logique très fines, souvent une fonction pour une tâche spécifique. Cela contraste avec les services plus larges des microservices.
  • Programmation Événementielle : Tout est événement. Comprendre comment les différents services interagissent via des événements (API Gateway, S3, SQS, DynamoDB Streams, etc.) est crucial pour le flux de données et la logique applicative.
  • Gestion de l’État : Puisque les fonctions sont stateless, la gestion de l’état doit être externalisée. Cela implique l’utilisation systématique de bases de données (NoSQL comme DynamoDB, Aurora Serverless), de services de cache ou de stockage d’objets.
  • Tolérance aux Pannes : Les fonctions peuvent échouer. Concevoir des systèmes résilients qui gèrent les erreurs, les tentatives et les idempotences est fondamental.

Ces concepts, bien que puissants, demandent du temps et de l’expérience pour être maîtrisés. Les développeurs doivent apprendre à penser en termes de flux d’événements plutôt qu’en requêtes/réponses synchrones classiques, et à concevoir des architectures distribuées par nature.

La Complexité des Outils et des Fournisseurs

Le paysage serverless est dominé par les grands fournisseurs de cloud, chacun avec son propre écosystème d’outils et de services. Cette diversité, bien que bénéfique pour l’innovation, peut être une source de complexité : Pour approfondir ce sujet, consultez Comment choisir les bons outils pour vos solutions digitales.

  • Multiplicité des Services Cloud : AWS Lambda, Azure Functions, Google Cloud Functions, Cloudflare Workers… Chaque plateforme a ses spécificités, ses APIs, ses intégrations et ses limites. Maîtriser l’une ne garantit pas une transition aisée vers une autre.
  • Frameworks de Développement : Des outils comme le Serverless Framework, AWS SAM (Serverless Application Model), ou Terraform sont essentiels pour définir, déployer et gérer les ressources serverless. Leur apprentissage est une étape incontournable.
  • Abstractions et Vendor Lock-in : Choisir un fournisseur ou un framework implique souvent un certain degré de « vendor lock-in ». Bien que des efforts soient faits pour l’atténuer, la portabilité entre plateformes reste un défi.

Pour les équipes, cela signifie investir dans la formation continue et la veille technologique. Une stratégie consiste à se spécialiser sur un écosystème principal tout en gardant un œil sur les alternatives. L’utilisation de frameworks agnostiques peut également aider à réduire la dépendance à un fournisseur spécifique, mais cela vient souvent avec des compromis en termes de fonctionnalités natives.

3. Observabilité et Débogage : Les Angles Morts du Serverless

L’un des défis les plus fréquemment cités par les développeurs en architecture serverless concerne la difficulté à comprendre ce qui se passe réellement en production. La nature distribuée et éphémère des fonctions complique grandement les tâches d’observabilité et de débogage.

Le Défi de la Visibilité Distribuée

Dans un environnement serverless, une seule requête utilisateur peut traverser plusieurs fonctions, bases de données, files d’attente et autres services cloud. Suivre ce parcours devient un véritable casse-tête :

  • Logs Fragmentés : Chaque fonction génère ses propres logs. Corréler ces logs entre différentes invocations et services pour reconstituer le chemin complet d’une requête est complexe sans outils adéquats.
  • Traces Distribuées : Mettre en place un traçage distribué est essentiel pour visualiser les dépendances et les latences entre les composants. Des solutions comme AWS X-Ray, OpenTelemetry ou des outils tiers (Datadog, New Relic) sont indispensables.
  • Métriques Granulaires : Il est crucial de collecter des métriques non seulement au niveau de chaque fonction (invocations, erreurs, durée), mais aussi de l’ensemble du système pour détecter les goulots d’étranglement ou les comportements anormaux.

Conseil pratique : Implémentez des IDs de corrélation uniques pour chaque requête entrante et assurez-vous qu’ils sont propagés à travers toutes les invocations de fonctions et les interactions de services. Cela facilitera grandement le regroupement des logs et des traces.

Débogage Local et Environnements de Développement

Déboguer une fonction serverless en local est souvent un compromis. L’environnement de production est le cloud, avec ses spécificités (permissions IAM, accès aux services, réseau). Reproduire cet environnement fidèlement en local est difficile :

  • Écart d’Environnement : Le comportement d’une fonction peut varier entre le développement local et le déploiement cloud en raison de différences de versions de runtime, de configuration ou de dépendances.
  • Dépendances Cloud : Les fonctions serverless interagissent souvent avec d’autres services cloud (bases de données, files d’attente, stockage). Simuler toutes ces dépendances en local est lourd et parfois impossible.
  • Outils de Simulation : Des outils comme SAM CLI (pour AWS Lambda) ou Azure Functions Core Tools permettent de simuler l’exécution de fonctions localement, mais ils ne peuvent pas reproduire toutes les nuances de l’environnement cloud.

Stratégies pour le débogage :

  • Tests Unitaires Rigoureux : Concentrez-vous sur des tests unitaires robustes pour la logique métier de vos fonctions.
  • Déploiements Fréquents sur des Environnements de Test : Utilisez des environnements de développement et de staging dans le cloud pour tester et déboguer au plus proche de la production.
  • Logging Détaillé : Un logging précis en production est votre meilleur ami. Utilisez des outils d’analyse de logs pour explorer et filtrer efficacement.
  • Observabilité en Temps Réel : Investissez dans des solutions d’observabilité qui fournissent des métriques, des logs et des traces en temps réel pour identifier rapidement les problèmes.

Le débogage serverless exige une approche différente, plus axée sur l’observabilité et les tests automatisés que sur le débogage pas à pas traditionnel en environnement local.

4. Performance et Optimisation des Coûts : Le Jeu de l’Équilibre

La promesse de performances élastiques et de coûts réduits est un pilier de l’architecture serverless. Cependant, sans une compréhension approfondie des mécanismes sous-jacents, ces avantages peuvent se transformer en défis, notamment en termes de latence et de facturation inattendue.

Gestion du « Cold Start » et des Latences

Le « cold start » (démarrage à froid) est un phénomène inhérent aux fonctions serverless et peut impacter significativement la performance perçue par l’utilisateur :

  • Définition : Un cold start se produit lorsqu’une fonction est invoquée après une période d’inactivité. Le fournisseur cloud doit alors provisionner un nouvel environnement d’exécution, télécharger le code de la fonction, initialiser le runtime et exécuter le code d’initialisation. Cela ajoute une latence non négligeable (de quelques centaines de millisecondes à plusieurs secondes pour certains runtimes ou tailles de package).
  • Impact : Pour des applications interactives ou des APIs avec des exigences de faible latence, le cold start peut dégrader l’expérience utilisateur.

Stratégies pour minimiser le cold start :

  • Augmenter la Mémoire : Souvent, allouer plus de mémoire à une fonction réduit le temps de cold start, car cela peut aussi augmenter la puissance CPU disponible.
  • Runtimes Légers : Privilégiez des runtimes qui démarrent rapidement (Node.js, Python) si la performance est critique, par rapport à d’autres plus lourds (Java, .NET).
  • Provisioned Concurrency (Concurrence Provisionnée) : Certains fournisseurs (comme AWS Lambda) proposent des options pour maintenir un certain nombre d’instances de fonctions « chaudes », éliminant ainsi les cold starts pour ces instances. C’est efficace mais coûteux.
  • Minimiser la Taille du Package : Réduisez au maximum la taille du package de déploiement de votre fonction pour accélérer le téléchargement.
  • Initialisation Hors Handler : Placez le code d’initialisation (connexions à la base de données, chargement de dépendances) en dehors de la fonction handler pour qu’il ne s’exécute qu’une seule fois par instance (lors d’un cold start).
  • Warm-up pings : Envoyez des invocations régulières et légères à vos fonctions pour les maintenir « chaudes » (à utiliser avec parcimonie pour éviter des coûts inutiles).

Comprendre la Facturation « Pay-per-use »

Le modèle de facturation à l’usage est un atout majeur du serverless, mais il peut aussi réserver des surprises si mal compris ou mal optimisé.

  • Coûts Granulaires : Vous payez pour le nombre d’invocations, la durée d’exécution et la quantité de mémoire allouée. Chaque milliseconde et chaque Mo compte.
  • Coûts Cachés : Les fonctions serverless interagissent avec de nombreux autres services cloud (bases de données, stockage, API Gateway, etc.), qui ont chacun leur propre modèle de facturation. Une mauvaise conception peut entraîner des coûts élevés pour ces services annexes.
  • Surveillance Essentielle : Une surveillance rigoureuse des coûts est indispensable pour éviter les dépenses imprévues. Utilisez les outils de gestion des coûts des fournisseurs cloud.

Conseils pour l’optimisation des coûts :

  • Optimiser la Durée d’Exécution : Écrivez du code efficace et non bloquant pour minimiser le temps d’exécution.
  • Allouer la Juste Mémoire : Testez différentes allocations de mémoire pour trouver le point d’équilibre entre performance et coût. Souvent, une allocation mémoire légèrement supérieure peut réduire le temps d’exécution et donc le coût total.
  • Minimiser les Invocations Inutiles : Évitez les « boucles infinies » ou les invocations redondantes qui peuvent faire exploser la facture.
  • Utiliser les Tiers Gratuits : Profitez des tiers gratuits offerts par les fournisseurs pour les petits projets ou les phases de développement.
  • Analyser les Logs de Facturation : Examinez régulièrement les rapports de facturation détaillés pour identifier les postes de dépenses les plus importants et les opportunités d’optimisation.

L’optimisation de la performance et des coûts dans une architecture serverless est un processus continu qui exige une compréhension technique et une vigilance constante.

5. Sécurité et Gestion des Données : Les Enjeux Cruciaux

La sécurité est une préoccupation majeure dans toute architecture cloud, et l’architecture serverless introduit ses propres spécificités. La nature distribuée et la granularité des composants nécessitent une approche de sécurité très fine.

Gestion des Permissions et des Accès (IAM)

Dans un environnement serverless, chaque fonction est une unité de déploiement et d’exécution qui a besoin de permissions spécifiques pour interagir avec d’autres services. Pour approfondir ce sujet, consultez architecture serverless – Les meilleures pratiques pour le te….

  • Principe du Moindre Privilège : C’est la règle d’or. Chaque fonction ne doit avoir que les permissions strictement nécessaires à son exécution. Accorder des privilèges excessifs est une faille de sécurité majeure.
  • Complexité IAM : La gestion de multiples rôles IAM, de politiques granulaires et de relations de confiance peut devenir très complexe à grande échelle. Des outils IaC (Infrastructure as Code) comme CloudFormation, Terraform ou Serverless Framework sont indispensables pour gérer cela de manière déclarative.
  • Attaques par Élévation de Privilèges : Une fonction compromise avec des permissions trop larges peut être exploitée pour accéder à des ressources sensibles ou effectuer des actions non autorisées.

Conseils pour une gestion IAM robuste :

  • Politiques IAM Scrupuleuses : Définissez des politiques IAM très spécifiques, limitant les actions et les ressources accessibles à chaque rôle de fonction.
  • Audit Régulier : Auditez régulièrement les permissions de vos fonctions pour identifier et corriger les sur-privilèges.
  • Utilisez des Outils IaC : Gérez vos rôles et politiques IAM via des outils d’Infrastructure as Code pour assurer la cohérence et la traçabilité.
  • Séparation des Comptes : Pour des environnements très sensibles, envisagez une séparation des comptes AWS (ou équivalents) pour différents environnements (dev, staging, prod) ou applications.

Persistance des Données et Stratégies de Stockage

Les fonctions serverless sont stateless par conception, ce qui signifie qu’elles ne conservent pas d’état entre les invocations. La gestion de la persistance des données et des données sensibles est donc cruciale. Pour approfondir, consultez ressources développement.

  • Bases de Données : L’utilisation de bases de données (NoSQL comme DynamoDB, ou relationnelles comme Aurora Serverless) est la méthode principale pour la persistance des données. Les fonctions interagissent avec ces bases pour lire et écrire l’état.
  • Stockage d’Objets : Des services comme Amazon S3 sont parfaits pour stocker des fichiers, des images ou d’autres objets volumineux qui ne nécessitent pas une interrogation transactionnelle.
  • Gestion des Secrets : Les informations sensibles (clés API, identifiants de base de données) ne doivent jamais être codées en dur ou stockées en clair. Utilisez des services de gestion de secrets (AWS Secrets Manager, HashiCorp Vault) ou des variables d’environnement chiffrées.
  • Sécurité des Données en Transit et au Repos : Assurez-vous que toutes les communications entre fonctions et services de données sont chiffrées (TLS/SSL) et que les données au repos sont également chiffrées (KMS).
  • Validation des Entrées : Validez toujours et filtrez toutes les entrées provenant de l’extérieur (API Gateway, files d’attente) pour prévenir les injections ou autres vulnérabilités.

Exemple concret : Pour une fonction qui accède à une base de données, le secret de connexion (nom d’utilisateur, mot de passe) ne doit pas être dans le code. Il doit être récupéré au démarrage de la fonction via un service comme AWS Secrets Manager, et le rôle IAM de la fonction doit avoir les permissions minimales pour accéder à ce secret et à la base de données spécifique. Pour approfondir, consultez ressources développement.

La sécurité dans l’architecture serverless n’est pas une option, mais une exigence fondamentale qui doit être intégrée dès la conception. Pour approfondir, consultez documentation technique officielle.

6. Les Tests et l’Intégration Continue/Déploiement Continu (CI/CD)

Les pratiques de tests et de CI/CD sont l’épine dorsale de tout développement logiciel moderne. Dans le contexte de l’architecture serverless, elles prennent une dimension particulière due à la nature distribuée et événementielle des applications.

Tester des Architectures Distribuées

Tester une application serverless ne se limite pas à tester des unités de code isolées. Il faut valider les interactions entre les fonctions, les déclencheurs et les services externes.

  • Tests Unitaires : Essentiels pour valider la logique métier de chaque fonction de manière isolée. Ils doivent être rapides et ne pas dépendre de services externes.
  • Tests d’Intégration : Vérifient que les fonctions interagissent correctement avec les services cloud (bases de données, files d’attente, stockage) et entre elles. Ces tests sont plus lents et nécessitent un environnement cloud ou une émulation locale fidèle.
  • Tests de Bout en Bout (End-to-End – E2E) : Simulent le parcours utilisateur complet à travers l’ensemble de l’application serverless. Ils sont cruciaux pour valider la cohérence fonctionnelle globale.
  • Tests Événementiels : Puisque le serverless est événementiel, il est vital de tester comment les fonctions réagissent à différents types d’événements (API Gateway, S3, SQS, etc.) et comment elles publient de nouveaux événements.
  • Tests de Performance/Charge : Simulez un grand nombre d’invocations pour évaluer la scalabilité et identifier les goulots d’étranglement ou les problèmes de cold start sous charge.

Conseil pratique : Adoptez une stratégie de test en pyramide inversée pour le serverless : une base solide de tests unitaires, un nombre modéré de tests d’intégration et un ensemble plus restreint mais représentatif de tests E2E.

Automatisation du Déploiement et Gestion des Versions

Les pipelines CI/CD sont d’autant plus critiques en serverless qu’ils facilitent le déploiement fréquent et la gestion des versions de multiples fonctions.

  • Infrastructure as Code (IaC) : Le déploiement serverless repose fortement sur l’IaC (AWS CloudFormation, Serverless Framework, Terraform). Ces outils permettent de définir l’infrastructure et les fonctions de manière déclarative, assurant la reproductibilité des environnements.
  • Pipelines de Déploiement Automatisés : Mettez en place des pipelines CI/CD qui testent, construisent et déploient automatiquement vos fonctions et votre infrastructure. Des services comme AWS CodePipeline, GitLab CI/CD ou GitHub Actions sont adaptés.
  • Stratégies de Déploiement :
    • Canary Deployments : Déployez la nouvelle version à un petit pourcentage d’utilisateurs avant de la généraliser.
    • Blue/Green Deployments : Déployez la nouvelle version sur un environnement parallèle puis basculez le trafic.
    • Versions de Fonctions : Les fournisseurs serverless permettent de versionner les fonctions, ce qui est crucial pour les déploiements progressifs et les retours arrière rapides.
  • Gestion des Dépendances : Assurez-vous que les dépendances (bibliothèques, modules) sont correctement gérées et packagées avec chaque fonction.

Exemple de workflow CI/CD :

  1. Un développeur pousse du code vers un dépôt Git.
  2. Le pipeline CI démarre, exécute les tests unitaires.
  3. Si les tests réussissent, le code est packagé et un déploiement est initié vers un environnement de développement/staging.
  4. Des tests d’intégration et E2E sont exécutés sur cet environnement.
  5. Si tout est vert, un déploiement manuel ou automatisé vers la production est déclenché, potentiellement via une stratégie canary.

Une CI/CD bien huilée est fondamentale pour maintenir l’agilité et la fiabilité des applications basées sur l’architecture serverless.

7. Conclusion : Surmonter les Défis pour Exploiter le Potentiel du Serverless

L’exploration des multiples facettes de l’architecture serverless a mis en lumière un ensemble de défis complexes, allant de la courbe d’apprentissage des nouveaux paradigmes à la gestion délicate de l’observabilité, de la performance, de la sécurité et des processus CI/CD. Nous avons vu que la promesse d’une infrastructure abstraite s’accompagne de la nécessité d’une expertise approfondie dans la conception d’applications distribuées et événementielles. Le « cold start », la gestion granulaire des permissions IAM, la surveillance des coûts et le débogage d’environnements éphémères sont autant d’obstacles qui peuvent freiner une adoption sereine.

Cependant, il est crucial de souligner que ces défis, bien que réels, ne sont pas insurmontables. Les avantages inhérents au serverless – tels que la scalabilité automatique, la réduction des coûts opérationnels (si optimisés) et la concentration sur la valeur métier – restent considérables et justifient pleinement l’investissement. Les outils et les meilleures pratiques évoluent rapidement, offrant des solutions de plus en plus matures pour adresser ces problématiques.

Pour les développeurs et les professionnels de la tech, la clé du succès réside dans l’engagement à une formation continue, l’adoption d’outils appropriés et l’intégration de pratiques de développement rigoureuses. Maîtriser l’IaC, mettre en place une observabilité robuste et automatiser les tests et les déploiements sont des étapes essentielles pour naviguer avec succès dans ce paysage.

Prêt à relever le défi serverless ? Partagez vos expériences et les solutions que vous avez mises en place dans les commentaires ou contactez-nous pour explorer comment Créateur de solutions digitales peut vous accompagner dans votre transition serverless.

8. FAQ : Questions Fréquentes sur l’Architecture Serverless

Qu’est-ce que le « cold start » et comment l’atténuer ?

Le « cold start » est le délai supplémentaire qu’une fonction serverless subit lors de sa première invocation après une période d’inactivité, ou lorsque le fournisseur cloud doit provisionner une nouvelle instance. Ce délai est dû au temps nécessaire pour charger le code, initialiser le runtime et exécuter le code d’initialisation. Pour l’atténuer, vous pouvez :

  • Augmenter la mémoire allouée à la fonction (ce qui peut aussi augmenter le CPU).
  • Utiliser des runtimes plus rapides (Node.js, Python).
  • Minimiser la taille du package de déploiement.
  • Utiliser la concurrence provisionnée (Premium option chez certains fournisseurs).
  • Placer le code d’initialisation coûteux en dehors du gestionnaire de fonction.

L’architecture serverless est-elle adaptée à tous les types d’applications ?

Non, l’architecture serverless n’est pas une solution universelle. Elle excelle pour :

  • Les APIs et microservices sans état.
  • Le traitement de données en temps réel (ex: redimensionnement d’images après upload).
  • Les chatbots et assistants vocaux.
  • Les tâches de backend événementielles.
  • Les applications à charge de travail variable et imprévisible.

Elle est moins adaptée pour :

  • Les applications nécessitant un contrôle fin du système d’exploitation ou des ressources matérielles.
  • Les applications avec des tâches de longue durée (plusieurs minutes).
  • Les applications qui maintiennent un état persistant en mémoire entre les requêtes.
  • Les applications très monolithiques qu’il est difficile de décomposer.

Comment gérer la sécurité des données sensibles dans une fonction serverless ?

La gestion des données sensibles est cruciale. Voici les bonnes pratiques :

  • Ne jamais coder en dur les secrets (clés API, mots de passe) dans le code.
  • Utiliser des services de gestion de secrets dédiés (ex: AWS Secrets Manager, Azure Key Vault, Google Secret Manager) pour stocker et récupérer les identifiants de manière sécurisée.
  • Utiliser des variables d’environnement chiffrées pour les informations moins critiques ou les identifiants de services non sensibles.
  • Appliquer le principe du moindre privilège aux rôles IAM des fonctions, en ne leur donnant accès qu’aux secrets dont elles ont besoin.
  • Assurer le chiffrement des données en transit (TLS/SSL) et au repos pour toutes les interactions avec les bases de données et les stockages.

Quels sont les outils clés pour le monitoring d’une application serverless ?

Pour une observabilité complète, il faut combiner plusieurs types d’outils :

  • Services natifs des fournisseurs cloud :
    • AWS CloudWatch (logs, métriques, alarmes) et AWS X-Ray (traces distribuées).
    • Azure Monitor (logs, métriques) et Application Insights.
    • Google Cloud Operations (anciennement Stackdriver) pour logs, métriques et traces.
  • Solutions tierces : Datadog, New Relic, Splunk, Dynatrace, Lumigo, Thundra offrent des tableaux de bord unifiés, du traçage distribué avancé et des analyses de coûts spécifiques au serverless.
  • Outils de gestion de logs centralisés : ELK Stack (Elasticsearch, Logstash, Kibana) ou Grafana Loki.

Le serverless est-il toujours plus économique que les machines virtuelles ?

Pas nécessairement. Le serverless est souvent plus économique pour les charges de travail variables, sporadiques ou à faible volume, car vous ne payez que pour l’exécution réelle.

  • Avantages économiques : Élimination des coûts de serveurs inactifs, scalabilité automatique qui évite le surprovisionnement, pas de gestion d’OS.
  • Potentiels désavantages économiques :
    • Pour des charges de travail constantes et très élevées, un serveur dédié ou un cluster Kubernetes pourrait devenir plus coûteux par exécution que le serverless, mais le coût total de possession (incluant gestion) est souvent plus faible avec le serverless.
    • Des erreurs de conception (boucles infinies, invocations