La société Google a présenté la version stable de la plateforme Knative 1.0, destinée à créer une infrastructure de calcul sans serveur, déployée sur un système d'isolation des conteneurs basé sur Kubernetes. En plus de Google, des entreprises telles qu'IBM, Red Hat, SAP et VMware participent également au développement de Knative. La sortie de Knative 1.0 a marqué la stabilisation de l'API pour le développement d'applications, qui ne changera plus et conservera la compatibilité descendante. Le code du projet est écrit en Go et est distribué sous la licence Apache 2.0.
Le modèle de développement d'applications sans serveur proposé dans Knative offre un niveau supplémentaire d'abstraction pour les systèmes cloud, permettant d'exécuter des fonctions en tant que services (FaaS, Functions as a service). L'essence du modèle sans serveur réside dans le fait que le développeur met en œuvre la logique au niveau de fonctions individuelles, sans se soucier de la création et de la gestion de l'infrastructure nécessaire au déploiement des applications, et sans être lié à des applications serveur spécifiques et aux environnements cloud nécessaires à leur fonctionnement.
Le développement se fait sans créer d'applications monolithiques, en préparant un ensemble de petites fonctions distinctes, chacune d'elles traiter un événement spécifique et étant conçue pour fonctionner de manière isolée sans lien avec l'environnement (sans état, le résultat ne dépend pas de l'état passé et du contenu du système de fichiers). Les fonctions ne sont lancées que lorsqu'elles sont nécessaires et, après avoir traité l'événement, elles peuvent immédiatement terminer leur exécution, c'est-à-dire qu'à la différence des microservices, il n'est pas nécessaire de maintenir en permanence des environnements en cours d'exécution, consommant des ressources au ralenti.
La plateforme Knative lance elle-même des conteneurs selon les besoins, y déploie les fonctions préparées, organise la gestion et assure la mise à l'échelle des environnements nécessaires à l'exécution de ces fonctions. La plateforme peut être déployée sur ses propres infrastructures sans lien avec des services cloud externes. Seul Kubernetes est requis pour le lancement. Des outils sont fournis pour prendre en charge divers frameworks, y compris Django, Ruby on Rails et Spring. Une interface en ligne de commande peut être utilisée pour gérer le fonctionnement de la plateforme.
La plateforme propose deux composants principaux:
- Servir à lancer des conteneurs sans serveur dans Kubernetes avec configuration automatique des interactions réseau, routage, suivi des modifications (création de snapshots du code déployé et des configurations) et maintien du niveau de scalabilité requis (jusqu'à réduire le nombre de pods à zéro en cas d'inactivité). Le développeur se concentre uniquement sur la logique, tout ce qui concerne l'exécution est géré par la plateforme. Des systèmes de réseau tels qu'Ambassador, Contour, Kourier, Gloo et Istio peuvent être utilisés pour organiser les interactions réseau et le routage des requêtes. La prise en charge de HTTP/2, gRPC et WebSockets est incluse.
- Eventing est un système universel d'abonnement (d'attachement de gestionnaires), de livraison et de gestion des événements. Il permet de créer des applications fonctionnant de manière asynchrone, en attachant des ressources de calcul aux flux de données via un modèle objet et un mécanisme de traitement des événements.
Source : opennet.ru
