Ingénierie de plateforme et DevOps

Copier l'URL

L'ingénierie de plateforme et le DevOps sont des pratiques informatiques qui utilisent des méthodes agiles pour faciliter et accélérer le développement logiciel. Chaque pratique s'applique cependant à un moment différent et pour des problèmes distincts. Il est nécessaire pour les entreprises de comprendre ces différences afin de choisir l'approche qui leur permettra d'atteindre leurs objectifs. Le DevOps est une approche de développement logiciel que les entreprises adoptent pour associer les fonctions de développement et d'exploitation informatique au sein de workflows itératifs. L'ingénierie de plateforme concerne davantage la création des plateformes et outils internes qui vont permettre l'exécution de ces workflows. 

Le DevOps associe le développement et l'exploitation à l'aide d'outils et de processus dans le but de rapprocher des équipes qui avaient plutôt l'habitude de travailler de manière isolée au sein des entreprises. Ce modèle utilise des principes agiles, c'est-à-dire une méthode de développement qui s'appuie sur l'autogestion des équipes et une itération rapide. Parce que sa mise en œuvre requiert la collaboration entre les équipes, la pluridisciplinarité ainsi qu'un bon niveau de confiance et de cohésion, le DevOps est souvent perçu comme un modèle nécessitant une transformation de l'entreprise plutôt qu'une simple évolution des processus. La culture de l'entreprise doit être adaptée pour permettre l'adoption du DevOps.

Les pratiques DevOps et agiles ont émergé en réponse aux critiques visant les méthodes traditionnelles de développement logiciel en cascade, qu'on accuse notamment de ralentir l'innovation et de créer des obstacles et autres goulets d'étranglement. Dans un système en cascade, le code développé est soumis à différents tests (fonctionnalité, efficacité, standardisation et documentation) avant d'être intégré à une application. Ces tests préalables peuvent entraîner une longue file d'attente de traitement, avec le risque d'entraver la capacité à exécuter les projets à l'échelle souhaitée, dans les délais et les limites du budget alloué, surtout en cas de changements incessants ou de manque de clarté.

De son côté, le DevOps utilise des processus automatisés et cycliques qui permettent aux équipes de développement de déployer rapidement les logiciels en production, puis de les améliorer en continu. Le DevOps nécessite que les équipes communiquent et collaborent de manière étroite, avec des pratiques qui favorisent le partage de compétences et grâce auxquelles des améliorations de produits peuvent être intégrées et développées par itérations, au lieu d'être exécutées à l'avance avec des délais de lancement plus longs. Les entreprises qui mettent en œuvre le DevOps sont en mesure d'améliorer leurs logiciels de manière systématique au fil du temps, et permettent ainsi aux équipes de s'adapter et de tenter de nouvelles approches qu'il leur serait pratiquement impossible de suivre avec les modèles de développement traditionnels.

L'ingénierie de plateforme vient compléter les pratiques DevOps en fournissant des outils, services et workflows standardisés qui permettent aux équipes de développement de créer plus efficacement des solutions logicielles. Ce modèle relativement récent décrit une pratique d'organisation des services et ressources internes, grâce à laquelle les équipes de développement peuvent créer des solutions sans avoir à gérer directement les éléments qui la composent. Les équipes d'ingénierie de plateforme se chargent de la sélection et de la maintenance des outils, des services et de la documentation dont les équipes de développement ont besoin. Tous les membres du service informatique peuvent ainsi travailler plus efficacement sans avoir à être entièrement autosuffisants, grâce à des processus automatisés tels que les modèles de référence. L'ingénierie de plateforme s'est développée à mesure de l'adoption croissante du DevOps, car elle fournit les composants sous-jacents qui facilitent l'exécution des workflows DevOps et permet à ce modèle d'évoluer au sein des entreprises.

Lors de sa conférence de présentation au DevOpsDays London, Abby Bangser a utilisé la cuisine comme métaphore pour expliquer le rôle de l'ingénierie de plateforme dans le cadre du DevOps. Pour développer un logiciel, il faut un outil ou une ressource, comme on utiliserait un ustensile (une casserole) ou un ingrédient (du persil) pour cuisiner un plat. On peut formuler une demande, sans garantie d'obtenir précisément les éléments dont on a besoin car les équipes chargées du provisionnement peuvent ne pas être en mesure de fournir l'outil exact ni avoir accès aux ressources demandées. Si le modèle DevOps permet d'éviter les contraintes liées à la formulation de ces demandes et au provisionnement, il nécessite de créer la ressource ou l'outil nécessaire par ses propres moyens. Dans notre exemple culinaire, il s'agirait de forger le métal de la casserole ou de faire pousser le persil, ce qui se révélerait bien trop compliqué et inefficace.

Avec ce modèle en libre-service, les équipes de développement sont submergées par les nombreuses technologies nécessaires à leurs tâches quotidiennes. La gestion de ces outils peut être difficile, réduire l'efficacité et augmenter la charge cognitive qui pèse sur les équipes. D'autres défis viennent également s'ajouter, notamment lors de l'intégration de nouveaux membres à l'équipe : ceux-ci doivent maîtriser une multitude d'outils et de systèmes, et les membres les plus expérimentés doivent se détourner de leurs tâches pour leur apporter de l'aide, ce qui entraîne une perte de productivité. L'ingénierie de plateforme vise à faciliter les workflows DevOps en éliminant ces problèmes. Le service informatique peut ainsi axer ses efforts sur l'innovation, avec le soutien des équipes d'ingénierie de plateforme qui s'efforcent de centraliser les meilleures pratiques et les expériences en libre-service.

En savoir plus sur l'ingénierie de plateforme

