Ingénierie de plateforme et DevOps

Copier l'URL

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. 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.

Découvrir Red Hat OpenShift pour l'ingénierie de plateforme

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.

État de l'ingénierie de plateforme à l'ère de l'IA

L'ingénierie de plateforme vient compléter les pratiques DevOps en fournissant des outils, services et workflows standardisés qui aident les équipes de développement à 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 aux processus automatisés décrits dans des 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.

Avec un 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.

Vidéo sur le rôle des équipes d'ingénierie de plateforme (durée : 2 min 31 s)


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 « 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 notre approche 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 spécialistes du 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 de 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.

Le DevOps et l'ingénierie de plateforme sont des approches distinctes qui se complètent pour optimiser le développement et le déploiement des logiciels. Si chacune vise à augmenter la vitesse de lancement et à préserver la stabilité des systèmes, leur fonctionnement est très différent. Le modèle DevOps repose sur une culture et des méthodes ancrées dans la collaboration. L'ingénierie de plateforme est une pratique orientée produit qui fournit les outils de base permettant l'adoption de cette culture dans l'ensemble de l'entreprise.

Au sein de cet écosystème, la mission de l'équipe d'ingénierie DevOps consiste à rapprocher les équipes de développement et d'exploitation. Elle est principalement chargée d'automatiser les processus d'assemblage, de test et de déploiement en concevant et en assurant le bon fonctionnement des pipelines de CI/CD. Afin de garantir la cohérence entre les environnements, elle utilise largement l'approche IaC (Infrastructure-as-Code) pour provisionner automatiquement l'infrastructure et les plateformes plutôt que de configurer manuellement les serveurs. Ce rôle exige un état d'esprit axé sur l'amélioration continue reposant sur l'analyse permanente des pipelines de déploiement pour détecter tout goulet d'étranglement. De plus, l'équipe d'ingénierie DevOps travaille souvent en étroite collaboration avec un ingénieur de la fiabilité des sites pour trouver l'équilibre entre le lancement rapide des fonctions et les objectifs stricts de fiabilité et de disponibilité des systèmes.

L'équipe d'ingénierie de plateforme considère avant tout l'infrastructure comme un produit. Elle cherche à réduire la charge cognitive des équipes de développement logiciel face à la complexification des environnements cloud. Sa principale responsabilité est d'assembler et de gérer une plateforme de développement interne qui sert de portail en libre-service permettant aux équipes de développement de provisionner les environnements, les bases de données et les pipelines de manière indépendante. Cette approche favorise la standardisation des contrôles d'accès aux systèmes et de la conformité de la sécurité avec l'utilisation de modèles de plateforme. Les équipes d'ingénierie de plateforme transforment des modèles avancés en modèles de référence réutilisables qui éliminent les complexités sous-jacentes de la mise en réseau cloud et de l'orchestration des conteneurs, pour permettre aux spécialistes du développement de concentrer tous leurs efforts sur l'écriture du code de l'application.

Dans les environnements d'entreprise, la sécurité et la conformité doivent être intégrées directement aux pratiques quotidiennes de déploiement. Les modèles DevOps traditionnels suivent souvent l'approche Shift Left, qui consiste à assurer la sécurité via des tests automatisés et une intégration continue pendant la phase de développement. Ces pratiques peuvent toutefois augmenter considérablement la charge cognitive des équipes de développement. L'ingénierie de plateforme permet de réduire cette charge en offrant la possibilité de concevoir des plateformes conformes et sécurisées dès le départ. 

En intégrant des politiques de sécurité et de conformité aux outils d'automatisation et aux pratiques standardisées de CI/CD, l'ingénierie de plateforme élimine toute complexité réglementaire. Les équipes de développement peuvent ainsi s'appuyer sur une infrastructure sécurisée et évolutive sans avoir à maîtriser la conformité.

En outre, l'intégration de fonctions robustes de gestion des risques aux différentes plateformes cloud nécessite une approche unifiée de l'IaC et de la conteneurisation. Les équipes DevOps ont recours à ces méthodes pour accélérer la distribution des logiciels, en laissant le soin aux équipes d'ingénierie de plateforme d'assurer le bon fonctionnement des systèmes sous-jacents couverts par la gouvernance. Cette collaboration permet de signaler instantanément tout écart par rapport aux exigences de l'entreprise. En s'efforçant de mettre en place une stratégie qui repose sur une plateforme centralisée au lieu de simplement assembler des systèmes évolutifs et sécurisés, les entreprises peuvent augmenter la vitesse de lancement des versions sans s'exposer à des risques réglementaires et opérationnels.

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 à la périphérie du réseau.

Découvrir les nouveautés de Red Hat OpenShift et les prévisions

Red Hat Advanced Developer Suite

Gamme de solutions qui aide les spécialistes de l'ingénierie de plateforme à améliorer la productivité des équipes de développement et la sécurité des applications.

En savoir plus

Un modèle de référence pour le développement logiciel, qu'est-ce que c'est ?

Cet article présente les modèles de référence, des méthodes strictes, documentées et recommandées pour développer et déployer des logiciels au sein d'une entreprise.

Les outils d'ingénierie de plateforme, qu'est-ce que c'est ?

Les outils d'ingénierie de plateforme sont des ressources utilisées en libre-service par les équipes de développement pour renforcer leur productivité.

Une plateforme de développement interne, qu'est-ce que c'est ?

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.

Platform engineering : ressources recommandées