L'un des principaux objectifs de l'ingénierie logicielle est de résoudre des problèmes et de créer de la valeur, mais cet objectif peut se perdre dans les frictions quotidiennes du développement moderne. Une plate-forme de développement interne (IDP) est conçue pour décharger les développeurs afin qu'ils puissent se concentrer sur le développement de logiciels. L'objectif principal de l'IDP n'est pas seulement de livrer des logiciels plus rapidement, mais aussi de réduire la charge mentale des développeurs en créant des modèles et des automatisations sécurisés, efficaces et pleinement compatibles (souvent appelés "voies optimales") pour la création et le déploiement d'applications.
Une plate-forme de développement interne intègre un ensemble de technologies et d'outils sélectionnés, conçus et gérés par une équipe dédiée. Cette pile inclut souvent des solutions d'orchestration de conteneurs, des outils d'infrastructure as code (IaC) et des pipelines CI/CD basés sur des projets Open Source.
Une plate-forme de développement interne (IDP) doit être considérée comme un produit, dont les développeurs sont les utilisateurs. Il est essentiel de répondre à leurs cas d'utilisation, de recueillir leurs commentaires et d'affiner en permanence la plate-forme par itération. L'IDP est la couche qui connecte ces outils, en éliminant leur complexité afin que les développeurs puissent effectuer des tâches via un modèle simple en libre-service. L'objectif est de faire en sorte que la bonne méthode soit la plus simple, afin que les développeurs puissent créer et livrer des applications en toute confiance et en toute autonomie.
La charge cognitive désigne la quantité totale d'efforts mentaux déployés dans la mémoire de travail d'une personne. C'est un peu comme la bande passante mentale dont dispose un développeur. Lorsque cette bande passante est consommée par des tâches qui ne sont pas liées au codage, sa capacité à se concentrer sur la résolution de problèmes complexes diminue.
Les développeurs doivent souvent jongler avec des dizaines d'outils, de tableaux de bord et de fichiers de configuration différents pour déployer une simple modification. Chaque changement de contexte oblige le cerveau à charger un nouvel ensemble d'informations, ce qui est mentalement épuisant. Cette jonglerie constante entre les outils et les processus augmente la charge cognitive, ce qui peut entraîner un épuisement professionnel, davantage d'erreurs et un ralentissement de l'innovation.
L'ingénierie des plates-formes est la discipline qui consiste à concevoir, créer et gérer une plate-forme de développement interne. Pour faire une analogie, si l'IDP est le produit, l'équipe d'ingénierie de plate-forme est l'équipe produit responsable de son cycle de vie. Ses clients sont les développeurs de l'organisation.
Cette approche signifie que la plate-forme est traitée comme n'importe quel autre produit logiciel. L'équipe d'ingénierie de plate-forme est chargée de comprendre les besoins des développeurs, de définir une feuille de route et de fournir un ensemble d'outils fiables, sécurisés et faciles à utiliser.
On nous demande souvent quelle est la différence entre une plate-forme et un portail. Bien que ces termes soient parfois utilisés de manière interchangeable, ils représentent différents niveaux de l'expérience des développeurs. Considérez la plate-forme de développement interne (IDP) comme le moteur complet, qui englobe tous les outils, workflows et l'infrastructure qui alimentent votre cycle de vie de développement.
Le portail des développeurs interne, quant à lui, est le tableau de bord de ce moteur. Il s'agit de l'interface utilisateur graphique (IUG) qui offre aux développeurs un emplacement unique et centralisé pour accéder aux fonctionnalités de la plate-forme. Un portail de développeurs peut aider les développeurs à découvrir et à utiliser des outils, à consulter la documentation, à structurer des nouveaux services et à vérifier l'état de leurs builds sans avoir à comprendre les mécanismes complexes qui se cachent derrière. Bien qu'une plate-forme de développement interne complète inclue souvent un portail pour les développeurs afin d'améliorer la convivialité et la détectabilité, la plate-forme elle-même est l'ensemble complet des technologies sous-jacentes et des processus automatisés.
Bien que les besoins de chaque entreprise soient différents, la plupart des IDP sont basés sur quelques composants de base qui fonctionnent ensemble. Ces composants visent à créer un chemin simplifié, sécurisé et efficace entre le développement et la production.
L'expérience des développeurs est l'interface centrale qui élimine la complexité sous-jacente de l'infrastructure. Il s'agit souvent d'un portail pour les développeurs ou d'une interface de ligne de commande (CLI) qui leur donne un accès en libre-service aux outils, à la documentation et aux ressources dont ils ont besoin. Par exemple, les plug-ins d'IDE comme Cloud Code aident les développeurs à écrire et à déboguer du code directement dans leurs outils habituels, tandis que les portails créés avec des solutions comme Backstage sur Google Cloud offrent une vue unique et consolidée de l'ensemble de leur écosystème logiciel.
Les modèles d'application, parfois appelés "voies optimales", fournissent aux développeurs une structure prédéfinie et conforme aux bonnes pratiques pour les nouvelles applications. Ces modèles peuvent inclure du code récurrent, des pipelines CI/CD configurés, des fichiers d'infrastructure as Code et des tableaux de bord de surveillance. Des ressources comme l'App Design Center peuvent aider les équipes à créer et à gérer un catalogue de ces modèles, en veillant à ce que les bonnes pratiques soient facilement identifiables et réutilisables. Cette approche accélère l'intégration des développeurs et assure la cohérence entre tous les services.
Ce composant intègre la sécurité directement dans le workflow de développement. Il automatise l'application des règles de sécurité, telles que Identity and Access Management (IAM), le contrôle des accès basé sur les rôles (RBAC), les règles de réseau, l'analyse des failles et le renforcement de l'infrastructure. En intégrant la sécurité dans les fondations de la plate-forme, les équipes peuvent "décaler la sécurité vers la gauche" et résoudre les problèmes potentiels dès le début du cycle de vie du développement. Cela évite que la sécurité ne devienne un goulot d'étranglement juste avant la production.
Une base centrée sur les applications crée une couche d'abstraction standardisée au-dessus de l'infrastructure sous-jacente. Il fournit un modèle unifié pour les principales préoccupations opérationnelles, en offrant une approche unique de la mise en réseau, de la sécurité et de l'observabilité qui fonctionne dans tous les environnements. Cette cohérence simplifie la gestion et réduit la charge cognitive des développeurs, qui n'ont pas à se soucier des détails spécifiques de chaque cible de déploiement, comme une configuration de cluster Google Kubernetes Engine (GKE).
Les IDP gèrent les environnements d'exécution des applications dans lesquels le code s'exécute. Ces environnements d'exécution peuvent être des plates-formes d'orchestration de conteneurs comme GKE, des plates-formes sans serveur comme Cloud Run ou d'autres environnements de calcul. L'IDP automatise le provisionnement, la configuration et la maintenance de ces environnements d'exécution. Les développeurs peuvent ainsi déployer leurs applications rapidement et de manière fiable, sans avoir besoin d'une expertise approfondie des services de calcul sous-jacents.
La plate-forme d'applications cloud est l'ensemble intégré de services cloud qui sert de base à l'ensemble de l'IDP. Il regroupe le calcul, le stockage, la mise en réseau, les API cloud, les outils CI/CD et l'observabilité dans un système cohérent. En s'appuyant sur une base complète comme Google Cloud pour créer une IDP, les équipes peuvent exploiter des services gérés performants pour accélérer le développement, améliorer la fiabilité et s'assurer que la plate-forme peut évoluer pour répondre à la demande.
L'adoption d'une plate-forme de développement interne peut offrir des avantages considérables aux organisations d'ingénierie.
Expérience de développement améliorée
En réduisant la charge cognitive et en fournissant des workflows en libre-service simples, les IDP peuvent contribuer à améliorer l'expérience des développeurs.
Temps de production réduit
L'automatisation et la standardisation peuvent accélérer le processus de création et de déploiement de logiciels, ce qui permet aux équipes de fournir plus rapidement de la valeur aux clients.
Fiabilité et cohérence accrues
Les plates-formes de développement interne peuvent aider à appliquer les bonnes pratiques grâce à des chemins de référence, et peuvent conduire à des déploiements d'applications plus cohérents et fiables.
Sécurité et conformité renforcées
Les règles de sécurité peuvent être intégrées directement aux modèles et aux workflows automatisés de la plate-forme, ce qui garantit que tous les nouveaux services respectent les exigences de conformité dès le départ.
Plus d'autonomie pour les développeurs
La centralisation de la gestion de la plate-forme peut aider les développeurs à se concentrer sur les fonctionnalités et à bénéficier d'une plus grande autonomie pour gérer le cycle de vie de leurs applications.
Pour voir comment une plate-forme de développement interne fonctionne en pratique, examinons un exemple courant de plate-forme de développement interne utilisant Google Cloud. Imaginons qu'un développeur doive créer un microservice qui nécessite sa propre base de données et son propre pipeline CI/CD.
Le développeur doit créer manuellement un dépôt Cloud Source Repositories, écrire un module Terraform pour provisionner une base de données Cloud SQL, créer et configurer un fichier de déploiement Google Kubernetes Engine (GKE) au format YAML, configurer un nouveau déclencheur dans Cloud Build et gérer les autorisations IAM pour l'ensemble de ces éléments. Ce processus peut prendre quelques jours et impliquer plusieurs équipes.
Le processus est beaucoup plus simple.
Demande depuis le portail : le développeur se connecte au portail des développeurs et trouve un modèle prédéfini pour un "microservice Python avec une base de données Cloud SQL".
Saisie simple : il remplit un court formulaire avec le nom du service et celui de son équipe.
Début de l'orchestration : le développeur clique sur "Créer", et l'outil d'orchestration de la plate-forme prend le relais.
Actions automatisées : en arrière-plan, l'outil d'orchestration effectue une série de tâches automatisées à l'aide des API Google Cloud :
Achèvement du processus : quelques minutes suffisent. Le développeur reçoit une notification contenant des liens vers son nouveau dépôt, son application en cours d'exécution dans l'environnement de préproduction GKE et les identifiants de la base de données, le tout sans avoir à écrire une seule ligne de configuration.
Pour en savoir plus sur les concepts et les technologies qui composent une plate-forme de développement interne, consultez ces ressources supplémentaires :
Profitez de 300 $ de crédits gratuits et de plus de 20 produits Always Free pour commencer à créer des applications sur Google Cloud.