Architecture sans serveur

Les architectures sans serveur peuvent constituer la plate-forme de déploiement idéale pour les développeurs aux ressources limitées

Qu'est-ce que l'architecture sans serveur ?

L'architecture sans serveur est un modèle de cloud computing où les développeurs construisent et exécutent des applications sans gérer de serveurs traditionnels. Les serveurs existent toujours, mais ils se trouvent dans le cloud, où les fournisseurs de cloud gèrent automatiquement l'infrastructure, la mise à l'échelle et l'allocation des ressources.

Pour les applications sans serveur, les développeurs écrivent généralement du code sous forme de fonctions isolées qui s'exécutent en réponse à des événements ou à des déclencheurs, et les fournisseurs de cloud ne facturent que les ressources de calcul réellement utilisées. Cette approche simplifie le développement d'applications, réduit la charge opérationnelle et permet une évolutivité rapide, ce qui la rend idéale pour les microservices et les applications pilotées par événements.

Cette page couvre :

Comment fonctionne l'architecture sans serveur

L'architecture sans serveur abstrait la gestion des serveurs pour les développeurs et s'appuie sur les fournisseurs de cloud pour gérer l'infrastructure sous-jacente. Voici comment cela fonctionne généralement :

1. Création de fonction Les développeurs écrivent du code sous forme de fonctions individuelles, chaque fonction étant conçue pour exécuter une tâche ou un service spécifique. L'architecture sans serveur est parfois appelée Function-as-a-Service ou FaaS.


2. Déploiement de fonction : Les fonctions sont empaquetées et déployées sur une plateforme sans serveur fournie par un fournisseur de services cloud. Les plateformes sans serveur les plus courantes sont AWS Lambda, Azure Functions et Google Cloud Functions.

3. Déclencheurs d'événements : Les fonctions sont configurées pour s'exécuter en réponse à des événements ou à des déclencheurs spécifiques. Les événements peuvent inclure des requêtes HTTP (par exemple, API Gateway), des modifications de données (par exemple, des mises à jour de bases de données), des minuteries, des téléversements de fichiers ou autre chose. Le fournisseur de cloud gère les sources d'événements et appelle automatiquement les fonctions associées.

4. Mise à l'échelle automatique : Au fur et à mesure que les événements se produisent, la plateforme sans serveur met automatiquement à l'échelle les ressources sous-jacentes pour absorber la charge de travail. Si votre fonction subit une augmentation soudaine des requêtes, le fournisseur de cloud approvisionnera davantage de ressources.

5. Exécution Lorsqu'un événement déclenche une fonction, la plateforme sans serveur initialise un conteneur ou un environnement d'exécution pour cette fonction. Le code contenu dans la fonction est exécuté et peut accéder à toutes les ressources ou données requises. Une fois que la fonction a terminé sa tâche, le conteneur peut rester actif pendant une courte période, permettant ainsi aux requêtes ultérieures de s'exécuter plus rapidement.

6. Facturation : La facturation est basée sur le temps d'exécution réel et les ressources utilisées par les fonctions. Vous êtes facturé par exécution et pour les ressources de calcul, telles que le processeur et la mémoire, qui sont allouées pendant l'exécution.

7. Apatridie Les fonctions sans serveur sont généralement sans état, ce qui signifie qu'elles ne conservent pas d'informations entre les exécutions. Tout état ou donnée requis doit être stocké en externe, souvent dans une base de données ou un service de stockage.

8. Journaux et surveillance : Les plates-formes sans serveur fournissent généralement des outils de journalisation et de surveillance intégrés, permettant aux développeurs de suivre les performances et de résoudre les problèmes de leurs fonctions.

Concepts clés de l'architecture sans serveur

Puisque le développement sans serveur est une alternative au développement traditionnel, vous devez vous familiariser avec les termes et concepts suivants pour bien comprendre comment concevoir, déployer et gérer des applications sans serveur :

Invocation Un événement qui déclenche l'exécution d'une fonction sans serveur. Les exemples incluent une requête HTTP, une mise à jour de base de données ou un minuteur planifié.

Durée : La durée d'exécution d'une fonction sans serveur, qui est un facteur dans le calcul du coût d'exécution.

