OAM

L’Open Application Model (OAM) est un standard ouvert pour développer et faire tourner des applications sur Kubernetes et d’autres plateformes.

Kubernetes est devenu de facto le standard des orchestrateurs de conteneurs.

Les applications en conteneurs sont devenues le nouveau paradigme de virtualisation, sur un nuage privé, hybride ou public.

Créé par Microsoft et Alibaba sous l’égide de l’Open Web Foundation, OAM est une spécification pour décrire des applications de telle manière que la description est séparée des détails de son déploiement.

Cette séparation des préoccupations permet aux développeurs de se concentrer sur leurs applications, et à d’autres de se concentrer sur les détails des opérations et des déploiements.

On peut la considérer, comme en retour en arrière sur la création du rôle de DevOp (à la fois développeur et opérateur) pour le séparer en trois fonctions : développeur, opérateur d’applications (crée les instances des composants nécessaires à l’application et leur assigne des configurations spécifiques à une application) et opérateur d’infrastructure (déclare, installe et entretient les services disponibles sur une plateforme).

Elle offre également l’opportunité aux architectes de plateformes de concevoir des composants réutilisables, ainsi que des modules (des ensembles de composants) ; et aux développeurs d’intégrer ces composants dans leurs applications pour développer rapidement des applications fiables.

Une application est composée de composants (code d’un programmeur, service comme MySQL, …), de manifestes qui décrivent les relations d’un composant à un autre ou à des microservices, et d’une configuration de ces composants pour former une instance spécifique de l’application à déployer.

Une collection de traits décrit les caractéristiques de l’environnement de l’application, comme la mise à l’échelle automatique. Ce qui rend l’application portable sur tout environnement où ces traits sont disponibles. Un opérateur d’infrastructure peut configurer ces traits afin de satisfaire les besoins uniques de son entreprise, comme la cybersécurité ou la conformité à des régulations.

La première implémentation d’OAM, Rudr, est construite au-dessus de Kubernetes. D’après Microsoft, des implémentations pour de nombreux autres environnements sont toutefois possibles quand Kubernetes n’est pas la solution appropriée ou choisie : petits appareils en bordure du nuage, environnements sans serveur, etc.

La spécification est extensible par conception. Les fournisseurs de plateformes peuvent exposer les caractéristiques uniques de leur plateforme à l’aide de traits. Ditto pour les fabricants de matériels.

Notons qu’il existe déjà un standard d’empaquetage d’applications distribuées : CNAB – Cloud Native Application Bundle.

 

Dapr

Dapr est un environnement d’exécution open source, portable et événementiel qui facilite le développement d’applications avec ou sans état, basées sur les microservices, et tournant dans le nuage ou en périphérie.

Dapr est composé de composantes indépendantes les unes des autres et développées d’après les meilleures pratiques, auxquelles on accède par des APIs par http ou gRPC, et qui peuvent être appelées depuis n’importe quel langage informatique.

Dapr est extensible : la communauté peut ajouter de nouveaux composant.

Et agnostique quand aux plateformes : on peut faire tourner une application compatible localement, sur une grappe Kubernetes, où tout autre environnement d’hébergement où Dapr est intégré.

Les développeurs peuvent donc construire des applications à microservices qui tournent aussi bien sur le nuage qu’en bordure, sans changement de code.

Le projet, en version alpha, offre les composantes suivantes : invocation résiliente de services, gestion d’état, messagerie par publication et abonnement entre services, attachement à des ressources basé sur les événements, acteurs virtuels (encapsulation de l’état et de la fonction pour faciliter les traitements simultanés), et les traces distribuées entre les services pour faciliter le débogage.

Dapr inclut des SDK spécifiques pour les langagues Go, Java, JavaScript, .NET et Python.

Des exemples sont disponibles sur: https://github.com/dapr/dapr.