Partager via


Tirer parti des fonctions sans serveur

Conseil / Astuce

Ce contenu est un extrait de l’eBook, Architecting Cloud Native .NET Applications pour Azure, disponible sur .NET Docs ou en tant que PDF téléchargeable gratuitement qui peut être lu hors connexion.

Miniature de la couverture du livre électronique Applications .NET natives cloud pour Azure.

Dans le spectre de la gestion des machines physiques à l’utilisation des fonctionnalités cloud, serverless vit à l’extrême extrémité. 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.

Qu’est-ce que serverless ?

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 est propriétaire de 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 s'adapter en augmentant ou diminuant selon les besoins pour répondre à la demande. 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 serverless ?

Les plateformes serverless répondent à de nombreuses préoccupations fastidieuses et coûteuses :

  • Achat de machines et de licences logicielles
  • Logement, sécurisation, configuration et maintenance des machines et de leurs exigences de mise en réseau, d’alimentation et d’A/C
  • 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. Le passage au cloud peut contribuer à réduire ces coûts ; le passage d’applications à 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 commerce électronique 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 requêtes 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 serverless ?

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 flux de travail. 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 l’extensibilité 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 à partir de files d’attente et de 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 pourrait être déclenchée directement par des insertions dans Azure Blob Storage, en réduisant la complexité des opérations de microservices.

De nombreux services ont des processus de longue durée dans le cadre de leurs flux de travail. 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 s’adapter à la demande sans nécessiter une mise à l’échelle de l’ensemble de l’application.

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 seule instance 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 nécessiter un démarrage froid quand il est réinvoqué. 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.

Début froid et chaud Figure 3-9. Démarrage froid et démarrage chaud.

Pour éviter tout démarrage à 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 du plan Premium. Dans ces cas, lorsque vous devez ajouter une autre instance, elle est déjà opérationnelle et prête à être utilisée. 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 de 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 serverless. Les fonctions serverless favorisent les petits blocs de travail qui peuvent se terminer rapidement. La plupart des plateformes sans serveur nécessitent que les fonctions individuelles soient terminées 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 de 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 d’abord d’concevoir votre application avec une conception modulaire et faiblement couplée. Ensuite, identifiez s’il existe des avantages serverless qui justifient la complexité supplémentaire.