Exploitation des fonctions serverless
Conseil
Ce contenu est un extrait du livre électronique, Cloud Native .NET apps for Azure (Architecture d’applications .NET natives cloud pour Azure), disponible dans la documentation .NET ou au format PDF à télécharger gratuitement pour le lire hors connexion.
Dans le spectre allant de la gestion des machines physiques à l’utilisation des fonctionnalités cloud, le serverless est situé à l’extrémité finale. Votre seule responsabilité est votre code et vous payez uniquement lorsque votre code s’exécute. Azure Functions permet de créer des fonctionnalités serverless dans vos applications natives cloud.
Que sont les environnements sans serveur ?
Le serverless est un modèle de service relativement nouveau de cloud computing. Cela ne signifie pas que les serveurs sont facultatifs : votre code s’exécute toujours sur un serveur quelque part. La distinction est que l’équipe d’application ne s’inquiète plus de la gestion de l’infrastructure de serveur. Au lieu de cela, le fournisseur de cloud détient cette responsabilité. L’équipe de développement augmente sa productivité en fournissant des solutions commerciales aux clients, et non de la « plomberie ».
L’informatique Serverless utilise des conteneurs sans état déclenchés par des événements pour héberger vos services. Ils peuvent effectuer un scale-out et répondre à la demande en fonction des besoins. Les plateformes Serverless comme Azure Functions sont étroitement intégrées à d’autres services Azure tels que les files d’attente, les événements et le stockage.
Quels sont les défis résolus par le serverless ?
Les plateformes Serverless répondent à de nombreuses préoccupations fastidieuses et coûteuses :
- Achat de machines et de licences logicielles
- Hébergement, sécurisation, configuration et maintenance des machines et de leurs exigences de mise en réseau et d’alimentation
- Mise à jour corrective et mise à niveau des systèmes d’exploitation et des logiciels
- Configuration de serveurs web ou de services de machine pour héberger des logiciels d’application
- Configuration de logiciels d’application au sein de sa plateforme
De nombreuses entreprises allouent de gros budgets pour prendre en charge les problèmes liés à l’infrastructure matérielle. La migration vers le cloud peut contribuer à réduire ces coûts ; le passage d’applications au mode serverless peut vous aider à les éliminer.
Quelle est la différence entre un microservice et une fonction serverless ?
En règle générale, un microservice encapsule une fonctionnalité métier, telle qu’un panier d’achat pour un site de e-commerce en ligne. Il expose plusieurs opérations qui permettent à un utilisateur de gérer son expérience d’achat. Toutefois, une fonction est un petit bloc de code léger qui exécute une opération à usage unique en réponse à un événement. Les microservices sont généralement construits pour répondre aux demandes, souvent à partir d’une interface. Les demandes peuvent être basées sur HTTP Rest ou gRPC. Les services serverless répondent aux événements. Son architecture pilotée par les événements est idéale pour le traitement des tâches en arrière-plan courtes.
Quels scénarios sont appropriés pour le serverless ?
Le mode Serverless expose des fonctions courtes individuelles appelées en réponse à un déclencheur. Cela les rend idéales pour le traitement des tâches en arrière-plan.
Une application peut avoir besoin d’envoyer un e-mail en tant qu’étape dans un workflow. Au lieu d’envoyer la notification dans le cadre d’une demande de microservice, placez les détails du message dans une file d’attente. Une fonction Azure peut mettre le message en file d’attente et envoyer de manière asynchrone l’e-mail. Cela peut améliorer les performances et la scalabilité du microservice. Le nivellement de charge basé sur la file d’attente peut être implémenté pour éviter les goulots d’étranglement liés à l’envoi des e-mails. De plus, ce service autonome peut être réutilisé en tant qu’utilitaire dans de nombreuses applications différentes.
La messagerie asynchrone des files d’attente et des rubriques est un modèle courant pour déclencher des fonctions serverless. Toutefois, Azure Functions peut être déclenché par d’autres événements, tels que les modifications apportées au Stockage Blob Azure. Un service qui prend en charge les chargements d’images peut avoir une fonction Azure responsable de l’optimisation de la taille de l’image. La fonction peut être déclenchée directement par des insertions dans le Stockage Blob Azure, ce qui simplifie les opérations du microservice.
De nombreux services ont des processus de longue durée dans le cadre de leurs workflows. Souvent, ces tâches sont effectuées dans le cadre de l’interaction de l’utilisateur avec l’application. Ces tâches peuvent forcer l’utilisateur à attendre, ce qui a un impact négatif sur son expérience. L’informatique serverless offre un excellent moyen de déplacer des tâches plus lentes en dehors de la boucle d’interaction utilisateur. Ces tâches peuvent être mises à l’échelle avec la demande sans que l’application entière soit mise à l’échelle.
Quand devez-vous éviter de faire appel au serverless ?
Les solutions serverless sont provisionénes et mises à l’échelle à la demande. Lorsqu’une nouvelle instance est appelée, les démarrages à froid sont un problème courant. Un démarrage à froid est la période nécessaire pour provisionner cette instance. Normalement, ce délai peut être de quelques secondes, mais peut être plus long en fonction de différents facteurs. Une fois provisionnée, une instance unique est conservée active tant qu’elle reçoit des demandes périodiques. Toutefois, si un service est appelé moins fréquemment, Azure peut le supprimer de la mémoire et demander un démarrage froid quand il est appelé à nouveau. Les démarrages à froid sont également requis lorsqu’une fonction effectue un scale-out vers une nouvelle instance.
La Figure 3-9 montre un modèle de démarrage à froid. Notez les étapes supplémentaires requises lorsque l’application est froide.
Figure 3-9. Démarrage à froid et démarrage à chaud.
Pour éviter entièrement les démarrages à froid, vous pouvez passer d’un plan de consommation à un plan dédié. Vous pouvez également configurer une ou plusieurs instances préchauffées avec la mise à niveau vers le plan Premium. Dans ces cas, lorsque vous devez ajouter une autre instance, elle est déjà prête à fonctionner. Ces options peuvent aider à atténuer le problème de démarrage à froid associé à l’informatique serverless.
Les fournisseurs de cloud facturent le serverless en fonction du temps d’exécution du calcul et de la mémoire consommée. Les opérations longues ou les charges de travail à forte consommation de mémoire ne sont pas toujours les meilleurs candidats pour le serverless. Les fonctions serverless favorisent les petits blocs de travail qui peuvent se terminer rapidement. La plupart des plateformes serverless nécessitent que les fonctions individuelles se terminent en quelques minutes. Azure Functions prend par défaut une durée d’expiration de 5 minutes, qui peut être configurée jusqu’à 10 minutes. Le plan Azure Functions Premium peut également atténuer ce problème, avec un délai d’attente par défaut allant jusqu’à 30 minutes avec une limite supérieure non limitée qui peut être configurée. L’heure de calcul n’est pas l’heure du calendrier. Des fonctions plus avancées utilisant l’infrastructure Azure Durable Functions peuvent suspendre l’exécution pendant plusieurs jours. La facturation est basée sur le temps d’exécution réel : lorsque la fonction se réveille et reprend le traitement.
Enfin, l’utilisation d’Azure Functions pour les tâches d’application ajoute de la complexité. Il est judicieux de commencer à concevoir votre application avec une conception modulaire et faiblement couplée. Ensuite, identifiez si le serverless peut fournir des avantages qui justifient la complexité supplémentaire.