L'ingénierie de plateforme favorise l'évolution du DevOps, car les équipes DevOps n'ont pas à réaliser toutes les tâches elles-mêmes. Cette pratique permet de standardiser un ensemble d'outils, de connaissances, de services et de processus, que de nombreuses équipes de développement dans l'entreprise peuvent exploiter. La sélection d'une plateforme donne aux ces équipes la possibilité de créer, déployer et prendre en charge leurs propres composants, tandis que l'équipe qui gère la plateforme assure ces mêmes fonctions pour les composants de la plateforme. Elles sont ainsi toutes en mesure de mieux concentrer leurs efforts et de passer plus rapidement à la distribution. Les équipes de plateforme fonctionnent selon un modèle « as-a-service » pour éviter aux équipes DevOps de devoir créer tous les éléments dont elles ont besoin.

Si les équipes de plateforme fournissent des composants aux équipes de développement, l'ingénierie de plateforme pourrait engendrer les mêmes problèmes et dépendances internes que le DevOps cherche justement à limiter. Si l'équipe chargée des applications attend que l'équipe de plateforme fournisse ce dont elle a besoin, il existe théoriquement un risque que des goulets d'étranglement se forment.

En pratique, les équipes de plateforme ont également la capacité de limiter la répétition inutile de tâches, qui fait perdre du temps à l'entreprise. Les différentes équipes de développement peuvent utiliser une seule et même plateforme en libre-service, plutôt que chacune assemble et utilise sa propre plateforme avec les mêmes fonctionnalités. La cohérence est ainsi assurée à long terme, même en cas de réattribution d'un projet à une autre équipe de développement. En outre, ces équipes de plateforme considèrent les équipes de développement comme des clients et savent que si elles ne répondent pas aux besoins de leurs utilisateurs cibles, ces clients internes utiliseront un autre type d'infrastructure ou un autre mécanisme de déploiement, ce qui peut les inciter à accélérer la distribution. La plateforme peut être enrichie avec des solutions éprouvées et de meilleures pratiques, et les équipes peuvent partager plus efficacement leurs connaissances.

Le terme d'ingénierie de plateforme peut faire penser à l'ingénierie de la fiabilité des sites. Introduit par Google, ce concept décrit les systèmes qui exécutent des produits grâce à l'automatisation, remplaçant ainsi le travail manuel généralement effectué par les administrateurs système. Ces systèmes gèrent l'infrastructure sous-jacente, tandis que les équipes associées développent et automatisent les processus pour en garantir l'intégrité et la disponibilité. Si elles ont des objectifs communs, les équipes d'ingénierie de la fiabilité des sites se concentrent sur les performances logicielles, la fiabilité et la mise à l'échelle, tandis que les équipes d'ingénierie de plateforme s'intéressent aux systèmes conçus pour optimiser l'expérience de développement.

En savoir plus sur l'approche de Red Hat en matière d'ingénierie de la fiabilité des sites

Les équipes utilisent généralement l'ingénierie de plateforme pour créer leurs propres plateformes de développement, outils, services et documents internes via un portail en libre-service. Les équipes d'ingénierie de plateforme peuvent concevoir et distribuer une plateforme de développement interne basée sur les besoins des utilisateurs et les meilleures pratiques, puis l'améliorer à partir des recherches et des tests des utilisateurs. Puisque les équipes de développement sont leurs utilisateurs cibles, il est possible pour ces équipes de leur fournir des plateformes de développement internes en libre-service et de réduire ainsi leur charge cognitive.

Les entreprises qui souhaitent mettre en œuvre l'intégration et la distribution continues (CI/CD) dans le cadre du cycle de développement logiciel doivent adopter des pratiques DevOps. Les pipelines CI/CD automatisent les tests et l'assemblage de code, ce qui permet de limiter les effets négatifs des bogues et des erreurs de codage grâce à l'intégration continue du cycle de développement et de mise à jour des logiciels. Lorsque les pipelines CI/CD sont intégrés et automatisés tout au long du cycle de développement logiciel, les entreprises disposent de la visibilité nécessaire pour assembler des plateformes de haute qualité qui accélèrent la distribution des applications.

Les produits et services Red Hat® s'utilisent en association pour renforcer la productivité des équipes de développement 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.

Red Hat Developer Hub est un portail de développement interne pour les entreprises qui repose sur Backstage, un projet de la CNCF (Cloud Native Computing Foundation). Il offre aux entreprises la possibilité d'unifier leurs solutions technologiques, de renforcer le libre-service, de faciliter l'intégration d'utilisateurs ainsi que d'augmenter la productivité. Ce portail de développement interne leur permet de rassembler les différents éléments du processus de développement, de rationaliser les workflows et de favoriser la collaboration interne.

En complément de Red Hat Developer Hub, les équipes de développement peuvent exécuter la solution Red Hat OpenShift® qui leur permet d'utiliser leurs outils pour un large éventail d'applications cloud-native, existantes et modernisées, qu'elles soient déployées sur site, dans le cloud ou en périphérie du réseau.

Assurer la productivité des équipes de développement avec les solutions Red Hat

Découvrez comment l'association des technologies Red Hat permet d'assurer la productivité des équipes de développement.

En savoir plus

Red Hat OpenShift pour les ingénieurs de plateforme

Red Hat OpenShift offre aux ingénieurs de plateforme les outils nécessaires pour créer et gérer efficacement les plateformes de développement internes.

Définition d'une plateforme de développement interne

Une plateforme de développement interne 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.

InstructLab, qu'est-ce que c'est ?

InstructLab est un projet Open Source visant à améliorer les grands modèles de langage (LLM).

Platform engineering : ressources recommandées

Produit recommandé

  • Red Hat OpenShift

    Plateforme unifiée de développement d'applications pour la création, la modernisation et le déploiement d'applications à grande échelle sur l'infrastructure de cloud hybride de votre choix.