Informatique sans serveur - Serverless computing

L'informatique sans serveur est un modèle d'exécution de cloud computing dans lequel le fournisseur de cloud alloue des ressources machine à la demande, en prenant soin des serveurs pour le compte de ses clients. L'informatique sans serveur ne contient pas de ressources dans la mémoire volatile ; le calcul se fait plutôt en rafales courtes avec les résultats conservés au stockage. Lorsqu'une application n'est pas utilisée, aucune ressource informatique n'est allouée à l'application. La tarification est basée sur la quantité réelle de ressources consommées par une application. Il peut s'agir d'une forme d' informatique utilitaire . « Sans serveur » est un terme impropre dans le sens où les serveurs sont toujours utilisés par les fournisseurs de services cloud pour exécuter du code pour les développeurs. Cependant, les développeurs d'applications sans serveur ne sont pas concernés par la planification de la capacité , la configuration, la gestion, la maintenance, la tolérance aux pannes ou la mise à l'échelle des conteneurs, des machines virtuelles ou des serveurs physiques.

L'informatique sans serveur peut simplifier le processus de déploiement du code en production. Le code sans serveur peut être utilisé conjointement avec du code déployé dans des styles traditionnels, tels que des microservices ou des monolithes . Alternativement, les applications peuvent être écrites pour être purement sans serveur et n'utiliser aucun serveur provisionné. Cela ne doit pas être confondu avec les modèles informatiques ou de mise en réseau qui ne nécessitent pas de serveur réel pour fonctionner, comme le peer-to-peer (P2P).

Environnements d'exécution sans serveur

Les fournisseurs sans serveur proposent des environnements d'exécution de calcul, également appelés plates-formes de fonction en tant que service (FaaS), qui exécutent la logique d'application mais ne stockent pas de données. Les langages courants pris en charge par les environnements d'exécution sans serveur sont Java , Python et PHP . En règle générale, les fonctions s'exécutent sous des limites d'isolement, telles que les conteneurs Linux .

Offres commerciales

La première plate-forme d'exécution de code "pay as you go" était Zimki, sortie en 2006, mais elle n'a pas connu de succès commercial. En 2008, Google a publié Google App Engine , qui comportait une facturation au compteur pour les applications utilisant un framework Python personnalisé, mais ne pouvant pas exécuter de code arbitraire. PiCloud, sorti en 2010, offrait un support FaaS pour Python.

Kubeless et Fission sont deux plates-formes Open Source FaaS qui fonctionnent avec Kubernetes .

Google App Engine, introduit en 2008, a été la première offre d'informatique sans serveur abstraite. App Engine incluait des fonctions HTTP avec un délai d'expiration de 60 secondes, ainsi qu'un magasin d'objets blob et un magasin de données avec leurs propres délais d'expiration. Aucune persistance en mémoire n'était autorisée. Toutes les opérations devaient être exécutées dans ces limites, mais cela a permis aux applications intégrées à App Engine d'évoluer presque à l'infini et a été utilisé pour prendre en charge les premiers clients, notamment Snapchat , ainsi que de nombreuses applications Google externes et internes. La prise en charge du langage était limitée à Python à l'aide de modules Python natifs, ainsi qu'à une sélection limitée de modules Python en C choisis par Google. Comme les plates-formes sans serveur ultérieures, App Engine utilisait également la facturation à l'utilisation.

AWS Lambda , introduit par Amazon en 2014, a popularisé le modèle abstrait d'informatique sans serveur. Il est pris en charge par un certain nombre d'outils sans serveur AWS supplémentaires tels que le modèle d'application sans serveur AWS (AWS SAM) Amazon CloudWatch et d'autres.

Google Cloud Platform a créé une deuxième offre sans serveur, Google Cloud Functions en 2016.

IBM propose IBM Cloud Functions dans le cloud public IBM depuis 2016. IBM a ajouté une deuxième offre sans serveur, IBM Cloud Code Engine, en 2021.

