Malgré les avantages évidents que sont la rentabilité et le développement accéléré, l'informatique sans serveur présente quelques défis. Voici quelques-uns des inconvénients de l'informatique sans serveur :
Dépendance vis-à-vis d'un fournisseur : la nature de l'informatique sans serveur implique que vous vous engagez auprès d'un seul fournisseur cloud pour le déploiement du code. Par conséquent, les développeurs sont obligés d'adopter le modèle proposé par le fournisseur. Le fournisseur décide comment sont utilisées les ressources, par exemple en mettant en place des limites de simultanéité. Pour ces raisons, la dépendance vis-à-vis d'un fournisseur peut entraîner un manque de flexibilité.
Monitoring et débogage du point de vue du code : comme le fournisseur cloud gère l'infrastructure, vous avez peu ou pas de visibilité sur le back-end de vos opérations. Par conséquent, il est très difficile de monitorer un environnement sans serveur sans un outil de monitoring sans serveur dédié. L'architecture pilotée par les événements d'un environnement sans serveur signifie également que l'identification, la recréation et la correction des bugs peuvent être difficiles.
Latence : en raison de la nature sans état des applications dans un environnement sans serveur, une latence peut se produire lorsqu'une fonction est invoquée pour la première fois ou après une longue période d'inactivité. Une latence peut également se produire en raison d'un délai d'attente ou lorsque trop de fonctions s'exécutent simultanément. Dans ce cas, le fournisseur peut tuer l'une des fonctions, ce qui entraîne un échec. Du côté de l'utilisateur, cela provoque une latence.
Personnalisation et contrôle limités : comme les fournisseurs sans serveur gèrent l'infrastructure sous-jacente, il peut y avoir des limites à la personnalisation et au contrôle de l'environnement, telles que les versions d'exécution disponibles, l'allocation de mémoire et les limites de temps d'exécution.
Problèmes de sécurité : l'informatique sans serveur réduit la surface d'attaque, mais elle peut introduire de nouveaux risques de sécurité. Les développeurs doivent connaître les risques associés aux services tiers, aux autorisations au niveau des fonctions et aux vulnérabilités du code d'application.
Absence d'état : les fonctions sans serveur sont sans état, ce qui signifie qu'elles ne conservent aucune donnée entre les invocations. Cela peut compliquer la gestion de l'état de l'application, obligeant les développeurs à s'appuyer sur un stockage ou des bases de données externes pour maintenir l'état.
Prévisibilité des coûts : bien que l'informatique sans serveur puisse être rentable, il peut être difficile de prévoir les coûts, car ils dépendent de facteurs tels que le nombre d'invocations, la mémoire et le temps d'exécution. Des pics d'utilisation inattendus peuvent entraîner une augmentation des coûts.
Intégration aux systèmes existants : l'intégration de fonctions sans serveur à des systèmes et des architectures existants peut être difficile, en particulier lorsqu'il s'agit d'applications héritées ou de systèmes complexes.
Courbe d'apprentissage : l'adoption de l'informatique sans serveur nécessite que les développeurs apprennent de nouveaux concepts, outils et bonnes pratiques, ce qui peut ajouter de la complexité au processus de développement.