Automatiser la création de version d'une application avec semantic-release
Dans cet article, découvrez comment automatiser une création de version de votre application grâce à Semantic-Release : nommage des commits et configurations
Quand il s’agit de faire des schémas d’architectures en projection ou en documentation, il y a pléthore d’outils disponibles, que ce soit en client lourd, web, SaaS… Et avec eux, une multitude de “templates”, presque propres à chaque outil, avec des problématiques de passage à l’échelle dès que l’on commence à avoir plusieurs contributeurs sur ces documents. Aujourd’hui, je vais vous faire une présentation d’ARCHI, un outil de modélisation Open Source qui pour moi répond bien à ces problématiques.
Avant de parler de l’outil, parlons un peu d’urbanisation. En tant qu’architecte, notre préoccupation première est, à mon sens, faciliter la communication et le partage d’informations entre les différentes parties prenantes d’un projet, d’une équipe ou d’une entreprise, ce qui implique de trouver un langage commun. J’ai souvent cherché le bon compromis entre représentation technique et fonctionnelle sans trouver forcément chaussure à mon pied. Quand on ajoute la notion de pérennité à cette équation déjà complexe, cela devient impossible. Certains frameworks de modélisation sont trop orientés dev (à mon sens) comme C4 ou BPMN et ne sont pas facilement compréhensibles pour des personnes hors de la cible première. Dans le cas de C4 que j’ai beaucoup utilisé, même s’il existe des éditeurs maintenant, le coté “implémentation” de la documentation limite très souvent l’utilisation par rapport à un draw.io ou solution équivalente.
À l’inverse, draw.io est un super outil mais n’offre pas beaucoup de cadre et, même avec des templates prédéfinis, vous aurez beaucoup de mal à avoir un rendu homogène entre les utilisateurs.
Voila déjà le premier point qui m’a séduit, ARCHI vient avec son framework, ArchiMate. C’est un standard technique de l’OpenGroup et aligné avec la norme TOGAF. ArchiMate offre un langage commun pour décrire la construction et le fonctionnement des processus d'entreprise, des structures organisationnelles, des flux d'information, des systèmes informatiques et de l'infrastructure technique. On peut donc décrire une architecture sous plusieurs scopes, et faire des ponts entre les différentes vues d’architecture.
Les principaux concepts et éléments du langage ArchiMate sont présentés sous le nom d'ArchiMate Core Framework, qui se compose de trois “layers” et de trois “aspects”. Cela crée une matrice de combinaisons. Chaque couche à ses aspects “Passive Structure”, “Behavior” et “Active Structure”.
D'après Wikipedia :
Cette matrice accompagnée des différentes représentations et des différents types de relation permet globalement de représenter n’importe quel système, des plus simples aux plus complexes.
Parlons maintenant de l’outil, et de ce qui le rend puissant. Au delà d’un fonctionnement classique de modélisation comme draw.io, sa puissance vient de sa gestion des objets.
Tout élément dans Archi est un objet (boite, relation, étiquette, …), possédant des attributs descriptifs (au-delà des types dans Archimate) et sont sauvegardés dans un référentiel. L’intérêt me direz-vous ?
Prenons comme exemple ce schéma simple, décrivant le parcours de création d’un utilisateur.
Ce que l’on peut voir immédiatement, c’est que l’ensemble des éléments sont référencés dans le Model Archi, que ça soit les éléments business (en jaune), les applications techniques et les interfaces d’API (en bleu) et même les relations. Cela vous permet d’avoir un référentiel documentaire entre les différents schémas, et de réutiliser les mêmes éléments dans des schémas différents.
Dans l'exemple ci-dessous, l’application “MS Client” est le même objet que dans le premier schéma.
Cela permet notamment d’avoir une documentation unique sur l’ensemble de models et de faciliter cette documentation.
Autre force de l’outil, sa gestion des relations et notamment des imbrications. Lors de l’insertion d’un objet dans un autre, Archi comprend qu’il peut s’agir d’une relation (souvent d’une composition) et va vous demander explicitement de décrire s'il s’agit d’une relation explicite (comme une flèche finalement).
Exemple ici quand je tente d’ajouter un component “test” dans l’API Gateway.
D’ailleurs maintenant, si je veux sortir cette boite de l’API Gateway, la relation va rester et apparaître explicitement.
Mais le plus gros avantage à cette gestion des “objets” dans Archi, c’est la possibilité de générer en un clic une vue, à partir d’un élément du référentiel, avec l’ensemble des objets qui lui sont attachés. Idéal pour comprendre la place d’un objet dans l’ensemble de notre ecosystème, y compris sur des schémas gérés par d’autres personnes.
Exemple :
Enfin, dernier gros avantage de ce référentiel, l’outil permet de rechercher dans l’ensemble des objets (et des attributs des objets) !
Dans les autres points forts d'Archi, on trouve une organisation libre via des dossiers dans la gestion des “Views” (des schémas à proprement parler) qui vous permet d’organiser le travail par type de schéma (business, applicatif, infra…) ou encore par équipe, fonctionnement qui était assez pratique avec l’utilisation de Lucidchart (payant) par exemple.
D’un point de vue collaboratif, il peut s’intégrer (via un plugin) à une configuration GIT afin de versionner le travail, ou encore exporter la documentation en format HTML, PDF, image...
Archi a vraiment été pour moi un gros "level up" dans la gestion de la documentation d’architecture, notamment sur ses aspects outil collaboratif et centralisation des connaissances. Le fait de construire de nouveaux schémas en utilisant l’outil permet de faire croître au fur et à mesure du temps la connaissance globale du projet, et construit de manière empirique la connaissance, ce qui est assez rare dans ce genre d’outil. En bref c’est un outil assez complet, pas très compliqué à prendre en main et Open Source. Pour moi il devient un Must Have dès qu’il y a plusieurs contributeurs sur les modélisations.
Je vous le recommande fortement !
Auteur(s)
Rémy Jardinet
Architect @ Eleven Labs. Spécialisé dans la Data, l'IOT et les schémas avec des boiboites.
Vous souhaitez en savoir plus sur le sujet ?
Organisons un échange !
Notre équipe d'experts répond à toutes vos questions.
Nous contacterDécouvrez nos autres contenus dans le même thème
Dans cet article, découvrez comment automatiser une création de version de votre application grâce à Semantic-Release : nommage des commits et configurations
Dans le domaine de la data, la qualité de la donnée est primordiale. Pour s'en assurer, plusieurs moyens existent, et nous allons nous attarder dans cet article sur l'un d'entre eux : tester unitairement avec Pytest.
Le domaine de la data est présent dans le quotidien de chacun : la majorité de nos actions peut être traduite en données. Le volume croissant de ces données exploitables a un nom : "Big Data". Dans cet article, nous verrons comment exploiter ce "Big data" à l'aide du framework Apache Spark.