Guide de l'architecture sans serveur pour 2022
Architecture sans serveur est un nouveau concept et il prolifère en tant que méthode pour créer application mobile et une infrastructure de soutien pour sites Internet . Le concept est difficile à comprendre car le nom même du système est trompeur.
Si ces produits sont « sans serveur ', Où sont-elles? S’ils ne sont pas sur un serveur, où fonctionnent-ils, dans les airs ? Sans serveur, quel processeur les exécute ? Le fait est que ces systèmes ne sont pas sans serveur : ils fonctionnent sur serveurs cloud .
La raison pour laquelle ce nom est venu est que ces fonctions sont stockées et exécutées dans un emplacement différent. structure de chargement . Traditionnellement, un développeur de logiciels obtient un serveur et utilise cette ressource pour magasin et courir paquets. Désormais, les serveurs cloud sont disponibles, un développeur peut obtenir un serveur virtuel dédié ou louer de l'espace de stockage et de la puissance de processeur auprès d'un hôte cloud. Toutes les principales offres de systèmes cloud sans serveur prestations de service. Avec ces forfaits, vous payez le temps d'exécution d'une fonction plutôt que d'acheter des blocs d'espace ou de capacité de traitement.
Les services sans serveur peuvent héberger des systèmes de support, tels que bases de données , ainsi que la fonction principale qui est activée par des exigences externes.
Le tarif d'hébergement sans serveur est à la demande usage plutôt qu'une facturation mensuelle pour les ressources réservées.
Programmes sans serveur
Le hébergement sans serveur le modèle est utilisé pour microservices . Un microservice est une fonction qui crée un architecture orientée services et l'architecture sans serveur est le système de livraison de matériel sous ce modèle.
Lors de l’écriture d’un programme, les développeurs de logiciels sont habitués à extraire les sections de code couramment utilisées pour les réutiliser. Ceux-ci deviennent les fonctions qui peut être stocké en haut du fichier pour une utilisation locale, ou stocké dans un fichier externe inclus dans le programme en cours d'exécution avec une référence pour être accessible.
Les microservices sont un bibliothèque de fonctions stocké sur un serveur cloud. Le microservice fournira un service complet, comme une forme de mouvement dans une animation ou une fonction de publication de messages dans un système de chat.
Une application destinée à l'utilisateur peut être fournie de manière très poids léger manière en faisant de la page Web ou de l'application mobile complétée un élément très haut niveau liste des appels de fonction avec tous les traitement effectuée sur le système sans serveur qui héberge chaque fonction. Il s'agit d'une exigence pour application mobile où il est nécessaire de réduire la quantité de traitement effectuée localement. En effet, les batteries des appareils mobiles se déchargent rapidement si leurs puissants processeurs sont utilisés à pleine capacité.
Les microservices sont à l'origine du interfaces de programmation d'applications (API) qui permettent à une application de s'intégrer à une autre. L'API appelle un accéder fonctionner sur un hôte sans serveur qui déclenchera un service entier, qui pourrait être hébergé sur le même système ou ailleurs. Un package est composé d'appels de fonction qui accèdent à une bibliothèque de services qui peuvent à nouveau être hébergés sur le même hôte sans serveur ou ailleurs.
Kits de développement peut fournir des fonctions pour les mises en page ou les actions sur les sites Web. Ce sont des appels à microservices qui se déclenchera à chaque accès à une page créée dans l’environnement de développement. Ainsi, le même microservice peut être exécuté de manière répétée et simultanée pour de nombreuses applications créées dans le même environnement.
Il existe un très petit nombre de fournisseurs d'hébergement sans serveur et donc la probabilité qu'une fonction de support soit hébergée sur le même système que l'application appelante est très élevée. Cependant, ces très gros fournisseurs, comme AWS et Azur Nous avons tellement de serveurs partout dans le monde que les chances que les deux modules de connexion résident sur le même serveur physique sont très faibles.
Les microservices peuvent dépendre de une hiérarchie sur de nombreux autres microservices. Le créateur d’une application mobile ne sait probablement pas exactement où s’exécutent les services accessibles via les API. Ces modules API sont eux-mêmes composés de fonctions fournies par des bibliothèques hébergées ailleurs. Ainsi, non seulement les développeurs d’applications mobiles ne savent pas où s’exécutent les fonctions qu’ils utilisent, mais ils ne savent même pas où sont hébergées les fonctions prenant en charge les services dont dépendent les modules dont dépendent leurs API. Il peut y en avoir beaucoup, beaucoup couches de dépendances dans les microservices modernes.
Plateformes sans serveur
Offre de plateformes sans serveur Fonction en tant que service (FaaS). C'est un type de Plateforme en tant que service (PaaS) qui prend en charge tous les besoins en ressources des modules logiciels et gère leurs interactions entre les fonctions hébergées et avec les systèmes externes.
Chaque programme téléchargé sur le FaaS doit être divisé en fonctions atomiques que chacune fournit une seule prestation . Le déclencheur qui exécute chaque fonction doit également être spécifié dans la définition de la fonction dans le Console FaaS .
La plateforme stocke la fonction en mémoire et l'exécutera chaque fois qu'il sera appelé. Les serveurs fonctionnent en cluster et donc si le serveur d'hébergement ne dispose pas d'une capacité suffisante, la responsabilité de l'exécution du code est transférée à un autre serveur. Les services physiques réels impliqués dans le support de la fonction sont distrait .
Cela signifie que vous ne savez pas exactement quel serveur exécute la fonction et cela ne devrait pas avoir d'importance car la plate-forme garantit la performance et la disponibilité. L'utilisateur n'a aucune responsabilité dans la gestion ou la surveillance des ressources impliquées dans la fourniture des fonctionnalités du module hébergé.
Utilisations de l'architecture sans serveur
L'hébergement sans serveur est utile pour fournir des modules à court terme qui peuvent être demandés plusieurs fois simultanément. La fourniture de basculement et la réplication facilitent une livraison plus rapide dans le monde entier. Ces systèmes sont utiles dans les cas d'utilisation suivants :
- API RESTful Certaines plateformes proposent des services de gestion d'API spécifiques, comme Amazon API Gateway.
- Développement rapide d'applications La segmentation d'une application en fonctions plus petites permet aux développeurs de rendre quelque chose opérationnel rapidement, puis de revenir en arrière et de compléter les services en ajoutant des fonctions.
- Intégration continue et livraison continue CI/CD Un système d'hébergement sans serveur peut être lié à un pipeline de développement, le portage s'effectuant automatiquement une fois le test réussi. Les fonctions sans serveur peuvent également être déployées pour faire progresser le code développé tout au long du pipeline en vue d'un déploiement sur d'autres plates-formes.
- Traitement asynchrone Des tâches en arrière-plan peuvent être effectuées à la fin de la fonction tandis que de nouvelles fonctions sont déclenchées pour servir l'utilisateur.
- Activation du déclencheur Les flux de travail automatisés déclenchés par une action de l'utilisateur peuvent être configurés sous la forme d'une série de fonctions basées sur le cloud.
- Déchargement mobile Déplacez les fonctions vers un FaaS pour supprimer les demandes de traitement sur les appareils mobiles.
- Authentification Les étapes d'authentification des utilisateurs, telles que l'authentification multifacteur, peuvent être transférées vers FaaS pour garantir la cohérence entre les appareils.
- Évaluations de vulnérabilité Utilisez des microservices pour valider de nouveaux objets, tels que des conteneurs, et assurez-vous qu'ils ne contiennent pas de faiblesses de configuration.
Terminologie de l'architecture sans serveur
Comme tout domaine informatique, l’architecture sans serveur a ses propres termes. La terminologie importante à connaître comprend :
- Invocation L'exécution d'une fonction.
- Démarrage à froid Le temps nécessaire au démarrage d’une fonction implique son chargement en mémoire. Les fonctions déjà en mémoire lors d'une exécution récente n'auront pratiquement pas de temps de démarrage à froid.
- Limite de concurrence Il s'agit d'une condition de niveau de service qui fera partie de votre contrat et limitera le nombre d'innovations simultanées dans une région.
- Durée Le temps d'exécution de la fonction.
- Délai d'expiration par défaut et Délai d'expiration maximum La durée pendant laquelle une fonction restera exécutée avant d’être jugée défectueuse et terminée. La valeur par défaut s'applique sauf si vous spécifiez un délai d'attente et le maximum correspond à la durée la plus longue que vous puissiez choisir.
Stratégies d'architecture sans serveur
Les exemples de la section précédente peuvent tous être distillés dans une stratégie DevOps cela fonctionne bien avec le concept sans serveur. L’architecture sans serveur présente des avantages et des faiblesses qui poussent les utilisateurs de ces services à adopter une forme particulière de développement, qui peut s’avérer bénéfique.
Le démarrage à froid Le concept est un facteur crucial qui devrait façonner une stratégie sans serveur. Si une fonction n’est pas utilisée pendant un certain temps, le système sans serveur l’archive efficacement. La prochaine fois que cela sera demandé, le serveur devra suivre des routines supplémentaires pour le faire fonctionner. Cependant, une fois chargé en mémoire, un appel ultérieur qui surviendra peu de temps après sera délivré. très rapidement .
Cela signifie que les systèmes sans serveur ne sont pas idéaux pour le code rarement utilisé. Ils sont très doués pour fournir des fonctions qui sont déclenchées encore et encore et souvent plusieurs fois. simultanément . Par conséquent, si vous disposez de nombreux actifs qui sont les mêmes en coulisses mais avec des skins différents pour les rendre uniques, vous tirerez le meilleur parti de l’architecture sans serveur.
Passer à une architecture sans serveur
Adopter architecture sans serveur nécessite quelques petites étapes conceptuelles.
Tout d’abord, considérez le système sans serveur comme un réseau de diffusion de contenu (CDN) pour les fonctions plutôt que pour des pages Web entières ou des ressources multimédias. Lorsque vous vous inscrivez à un service CDN, vos actifs numériques sont copiés sur de nombreux serveurs à travers le monde. Les entreprises basées sur le Web sont satisfaites de cette action car elle améliore rapidité de livraison de sites Web et d'applications mobiles et fournit également un basculement service.
Les administrateurs système sont à l'aise avec la prolifération de leurs sites vers des serveurs sur lesquels ils ont aucun contrôle car ils disposent de l'hôte cloud d'origine de leur système auquel ils peuvent se connecter et gérer. Ils sentir qu'ils ont le contrôle, simplement parce qu'ils ont un emplacement principal à gérer. Cependant, ils n’ont aucun contrôle de sécurité sur les nombreux autres serveurs qui interagissent avec la majorité des visiteurs du site.
Dans le cas du CDN, l'hébergeur Web sur lequel vous téléchargez vos sites ne sert, en réalité, plus le public. C'est un référentiel central grâce auquel vous déployez des mises à jour sur le site réel que les gens visitent. La logistique des systèmes sans serveur est très similaire : vous ne savez pas où vos fonctions s'exécutent, tout comme avec un CDN, vous ne savez pas quel serveur distribue votre site.
La deuxième étape conceptuelle à franchir pour tirer le meilleur parti de l'architecture sans serveur consiste à diviser vos applications en unités réutilisables . Les développeurs le font déjà pour créer des bibliothèques de fonctions qui fournissent encore et encore le même service. Dans les stratégies actuelles, ce code de fonction est effectivement copié dans le corps du programme lors de l'exécution de l'application. Avec les systèmes sans serveur, ce code reste là où il est et s'exécute sur le serveur sélectionné par le contrôleur système.
Pour bénéficier d’une architecture sans serveur, vous devez considérer une seule application comme un pseudocode de haut niveau. Lorsque vous abordez le développement sous cet angle, vous réaliserez probablement que cette conception modulaire est quelque chose qui tu fais déjà .
Vous n'avez pas besoin de composer un site Web entier, il vous suffit de mettre : l'en-tête de l'entreprise, le texte de bienvenue, le menu et le pied de page. L'en-tête de l'entreprise devient ensuite une fonction hébergée dans le cloud et vous pouvez la composer avec une série de plug-ins, tels que la feuille de style de l'entreprise, le logo et le lien d'association.
Tu mets la feuille de style sur le serveur cloud puis il peut être appelé par toutes les pages de votre site. Vous pourriez avoir un panier fonction à laquelle de nombreuses pages font référence. Une fois que vous aurez pénétré quelques couches dans les détails, vous verrez que vous avez déjà assemblé votre site à partir de plusieurs unités de niveau intermédiaire, comme la feuille de style et le panier. Vous faites tellement confiance à ces modules que vous n'avez jamais envie ou besoin d'y accéder et de constater qu'ils sont constitués de unités plus petites qui ont été fournis par quelqu'un d'autre.
Vous n’êtes pas si loin de la structure de programme nécessaire à un système sans serveur fonctionnant avec Infrastructure FaaS .
La dernière étape du passage à une architecture sans serveur consiste à abandonner la croyance selon laquelle vous devez garder tous vos animaux dans un champ clôturé. Vous n'avez pas besoin d'entretenir une zone serveur avec beaucoup d’espace supplémentaire que vous n’utilisez pas. Vous n’avez même pas besoin de savoir où se trouve ce serveur, tout comme vous ne savez pas dans quel bâtiment se trouve la copie de votre site Web à laquelle les gens de Hong Kong accèdent.
Fournisseurs FaaS
Les principaux fournisseurs de systèmes sans serveur (FaaS) sont :
- Amazon Web Services (AWS) Lambda
- Fonctions Microsoft Azure
- Fonctions Google Cloud
- Travailleurs Cloudflare
- Fonctions Oracle Cloud
- Calcul de la fonction Alibaba
- Fonctions IBM Cloud
Les trois grands acteurs mondiaux du marché FaaS sont les mêmes que les trois principales plateformes cloud : AWS , Azur , et GCP . Ali Baba est le plus grand acteur en Chine et le volume important de ce marché en fait statistiquement un acteur mondial sans être très présent ailleurs dans le monde.
Flare nuageuse est un fournisseur CDN majeur et répond donc très facilement aux concepts FaaS. Oracle et IBM sont techniquement excellents mais n’ont pas la portée marketing des trois grands. Cependant, ces deux fournisseurs mettent chacun un pied dans la porte en commercialisant leurs plateformes FaaS en interne auprès des clients qu'ils ont déjà gagnés pour leurs applications métiers.
Surveillance des systèmes sans serveur
Ce serait une erreur de penser que les systèmes sans serveur n’ont pas besoin d’être surveillés. En même temps, il est illusoire de penser qu'un client de ces systèmes puisse mettre en œuvre n'importe quel actions correctives pour éviter toute dégradation des performances ou combler les failles de sécurité.
Pourquoi s'embêter détecter des problèmes que vous ne pouvez pas résoudre ? Eh bien, certains problèmes de performances peuvent être dus à un code inefficace et vous pouvez les résoudre. Avant tout, vous devez vous assurer que votre fournisseur FaaS ne se relâche pas et fournit la qualité de service pour laquelle vous payez. Si aucun client ne vérifie jamais la livraison par ces systèmes sans serveur, les fournisseurs ne seront pas incités à garantir le bon fonctionnement des services.
La principale raison de mettre en œuvre une surveillance des performances sans serveur est de garantir que Accords de Niveau de Service sont rencontrés. Les clients des plates-formes FaaS disposent d'une console qui détaille les statistiques de débit, mais vous pouvez avoir des comptes sur plusieurs services et vous ne pouvez pas vous asseoir et regarder tous ces tableaux de bord à tout moment. Donc, surveillance automatisée les services pour les comptes sans serveur valent l’investissement.
La surveillance des systèmes sans serveur est un créneau spécialisé et peu de fournisseurs d'outils de surveillance majeurs disposent encore de ce service. Jeter un coup d'œil à Les meilleurs outils de surveillance sans serveur pour une analyse approfondie de cette question. Si vous n’avez pas le temps de lire ce rapport de comparaison, voici les cinq meilleurs outils que nous recommandons.
- AppOptique (ESSAI GRATUIT)Utilisez cet outil de surveillance si vous disposez d'un compte avec AWS Lambda. Il tracera tous les services de support pour vos fonctions hébergées et maintiendra une carte des dépendances en direct qui accélère l'analyse des causes profondes. Cela vous permet de rejeter la faute au bon endroit si les choses tournent mal. L'outil dispose également d'une intégration Azure mais pas de routines spécifiques pour Azure Functions. Obtenez un essai gratuit de 30 jours.
- Zoho Catalyst (BAC À SABLE GRATUIT) Une plateforme Function-as-a-Service qui ne facture que lorsqu'un module hébergé entre en production et comprend un éditeur de code dans sa console ainsi que des écrans de gestion d'actifs. Le service offre un environnement sandbox gratuit pour tester vos fonctions.
- Surveillance sans serveur Datadog Cet outil se concentre également sur les performances d'AWS Lambda et dispose de fonctions complètes de traçage et de mappage pour les dépendances. Il y a un essai gratuit de 14 jours disponible.
- Surveillance sans serveur New Relic Surveillance FaaS pour les systèmes AWS, Azure et GCP avec cartographie des dépendances et suivi des performances. Gratuit pour 100 Go de collecte et de traitement de données par mois.
- Dynatrace Surveillez l'infrastructure de toutes les plates-formes cloud ou obtenez un plan incluant également la surveillance des applications. Couvre AWS Lambda, Google Cloud Functions et Azure Cloud Functions et les offres un essai gratuit de 15 jours .
- Surveillance sans serveur Site24x7 Surveillance de la plateforme FaaS pour AWS, GCP et Azure dans le cadre d'une offre groupée avec surveillance des serveurs sur site et des applications hybrides. Offert le un essai gratuit de 30 jours .