Diagram as code : une nouvelle approche dans le DevOps

May 17, 2024

Une véritable renaissance s'opère dans l'art des architectures logicielles. En répudiant les schémas statiques d'antan, le « Diagram as Code » insuffle un vent de modernité salvateur. Par cette approche visionnaire, les spécifications visuelles des systèmes s'incarnent en code exécutable, éliminant les sources d'erreurs humaines. Zoom sur cette approche novatrice.

Qu'est-ce que le Diagramme as Code ?

Le Diagram as Code révolutionne la manière de modéliser les architectures logicielles, en particulier pour la documentation pérenne de haut niveau. 

L'approche 1.0 (dite « traditionnelle ») consiste à rédiger la source des schémas dans un langage spécifique textuel (PlantUML, Mermaid, etc.) ou un langage de programmation (Diagrams), puis à générer les diagrammes via des outils web ou en ligne de commande. 

Si cette méthode facilite l'intégration aux pratiques de développement, elle souffre d'une faiblesse majeure : la nécessité de maintenir manuellement la cohérence entre les multiples fichiers de définition lors des évolutions.

C'est pour transcender cette limite que le Diagram as Code 2.0 voit le jour. Plutôt que de penser en termes de « diagrammes », cette approche novatrice invite à raisonner avec des « vues d'un modèle ». 

Son principe : définir un modèle centralisé de l'architecture logicielle ainsi que les vues souhaitées. Les diagrammes cohérents sont alors générés automatiquement à partir de cette source unique.

En désolidarisant définition et rendu, l'architecture se libère du verrouillage propriétaire. Son unique source centrale peut désormais se décliner en une multitude de vues affinées, restituées via les meilleurs outils selon les besoins.

Comment fonctionne l'approche Diagram as Code ?

Au cœur de cette approche réside un modèle, structuré sous un format universel. Ce référentiel centralisé agrège de manière exhaustive l'ensemble des éléments constitutifs de l'architecture logicielle : composants, dépendances, relations, etc. À l’image d’une représentation fidèle de la réalité technique, ce modèle en consolide tous les aspects au sein d'une source unique de vérité.

Interviennent ensuite les outils d'écriture, destinés à alimenter ce modèle de référence. Privilégiant la philosophie Diagram as Code, ils permettent de décrire ce dernier via un langage spécifique textuel intuitif tel que le DSL Structurizr. Chaque trait de code, chaque instruction se répercute alors instantanément sur le modèle, le maintenant en perpétuelle cohérence avec les spécifications rédigées.

Mais le Diagram as Code ne se résume pas à un simple exercice de modélisation. Pour donner vie à cette architecture, des outils dédiés de rendu entrent en jeu. Leur rôle : interpréter le modèle source afin de générer de multiples représentations visuelles, au format adapté aux usages escomptés. Toute une palette de restitutions s'offre alors aux développeurs et architectes (Diagrammes PlantUML, schémas Mermaid, graphiques SVG interactifs, etc.) pour explorer l'arborescence technique sous tous ses angles.

Ce qui différencie fondamentalement cette démarche tient à la séparation intrinsèque entre la définition du modèle et son rendu graphique. 

Davantage qu'un simple gain de productivité, cette dichotomie initie un changement de paradigme majeur. 

Les bénéfices du Diagram as Code, pourquoi s'y mettre ?

L'adoption du Diagram as Code ne se justifie pas seulement par un simple effet de mode, mais séduit par des avantages tangibles et structurants pour les organisations.

Une lisibilité accrue

Lorsqu'on adopte le Diagram as Code, la représentation de l'architecture logicielle s'affranchit des limites inhérentes aux outils graphiques classiques. Exit les interfaces encombrées et complexes, place à une syntaxe épurée, déclarative et intuitive.

La description des différents composants s'opère au travers d'un langage dédié intuitif, aux constructions simples et expressives. Chaque élément architectural - qu'il s'agisse d'un service, d'une base de données ou d'un système tiers - se matérialise sous la forme d'instructions limpides rappelant la définition d'objets structurés. 

Les relations et les dépendances se spécifient quant à elles au moyen de mots-clés signifiants, reproduisant la logique des liens entre instances.

Débarrassé des contraintes graphiques, le concepteur se concentre pleinement sur la sémantique, améliorant par la même occasion la qualité des modèles. 

Mais au-delà de la simple lisibilité initiale, cette approche textuelle favorise une maintenabilité accrue sur le long terme. De la même manière que pour le code applicatif, standards et bonnes pratiques d'écriture garantissent une compréhension limpide des modèles, même lors d'éventuelles reprises des spécifications par d'autres équipes.