Microsoft Azure propose des fonctions Azure, proposées à la fois dans le cloud public Azure ou sur site via Azure Stack.

Cloudflare propose Cloudflare Workers depuis 2017.

Fastly propose Compute@Edge, depuis 2019.

Bases de données sans serveur

Plusieurs bases de données sans serveur ont vu le jour ces dernières années. Ces systèmes étendent le modèle d'exécution sans serveur au SGBDR , éliminant ainsi le besoin de provisionner ou de mettre à l'échelle du matériel de base de données virtualisé ou physique.

Nutanix propose une solution nommée Era qui transforme un SGBDR existant tel qu'Oracle , MariaDB , PostgreSQL ou Microsoft SQL Server en un service sans serveur.

Amazon Aurora propose une version sans serveur de ses bases de données, basée sur MySQL et PostgreSQL, fournissant des configurations à mise à l'échelle automatique à la demande.

Azure Data Lake est un service de stockage et d'analyse de données hautement évolutif. Le service est hébergé dans Azure , le cloud public de Microsoft. Azure Data Lake Analytics fournit une infrastructure distribuée qui peut allouer ou désallouer dynamiquement des ressources afin que les clients ne paient que pour les services qu'ils utilisent.

Firebase , également détenue par Google, comprend une base de données hiérarchique et est disponible via des plans fixes et payants.

Confluent , fournit une implémentation sans serveur d'Apache Kafka (un système de streaming et de stockage d'événements) sur les trois principaux fournisseurs de cloud, qui résume l'infrastructure, est payant à l'utilisation et s'adapte automatiquement.

Avantages

Coût

Le sans serveur peut être plus rentable que la location ou l'achat d'une quantité fixe de serveurs, ce qui implique généralement des périodes importantes de sous-utilisation ou d'inactivité. Cela peut même être plus rentable que le provisionnement d'un groupe d'autoscaling , en raison d'un bin-packing plus efficace des ressources de la machine sous-jacente.

Cela peut être décrit comme de l'informatique à la carte ou du code à barres, car vous êtes facturé uniquement en fonction du temps et de la mémoire alloués pour exécuter votre code ; sans frais associés pour les temps morts.

Les avantages immédiats en termes de coûts sont liés à l'absence de coûts d'exploitation, notamment : les licences, l'installation, les dépendances et les coûts de personnel pour la maintenance, l'assistance ou les correctifs. L'absence de frais de personnel est un avantage qui s'applique largement au cloud computing.

Élasticité contre évolutivité

De plus, une architecture sans serveur signifie que les développeurs et les opérateurs n'ont pas besoin de passer du temps à configurer et à régler les politiques ou les systèmes d'autoscaling ; le fournisseur de cloud est responsable de l'adaptation de la capacité à la demande. Comme le dit Google : « du prototype à la production à l'échelle de la planète ».

Comme les systèmes natifs du cloud évoluent intrinsèquement à la baisse comme à la hausse, ces systèmes sont connus comme élastiques plutôt que évolutifs.

De petites équipes de développeurs sont capables d'exécuter elles-mêmes du code sans dépendre d'équipes d'ingénieurs d'infrastructure et d'assistance ; de plus en plus de développeurs deviennent qualifiés en DevOps et les distinctions entre développeur logiciel ou ingénieur matériel s'estompent.

Productivité

Avec la fonction en tant que service , les unités de code exposées au monde extérieur sont de simples fonctions événementielles . Cela signifie que généralement, le programmeur n'a pas à se soucier du multithreading ou de la gestion directe des requêtes HTTP dans son code, simplifiant ainsi la tâche de développement logiciel back-end.

Désavantages

Performance

Le code sans serveur rarement utilisé peut souffrir d'une latence de réponse plus élevée que le code qui s'exécute en permanence sur un serveur dédié, une machine virtuelle ou un conteneur. En effet, contrairement à la mise à l'échelle automatique, le fournisseur de cloud « arrête » complètement le code sans serveur lorsqu'il n'est pas utilisé. Cela signifie que si l' environnement d' exécution (par exemple, l' environnement d' exécution Java ) nécessite un temps de démarrage important, il créera une latence supplémentaire.

