Environnements de codage pour les développeurs
Dans l’ingénierie de plateforme, l’un des défis courants est de s’assurer que les développeurs peuvent rapidement et constamment installer leurs environnements de codage, en particulier lorsque de nouveaux développeurs rejoignent les équipes, que les développeurs passent d’un projet à l’autre ou qu’une adaptation se révèle nécessaire. L’automatisation de l’installation des environnements de développement peut simplifier l’intégration et éliminer le temps perdu à cause de configurations incorrectes ou de dépendances rompues. En fournissant des environnements préconfigurés ou des scripts d’installation, les équipes peuvent se concentrer sur le développement au lieu de perdre du temps à résoudre les incohérences environnementales.
L’approche pour gérer les environnements de développement peut varier, mais elle inclut souvent une virtualisation, une conteneurisation et des modèles standardisés qui s’alignent sur les besoins de l’organisation. Cela peut être aussi bien des environnements Windows entièrement virtualisés que des conteneurs hébergés dans le cloud pour le développement Linux. De plus, la création de modèles « bons dès le départ » qui favorisent la cohérence, les bonnes pratiques et la sécurité en tant que code est essentielle pour maintenir un processus reproductible bien défini qui s’adapte d’une équipe à l’autre. Cela garantit que le workflow de développement non seulement démarre sans problème, mais aussi se poursuit en respectant les bonnes pratiques pour que les projets se déroulent correctement et restent conformes aux standards de sécurité et opérationnels.
Automatisation de l’installation de l’environnement de codage des développeurs
Le démarrage et la normalisation de l’environnement de codage des développeurs peuvent constituer un défi majeur dans les systèmes d’ingénierie. Les principaux problèmes incluent :
- Temps d’intégration longs : Il peut se passer des semaines avant qu’un nouveau développeur puisse contribuer, en particulier lorsque des développeurs sont transférés d’un projet à l’autre ou que des sous-traitants sont ajoutés.
- Incohérences : Les différences entre les environnements de développement et les systèmes CI entraînent souvent des problèmes de type « cela fonctionne sur mon ordinateur ».
- Instabilité des environnements : Le fait d’expérimenter ou de mettre à niveau des frameworks et des logiciels peut casser les configurations existantes, ce qui peut entraîner une résolution des problèmes longue et complexe.
- Retards suite aux revues de code : Les modifications de configuration nécessaires pour les revues de code peuvent ralentir le développement, étant donné qu’elles doivent être annulées par la suite.
- Formation pour toutes les parties prenantes : Les rôles hors développement (comme les opérateurs, le contrôle qualité et les partenariats commerciaux) doivent également être formés et impliqués, ce qui entraîne davantage de retards.
Pour résoudre ces problèmes, la standardisation et l’automatisation de l’installation des environnements de développement par le biais d’outils, de scripts ou d’environnements conteneurisés/virtualisés peuvent vous aider. Des environnements préconfigurés adaptés à des projets ou besoins organisationnels spécifiques peuvent garantir une cohérence, réduire le temps d’installation et améliorer la productivité globale.
Environnements de codage pour Windows et Linux
Lorsque vous ciblez Windows pour un remplacement des stations de travail ou une virtualisation totale, les machines virtuelles fournissent généralement les meilleures fonctionnalités. Cette approche est bénéfique pour le développement des clients Windows, la gestion des applications web .NET Full Framework ou la maintenance des services Windows. Vous pouvez utiliser des machines virtuelles hébergées dans le cloud, telles que Microsoft Dev Box qui offre une virtualisation complète des stations de travail Windows avec intégration à un logiciel de gestion de bureau. Vous pouvez également utiliser des machines virtuelles locales avec des outils comme HashiCorp Vagrant pour la gestion des environnements et HashiCorp Packer pour la création d’images de machine virtuelle pour Vagrant et Dev Box.
Pour cibler Linux, la virtualisation d’espaces de travail est mieux adaptée parce qu’elle se concentre sur des environnements spécifiques à un projet ou une application plutôt que sur le remplacement d’un bureau complet. Les conteneurs hébergés dans le cloud constituent un choix courant, avec des options telles que GitHub Codespaces qui fournit un environnement de conteneur de développement basé sur le cloud compatible avec VS Code, JetBrains IntelliJ et des outils basés sur terminal. Si les options cloud ne répondent pas à vos besoins, SSH ou le tunnel distant de VS Code prend en charge la connexion à des machines virtuelles Linux auto-hébergées. Les conteneurs locaux sont également une option si vous préférez exécuter des conteneurs de développement localement. VS Code et IntelliJ fournissent un support solide pour ces environnements. Pour plus de souplesse, des machines virtuelles hébergées dans le cloud, où vous pouvez effectuer une connexion SSH directement dans les machines virtuelles Linux auto-managées, peuvent également être utilisées. Dans les cas où les développeurs travaillent exclusivement sur Windows, le Sous-système Windows pour Linux (WSL) offre une solution de développement Linux locale pratique. Les distributions WSL peuvent être exportées et partagées entre les équipes. Les services basés sur le cloud comme Microsoft Dev Box prennent également en charge WSL pour le développement Linux.
Utilisation de modèles d’application pour la cohérence et la standardisation
Pour promouvoir la cohérence, la standardisation et les bonnes pratiques dans les équipes de développement, les organisations peuvent utiliser des modèles d’application dans le cadre d’une approche « tout en tant que code ». Ces modèles peuvent simplifier le développement tout en offrant la garantie que les équipes restent sur les chemins qui ont déjà été tracés. Pour les organisations qui suivent un modèle mono-dépôt, des outils comme Azure Developer CLI (azd) peuvent être utilisés pour créer des modèles qui incluent non seulement des installations de source d’application, mais aussi des configurations d’environnement et des workflows CI/CD.
Lors de la création de modèles pour le développement, il est utile de prendre en compte différents aspects clés pour s’assurer que les modèles sont complets et cohérents, en respectant les bonnes pratiques :
- Exemple de code source : Incluez un exemple de code source pour guider les développeurs vers des langages, des modèles d’application, des services, des API, des kits SDK et des modèles architecturaux recommandés.
- Scripts de build et de déploiement : Incorporez des scripts qui offrent un moyen cohérent de déclencher des builds et de les déployer localement ou dans un environnement de bac à sable. Vérifiez que les configurations de débogage dans l’IDE ou l’éditeur sont incluses en vue d’une synchronisation avec les pipelines CI/CD.
- Configuration CI/CD : Fournissez des workflows ou des pipelines pour créer et déployer des applications en utilisant des workflows réutilisables et centralisés. Traitez-les comme des modèles « bons dès le départ » et assurez-vous qu’ils autorisent un déclenchement manuel si nécessaire.
- Ressources IaC (Infrastructure en tant que code) : Incluez des configurations et références recommandées dans des modules gérés de manière centralisée pour vous assurer que les installations d’infrastructure suivent les bonnes pratiques.
- Ressources de sécurité et de stratégie en tant que code : Ajoutez des fichiers de configuration liés à la sécurité, tels que CODEOWNERS et dependabot.yaml, pour incorporer la sécurité directement dans le processus de développement. Des workflows planifiés pour les analyses de sécurité, notamment des outils comme Microsoft Defender for Cloud, doivent être fournis pour incorporer la sécurité dans le pipeline CI/CD et améliorer la sécurité de la chaîne logistique.
- Observabilité, supervision et journalisation : Fournissez des configurations d’installation pour les outils de supervision comme IaC pour le déploiement d’agents ou la configuration en tant que code pour superviser les tableaux de bord. Incluez un exemple de code pour la journalisation et le suivi distribué afin de vous assurer que les applications peuvent être supervisées efficacement une fois déployées.
- Installation d’environnements de codage : Ajoutez des fichiers de configuration pour les linters, les formateurs et les IDE, ainsi que des scripts d’installation pour les environnements de développement virtualisés tels que devcontainer.json, devbox.yaml ou des fichiers Docker.
- Configuration de test : Fournissez des fichiers pour les tests unitaires et des scénarios de test plus complets à l’aide d’outils tels que Microsoft Playwright Testing ou Test de charge Azure.
Installation d’outils de collaboration : Si cela est pris en charge, incluez des modèles de tâche/problème ou des modèles de demande de tirage en tant que code. Si vous le souhaitez, fournissez des workflows qui utilisent des interfaces CLI ou des API disponibles pour mettre à jour les systèmes ou configurez des outils de collaboration tels que Microsoft Teams ou Slack.