L’automatisation des tâches

Un autre bénéfice clé du Diagram as Code réside dans les possibilités d'automatisation des tâches fastidieuses qu'il offre. En effet, définir une architecture de manière déclarative et textuelle présente l'avantage considérable de pouvoir intégrer ces spécifications dans les mêmes flux de travail que le code applicatif.

Dès lors, la génération initiale des diagrammes peut s'inscrire au cœur des pipelines de livraison continue et d'intégration continue (CI/CD). À chaque nouveau commit du modèle source, ou à la moindre modification des définitions, les outils dédiés s'enclenchent pour régénérer instantanément les représentations graphiques à jour. Un gain de productivité indéniable par rapport aux méthodes manuelles chronophages.

Mais l'automatisation ne s'arrête pas là. Les modèles centralisés peuvent également se maintenir de manière dynamique en se synchronisant avec d'autres référentiels. Ainsi, tout changement d'infrastructure défini au sein des descripteurs Terraform, Kubernetes ou autres se répercute en temps réel sur l'architecture, rendant possible un monitoring efficient bout-en-bout.  

Enfin, cette dimension « as code » ouvre la voie à de multiples opportunités d'optimisation et de personnalisation. Des scripts ou plugins maison peuvent par exemple s'interfacer avec les modèles pour y injecter des règles métiers ou des contrôles qualité sur mesure.

Une cohérence renforcée

La cohérence représente un défi de taille lorsqu'il s'agit de maintenir une documentation architecturale de qualité. Les approches historiques peinent souvent à garantir l'alignement parfait entre les spécifications, les schémas visuels associés et la réalité du système en constante évolution. C'est précisément à cette problématique que le Diagram as Code apporte une réponse élégante.

En définissant l'architecture comme un modèle centralisé, versionné et réutilisable, cette méthodologie assure une véritable maîtrise de la cohérence à 360 degrés. Chaque composant, chaque relation devient une entité à part entière, figée dans une source unique de vérité. Plus de risque de désynchronisation entre les représentations !

Mieux encore, le mécanisme de génération des diagrammes à partir de cette source garantit une stricte conformité visuelle. Chaque modification se répercute de manière parfaitement automatisée sur les différentes vues, sans aucune intervention humaine potentiellement source d'erreurs.

Enfin, la cohérence s'étend au-delà des simples aspects visuels. En tant que référentiel unique centralisé, le modèle source constitue désormais le pivot autour duquel gravitent les autres artéfacts techniques : documentations, templates d'infrastructure, jeux de tests... Une véritable mine d'or pour les équipes souhaitant harmoniser l'ensemble de leur écosystème DevOps.

Une collaboration facilitée  

L'avènement du Diagram as Code induit bien plus qu'un simple changement de format de modélisation architecturale. Il initie surtout une véritable mutation dans les pratiques collaboratives des équipes en charge des systèmes distribués modernes.

À la base de cette transformation réside le stockage des spécifications dans des référentiels centralisés de code source. Une fois migrés dans cet environnement familier, les modèles d'architecture bénéficient instantanément de l'ensemble des rituels et outils éprouvés du développement logiciel.

Versionning, branches de travail isolées, revues de code par les pairs, politiques de fusion strictes... Toute la panoplie des bonnes pratiques « as code » se transpose aisément au pilotage des diagrammes, favorisant une collaboration limpide et sécurisée entre les différents acteurs métiers.

Plus besoin de partager à l'aveugle des fichiers monolithiques par mail ou via des systèmes centralisant les versions, au risque de créer des incohérences. 

Parallèlement, les modèles hébergés dans ces référentiels acquièrent une dimension collective profondément ancrée dans l'ADN de l'entreprise. Quels que soient les mouvements au sein des équipes, les connaissances ne se perdent plus mais se transmettent et se capitalisent dans ces repositories pérennes. 

Une synergie avec l'Infrastructure as Code (IaC)

Le Diagram as Code trouve un écosystème d'adoption idéal au sein des organisations ayant opéré leur transition vers les approches modernes d'infrastructure as code. En effet, ces deux philosophies entretiennent des synergies profondes qui, une fois combinées, propulsent les capacités de management de l'architecture à un niveau supérieur.

Tout d'abord, les équipes IaC pionnières dans l'utilisation de langages déclaratifs pour définir leurs infrastructures cloud et on-premise ont déjà intégré la souplesse et l'agilité que permettent ces formats textuels. Peu leur importe le passage au mode Diagram as Code pour leur architecture applicative, la transition conceptuelle est déjà amorcée.

