Pour vos besoins de modernisation, oubliez le "Shift Left" ! Visez le "Shift Down" !
Richard Seroter
Chief Evangelist, Google Cloud
Bienvenue sur notre toute première publication de « The Modernization Imperative », également connu sous le nom de "TMI", un acronyme qui capture parfaitement notre mission : partager avec enthousiasme tout ce qui concerne la Tech.
Cette chronique portée par les leaders de Google Cloud veut, au fil des épisodes, explorer l'univers du développement logiciel, des systèmes distribués, du serverless, des microservices, du DevOps & SRE, des opérations de plateforme... bref, tous les buzz words qui font vibrer nos experts !
Aujourd'hui, c'est Richard Seroter qui prend la plume. Directeur de la Stratégie et de l'Engagement pour l'équipe Infrastructure Moderne de Google Cloud, il cogite sur ces sujets depuis près de 20 ans.
Alors, chers lecteurs, accrochez-vous : après tout, quand on parle d'infrastructure moderne, il n’y a jamais trop d'infos !
Seul au volant d'une voiture glaciale, le petit Richard alors âgé de 10 ans se prenait pour un roi. « Vroom, vroom… Regarde-moi, je conduis ! » lançais-je fièrement à mon passager imaginaire. Ce n'est que des années plus tard que j'ai compris le stratagème de ma mère. Elle me "laissait" démarrer notre voiture. J'étais tellement ébloui par mes talents de pilote hors pair que je ne réalisais pas que je faisais une tâche dont elle voulait se débarrasser : faire chauffer le moteur et monter la température interne du véhicule avant notre trajet matinal.
Aujourd'hui ? Rien n'a vraiment changé, sauf ma lucidité. À quarante et quelques années, me voilà en train de marteler frénétiquement l'écran tactile d'une caisse automatique, cherchant désespérément le code des « raisins sans pépins » tout en savourant le « privilège » de scanner moi-même et d'emballer mes propres courses.
De ma mère à mon supermarché local en passant par le développement logiciel, redistribuer les tâches d'un groupe à un autre est une étape cruciale pour optimiser les ressources. Aujourd'hui, nous demandons à nos développeurs de pratiquer du "Shift Left" et de s'adapter à des méthodologies en constante évolution.
Mais c'est un fardeau lourd à porter. Plutôt que de surcharger nos développeurs, pourquoi ne pas maximiser leurs talents en exploitant pleinement l'éventail des outils et services à leur disposition ?
Certes, le « Shift Left » - cette pratique qui consiste à intégrer les contrôles de sécurité et de qualité plus tôt dans le processus de développement - est une idée tout à fait sensée. Mais au fil des ans, de plus en plus de tâches, traditionnellement hors du périmètre des développeurs, ont « glissé vers la gauche » au nom de la sacro-sainte polyvalence et autonomisation des « ingénieurs full stack ». Il est temps que cela cesse.
[Mini coup de gueule, mais justifié : Il y a genre neuf vrais « ingénieurs full stack » sur Terre. Pratiquement personne ne code un frontend en React, ne configure Kubernetes, ne paramètre une instance RabbitMQ, ne provisionne de l'espace sur un SAN et n'allume un switch top-of-rack, tout ça dans une même journée. Aujourd'hui, on demande aux développeurs de maîtriser les frameworks web, les patterns d'architecture, les stratégies de test, les systèmes de build, de multiples types de bases de données, les caches, les outils d'automatisation, les orchestrateurs de conteneurs, les concepts réseau L4-L7, les API SaaS, les systèmes de monitoring, de nombreux clouds publics, et oh, pourquoi pas un peu de machine learning ! Je viens de parcourir Indeed.com, et c'est hallucinant de voir ce qu'on exige des développeurs juniors et seniors. C'est trop, tout simplement.]
En tant qu’industrie, nous ne pouvons rester immobiles et ne pas intervenir.
Shift Down !
Dans un premier temps, au lieu de dire aux développeurs (et à leurs managers !) de tout « décaler à gauche » (un Shift Left), nous devrions les encourager à « descendre d'un cran » (un Shift Down) et tirer pleinement parti des technologies disponibles en refilant le boulot aux plateformes qu'ils utilisent déjà.
Simplifiez votre pile technologique. N'obligez pas les gens à tout connaître pour faire leur job. Offrez des abstractions de plateforme. J'ai récemment fait une présentation pour un client sur « comment Google pratique le DevOps », mettant ainsi en lumière le nombre conséquent de plateformes que nous offrons à nos ingénieurs. Nous proposons des solutions managées pour le codage, les tests, la compilation, les déploiements, l'hébergement, les alertes et bien plus encore. Des équipes dédiées chez Google soutiennent ces plateformes essentielles afin que nos ingénieurs produits puissent se concentrer sur leur travail sans avoir à connaître ou gérer une "pile complète" d'infrastructure. Et, chaque organisation devrait en faire autant.
Au lieu d'exiger toujours plus de leurs équipes d'ingénierie actuelles - en leur demandant d'apprendre de nouveaux langages, plateformes et clouds - les dirigeants technologiques devraient désormais chercher à assembler des équipes d'ingénierie de plateforme qui traitent leurs diverses plateformes comme des produits à part entière.
L’optimisation commence par la réduction de la charge cognitive des développeurs et l’élimination des tâches inutiles qui les détournent de l’innovation. En parallèle, il est essentiel de leur fournir les outils et l’infrastructure nécessaires pour exploiter la puissance de l’IA et des modèles de langage (LLM). Ainsi, vos développeurs pourront se concentrer sur la création plutôt que sur des tâches répétitives. Nous mettons actuellement en place davantage de coaching et de supports pour aider chacun à adopter l'ingénierie de plateforme, alors restez à l'écoute !
Tout un potentiel à portée de mains
Dans un second temps, en tant que fournisseurs de cloud, nous pouvons accompagner les développeurs avec des principes universels de "déchargement", de « Shift down », qui assurent un partage de la charge de gestion de l'infrastructure.
J'apprécie, par exemple, que GKE Autopilot me fournisse à la demande un cluster Kubernetes sécurisé et managé, sans perturber mon flux de travail. Si vous devez utiliser Kubernetes, adoptez la méthode Autopilot et dites adieu aux prises de tête liées au provisionnement d'un cluster qui vous détourne du développement.
Autre exemple, vous voulez une chaîne d'approvisionnement sécurisée ? Ne demandez pas à un humain de décoder les manifestes Supply Chain Levels for Software Architects (SLSA). Ajoutez automatiquement des attestations aux builds (comme nous le faisons avec Cloud Build) et transformez les vérifications d’exécution… en une simple case à cocher !
Parallèlement, rendez les services hautement disponibles par défaut au lieu de demander à un développeur de se débrouiller. Nos services comme Pub/Sub, Firestore, Spanner, Cloud Storage ou Cloud Logging fonctionnent "tout simplement" et nativement de cette façon.
Nous pouvons également intervenir à un niveau plus bas, en aidant quelqu’un à analyser CloudEvents dans son code au lieu de le laisser se débrouiller seul.
Enfin, avec des outils comme Generative AI App Builder, les développeurs peuvent rapidement proposer de nouvelles expériences captivantes, telles que des assistants digitaux, des moteurs de recherche personnalisés, des interfaces de chat, et bien plus encore. Offrir aux clients des frameworks structurés mais extensibles, qui maximisent leur investissement technologique, est la clé d'une expérience cloud réussie.
Chez Google Cloud, nous aidons les entreprises à utiliser des technologies incroyables pour réaliser des choses extraordinaires. Pour y parvenir, nous créons des outils et des services qui offrent aux développeurs une expérience matérielle et logicielle sécurisée par conception (secure by design). Cela leur permet d'appliquer de façon totalement automatisée nombre de bonnes pratiques de "Shift Left", accélérant ainsi le développement. En assignant efficacement les workloads, nous veillons à ce que les ressources d'ingénierie restent disponibles et performantes au maximum de leur capacité, au moment où vous en avez le plus besoin.
Être développeur en 2024 est une expérience extraordinaire. Mais le job s’accompagne d’une charge mentale parmi les plus lourdes, toutes professions confondues. Plutôt que de surcharger les équipes de devs avec toujours plus de responsabilités dans le cycle de vie du logiciel, chez Google Cloud nous aidons nos clients à mettre en place une approche « plateforme » qui favorise une culture d’ingénierie durable et innovante. En adoptant les pratiques de « Shift Down » et en exploitant pleinement les avantages d'une stack technologique complète, l'innovation s’épanouit grâce à des automatisations bien ficelées et des services managés.
Nous sommes aujoud’hui à l'aube d'une nouvelle ère de technologies dopées par l'IA, où la création de code se simplifie et où les devs se tournent vers des chatbots en langage naturel pour obtenir des conseils en temps réel. Il est temps d’offrir aux développeurs du monde entier les moyens de favoriser le succès technologique et commercial. Et, contrairement au jeune Richard d’une dizaine d’années, leur permettre vraiment d’aller quelque part…