Le DevOps rencontre un problème : le principe “You build it, you run it” atteint ses limites.
Cette approche implique que l'équipe de développement, responsable de l'écriture du code, le déploie et le maintienne également en production.
Confier la responsabilité du déploiement aux développeurs aide à améliorer la qualité de service, car cela leur permet d'être en contact quotidien avec le fonctionnement de leur logiciel et avec le client, contrairement à l'approche traditionnelle.
Mais le nombre d’outils a explosé ces dernières années, entraînant pour les développeurs une augmentation de la charge mentale et une baisse de la productivité.
Le Platform Engineering cherche à résoudre ce problème en transformant les équipes ops traditionnelles en “cloud provider” interne aux entreprises. L’idée est d'apporter une couche d’abstraction qui masque la complexité de l’infrastructure à travers une plateforme pour créer, déployer et gérer des applications.
Cela améliore l'expérience des développeurs et simplifie le développement en cachant la complexité de l'infrastructure, leur permettant de se concentrer sur la création et l'innovation.
Dans le Platform Engineering, l’approche produit est fondamentale. Elle permet de déplacer le focus d’une plateforme technique à une solution qui répond aux besoins des développeurs. Cela implique un changement d’état d’esprit et d’organisation des équipes opérationnelles.
Prenons cet exemple d’architecture basée sur AWS (source https://platformengineering.org).
Pour une bonne plateforme, nous avons besoin des éléments suivants :
Mais surtout la nouvelle brique : le portail développeur.
Pour un bon portail développeur, il nous faut les composants suivants :
Le portail développeur sera utilisé pour définir des golden paths.
Un golden path est un ensemble de bonnes pratiques et de workflows pour développer une application au sein d’une organisation.
Dans la suite de cet article, nous utiliserons Backstage pour le portail développeur. Backstage en deux mots est la solution de portail open source de Spotify.
Mais une fois cette architecture cible définie, comment démarrer la construction de sa plateforme ? Quelles technologies choisir ?
CNOE (prononcé Kuh.noo) pour Cloud Native Operational Excellence est une communauté open source qui cherche à répondre à ces questions. Son l’objectif est de faciliter l’adoption du Platform Engineering à travers des conseils, des outils et des architectures de références d’IDP.
CNOE se base sur les principes suivants :
CNOE fournit une liste de technologies de référence communément utilisées et supportées par la communauté pour chaque composant de l’IDP, ainsi que des implémentations de référence, mais pour l’instant seulement pour AWS.
Surtout, CNOE propose des outils, dont l’idpBuilder pour développer sa plateforme, que nous allons explorer dans les chapitres suivants.
idpBuilder est un outil en ligne de commande qui vous permet de déployer facilement une IDP complète sur votre machine locale, en s'appuyant sur des technologies standard comme Kubernetes, Argo CD et Backstage.
Quand idpBuilder crée un cluster IDP, il réalise les actions suivantes :
Ensuite, nous pouvons installer différents packages (des applications Argo CD) pour ajouter des fonctionnalités. CNOE propose une collection de package pour nous aider à construire notre IDP. Pour l’exemple suivant, nous utiliserons l'implémentation de référence qui install :
Prérequis
Installer idpBuilder en fonction de votre système d’exploitation : https://cnoe.io/docs/idpbuilder/installation
Lancer la commande :
idpbuilder create --use-path-routing --package https://github.com/cnoe-io/stacks//ref-implementation
Explication :
--use-path-routing permet de choisir le format de l’url pour exposer les applications, "https://cnoe.localtest.me/argocd” au lieu de “https://argocd.cnoe.localtest.me”--package le chemin vers les manifests à installer sur le cluster par Argo CDLe processus peut prendre 6 minutes environ.
Une fois terminé, il est possible de se connecter à Argo CD via l’url suivante : https://cnoe.localtest.me:8443/argocd
idpBuilder nous affiche dans le terminal le nom de l’utilisateur admin et la commande pour obtenir le secret qui a été généré :
idpbuilder get secrets -p argocd
Une fois connecté, vous pouvez voir sur l’interface d’Argo CD toutes les applications installées. Ensuite allons voir Backstage : https://cnoe.localtest.me:8443/
Nous sommes accueillis par la page de login de Keycloak. Un utilisateur admin a été créé par défaut user1. Il est possible d’obtenir son mot de passe avec la commande suivante :
idpbuilder get secrets -p keycloak -o json | jq '.[] | .data.USER_PASSWORD'
Nous allons pouvoir voir un exemple de golden path, en cliquant sur le bouton Create… Plusieurs templates s’offrent à nous. Dans Backstage un template est l’équivalent d’un golden path. Choisissons “Create a Basic Deployment”.
Nous pouvons saisir demo comme nom pour l’application et cliquer sur create.
Une fois terminée, nous pouvons retrouver notre application dans le catalogue et voir que l’application a bien été déployée par Argo CD. En coulisse :
Et voilà notre premier IDP en local. Parfait pour l’apprentissage et développer localement. Notez que vous avez un exemple de template avec des ressources AWS. Vous pouvez installer et configurer Crossplane pour déployer des ressources AWS.
Nous avons vu que le Platform Engineering répond aux limites du DevOps en simplifiant l’infrastructure pour les développeurs. Mais comment mettre en œuvre une plateforme rapidement et efficacement ? CNOE apporte une solution.
Avec une approche open source et communautaire, CNOE fournit des architectures de référence, des outils comme idpBuilder pour construire une Internal Developer Platform (IDP) sans partir de zéro. En quelques minutes, idpBuilder déploie localement une plateforme complète – avec Backstage, Argo CD, Keycloak et bien plus – permettant aux équipes de démarrer rapidement les développements de leur plateforme.
Cependant et malgré quelques partenaires prestigieux comme AWS, Adobe et Cisco la communauté autour du projet reste encore modeste avec 380 followers sur Github. Un projet encore jeune qui doit faire ses preuves et réussir à fédérer une communauté autour de lui. En l'état, nous ne recommandons pas de l’utiliser pour un environnement de production mais c’est un outil intéressant pour de l'apprentissage ou du prototypage.