Les usines logicielles tel que Azure DevOps, Gitlab ou la suite Atlassian sont devenues incontournables dans le monde du développement. L’intégration d’outils de versionning (Git par exemple), de gestion de projet, l’automatisation des livraisons… Ce sont des outils puissants et faciles à utiliser ! Tout du moins dans une utilisation basique. Etant très complets, ils ne sont souvent pas exploités à leurs maximums. C’est pourquoi je vous propose de (re)voir ensemble certaines fonctionnalités proposées par Azure DevOps.
Table des matières
Qu’est-ce qu’une « usine logicielle »?
Si l’on devait donner une définition, ça donnerait quelque chose comme ça : « les usines logicielles (ou forges logicielles) sont des applications ou des ensembles d’applications permettant de gérer l’ensemble de la vie d’un logiciel. » Dit autrement, c’est un logiciel qui permettra à l’ensemble de l’équipe de travailler ensemble sur la solution qu’ils développent (développeurs, testeurs, et chef de projet !). Ces outils sont fortement liés aux concepts de DevOps et de DevSecOps.
Mais concrètement, comment ça se présente?
La définition est loin d’être évidente, car chaque logiciel concurrent propose des services qui lui sont propres. Cependant on retrouve certains points communs à tous :
- Le versionning logiciel : Le logiciel sera sauvegardé sur la plateforme, et versionné. Il permet le travail collaboratif, qui est le point central de l’usine logicielle. L’historisation du code permet de garantir la récupération de versions précise, mais aussi l’intégrité du code.
- La gestion de projet : Chaque usine logicielle permet de gérer les projets en permettant de créer les tickets et tâches nécessaires à effectuer par l’équipe, tout en assurant le suivi de ces dernières.
- L’intégration continue : Elle permet de vérifier que le travail effectué est conforme aux exigences de qualités qui ont été spécifiées, et prépare le logiciel à son futur déploiement (que l’on appelle « artefact »)
- Le déploiement continue : cette fonctionnalité permet de déployer l’artefact préparé lors de l’étape d’intégration continue, et de le déployer sur les différents environnements désirés selon un process automatisé défini à l’avance
Ces explications sont brèves et parfois incomplètes, mais nous expliciterons chaque partie un peu plus loin.
En plus de cette base, certaines usines logicielles ont donc des fonctionnalités supplémentaires pour accompagner au mieux les équipes et les projets.
Pourquoi Azure DevOps?
Parce qu’il faut bien un exemple, et que c’est l’outil que j’utilise le plus à ce jour . J’ai aussi beaucoup travaillé sur la suite Atlassian pendant des années, mais je trouve qu’Azure DevOps est une solution plus adaptée d’un point de vue fonctionnalité comme d’un point de vue sécurité. Utilisant notamment le cloud Azure, l’intégration est un avantage important pour faciliter la gestion au jour le jour. Nous verrons tout les avantages au cours de cette suite d’articles.
Qu’est-ce qu’Azure DevOps?
Azure DevOps est une usine logicielle proposée par Microsoft. Certains l’ont peut-être connu dans ses versions précédentes, qui s’appelaient alors TFS (pour Team Fundation Server). Azure DevOps est son digne successeur, avec le même socle mais amélioré.
Un des grands avantages des outils Microsoft, c’est l’intégration entre les différents outils qui est souvent très simple et efficace. Et Azure DevOps n’y fait pas exception.
Créer un nouveau projet, le mettre en place sur Azure DevOps, et le déployer se fait en quelques minutes. Mais si vous êtes dans un environnement entièrement Microsoft (Visual studio ou VS Code, et Azure), alors les tâches deviennent extrêmement simples. L’ensemble des accès étant sur votre compte Microsoft, lui-même relié à Azure AD, Azure DevOps reconnais alors directement l’ensemble des VM, app services ou Azure Function disponibles.
Vous pouvez voir un exemple de déploiement sur Azure avec Azure DevOps dans cette captation réalisée sur une session du Microsoft User Group de Montpellier.
Et si je n’utilise pas Azure / .Net?
L’outil devient alors une usine logicielle plus classique, mais continue à être extrêmement compétitive. Vous pouvez très bien développer une application Rubis ou NodeJs sur Azure DevOps, et la déployer sur AWS ou sur vos serveurs On Premise. Il n’y a aucune contre-indication à cela.
C’est le grand avantage d’Azure DevOps, à mes yeux tout du moins. L’outil est en soi très performant et complet (j’en reparlerai dans un autre article). Mais si en outre vous utilisez des technologies Microsoft, cela accentue nettement sa simplicité d’utilisation, tout en accroissant la sécurité des données de l’entreprise.
Et les fonctionnalités?
On va y retrouver de nombreuses fonctionnalités, que l’on va détailler dans des articles dédiés. Voici les principales parties :
- Overview : on retrouve dans cette section ce qui permet de suivre le projet sur le long terme. Il y a les tableaux de bord que l’on peut personnaliser, et ceux communs à l’équipe. On y retrouve aussi un wiki, afin de stocker les différentes documentations du projet.
- Boards : cet onglet propose différents écrans dont le but est la gestion de projet. On y retrouve la liste des tâches et tickets qui ont été ouverts, mais aussi les planifications (sprint), ou encore des requêtes personnalisées permettant de trouver des informations plus simplement (par exemple, la liste de tous les tickets ouverts de plus de 2h, de priorité 1 et assignés à une personne)
- Repos : cette partie concerne le versionning de code source, avec notamment l’historique du code, les différentes branches, des pull request et des tags.
- Pipelines : nous attaquons l’automatisation avec l’intégration continue (CI) et le déploiement continue (CD). L’onglet pipeline permet de gérer tout ce qui a trait à la CI/CD. On parlera donc des pipelines dédiés, mais aussi de quelques écrans facilitant la vie pour les tâches communes (variables partagées, sécurité, tâches partagées)
- Tests plan : cette partie permet notamment de gérer des carnets de tests qui permettront de valider qu’une application / une version est bien conforme aux attentes. Les testeurs pourront jouer les tests écrits ici via une application dédiée, et reporter facilement des bugs avec prise vidéo et/ou captures d’écrans. Les développeurs ont ainsi un maximum d’informations pour une prise en charge rapide. Enfin, il est possible de lier les tests écrits avec les tests automatisés qui ont pu être développés, afin que l’équipe de test sache que ce test est désormais pris en charge au niveau de la CI/CD
- Artefact : cet onglet concerne les gestionnaires de paquets qui sont utilisés par vos applications. Vous pourrez gérer les paquets autorisés au niveau des différents gestionnaires (nuget, npm, etc.). Vous pourrez aussi ajouter vos propres packages dans un flux privé, par exemple si vous développez des librairies qui sont utilisées par plusieurs applications internes.
Bon, combien ça coûte?
Les coûts d’Azure DevOps sont très raisonnables, surtout en comparant à la concurrence. Le prix de votre projet Azure DevOps dépendra surtout de deux facteurs : le nombre de développeurs, et le nombre de processus de build parallélisé que vous souhaiterez afin de faire fonctionner vos pipelines en parallèle.
Licences développeurs
Côté licence, il faut savoir qu’il existe trois types de comptes sur Azure DevOps :
- les comptes stackholder : ce sont des comptes pour la gestion de projet et/ou pour suivre et créer les tickets (gestion de projet). Ils ne consomment pas de licence
- les comptes développeurs : ce sont les comptes principaux de l’application. Ils ont un accès à l’ensemble des fonctionnalités, si les droits le leur permettent. 5 licences développeur sont offertes par défaut.
- les abonnements Visual Studio : ce sont les mêmes comptes que les comptes développeur en termes d’accès. L’abonnement Visual Studio intègre cependant la licence d’utilisation d’Azure DevOps. Ces développeurs ne consomment donc pas de licence Azure DevOps supplémentaire.
Si vous possédez ce type de licence, je vous suggère de regarder la liste des avantages liés, comme par exemple 💸 Activer le crédit Azure Dev des licences Visual Studio.
Ainsi, pour une entreprise fictive avec 13 développeurs répartis comme suis :
- 6 développeurs .Net avec abonnement Visual Studio
- 7 développeurs NodeJs
Seules 2 licences développeurs devraient être achetées (5 gratuites, 2 payantes, et 6 développeurs avec une licence embarquée dans l’abonnement Visual studio).
Licences processus de build
Par défaut, Azure DevOps est gratuit avec un process unique de 1800 minutes de build sur Azure, offert mensuellement. Vos pipelines CI/CD peuvent ainsi tourner sur un temps total cumulé de 1800 minutes. Ainsi, si votre pipeline de build dure 30mn, et votre pipeline de déploiement 10mn, vous pouvez par exemple faire 50 builds et 30 déploiements par mois (50*30 + 30*10 = 1800).
Par contre, aucune tâche ne sera parallélisée, car vous n’avez qu’un seul job disponible. L’achat de jobs supplémentaires permet de paralléliser les tâches de build et de déploiement. Ces jobs sont communs à vos différents projets sur une même organisation. Nous verrons dans la section Pipeline comment ils peuvent être organisés et gérés.
Il existe deux types de process :
- les process hébergés par Azure, plus onéreux, mais c’est Azure qui fournit l’infrastructure et la puissance de calcul. Vous n’avez besoin que d’augmenter le curseur sur Azure DevOps.
- les process hébergés par vous-même. Ils sont moins onéreux (vous ne payez que la licence). Cependant, c’est à vous de fournir la puissance de calcul (par le biais d’une VM sur Azure, ou votre infrastructure On Premise)
Dans les deux cas, tous les process achetés ne possèdent par de limite de temps d’exécution. Le plan gratuit est quant à lui limité à 1800 minutes.
Liens utiles
Pour le tableau des prix sur Azure DevOps, vous pouvez suivre ce lien.
Pour les avantages liés aux abonnements Visual Studio, c’est ici.