Skip to main content
BlogOutils pour les développeursPortabilité dans le nuage : Architecture pilotée par les événements (ADA) et informatique sans serveur

Portabilité dans le nuage : Architecture pilotée par les événements (ADA) et informatique sans serveur

Portabilité dans le nuage : Architecture pilotée par les événements (ADA) et informatique sans serveur

L'architecture pilotée par les événements (ADA) réagit aux événements ou aux messages et déclenche des actions spécifiques plutôt que de s'appuyer sur une communication directe et synchrone. L'AED est asynchrone, ce qui permet aux composants de fonctionner de manière indépendante, améliorant ainsi la réactivité et les performances du système en cas de charges de travail variables.

Prenons deux exemples simples : le téléchargement de fichiers et l'enregistrement d'un nouvel utilisateur. Ces deux opérations peuvent être effectuées via un flux synchrone demande-réponse (c'est-à-dire REST API), mais une nouvelle demande devrait être faite pour obtenir une mise à jour de l'état du téléchargement du fichier ou pour déclencher la prochaine action à entreprendre après l'insertion des nouvelles données de l'utilisateur dans la base de données. Imaginez que vous ayez un groupe d'exécutants de tâches qui interrogent continuellement les messages ; ils travaillent sans relâche pendant des périodes de silence radio ou de bavardage sans rapport pour obtenir de temps en temps un message sur lequel ils peuvent agir. Vous pouvez voir que ce n'est pas l'utilisation la plus efficace de l'élasticité des ressources informatiques en nuage à la demande. L'AED résout ce problème grâce à une approche basée sur la poussée.

Les systèmes pilotés par les événements peuvent rapidement évoluer en ajoutant ou en supprimant des composants selon les besoins et peuvent être très résistants aux pannes, car le système peut continuer à fonctionner même si un composant est indisponible. L'AED est également bien adaptée au traitement en temps réel et à la manipulation de grands volumes de données, car les composants peuvent réagir aux événements et traiter les données au fur et à mesure qu'elles arrivent sans attendre un ensemble complet de données.

Pourquoi envisager l'AED ?

  • Flexibilité accrue du système : La nature faiblement couplée d'une architecture pilotée par les événements vous permet de modifier, d'ajouter ou de supprimer facilement des composants sans affecter l'ensemble du système, ce qui le rend adaptable à l'évolution des besoins.
  • Évolutivité améliorée : L'EDA permet une mise à l'échelle horizontale facile, permettant aux entreprises de gérer des charges de travail ou un trafic accrus en ajoutant des instances supplémentaires de composants ou de services en fonction des besoins.
  • Augmentation de la résilience du système : La communication asynchrone et les composants découplés de l'AED contribuent à améliorer la tolérance aux pannes, car la défaillance d'un composant n'entraîne pas nécessairement une panne de l'ensemble du système.
  • Capacités de traitement en temps réel : L'AED permet le traitement en temps réel de grands volumes de données et de modèles d'événements complexes, ce qui la rend adaptée aux entreprises qui ont besoin d'informations immédiates ou de réponses à des conditions qui évoluent rapidement.
  • Utilisation optimisée des ressources : En réagissant aux événements uniquement lorsqu'ils se produisent, l'EDA permet d'optimiser l'utilisation des ressources et de réduire la nécessité d'exécuter des processus en continu, ce qui peut conduire à des économies et à une meilleure efficacité.

Cloud Native Serverless Computing

L'EDA permet des modèles de développement d'applications comme l'informatique sans serveur, permettant au code d'être portable et agnostique vis-à-vis des fournisseurs, de sorte que vous pouvez choisir votre fournisseur de cloud en fonction des fonctionnalités, du langage pris en charge, des coûts, etc. Functions-as-a-Service (FaaS) est un produit populaire proposé par de nombreux fournisseurs de cloud, qui permet aux utilisateurs de gérer les fonctions et l'infrastructure de l'application en une seule fois. Le fournisseur de services en nuage joue le rôle de couche de responsabilité en s'occupant de l'infrastructure sous-jacente, y compris le provisionnement, la mise à l'échelle et la maintenance des serveurs, ce qui permet aux développeurs de se concentrer sur l'écriture du code.

Les services FaaS familiers tels que AWS Lambda, Azure Functions et Google Cloud Functions sont ce que nous appelons "platform-native". Ils vous enferment souvent dans l'utilisation d'un fournisseur de cloud spécifique sans qu'il soit possible de migrer facilement. Vous nous entendrez beaucoup parler de Knative en tant que plateforme open source, basée sur Kubernetes, pour l'exécution sans serveur, ce qui signifie qu'elle peut faire passer votre application de 0 à un nombre N de répliques en quelques secondes. La mise à l'échelle à 0 est fantastique car elle permet à Kubernetes et Knative de réaffecter les ressources en fonction des besoins.

Votre bout de code peut faire évoluer les ressources automatiquement parce qu'il peut être invoqué plusieurs fois en parallèle. À la base, les offres FaaS natives de la plateforme que nous avons mentionnées précédemment ne sont pas favorables en raison d'une tarification imprévisible. En exécutant Knative sur nos instances de calcul via notre service Kubernetes géré, vous payez un prix fixe et prévisible et n'avez pas à vous soucier de la tarification à l'exécution qui intervient après certains paliers gratuits.

Pourquoi devriez-vous considérer le Serverless ?

  • Rentabilité: Le modèle de tarification "pay-as-you-go" de l'informatique sans serveur peut permettre de réaliser des économies, car les entreprises ne paient que pour le temps de calcul qu'elles utilisent, sans allouer de ressources à l'avance.
  • Évolutivité améliorée: L'informatique sans serveur peut automatiquement faire évoluer les ressources en fonction de la demande, ce qui garantit que les applications peuvent gérer des charges de travail accrues sans intervention manuelle ni temps d'arrêt.
  • Réduction des frais généraux d'exploitation : Avec l'informatique sans serveur, le fournisseur de cloud gère l'infrastructure sous-jacente, ce qui permet aux équipes informatiques de se concentrer sur le développement d'applications, l'innovation et d'autres initiatives stratégiques.
  • Un délai de mise sur le marché plus rapide : Les processus de développement et de déploiement simplifiés offerts par l'informatique sans serveur peuvent aider les entreprises à accélérer la sortie de nouvelles fonctionnalités, de mises à jour et de corrections de bugs, améliorant ainsi leur avantage concurrentiel.
  • Flexibilité et adaptabilité : L'informatique sans serveur permet aux entreprises de créer et de déployer des applications à l'aide d'une variété de langages de programmation et de technologies, ce qui facilite l'adaptation à l'évolution des besoins ou l'incorporation de nouvelles technologies si nécessaire.

Comme je l'ai mentionné précédemment, l'informatique sans serveur est basée sur une architecture pilotée par les événements, ce qui signifie que les fonctions sont déclenchées par des événements tels que des requêtes HTTP, des téléchargements de fichiers, des mises à jour de bases de données, etc. Cela peut contribuer à simplifier l'architecture de l'application et à améliorer l'évolutivité.

Les fonctions sans serveur doivent également être sans état. Elles ne stockent aucune donnée ni aucun état entre les invocations, ce qui garantit que les fonctions sont facilement évolutives et que vous pouvez les remplacer en cas de défaillance. Elles doivent également être de courte durée, ce qui permet de ne pas gaspiller les ressources et de faire évoluer la fonction rapidement. Si la tâche d'une fonction est de longue durée, évaluez si un service fonctionnant en permanence n'est pas mieux adapté.

Veillez également à surveiller et à consigner vos fonctions sans serveur pour vous assurer qu'elles fonctionnent comme prévu et identifier tout problème ou erreur. Utilisez des outils tels que des agrégateurs de journaux et des outils de surveillance des performances des applications (APM) tels que Prometheus et Grafana. Et n'oubliez pas de sécuriser vos fonctions en utilisant les meilleures pratiques telles que l'authentification, l'autorisation et le cryptage. Cela garantit la sécurité de l'application et la protection des données sensibles. Testez-les soigneusement avant de les déployer en production pour vous assurer qu'elles fonctionnent comme prévu et qu'elles sont exemptes de vulnérabilités.

L'informatique sans serveur peut être rentable, mais il est important d'utiliser des techniques d'optimisation des coûts telles que l'optimisation des fonctions, le partage des ressources et la mise à l'échelle automatique pour réduire les coûts et améliorer l'efficacité. Évaluez votre charge de travail, vos schémas d'utilisation et vos besoins pour déterminer si l'informatique sans serveur est rentable pour votre cas d'utilisation particulier. Tenez compte des schémas d'utilisation prévus, des exigences de performance et de la structure tarifaire de la plateforme serverless que vous choisissez d'utiliser.


Commentaires

Laissez un commentaire

Votre adresse électronique ne sera pas publiée. Les champs obligatoires sont marqués d'un *.