Démarrage à froid : La première exécution d'une fonction sans serveur, où le fournisseur de cloud provisionne les ressources et configure l'environnement d'exécution. Les démarrages à froid introduisent une latence supplémentaire par rapport aux démarrages à chaud.

Démarrage à chaud : Exécutions ultérieures d'une fonction sans serveur lorsque l'environnement d'exécution est déjà préparé, ce qui se traduit par des temps de réponse plus rapides par rapport aux démarrages à froid.

Limite de concurrence : Le nombre maximal d'exécutions de fonctions simultanées autorisées par la plateforme sans serveur. Cette limite peut avoir un impact sur la capacité à traiter des requêtes ou des événements simultanés.

Délai d'attente dépassé : La durée maximale autorisée pour l'exécution d'une fonction sans serveur. Si une fonction dépasse cette limite, elle est interrompue de force et son résultat peut ne pas être renvoyé.

Source d'événement : L'origine d'un événement qui déclenche une fonction sans serveur. Des exemples de sources d'événements incluent les compartiments Amazon S3, les passerelles API, les files d'attente de messages et les mises à jour de bases de données.

Apatridie Les fonctions sans serveur sont généralement sans état, ce qui signifie qu'elles ne conservent pas de données entre les exécutions. Tout état nécessaire doit être stocké en externe dans des bases de données ou des services de stockage.

Allocation des ressources La spécification des ressources de calcul telles que le processeur ou la mémoire pour une fonction sans serveur. Ces ressources sont souvent choisies par les développeurs lors de la définition de la fonction.

Mise à l'échelle automatique : L'ajustement automatique des ressources sans serveur par le fournisseur de cloud pour s'adapter à des charges de travail variables et garantir des performances optimales.

Base de données sans serveur: Les bases de données sans serveur sont des bases de données à mise à l'échelle élastique qui ne révèlent pas l'infrastructure sur laquelle elles fonctionnent. Couchbase Capella™ DBaaS est un exemple de base de données sans serveur entièrement gérée.

Quand utiliser l'architecture sans serveur

Bien que l'architecture sans serveur soit polyvalente, ce n'est pas le meilleur choix pour tous les cas d'utilisation : les applications comportant des tâches de longue durée, des besoins de calcul élevés ou des charges de travail constantes bénéficient souvent davantage des architectures traditionnelles basées sur des serveurs. Veillez à prendre en compte les exigences spécifiques et les points forts uniques du sans serveur pour décider s'il s'agit du bon choix pour votre application.

Cas d'utilisation de l'architecture sans serveur

Certains des cas d'utilisation les plus courants et les mieux adaptés à l'architecture sans serveur (serverless) incluent :

Applications web et mobiles : Gérer les backends d'applications web et mobiles, diffuser du contenu, traiter les requêtes des utilisateurs et gérer l'authentification des utilisateurs.

API : Mettez à l'échelle automatique vos API RESTful et GraphQL et intégrez-les facilement avec d'autres services.

IoT : Gérer efficacement le traitement et l'analyse des données provenant d'appareils IoT qui déclenchent des événements avec des données de capteurs.

Traitement des données en temps réel : Traitez des flux de données en temps réel tels que l'analyse des flux de clics, le traitement des journaux et l'analyse événementielle.

Traitement par lots : Exécuter des travaux par lots périodiques ou à la demande tels que l'ETL (extraction, transformation et chargement) de données, la génération de rapports et le nettoyage de données.

Tâches de stockage de fichiers et de données : Interagir avec des services de stockage cloud pour gérer les transferts, les téléchargements et la manipulation de données.

Authentification et autorisation des utilisateurs : Les services de gestion des identités et des accès (IAM) pour l'authentification et l'autorisation des utilisateurs conviennent parfaitement aux fonctions sans serveur.

Services de notification : Envoyez des notifications et des alertes telles que des e-mails, des SMS ou des notifications push en réponse à des événements ou à des déclencheurs spécifiques.

Agents conversationnels et assistants virtuels : Créez des interfaces conversationnelles où des fonctions traitent les requêtes en langage naturel et génèrent des réponses.

Traitement des données et des images : Effectuez des tâches telles que le redimensionnement d'images, la conversion de formats et la transformation de données qui nécessitent une interaction minimale de l'utilisateur.

