Dernières nouvelles

Platform Engineering : agilité et DevOps

Partager cet article

L'émergence des plateformes

Qu'ont en commun Deezer, EasyBourse, Spartoo, Photoweb et Molotov, outre le fait d'être des clients d'Iguane Solutions ?
Tous ces services sont des services en ligne populaires que nous utilisons tous les jours. Mais en coulisses, ces services s'appuient sur une plateforme pour fonctionner.

Une plateforme rassemble toutes les pièces du puzzle dont une application a besoin pour fonctionner. Cela comprend les ressources d'infrastructure telles que les serveurs, le stockage et le réseau, ainsi que les ressources système telles que le système d'exploitation, les langages de programmation et les bibliothèques d'application. Les plateformes comprennent également des ressources de supervision et d'observabilité, qui permettent de s'assurer que l'application fonctionne correctement et que tout problème est rapidement identifié et résolu.

Pour mettre en œuvre les plateformes, les équipes techniques utilisent des méthodes agiles et des outils DevOps. Ces outils automatisent et rationalisent le processus de développement et de déploiement, ce qui facilite la mise à disposition de nouvelles fonctionnalités et de mises à jour des applications.

L'arrivée des fournisseurs cloud a facilité la gestion des plateformes. Les fournisseurs Cloud offrent une gamme de services gérés qui peuvent être utilisés pour automatiser et simplifier le processus de gestion des plateformes. Cela permet aux équipes techniques de se concentrer sur d'autres tâches, telles que le développement de nouvelles fonctionnalités et applications.

Dans le passé, le développement de logiciels était un processus lent et laborieux. Les équipes passaient des mois à travailler sur un seul projet, puis devaient attendre que l'infrastructure soit approvisionnée avant de pouvoir déployer leur code. Il en résultait de longs cycles de publication et un manque d'agilité.

Aujourd'hui, grâce à DevOps, aux méthodes agiles et au site cloud, la livraison de logiciels est beaucoup plus rapide et plus fréquente. Les équipes peuvent désormais déployer leur code plusieurs fois par mois, voire plusieurs fois par jour. Dans la suite de cet article, nous verrons comment ces facteurs ont contribué à l'accélération de la livraison des logiciels.

 

Rapidité ou exactitude

Le déploiement rapide est essentiel pour les produits ayant un impact important sur les utilisateurs, tels que les applications SaaS, les plateformes de streaming vidéo ou musical et les plateformes mobiles. les plateformes de streaming vidéo ou musical et les plateformes mobiles. Des déploiements fréquents permettent un retour d'information immédiat sur l'utilisation des nouvelles fonctionnalités ou leur impact sur les performances globales, ainsi que des mises à jour régulières de la sécurité de l'application.

Fournir rapidement et correctement est possible lorsque les équipes techniques sont réduites. Cependant, maintenir la même vitesse de déploiement et de gestion de la plateforme devient plus complexe à mesure que la taille de l'entreprise augmente. En effet, le nombre de personnes impliquées dans le processus est plus important et le site technique stack devient plus complexe :

 

Comment conserver la même vitesse de déploiement et de gestion de la plateforme lorsqu'il y a plusieurs équipes de développement ?

L'augmentation du nombre de personnes au sein d'une équipe n'entraîne pas nécessairement une hausse de la productivité. En fait, cela peut souvent entraîner une augmentation de la hiérarchie, de la complexité et des dépendances entre les équipes. Il peut alors s'avérer difficile de maintenir un rythme de livraison rapide.

L'ingénierie de plateforme est un concept qui vise à relever ce défi. L'ingénierie de plateforme cherche à simplifier l'utilisation des plateformes par les développeurs, en leur donnant une plus grande autonomie. Pour ce faire, elle rationalise l'architecture, la conception, le déploiement et la maintenance des plateformes au sein de l'écosystème d'une entreprise.

L'ingénierie de plateforme peut aider à maintenir la même vitesse de déploiement et de gestion de la plateforme même si une entreprise se développe et ajoute des équipes de développement. En effet, l'ingénierie de plateforme réduit le besoin de coordination et de communication entre les équipes et permet aux développeurs d'obtenir plus facilement les ressources dont ils ont besoin pour déployer leurs applications rapidement et facilement.

 

Limites de DevOps

Alors que les principes DevOps sont de plus en plus largement adoptés, il est important d'être conscient des limites et des défis associés à cette approche. L'un des plus grands défis est la prolifération des outils. Il existe aujourd'hui des centaines d'outils DevOps différents, et il peut être difficile de choisir ceux qui conviennent aux besoins spécifiques d'une organisation. En outre, l'intégration de ces outils peut être complexe et prendre du temps. Les équipes doivent souvent écrire du code ou des scripts pour relier les outils entre eux. La responsabilité de maintenir cette "colle fonctionnelle" incombe souvent aux équipes d'exploitation.

Chiffre : Le travail des opérations aujourd'hui n'est pas souvent visible

Afin de permettre aux équipes de développement de faire leur part du travail du côté de l'infrastructure, il est nécessaire de redéfinir la relation entre Dev et Ops.