Limites de ressources

L'informatique sans serveur n'est pas adaptée à certaines charges de travail informatiques, telles que l'informatique hautes performances , en raison des limites de ressources imposées par les fournisseurs de cloud, et aussi parce qu'il serait probablement moins coûteux de fournir en bloc le nombre de serveurs jugés nécessaires à un moment donné. point dans le temps.

Surveillance et débogage

Diagnostiquer les problèmes de performances ou d'utilisation excessive des ressources avec le code sans serveur peut être plus difficile qu'avec le code serveur traditionnel, car bien que des fonctions entières puissent être chronométrées, il n'est généralement pas possible d'approfondir les détails en attachant des profileurs , des débogueurs ou des outils APM . De plus, l'environnement dans lequel le code s'exécute n'est généralement pas open source , de sorte que ses caractéristiques de performances ne peuvent pas être reproduites avec précision dans un environnement local .

Sécurité

Le sans serveur est parfois considéré à tort comme plus sécurisé que les architectures traditionnelles. Bien que cela soit vrai dans une certaine mesure parce que les vulnérabilités du système d'exploitation sont prises en charge par le fournisseur de cloud, la surface d'attaque totale est considérablement plus grande car il y a beaucoup plus de composants dans l'application par rapport aux architectures traditionnelles et chaque composant est un point d'entrée vers l'application sans serveur. . De plus, les solutions de sécurité que les clients devaient utiliser pour protéger leurs charges de travail cloud deviennent inutiles car les clients ne peuvent rien contrôler et installer au niveau du point de terminaison et du réseau , comme un système de détection/prévention des intrusions (IDS/IPS).

Ceci est intensifié par les propriétés de monoculture de l'ensemble du réseau de serveurs. (Une seule faille peut être appliquée à l'échelle mondiale.) Selon Protego, "la solution pour sécuriser les applications sans serveur est un partenariat étroit entre les développeurs, DevOps et AppSec, également connu sous le nom de DevSecOps. Trouvez l'équilibre où les développeurs ne possèdent pas la sécurité, mais ils ne sont pas non plus dégagés de leurs responsabilités. Prenez des mesures pour en faire le problème de tous. Créez des équipes interfonctionnelles et travaillez à une intégration étroite entre les spécialistes de la sécurité et les équipes de développement. Collaborez afin que votre organisation puisse résoudre les risques de sécurité à la vitesse du sans serveur.

Intimité

De nombreux environnements de fonction sans serveur sont basés sur des environnements de cloud public propriétaires . Ici, certaines implications en matière de confidentialité doivent être prises en compte, telles que les ressources partagées et l'accès par des employés externes. Cependant, l'informatique sans serveur peut également être effectuée sur un environnement de cloud privé ou même sur site, en utilisant par exemple la plate- forme Kubernetes . Cela donne aux entreprises un contrôle total sur les mécanismes de confidentialité, tout comme avec l'hébergement dans les configurations de serveur traditionnelles.

Normes

L'informatique sans serveur est couverte par l' International Data Center Authority (IDCA) dans son Framework AE360. Cependant, la partie liée à la portabilité peut poser problème lors du déplacement de la logique métier d'un cloud public à un autre pour lequel la solution Docker a été créée. Cloud Native Computing Foundation (CNCF) travaille également au développement d'une spécification avec Oracle.

Verrouillage du fournisseur

L'informatique sans serveur est fournie en tant que service tiers. Les applications et les logiciels qui s'exécutent dans l'environnement sans serveur sont par défaut verrouillés sur un fournisseur de cloud spécifique. Par conséquent, le sans serveur peut entraîner plusieurs problèmes lors de la migration.

Voir également

Les références

Lectures complémentaires