Tâches planifiées : Automatisez les tâches périodiques telles que les sauvegardes de données, la génération de rapports et la maintenance des bases de données.

Microservices : Créer et gérer des microservices individuels au sein d'une application plus vaste, ce qui facilite la mise à l'échelle et le déploiement indépendant.

Services de sécurité et de conformité : Implémenter des fonctions liées à la sécurité telles que la détection des intrusions, la surveillance et l'audit de conformité.

Sans serveur vs conteneurs

À première vue, l'architecture sans serveur est parfois confondue avec l'architecture de conteneurs ou avec l'architecture de microservices, car elle partage certaines similitudes avec chacune d'elles. En fait, le sans serveur est tout à fait distinct de ces deux approches, et nous expliquerons ce qui les différencie.

Quoi conteneurs Ce que le « serverless » et les conteneurs ont en commun, c'est qu'ils permettent tous deux aux développeurs de déployer du code d'application en faisant abstraction de l'environnement d'hébergement. Cependant, l'une des principales différences réside dans le fait que le « serverless » élimine totalement la gestion des serveurs, tandis que les conteneurs permettent aux développeurs de gérer leurs propres environnements de serveurs tout en exerçant un contrôle accru sur l'infrastructure.

En tant que forme légère de virtualisation, les conteneurs empaquettent les applications et leurs dépendances dans des environnements isolés et cohérents qui s'exécutent en tant qu'instances indépendantes sur un système d'exploitation partagé. Les conteneurs offrent un moyen de garantir que les applications fonctionnent de manière cohérente dans divers environnements, du développement à la production, et ils proposent une manière standardisée d'empaqueter et de distribuer des logiciels. Les conteneurs sont généralement de longue durée et peuvent inclure plusieurs processus au sein d'un même conteneur.

En résumé, l'informatique sans serveur (serverless) abstrait la gestion des serveurs et est idéale pour les tâches axées sur les événements et de courte durée, tandis que les conteneurs offrent un plus grand contrôle sur l'environnement du serveur et conviennent mieux aux processus de longue durée et aux charges de travail stables. Le choix entre les deux dépend des exigences spécifiques de votre application et de votre niveau de contrôle sur l'infrastructure sous-jacente. Dans certains cas, une combinaison des deux technologies est utilisée au sein d'une même application pour différents composants.

Serverless contre microservices

Microservices constituent un modèle d'architecture logicielle qui structure une application sous la forme d'un ensemble de petits services déployables indépendamment, qui communiquent via des API et fonctionnent ensemble pour offrir des fonctionnalités complexes et modulaires. La confusion entre les microservices et l'architecture « serverless » provient souvent du fait qu'ils mettent tous deux l'accent sur la modularité et l'évolutivité. Ce qui rend la distinction encore plus floue, c’est qu’ils sont souvent utilisés conjointement, les fonctions « serverless » agissant comme des microservices au sein d’une application plus vaste basée sur des microservices.

Malgré leurs similitudes, l'informatique sans serveur et les microservices présentent des caractéristiques uniques dans les domaines suivants qui les distinguent :

Gestion des infrastructures

  • Microservices – les développeurs conservent le contrôle sur l'orchestration des serveurs et des conteneurs.
  • Sans serveur La gestion des serveurs est entièrement dissimulée, et les développeurs n'ont pas à s'occuper de l'infrastructure sous-jacente.

Modèle d'exécution

  • Microservices – s'exécuter en continu sur des instances de serveurs dédiés.
  • Sans serveur Les fonctions s'exécutent en réponse à des événements ou à des déclencheurs. Cette distinction peut entraîner une différence dans les temps de réponse, car les applications sans serveur peuvent subir des démarrages à froid.

Modèle de coûts

  • Microservices – vous oblige à provisionner et à maintenir des ressources de serveur. Cela peut entraîner des coûts continus, même pendant les périodes de faible utilisation.
  • Sans serveur suit un modèle de paiement à l'utilisation basé sur l'exécution réelle des fonctions. Cela peut être plus rentable pour les charges de travail sporadiques.

Modularité

  • Microservices – Une application est divisée en petits services indépendants.
  • Sans serveur Les développeurs écrivent du code comme des unités individuelles de fonctionnalité.