Mais au-delà de cette simple appétence culturelle, c'est l'interopérabilité même entre les deux mondes qui s'avère déterminante. Les spécifications d'infrastructure et les modèles architecturaux évoluant désormais sous une forme homogène, versionable et diffusable ; ils peuvent se nourrir mutuellement pour atteindre des niveaux de cohérence et de maintenabilité globales insurpassables.  

Toute une orchestration vertueuse qui fluidifie considérablement les processus DevOps et renforce la qualité du système réalisé.

Les outils disponibles 

Plusieurs solutions permettent aujourd'hui de concrétiser la vision du "diagramme as code" au sein des organisations. Ces outils permettent, on l’a vu, de générer des diagrammes à partir de descriptions textuelles.

Mais au-delà de cette génération statique a posteriori, certaines plateformes vont plus loin en intégrant une dimension dynamique et prédictive au cœur même du cycle de vie applicatif. C'est le cas d'Exoway, qui propose un outil de visualisation d'architecture qui va bien au-delà du simple rendu graphique.

En effet, Exoway permet non seulement de modéliser et documenter des architectures existantes, mais aussi de prévisualiser l'impact de futurs déploiements avant leur concrétisation effective. Les équipes peuvent ainsi itérer sur des maquettes interactives, dérivées automatiquement à partir de leurs définitions as code Terraform, Kubernetes ou autres.

Cette approche "diagram-first" combinée à la puissance du IaC ouvre la voie à une véritable conception architecturale reproductible, auditable et robuste. Plus besoin d'attendre les résultats d'un déploiement pour identifier d'éventuelles incohérences, la solution d’Exoway les anticipe intelligemment en amont.

L'outil intègre également des fonctionnalités de gouvernance architecturale permettant d'appliquer des politiques, des normes et des bonnes pratiques sur les environnements modélisés. Une assurance qualité de bout-en-bout particulièrement stratégique pour les entreprises soumises à de fortes contraintes réglementaires.

Comment implémenter le Diagram as Code ?

L'adoption réussie du Diagram as Code ne se décrète pas, elle se construit selon une méthodologie réfléchie et progressive. Plusieurs étapes jalonnent ce changement d'envergure afin d'en maximiser les bénéfices pour l'organisation.

Choisir un standard et s'aligner sur les outils

Avant toute chose, il convient de définir un socle technique cohérent avec les pratiques déjà en vigueur au sein des équipes. L'enjeu consiste à sélectionner un framework Diagram as Code s'intégrant naturellement aux flux de travail existants.

Le choix de l'outillage peut s'avérer décisif. Stocker les modèles dans un simple répertoire restera peu profitable si les développeurs peinent à les retrouver ou à les exploiter concrètement. 

A contrario, une solution transparente, offrant de puissantes capacités de visualisation et parfaitement arrimée à l'écosystème DevOps en place, constituera un accélérateur d'adoption majeur. Le but demeure avant tout de faciliter la collaboration et le partage d'informations.

Procéder par étapes progressives

Une fois le cadre technique établi, le plus sage reste d'entamer la transition de manière progressive et itérative. Pourquoi ne pas commencer par simplement ajouter quelques descriptions architecturales à un projet dépourvu de telle documentation ? Aussi modestes soient ces premiers pas, ils permettront de poser une base solide pour la suite.

Par la suite, le modèle pourra s'enrichir au fil des itérations, tandis que des templates et des conventions émergentes favoriseront peu à peu la réutilisation d'éléments communs et la standardisation des pratiques.

Clarifier les attentes

Parallèlement, il s'avère judicieux d'accompagner ce mouvement par des guides d'usage et de la documentation dédiée. Formaliser quelques règles simples sur l'utilisation attendue des « diagrammes as code » : cas d'application recommandés, conventions de nommage, bonnes pratiques de modélisation...

Ce socle de gouvernance aidera à ancrer cette nouvelle méthodologie dans la culture de l'entreprise en éliminant les éventuelles zones de flou et en harmonisant les pratiques des différentes équipes. 

Conclusion

Le Diagram as Code est une approche méthodique et rigoureuse qui catalyse l'agilité des organisations. En rompant avec les limites des représentations graphiques classiques, cette pratique novatrice insuffle un nouveau souffle aux processus de conception architecturale, désormais gouvernés par les bonnes pratiques du développement logiciel. Une lisibilité accrue, une cohérence renforcée, une automatisation bénéfique et une collaboration facilitée deviennent autant d'atouts majeurs pour les entreprises souhaitant accélérer leur transformation numérique. 

Glossary

Common questions