La clé est de se concentrer sur ce qui est essentiel pour les besoins de l'organisation et de n'offrir que ce dont les développeurs ont besoin. Cela signifie qu'il faut éviter les outils à la mode qui n'apportent pas de réelle valeur ajoutée ou qui ne correspondent pas aux objectifs de l'organisation.

 

La plateforme en tant que produit

L'ingénierie de plateforme est une approche de la gestion de plateforme orientée vers le produit. Cela signifie que les ingénieurs de plateforme se concentrent sur la fourniture d'outils et de plateformes qui offrent de la valeur aux développeurs, et qu'ils utilisent des boucles de retour d'information continues pour améliorer leurs produits. Les ingénieurs de plateforme se concentrent également sur l'expérience du développeur (DX), qui est similaire à l'expérience de l'utilisateur (UX) spécifiquement pour les développeurs. Ils veulent faciliter l'utilisation de leurs plateformes par les développeurs et résoudre les problèmes courants auxquels ces derniers sont confrontés.

Pour concevoir et fournir facilement des plateformes prêtes à l'emploi aux développeurs, les ingénieurs de plateforme s'appuient sur un outil appelé Internal Developer Platform (IDP). L'IDP est un catalogue de plateformes prédéfinies parmi lesquelles les développeurs peuvent choisir. Les ingénieurs de plateforme jouent le rôle de gestionnaires ou de propriétaires de produits pour leurs plates-formes, et ils travaillent avec les développeurs pour s'assurer que l'IDP répond à leurs besoins.

Ce mode de fonctionnement donne plus d'autonomie et de liberté aux développeurs. Les développeurs peuvent consommer librement les ressources, tandis que les équipes opérationnelles restent sereines car les règles d'utilisation et de sécurité sont prédéfinies et respectées via l'IDP. Les équipes opérationnelles ont plus de temps pour aider et former les développeurs, et peuvent se concentrer sur la conception de nouveaux produits pour l'entreprise. L'IDP devient le centre des échanges entre Tech, et c'est un véritable produit qui vit et grandit avec le département technique.

 

Quand faut-il envisager l'ingénierie de plateforme ?

L'ingénierie de plateforme doit être envisagée lorsque l'organisation existante ne satisfait pas pleinement les différentes parties prenantes de l'entreprise.

Les signes de ces problèmes peuvent être les suivants

  • Friction et frustration au sein des équipes techniques: Cela peut se manifester par des ruptures de communication, un travail en silo et un manque de confiance entre les équipes.
  • Latence dans les développements : Cela peut conduire à des délais non respectés et à une baisse de la satisfaction des clients.
  • Accumulation de dettes techniques : Cela peut rendre difficile la maintenance et la mise à jour de l'infrastructure, ce qui entraîne des retards et des problèmes supplémentaires.
  • Une baisse ou une stagnation de la productivité: Cela peut être dû à un certain nombre de facteurs, notamment un manque d'attention, des processus inefficaces ou des outils obsolètes.
  • Toutsigne de faiblesse organisationnelle : Il peut s'agir d'un manque de communication, d'une mauvaise prise de décision ou d'un manque d'alignement entre les équipes.

 

La mise en place d'ICP ou d'indicateurs de frustration au sein des différentes équipes est un moyen efficace de détecter les tensions et les problèmes d'organisation.

Les équipes comptant entre 20 et 30 développeurs sont généralement celles où ces difficultés organisationnelles deviennent visibles. Toutefois, le nombre exact de développeurs peut varier en fonction de l'équipe concernée. Il est important de fournir un soutien adéquat aux équipes qui adoptent l'ingénierie de plateforme, en particulier si elles sont plus habituées à une approche "projet" qu'à une approche "produit".

 

Produit ou projet

Traditionnellement, les projets sont livrés sur la base d'une liste de tâches avec une charge de travail estimée et une date limite. Cette approche peut fonctionner, mais elle limite l'agilité et la flexibilité. Les équipes sont souvent confrontées à des tensions et à des frustrations à l'approche des échéances.

Ils peuvent être amenés à choisir entre

  • Fournir une fonctionnalité qui n'est pas entièrement finalisée, ce qui peut frustrer les développeurs et les utilisateurs.
  • Livrer en retard, ce qui peut frustrer les vendeurs, la direction et les clients.

En revanche, l'approche produit se concentre sur la résolution des problèmes des utilisateurs. L'impact d'un problème sur la vie quotidienne de l'utilisateur est plus important que la date précise de livraison de la solution. Les développements sont planifiés en fonction de la stratégie de l'entreprise afin de maximiser l'impact sur l'utilisateur.

L'objectif est d'obtenir des résultats rapides et tangibles et d'encourager les utilisateurs à utiliser le produit d'une manière nouvelle.

Si une fonctionnalité ne correspond pas à la stratégie de l'entreprise ou n'a pas d'impact significatif sur la proposition de valeur, elle ne sera pas prioritaire. Il est important d'avoir une fourchette de temps pour la disponibilité d'une fonctionnalité, mais le fait de ne pas être contraint par des délais stricts réduit le stress au sein des équipes.