Évolutivité

  • Microservices – permettre le mise à l'échelle indépendante de chaque service.
  • Sans serveur met à l'échelle automatiquement les fonctions individuelles.

Avantages de l'architecture sans serveur

L'architecture sans serveur (serverless) offre un large éventail d'avantages qui en font un choix attrayant pour de nombreuses applications et cas d'utilisation. Les avantages les plus convaincants sont :

Mise à l'échelle automatique : Les plates-formes d'architecture sans serveur adaptent automatiquement la charge des ressources à la hausse ou à la baisse en fonction de la charge de travail entrante. Cela garantit que votre application peut gérer différents niveaux de trafic, offrant une haute disponibilité et des performances sans intervention manuelle.

Le rapport coût-efficacité : Avec le sans serveur, vous ne payez que pour les ressources de calcul réellement utilisées lors de l'exécution des fonctions. Aucun coût n'est associé au temps d'inactivité, ce qui le rend économique, en particulier pour les charges de travail dont le trafic est imprévisible ou sporadique.

Frais de fonctionnement réduits : Sans serveur abstrait les tâches de gestion des serveurs, permettant aux développeurs de se concentrer sur le code plutôt que sur la maintenance de l'infrastructure. Cela réduit le besoin d'efforts DevOps et simplifie le déploiement et la mise à l'échelle.

Développement plus rapide : Le modèle sans serveur (serverless) accélère le processus de développement en éliminant la nécessité de gérer les serveurs et l'infrastructure. Les développeurs peuvent itérer et déployer du code rapidement, ce qui se traduit par une mise sur le marché plus rapide des applications.

Résilience Les fonctions serverless sont généralement sans état, ce qui favorise une conception reposant sur des services de stockage externes ou des bases de données pour la persistance des données. Cela peut conduire à des applications plus résilientes et tolérantes aux pannes.

Journalisation et surveillance intégrées : Les plateformes sans serveur (serverless) fournissent souvent des outils intégrés de surveillance et de journalisation, permettant aux développeurs de suivre les performances, de résoudre les problèmes et d'obtenir des informations sur le comportement des applications.

Réduction de la dépendance vis-à-vis des fournisseurs : De nombreuses fonctions peuvent être conçues pour être relativement indépendantes des fournisseurs, ce qui facilite leur migration ou l'intégration de services provenant de différents fournisseurs de cloud. Ce n'est pas toujours le cas, comme vous le verrez dans la section suivante sur les limitations du sans serveur.

Haute disponibilité : Les plates-formes sans serveur sont conçues pour être hautement disponibles, avec des mécanismes de redondance et de basculement intégrés. Cela contribue à garantir que votre application reste accessible et réactive même en cas de panne.

Efficacité énergétique et des ressources : La mise à l'échelle automatique et la gestion des ressources des plateformes sans serveur peuvent améliorer l'efficacité énergétique et l'utilisation des ressources, réduisant ainsi l'impact environnemental.

Limites de l'architecture sans serveur

Bien que l'architecture sans serveur offre de nombreux avantages, elle présente également des limites. Certaines caractéristiques du sans serveur peuvent se manifester par des avantages ou des défis. Lors de l'évaluation du sans serveur pour une application spécifique, tenez compte de vos exigences ou contraintes liées aux éléments suivants :

Démarrages à froid : Les fonctions sans serveur peuvent subir un délai lors de leur première invocation, car le fournisseur cloud doit initialiser un nouvel environnement d'exécution. Cette latence peut poser des problèmes pour les applications qui nécessitent des temps de réponse constamment rapides.

Contraintes de ressources : Les plateformes sans serveur imposent des contraintes de ressources, telles que des limites de mémoire et de temps d'exécution. Ces contraintes peuvent s'avérer limitantes pour les tâches gourmandes en calcul ou les applications nécessitant des processus de longue durée.

Apatridie Les fonctions sans serveur sont généralement sans état, ce qui signifie qu'elles ne conservent pas de données entre les exécutions. Bien que cela puisse contribuer à améliorer la résilience (comme expliqué ci-dessus), l'utilisation de bases de données externes ou de services de stockage pour la persistance des données peut complexifier certaines applications.

