L'informatique sans serveur est un exemple de services PaaS (Platform as a Service). L'idée de l'approche sans serveur est que le fournisseur de services, sans l'implication de l'utilisateur, contrôle et configure le fonctionnement de l'infrastructure physique, des machines virtuelles, des systèmes de stockage et de l'environnement pour exécuter le code du client.
L'utilisateur bénéficie également d'une mise à l'échelle automatique et d'une tolérance aux pannes. Les services serverless sont conçus pour que votre code s'exécute même en cas de défaillance d'un ou même de plusieurs centres de données. Si votre code est appelé plus fréquemment avec le temps, le service prendra en charge le redimensionnement de l'infrastructure sur laquelle le code s'exécutera.
Prenons l'exemple d'une entreprise qui loue des scooters électriques. Dans son système, les données de télémétrie des stations de location doivent être collectées. En pratique, les stations peuvent tomber en panne, et leur nombre augmentera avec le temps. Cela signifie que le trafic des stations sera toujours différent. La quantité de données sera parfois grande, parfois petite, mais en moyenne, elle augmentera avec le temps. Lors de l'utilisation de fonctions sans serveur, le système réagira automatiquement à tous ces changements et appellera moins ou plus de fonctions en fonction du volume de trafic. L'entreprise n'a pas besoin de faire quoi que ce soit pour cela - tout se fera automatiquement.
L'entreprise n'aura même pas à se soucier des pannes de serveur car la structure interne des fonctions est tolérante à cela. L'entreprise peut être certaine que son système s'adaptera aux changements dans le flux de données et que toutes les données seront traitées. Lors de l'utilisation d'IaaS, de nombreuses tâches telles que l'ajustement du système aux charges changeantes, la gestion des erreurs logicielles ou les défaillances matérielles seraient confiées aux employés de l'entreprise.
Le concept d'serverless est utile lorsque vous devez rapidement créer une API REST, écrire un chatbot, traiter une file d'attente de messages, traiter des données provenant d'un appareil, etc. L'approche vous permet de ne pas vous soucier des machines virtuelles, des systèmes d'exploitation, des paramètres d'exécution, de la mise à l'échelle et de la tolérance aux pannes - toutes les tâches sont résolues par le service. En même temps, la solution est moins chère que l'utilisation de machines virtuelles, car vous ne payez que pour le temps d'exécution de votre code.
Cependant, le concept impose deux restrictions importantes sur le code de l'utilisateur:
- La fonction doit avoir des limites de temps. Elle ne peut pas être conçue pour un travail infini dans une boucle.
- La fonction ne peut pas stocker d'états entre les exécutions. Chaque fois que la fonction est lancée, elle n'aura aucune information sur le travail précédent.
Azure Functions est un exemple classique de service sans serveur, combinant tous les avantages de cette approche.