Définition d'un modèle de référence
Un modèle de référence, ou Golden Path en anglais, est une méthode stricte, documentée et recommandée pour créer et déployer des logiciels au sein d'une entreprise. Les équipes de développement qui suivent des processus bien définis sont en mesure de travailler plus efficacement, en adéquation avec les normes de l'entreprise. Les modèles de référence offrent une approche claire qui permet aux équipes d'ingénierie de plateforme de guider les équipes DevOps, les équipes IA/MLOps ainsi que les services chargés de la sécurité, de la mise en réseau ou d'autres domaines de l'entreprise, afin d'optimiser la cohérence, la fiabilité et l'utilisation du temps et des ressources.
Le nombre de modèles de référence disponibles peut varier en fonction de la taille et de la maturité de l'équipe de développement. Par exemple, une entreprise qui vient de former une équipe d'ingénierie de plateforme peut avoir quelques modèles de référence à sa disposition pour gérer des processus clés, tels que le développement de microservices, les pipelines CI/CD, le provisionnement de l'infrastructure et la configuration de l'observabilité. De leur côté, les équipes plus expérimentées peuvent disposer de centaines de modèles de référence détaillés, par exemple pour le développement d'applications, les pipelines de données destinés aux analyses ou aux charges de travail d'apprentissage automatique (AA), le développement d'applications serverless ainsi que les workflows de sécurité et de conformité. Quelle que soit la taille ou la maturité de l'équipe, les modèles de référence ont généralement tous plusieurs composants communs :
- Modèles de logiciels : microservice standard préconfiguré, par exemple un modèle Python FastAPI avec Docker et des pipelines CI/CD
- Provisionnement de l'infrastructure : modules Terraform ou Pulumi préconçus pour les ressources cloud
- Création et déploiement de pipelines : scripts GitHub Actions ou Jenkins préconfigurés
- Outils d'observabilité : solutions intégrées de journalisation et de surveillance
- Consignes de sécurité : politiques et analyses préappliquées et intégrées au workflow
Concept de modèle de référence
Le terme Golden Path a été inventé par l'auteur américain Frank Herbert dans son roman de science-fiction Children of Dune (Les enfants de Dune), dans lequel il est traduit par Sentier d'or. Le concept de modèle (qui s'inspire du Golden Path de Frank Herbert) pour les logiciels a été créé par Spotify afin de permettre aux équipes d'ingénierie de s'adapter en continu aux outils et aux processus. L'approche a par la suite été adoptée par d'autres entreprises, parmi lesquelles Google et Netflix, qui lui attribuent parfois un nom qui leur est propre. Par exemple chez Netflix, on parle de Paved Road, ou route pavée.
Pour comprendre un modèle de référence, on peut penser à la préparation d'un gâteau : les étapes requises incluent de préchauffer le four à une température précise, de sélectionner les ustensiles adaptés et de se procurer les ingrédients nécessaires. Plus que de simplement suivre une recette, il s'agit également de veiller à utiliser les outils et techniques qui conviennent. Et pour que d'autres personnes puissent ensuite préparer le même gâteau, il est nécessaire de trouver des moyens d'améliorer la cohérence et l'efficacité. Avec un modèle de référence, le principe est le même. Plus on suit un modèle spécifique pour le développement logiciel, plus le processus et le produit sont perfectionnés. On peut ainsi comparer la préparation d'un gâteau à la mise en œuvre d'un modèle de référence.
Qualités des modèles de référence
D'après les architectes logiciels, notamment ceux de nos équipes, les modèles de référence doivent être facultatifs, transparents, évolutifs et personnalisables.
Facultatifs
Les modèles de référence ne doivent pas devenir obligatoires pour la création et le déploiement de logiciels. Pour favoriser l'innovation, il est nécessaire de pouvoir s'écarter des workflows standards. Les équipes d'ingénierie peuvent rencontrer des situations qui ne nécessitent pas de modèles de référence et identifier des cas où il peut être avantageux d'en utiliser.
Transparents
Les outils et processus inclus dans les modèles de référence doivent être transparents. Les modèles créés permettent d'adopter diverses approches sans avoir à maîtriser la technologie sous-jacente. Les modèles de référence transparents offrent aux équipes de développement la possibilité de mieux comprendre le processus qui se déroule en arrière-plan.
Évolutifs
Les modèles de référence doivent être évolutifs et permettre l'ajout de nouvelles fonctions et capacités. Par défaut, ces modèles peuvent être adaptés à différentes situations, mais ils doivent être suffisamment flexibles pour permettre l'ajout de capacités supplémentaires si un cas d'utilisation spécifique l'impose.
Personnalisables
Les modèles de référence doivent être hautement personnalisables selon les besoins des équipes de développement (qu'elles soient internes ou tierces) et l'expérience acquise par l'entreprise lorsqu'elle effectuait les différentes tâches manuellement. Ce potentiel permet de créer des normes qui seront mises en œuvre dans ces modèles de référence pour renforcer la sécurité du processus.
Si les modèles de référence peuvent présenter des différences en fonction de la nature du déploiement, ils doivent tous être facultatifs, transparents, évolutifs et personnalisables.
Assurer la productivité des équipes de développement avec les solutions Red Hat
Auteurs et utilisateurs des modèles de référence
En règle générale, les équipes d'ingénierie de plateforme créent et gèrent des modèles de référence pour fournir aux équipes de développement les meilleures pratiques, les outils, les services, les ressources et les processus qui leur permettront d'augmenter leur productivité. L'ingénierie de plateforme a pour but d'accroître la productivité et la collaboration entre les équipes en renforçant la cohérence et l'efficacité. Les équipes d'ingénierie de plateforme s'efforcent d'identifier les difficultés liées au développement et de les éliminer grâce à des outils et capacités standards et réutilisables, à partir d'une plateforme de développement interne. Cette plateforme est constituée d'un ensemble standardisé d'outils et de technologies en libre-service qui permettent aux équipes de développement de rédiger et déployer du code.
Les modèles de référence peuvent notamment faciliter les cas d'utilisation suivants :
Développement d'applications
Les équipes de développement cherchent à créer, tester et distribuer des applications de manière standardisée et sécurisée. Elles peuvent s'appuyer sur des modèles de référence pour définir une stratégie d'intégration et augmenter l'efficacité du processus de création. Avec les modèles de référence, les équipes chargées des applications peuvent disposer d'une base unifiée qui permet le partage d'informations, encourage la création d'outils partagés et augmente l'agilité ainsi que la mobilité au sein de l'entreprise.
Science des données
Les équipes de science des données collectent, analysent et interprètent des données pour produire des informations exploitables. Elles peuvent également se spécialiser dans le développement et le déploiement de l'intelligence artificielle (IA) et de systèmes d'AA. Grâce aux modèles de référence, les équipes MLOps sont en mesure d'intégrer des modèles d'AA au développement logiciel. Les équipes de science des données peuvent aussi les utiliser pour développer des modèles d'IA, tandis que les équipes de développement les exploiteront pour mettre en œuvre ces modèles.
Ingénierie de la fiabilité des sites
Les équipes d'ingénierie de la fiabilité des sites sont responsables du déploiement, de la configuration et de la surveillance du code, ainsi que des services en production (disponibilité, latence, gestion des modifications, intervention en cas d'urgence et gestion de la capacité). Avec des modèles de référence, ces équipes bénéficient de la cohérence nécessaire pour créer des systèmes logiciels évolutifs et extrêmement fiables.
Administration des systèmes
Les équipes d'administration des systèmes assurent le déploiement, la configuration et la maintenance des systèmes informatiques d'une entreprise. Parce qu'elles peuvent gérer des milliers de machines, elles ont besoin de méthodes évolutives et durables pour travailler efficacement. Les modèles de référence leur offrent un cadre bien défini pour simplifier ou automatiser les tâches et processus courants. La gestion est ainsi moins complexe et le risque d'erreurs est réduit.
Avantages des modèles de référence
Disponibles en libre-service, les modèles de référence offrent de nombreux avantages qui favorisent la productivité des équipes de développement :
Réduction de la charge cognitive : la standardisation des processus réduit la charge cognitive des équipes, ce qui libère du potentiel pour l'innovation.
Accélération du développement : grâce à des tâches définies, les équipes de développement peuvent travailler efficacement sans avoir à chercher des outils ni à déchiffrer des processus. Elles peuvent s'appuyer sur les meilleures pratiques existantes et déjà utilisées au sein de l'entreprise.
Amélioration de la cohérence : les modèles partageables et l'optimisation des processus internes favorisent la cohérence entre les projets, ce qui produit de meilleurs résultats et améliore la qualité, qu'il s'agisse d'équipes de développement internes ou tierces.
Intensification de l'automatisation : l'automatisation des tâches répétitives, telles que les déploiements ou les tests de code, facilite la mise en œuvre de pratiques comme les pipelines CI/CD, l'IaC (Infrastructure-as-Code) et la gestion des interfaces de programmation d'application (API).
Simplification de l'intégration de nouveaux membres : grâce à la documentation et aux outils facilement accessibles, les nouveaux membres d'équipe peuvent maîtriser les workflows plus rapidement sans avoir à déterminer la meilleure approche pour chaque tâche.
Renforcement de la sécurité : les modèles garantissent le respect des normes de sécurité à l'aide de pratiques intégrées, ce qui simplifie les audits réalisés ultérieurement.
Conception d'un modèle de référence
La conception d'un modèle de référence consiste à élaborer une feuille de route qui garantit simplicité et efficacité. Si le contenu d'un modèle de référence peut varier en fonction des objectifs, il est toutefois nécessaire de prendre en compte certaines meilleures pratiques pour améliorer la productivité du développement.
- Définir l'utilisateur : l'utilisateur le plus courant d'un modèle de référence est l'équipe de développement. Parce que la création et la gestion des modèles sont assurées par plus d'une équipe ou plus d'une personne, les utilisateurs seront issus d'un groupe spécifique disposant de différentes gammes de compétences, comme le codage, le profilage et la sécurité.
- Identifier l'objectif : l'objectif global d'un modèle de référence est d'augmenter la productivité du développement en automatisant les pratiques existantes.
- Définir la stratégie étape par étape : la création d'étapes et de consignes claires permet de s'assurer que l'utilisateur dispose d'un cadre simple et efficace pour réaliser chaque tâche.
- Fournir les outils et ressources : la mise à disposition des outils et documents nécessaires à l'exécution permet de fournir du contexte au modèle de référence.
- Déployer une plateforme de développement interne : les plateformes de développement internes facilitent l'accès aux modèles de référence et en garantissent la disponibilité. Elles permettent aux équipes de développement de les utiliser en libre-service.
- Mesurer et reproduire la réussite : pour déterminer si un modèle de référence est efficace, il est nécessaire d'utiliser des indicateurs de mesure, comme les indicateurs DORA (DevOps Research and Assessment), SPACE Framework ou Flow Framework. Il est également utile de solliciter l'avis des utilisateurs et de répéter le processus afin d'en améliorer l'efficacité.
Exemples de modèles de référence
Développement de microservices
Un modèle de référence peut être utilisé pour créer un microservice à partir de modèles préconçus fournis par les équipes d'exploitation.
Un microservice est un type d'architecture d'applications composée d'un ensemble de services indépendants qui communiquent par l'intermédiaire d'API légères. Une architecture de microservices offre une approche plus efficace en matière de développement d'applications, car elle permet à chaque fonction centrale d'une application d'exister de manière indépendante. Avec des éléments d'applications séparés, les équipes DevOps peuvent travailler ensemble sans se gêner. Ainsi, davantage de développeurs peuvent travailler en même temps, sur la même application, ce qui réduit la durée du développement.
Un modèle de référence peut accroître davantage la productivité du développement en mettant en place un processus efficace pour la création, le déploiement et la gestion des microservices. Pour être efficace, un modèle de référence pour les microservices doit intégrer un pipeline bien structuré et mettre l'accent sur l'automatisation, les meilleures pratiques et l'observabilité.
Distribution MLOps
Les modèles de référence peuvent faciliter la distribution MLOps. S'inspirant des principes DevOps et GitOps, le MLOps a pour but d'établir une évolution continue pour l'intégration des modèles d'AA au développement logiciel. Grâce à la rationalisation de la collaboration entre les différentes équipes, cette approche MLOps favorise l'agilité du développement et la prise de décision basée sur des données au sein des entreprises. L'adoption d'une approche MLOps réduit le travail manuel qu'implique la maintenance d'un modèle d'AA, et permet aussi d'assurer les performances et la fiabilité de ce modèle dans le temps.
En utilisant un modèle de référence comme guide pour la distribution de l'AA, les équipes peuvent simplifier le développement, le déploiement et la gestion des modèles associés. Les modèles de référence soutiennent l'approche MLOps, car ils établissent des workflows et des pratiques, comme des pipelines automatisés, pour garantir une distribution fiable et cohérente des modèles d'AA.
Les équipes MLOps peuvent tirer parti de modèles de référence qui prennent en charge les différents critères du MLOps tout en permettant d'effectuer librement les ajustements nécessaires en fonction des cas d'utilisation.
IA agentique
L'IA agentique est un système logiciel conçu pour interagir avec les données et les outils d'une manière qui nécessite une intervention humaine minimale. Un agent d'IA est capable de réaliser des tâches en créant une liste d'étapes et en les exécutant de manière autonome. À la différence de l'automatisation traditionnelle, l'IA agentique utilise des données en temps réel, des modèles d'AA et des retours d'expérience afin de prendre des décisions selon le contexte.
Pour mettre en œuvre l'IA agentique, un système est créé afin de permettre à un grand modèle de langage (LLM) d'accéder à des outils et algorithmes externes qui formulent des instructions sur la manière dont les agents d'IA doivent utiliser ces outils. À l'image des modèles de référence, l'IA agentique s'appuie sur un processus autonome et optimisé pour atteindre un objectif ou réaliser une tâche, et apprend et s'adapte en fonction des besoins.
Nos solutions pour le développement logiciel
Nos produits et services s'utilisent en association pour simplifier le développement logiciel et offrir aux entreprises la flexibilité dont elles ont besoin, tant pour augmenter la productivité de leurs équipes et favoriser le libre-service que pour accélérer l'intégration de nouveaux membres et réduire le nombre de tâches répétitives qu'elles effectuent.
La solution Red Hat Developer Hub fournit un portail en libre-service qui permet à toutes les équipes de développement d'une entreprise d'accéder aux modèles de référence disponibles, via un hub centralisé qui regroupe l'ensemble des connaissances et de la documentation technique en lien avec un projet spécifique. Avec cette solution, les entreprises ont la possibilité d'utiliser des modèles logiciels existants pour développer une application ou un microservice, ou de créer et d'utiliser leurs propres modèles personnalisés pour leur environnement.
En complément de Red Hat Developer Hub, la solution Red Hat OpenShift® permet aux équipes de développement d'utiliser leurs outils d'application habituels, notamment les applications existantes, cloud-native et modernisées. Red Hat OpenShift inclut déjà de nombreuses technologies, telles que Red Hat OpenShift Pipelines, Red Hat OpenShift GitOps, Red Hat OpenShift Service Mesh et Red Hat OpenShift Serverless pour rationaliser les workflows de développement et faciliter l'intégration de nombreux autres outils Open Source.
Et parce que la sécurité est toujours une priorité, la solution Red Hat Trusted Software Supply Chain permet d'intégrer la sécurité aux composants, processus et pratiques du développement logiciel. Les équipes de développement peuvent coder, assembler, déployer et surveiller la distribution des logiciels tout en assurant la conformité avec les pratiques de sécurité de l'entreprise dans l'ensemble de la chaîne.