Pour mettre en œuvre l'ingénierie de plateforme dans les organisations, il est essentiel de démontrer les avantages de l'approche produit aux équipes d'infrastructure et aux autres parties prenantes.

Voici quelques-uns des avantages de l'approche par produit :

  • Une plus grande agilité: Les équipes peuvent réagir rapidement aux changements du marché ou aux besoins des utilisateurs.
  • Amélioration de la qualité: Les fonctionnalités ont plus de chances d'être terminées et testées avant d'être diffusées.
  • Réduction du stress: Les équipes ne sont pas contraintes de respecter des délais irréalistes.
  • Augmentation de la satisfaction des utilisateurs: Les utilisateurs sont plus susceptibles d'être satisfaits des produits qui sont livrés à temps et qui répondent à leurs besoins.

En démontrant les avantages de l'approche par produit, les organisations peuvent obtenir le soutien de l'ingénierie de plateforme et obtenir de meilleurs résultats.

 

Cas d'utilisation

Pour déterminer si l'ingénierie de plateforme est utile dans votre cas, posez-vous les questions suivantes :

  • Pouvez-vous répertorier les plateformes utilisées dans votre organisation ?
  • Les phases de déploiement sont-elles fréquentes, voire continues, mais limitées par la disponibilité des équipes opérationnelles ?
  • Mes applications sont-elles conçues pour le site cloud (Cloud Native), avec une architecture microservices (conteneurisée) et des technologies récentes, ce qui facilite leur catalogage ?

Si vous ne répondez pas par l'affirmative à au moins une de ces trois questions, il se peut que l'ingénierie de plateforme ne convienne pas à votre organisation. Toutefois, même si vous ne répondez pas par l'affirmative à ces trois questions, vous pourrez peut-être bénéficier de certains des principes de l'ingénierie de plateforme, tels que l'accent mis sur l'approche produit et l'utilisation de l'automatisation.

 

Outils pour la mise en place d'un PDI

Comme pour tout ce qui concerne l'écosystème technologique, il n'existe pas d'outil unique pour la mise en place d'une plateforme de développeurs internes (IDP). Chaque organisation devra choisir l'outil qui répond le mieux à ses besoins.

L'un des outils les plus connus pour créer un PDI est Backstage.io. Cet outil est une open-source open-source développé par Spotify qui fournit une interface d'accès à un catalogue de services définis par les équipes opérationnelles. L'avantage de Backstage réside dans sa variété de plugins, ce qui le rend hautement personnalisable et intégrable avec un large éventail d'autres outils.

Pour les applications microservices utilisant Kubernetes, d'autres outils sont également disponibles : 

  • CapsuleCapsule, est un outil qui simplifie la création d'IDP en segmentant les ressources Kubernetes par "locataire".
  • QoveryQovery est un outil qui facilite la mise à disposition d'environnements de prévisualisation à partir d'environnements de production, tout en garantissant la sécurité.

Ces outils peuvent contribuer à améliorer l'expérience des développeurs en fournissant des environnements de test réels sans perturber la production.

L'intégration de ces outils dans l'écosystème d'une organisation peut s'avérer difficile. Si vous avez besoin d'aide dans ce processus, nos experts en gestion de plateforme peuvent vous aider 👉 Contactez-nous pour en savoir plus.

 

Conclusion

L'émergence des plateformes SaaS a révolutionné notre vie quotidienne. Cependant, à mesure que les organisations se développent et que leurs équipes techniques s'étoffent, il peut être difficile de maintenir un rythme de développement soutenu et efficace.

L'ingénierie de plateforme, avec son approche produit et ses outils tels que la plateforme interne de développement (IDP), simplifie la consommation de l'infrastructure nécessaire au fonctionnement des plateformes, favorise la collaboration entre les équipes et améliore la productivité. Cependant, la transition vers l'ingénierie de plateforme nécessite une adoption progressive et des architectures modernes pour en tirer tous les bénéfices. En rééquilibrant les responsabilités, l'ingénierie de plateforme stimule l'innovation et la croissance de l'entreprise, tout en améliorant la satisfaction des équipes techniques.

 

À garder à l'esprit

Ingénierie des plates-formes : 

  • Avantage en cas de contingences de livraison (effet d'entonnoir) : les équipes de développement attendent d'avoir accès aux ressources pour tester/livrer.
  • Discipliner l'utilisation des outils Devops pour améliorer l'expérience du développeur (DX).
  • Utiliser l'approche produit pour proposer des plates-formes en tant que produit par le biais de plates-formes de développement interne (IDP).
  • Applicable aux plates-formes normalisées, y compris les plates-formes Cloud Native.

 

Partager sur Facebook

Iguane Solutions

Rédacteur de contenu, Iguane Solutions

"Le savoir-faire d'Iguane Solutions nous a permis d'être pertinents dans nos choix techniques dès le début du projet, tout en mettant en œuvre une efficacité économique exceptionnelle."

Jean-David Blanc

PDG, Molotov.tv (racheté par Fubo.tv)

Obtenir les dernières mises à jour

Restez informé grâce à nos derniers articles de blog et à notre vision du secteur.