L'équipe des outils internes chez Slack a récemment évoqué l'utilisation d'environnements de développement à distance dans son workflow de développement d'applications. En janvier 2022, plus de 90 % des ingénieurs avaient commencé à utiliser le workflow de développement à distance chez Slack, ce qui a entraîné une augmentation de la productivité des développeurs.
Sylvestor George, ingénieur logiciel chez Slack, a évoqué le parcours de l'équipe dans un article de blog récent. Slack utilise Hack comme langage de programmation pour son backend. Le workflow de développement précédent consistait à exécuter HHVM directement sur macOS. Les mises à niveau HHVM et les problèmes liés à Homebrew ont entraîné des surcoûts et ont eu un impact sur la productivité des ingénieurs. Lors de leur première itération, l'équipe des outils internes a utilisé des images Docker locales pour exécuter l'application avec HHVM, en conservant des copies de l'application sur des serveurs distants.
Grâce au projet Remote Development Environments Project, l'équipe a recueilli des données qui ont créé l'objectif de permettre aux ingénieurs d'écrire du code sans les surcoûts de configuration locale et sa maintenance associée. Grâce à l'amélioration des outils CLI internes de Slack, les ingénieurs peuvent désormais utiliser une seule commande pour réserver un environnement de développement, attacher leur branche à cet environnement, installer toutes les nouvelles dépendances et ouvrir une instance VSCode locale avec les paramètres et extensions souhaités.
Source : Remote Development at Slack
Plusieurs environnements de développement sont disponibles pour les ingénieurs utilisant AWS Auto Scaling Group. Lorsque les ingénieurs réservent un environnement distant à l'aide de la commande - slack remote-dev -b <branch-name> - l'environnement est configuré pour utiliser l'extension SSH distante de VSCode et développer à distance. Ces environnements disposent d'IntelliSense complet, de navigation dans le code et de débogage. En outre, ces environnements permettent des extensions personnalisées, des scripts, des profils bash, une configuration git, des alias et des paramètres VSCode selon les préférences de l'ingénieur.
Source : Remote Development at Slack
Une fois que l'ingénieur se détache d'un environnement de développement, l'instance sous-jacente est automatiquement résiliée. Si la branche associée à l'environnement de travail est fusionnée, l'environnement est automatiquement détaché et terminé.
Dernièrement, nous avons vu les environnements de développement reproductibles permettre aux nouvelles recrues de démarrer en une heure au lieu de plusieurs jours, faisant des "devcontainers" une partie intégrante du workflow de développement. Chez Slack, le temps d'installation d'un nouvel employé a été réduit d'une heure à quelques minutes.
Les environnements de développement basés sur le cloud sont de plus en plus utilisés comme Gitpod, Amazon Cloud 9, JetBrains Space et GitHub Codespaces.
Les environnements de développement à distance de Slack utilisaient initialement des instances C5.2xlarge (8 cœurs, 16 Go de RAM). Lorsque l'équipe s'est rendu compte que les environnements étaient insuffisants pour la charge de travail, les instances ont été mises à niveau vers C5.4xlarge (16 cœurs, 32 Go de RAM) avec un seul changement de configuration. Une telle flexibilité pour mettre à l'échelle la spécification de l'instance selon les besoins sans avoir à remplacer l'ordinateur portable s'ajoute aux avantages globaux des environnements de développement à distance.
Le workflow de développement à distance a été mis à disposition en octobre 2021, avec 30 % des ingénieurs y étant déjà passés dans la version bêta. L'équipe a mené des sondages internes pour obtenir des commentaires et a trouvé des réponses positives, permettant une plus grande diffusion grâce au bouche à oreille.