Débuter une carrière en ingénierie de plateforme : les fondamentaux
Yuriy Babenko
Customer Engineer, FSI
Darren Evans
EMEA Practice Solutions Lead, Application Platform
Imaginez un instant que vous soyez ingénieur dans l'entreprise Acme Corp et que l'on vous confie un grand projet : intégrer et fournir des logiciels en utilisant l’approche CI/CD et l'automatisation tout en mettant en place des métriques et des outils d'observabilité.
Malheureusement, les membres de votre équipe sont déjà submergés par une trop lourde charge mentale, provoquée par le déploiement et l'automatisation des clusters Kubernetes, la configuration des pipelines CI/CD sans oublier toutes les préoccupations concernant la sécurité.
Vous réalisez alors que si vous voulez pouvoir monter en charge et soutenir la croissance de votre entreprise, vous allez devoir adopter une nouvelle approche pour relever les défis de votre nouvelle mission. Pas de panique : C’est précisément là que l'ingénierie de plateforme peut vous apporter une aide précieuse.
L'ingénierie de plateforme, c'est l'art de concevoir et de fournir des environnements informatiques complets aux développeurs et utilisateurs. Selon la Fondation Cloud Native Computing (CNCF), cette discipline englobe tous les aspects des plateformes : les équipes, les processus, les politiques et les technologies, sans oublier les objectifs commerciaux qui les motivent. Ce domaine en plein essor s'appuie sur les enseignements tirés de la révolution DevOps, les récentes avancées du Cloud Native avec Kubernetes et le serverless, ainsi que les progrès en matière d'observabilité et de SRE.
Une carrière dans l'ingénierie des plateformes implique de faire partie d'une équipe « produit », chargée de fournir des logiciels, des outils et des services. Que vous débutiez votre carrière dans l'informatique en tant que jeune diplômé ou que vous soyez déjà un développeur ou un ingénieur confirmé, l'ingénierie de plateforme offre des possibilités d'évolution ainsi que l’opportunité d'acquérir de nouvelles compétences techniques.
Dans cet article, nous vous proposons un aperçu du domaine de l'ingénierie des plateformes. Nous aborderons également le rôle des ingénieurs de plateformes ainsi que les compétences requises pour exercer ce métier. Nous évoquerons également l'importance d’une approche centrée sur l’utilisateur et d’un état d’esprit orienté « produit ». Enfin, nous vous donnerons aussi quelques conseils pour définir vos objectifs et éviter les pièges courants dans ce domaine.
Les compétences clés d'un ingénieur de plateforme
Que peut-on attendre d'un ingénieur de plateforme ? En général, ce rôle exige un mélange de compétences techniques et relationnelles. Il s'agit à la fois de savoir-faire professionnels nécessaires pour accomplir le travail, et de qualités personnelles qui influencent la façon de pratiquer ce métier. Pour se lancer dans une carrière d'ingénieur de plateforme, il est possible d'acquérir certaines de ces compétences. Cependant, il n'est pas nécessaire de toutes les maîtriser pour réussir, car elles sont souvent réparties au sein de l'équipe. Voici un aperçu des différentes facettes du métier d'ingénieur de plateforme :
- Il adopte une approche centrée sur le client : en étant un partenaire fiable pour les équipes d'ingénierie, en partageant les connaissances, en travaillant avec d'autres équipes, y compris les développeurs de logiciels, les SRE et les gestionnaires de produits ;
- Il est familiarisé avec les pratiques DevSecOps ;
- Il est avide d'apprendre, de résoudre des problèmes tout en étant attentif aux détails et capable de communiquer efficacement avec les différentes équipes ;
- Il est capable de promouvoir les avantages de l'approche d'ingénierie de plateforme avec ses collègues et les ingénieurs ;
- Il applique une philosophie « produit » à la plateforme, en utilisant, par exemple, des parcours utilisateurs et des analyses de points de friction.
Compte tenu de son importance dans le domaine de l'ingénierie de plateforme, examinons de plus près l'approche centrée sur le client mentionnée ci-dessus.
La boucle de conception et l'importance de la focalisation client
Si les plateformes sont avant tout un produit, comme le suggère le livre blanc de la CNCF sur les plateformes, l'accent est malgré tout mis sur les utilisateurs. Le rapport DORA Research 2023 de Google montre clairement que l'attention portée à l'utilisateur est essentielle : « Les équipes qui se concentrent sur l'utilisateur ont des performances organisationnelles 40 % supérieures à celles des équipes qui ne le font pas ».
Chez Google, nous sommes convaincus que si nous nous concentrons sur l'utilisateur, tout le reste suit naturellement : c’est un principe clé de notre philosophie. Adopter une approche empathique centrée sur l'utilisateur nécessite une compréhension approfondie de ses besoins et de ses attentes. Pour y parvenir, nous utilisons plusieurs méthodes : entretiens, analyses statistiques, indicateurs de performance et collecte de données. Notre approche combine des métriques quantitatives et qualitatives pour obtenir une vision complète.
Vous pourriez, par exemple, décider d'adopter le cadre HEART (Happiness, Engagement, Adoption, Retention, Task Success) de Google, décrit en détail dans ce livre blanc. En tant qu'ingénieur de plateforme, vous pourriez être particulièrement intéressé par le « bonheur » (autrement dit l’axe Happiness), autrement dit la satisfaction ressentie par vos utilisateurs avec les services offerts par la plateforme. Parallèlement, vous voudrez aussi probablement mesurer et suivre « l'adoption » de la plateforme ainsi que « la rétention » (autrement dit la capacité à conserver leurs utilisateurs sur le long terme) des différentes offres.
Pourquoi les utilisateurs adoptent-ils votre offre ou au contraire la quittent ? Qu'est-ce qui manque et qui pourrait être amélioré lors du prochain sprint de conception de la plateforme ? Vous pouvez également créer un journal des frictions qui documente les obstacles auxquels vos utilisateurs sont confrontés lorsqu'ils utilisent les services de votre plateforme. Idéalement, vous pourriez même devenir votre propre client et utiliser vos solutions, en vous référant au journal de frictions et aux parcours des utilisateurs à travers la plateforme.
Pour bien comprendre l'ingénierie de plateforme, imaginez-vous au cœur d'un cycle d'amélioration continue. Dans ce processus, vous renforcez votre orientation client en menant des études sur les usages des utilisateurs pour mieux cerner leurs priorités. Vous développez de l'empathie en documentant les points de friction et en réalisant d'autres types d'expériences. Point central, le backlog de la plateforme (cette fameuse liste hiérarchisée des tâches à faire) devient l’outil à partir duquel toute votre équipe prend les décisions en se concentrant sur la valeur ajoutée de la plateforme pour l'entreprise. Adopter une mentalité produit vous aide à comprendre les besoins des utilisateurs, à définir une vision et une feuille de route claires, à prioriser les fonctionnalités et la documentation, et à rester ouvert aux améliorations. Une fois la première version de votre plateforme livrée, vous continuez à itérer dans ce cycle, l'améliorant à chaque tour.
Que fait réellement un ingénieur plateforme ?
En pratique, un ingénieur de plateforme effectue une grande variété de tâches au sein d'un groupe d'ingénierie de plateforme plus large. Bien entendu, personne ne peut tout faire et vous devrez vous spécialiser, mais voici quelques-uns des sujets sur lesquels vous pourriez vouloir vous concentrer :
Services Google Cloud
- Runtimes de container : Google Kubernetes Engine, Cloud Run
- Runtimes de Compute : Compute Engine, Google Cloud VMware Engine
- Bases de données : Spanner, Bigtable, Cloud SQL
- Conception et gestion du portail interne développeur
- Outillage pour le support développeurs : Cloud Workstations
- Gestion de la chaine CI/CD : Cloud Build, Cloud Deploy et Artifact Registry
- Mise en œuvre de la conformité en tant que Code (RCaC) pour certaines voies royales (golden paths) gérées par Infrastructure Manager et Policy Controller, ce qui permet de réduire la charge cognitive des développeurs et d'accélérer les délais de déploiement.
Architecture
- Acquérir une compréhension approfondie de l'infrastructure et de l'architecture des applications.
- Co-écrire avec les développeurs et utiliser les voies royales en s’appuyant sur l’usage de l’Infrastructure as Code.
- Créer une très bonne documentation en s’inspirant, par exemple, des conseils donnés dans nos formations sur la rédaction technique. N'oubliez pas que les enregistrements de décision d'architecture sont une partie essentielle de votre documentation d'ingénierie.
Opérations et fiabilité
- Site Reliability Engineering (SRE)- Adopter les meilleures pratiques pour une exploitation fiable de votre plateforme.
- Ingénierie de la sécurité - Conformité, contrôles horizontaux et garde-fous pour votre plateforme.
Ingénierie backlog
- Adopter un backlog pour lister les tâches en attente et établir des priorités pour les travaux d'ingénierie. L'essentiel de l'effort doit porter sur la résolution des demandes en attente, tout en réservant un peu de temps à l'amélioration continue et à l'expérimentation.
- Expérimenter et innover avec de nouvelles technologies - Il s'agit d'une tâche essentielle pour les ingénieurs de plateforme. Exemples : maîtriser de nouveaux services et de nouvelles fonctionnalités pour améliorer votre plateforme.
Ces dernières années, notre industrie s'est beaucoup focalisée sur le concept de « shift left », c'est-à-dire déplacer la complexité en amont du processus de développement. L'objectif est d'obtenir un code mieux testé, mieux intégré et plus sécurisé. Chez Google, nous sommes convaincus qu'en plus de cette approche, une bonne stratégie de plateforme permet aussi de « déplacer vers le bas » cette complexité (principe du « shift down ») . Bien entendu, même le plus talentueux des ingénieurs de plateforme ne peut pas tout gérer seul - la charge cognitive a ses limites !
Que doivent absolument éviter les ingénieurs de plateformes ?
Au-delà des bonnes pratiques à adopter, voici aussi quelques erreurs que les nouveaux ingénieurs de plateforme devraient éviter :
- Négliger les besoins des développeurs et les exclure du processus de conception ;
- Devenir la « bonne à tout faire » pour les tâches diverses : il est crucial de prioriser et d'instaurer une culture adaptée, sous peine d'épuisement et de perte de productivité (comme le souligne le rapport State of DevOps Report 2023) ;
- Stagner professionnellement : l'apprentissage continu n'est pas un simple avantage, c'est une part essentielle du travail quotidien d'un ingénieur ;
- Céder au syndrome du « héros » : répartissez plutôt les compétences au sein de l'équipe et travaillez à un rythme soutenable ;
- S'attendre à une adoption immédiate de la plateforme sans effort de promotion, de formation et sans avoir gagné la confiance des développeurs.
Cette liste n'est pas exhaustive, mais elle regroupe les écueils les plus courants que nous avons pu observer jusqu'à présent.
Ingénieurs de plateforme : les piliers de la livraison logicielle moderne
Les ingénieurs de plateforme sont essentiels au succès d'une stratégie logicielle d'entreprise moderne. Ils sont responsables de la création et de la maintenance des plateformes utilisées par les développeurs pour construire et déployer des applications. Dans un monde où les logiciels évoluent constamment, les ingénieurs de plateforme jouent un rôle clé en fournissant des services logiciels évolutifs, tout en gardant les utilisateurs au cœur des préoccupations. Ils comprennent finement les exigences et les besoins de leurs clients internes, combinant leur expertise technologique avec une connaissance pointue des dernières avancées du secteur.
Pour approfondir vos connaissances en ingénierie de plateforme, voici quelques ressources complémentaires :
- Le livre « Software Engineering at Google » explore la création d'un écosystème logiciel durable en se penchant sur la culture, les processus et les outils
- Les livres SRE et les ateliers de Google
- DORA.dev - études sur les compétences qui stimulent la performance en matière de livraison et d'exploitation logicielles
Certifications Google Cloud : Cloud Architect, Cloud DevOps Engineer, Cloud Developer, Cloud Security Engineer, Cloud Network Engineer