Verrouillage des fournisseurs : Bien que de nombreuses fonctions puissent être conçues pour être relativement indépendantes des fournisseurs, votre application peut comporter certaines configurations et intégrations spécifiques à une plateforme qui rendent difficile son transfert vers un autre fournisseur de cloud.

Débogage complexe : Le débogage et le dépannage des applications sans serveur peuvent s'avérer plus complexes dans une architecture sans serveur, car la nature distribuée des fonctions et l'absence d'accès direct au serveur peuvent rendre difficile l'identification et la résolution des problèmes.

Tests locaux limités : Le développement et le test de fonctions serverless en local peuvent s'avérer difficiles car les tests locaux ne reproduisent pas toujours fidèlement l'environnement d'exécution dans le cloud. Les développeurs ont souvent besoin de déployer les fonctions sur la plateforme serverless pour effectuer des tests approfondis.

Outils d'informatique sans serveur

Il existe de nombreuses plates-formes et outils de calcul sans serveur qui permettent aux développeurs de créer, déployer et gérer des applications sans serveur en utilisant leurs langages de programmation et leurs fournisseurs de services cloud préférés. En voici quelques-uns des plus populaires :

Plateformes

AWS Lambda d'Amazon prend en charge divers langages de programmation et s'intègre de manière transparente à d'autres services AWS. AWS fournit également une passerelle API pour créer des API RESTful et déclencher des fonctions Lambda.

Azure Functions de Microsoft est une offre sans serveur au sein de l'écosystème cloud d'Azure. Elle prend en charge plusieurs langages et offre une intégration avec les services Azure, ce qui en fait un choix judicieux pour les applications basées sur Windows.

Cloud Functions de Google prend en charge plusieurs langages de programmation et s'intègre bien avec d'autres services Google Cloud, ce qui le rend adapté à la création d'applications au sein de l'écosystème Google Cloud.

IBM Cloud Functions est basé sur le framework Apache OpenWhisk et vous permet de vous intégrer aux services IBM Cloud en utilisant différents langages.

Alibaba Cloud Function Compute permet aux développeurs de créer des applications dans l'écosystème Alibaba Cloud et de s'intégrer à d'autres services Alibaba Cloud en utilisant plusieurs langages.

Outils

Netlify est une plateforme surtout connue pour héberger des sites web statiques, mais elle propose également des fonctions sans serveur pour créer des services dorsaux, des API et des flux de travail.

OpenFaaS est un framework serverless open source pour les fonctions basées sur des conteneurs. Il vous permet de créer et d'exécuter des fonctions serverless à l'aide de conteneurs Docker.

Fission est un autre framework sans serveur natif Kubernetes open-source qui prend en charge plusieurs langages et est conçu pour un déploiement facile sur des clusters Kubernetes.

Conclusion

L'architecture sans serveur (serverless) est populaire pour les applications web et mobiles, l'IoT, le traitement de données en temps réel et d'autres cas d'utilisation courants, car elle permet aux développeurs de se concentrer sur l'écriture de code plutôt que sur la gestion des serveurs. La responsabilité de la gestion est déléguée à des fournisseurs de cloud tels que AWS Lambda, Azure Functions ou Google Cloud Functions afin qu'ils puissent gérer l'infrastructure sous-jacente et mettre à l'échelle les ressources automatiquement pour s'adapter aux variations de charge de travail. Cependant, l'architecture sans serveur n'est pas idéale pour tous les cas d'utilisation, et certaines charges de travail ou tâches de longue durée peuvent être mieux adaptées aux approches traditionnelles basées sur des serveurs.

Pour en savoir plus sur l'architecture sans serveur (serverless) et les technologies associées, consultez ces ressources :

Architecture sans serveur avec le cloud computing
Prédictions Couchbase 2023 : edge computing, serverless et plus encore
Capella App Services (BaaS)
Visitez notre Hub de Concepts pour en savoir plus sur d'autres sujets liés aux bases de données.

Commencer à construire

Consultez notre portail pour développeurs afin d'explorer NoSQL, de parcourir les ressources et de commencer à utiliser les tutoriels.

Utiliser Capella gratuitement

Prenez en main Couchbase en quelques clics. Capella DBaaS est le moyen le plus simple et le plus rapide de démarrer.

Prendre contact

Vous souhaitez en savoir plus sur les offres Couchbase ? Laissez-nous vous aider.