Qu'est-ce que ça peut bien être, une architecture… évolutive ?

Trois notions clés peuvent permettre d'analyser et de mettre en œuvre une architecture logicielle évolutive, pour enfin donner aux systèmes d'information l'agilité requise par les projets informatiques modernes.

Qu'est-ce que ça peut bien être, une architecture… évolutive ?
Une architecture évolutive, c'est comme le mariage de l'éléphant et de l'autruche.

Le concept d'architecture logicielle évolutive postule la capacité d'un système informatique à s'adapter et à évoluer de manière fluide et efficace au fil du temps, pour répondre aux besoins changeants des utilisateurs et de l'environnement. Mais n'est-il pas contre-intuitif d'imaginer qu'une architecture puisse évoluer ? En effet, la métaphore a vécu, qui comparait des centres de données bardées de serveurs monumentaux à des immeubles de béton. L'informatique moderne est distribuée, voire nuagique, et tout est fait pour la rendre fluide.

Pour s'extraire enfin d'un état d'esprit anti-agile et inadapté au changement permanent des besoins informatiques, trois notions fondamentales permettent d'appréhender ce concept : les fonctions de pertinence (fitness functions), la gouvernance architecturale automatisée (automated architectural governance) et enfin les données évolutives (evolutionary data). Nous allons voir comment chacune d'elles contribue à former un cadre d'analyse et de mise en œuvre pertinent pour l'élaboration d'architectures logicielles qui ne soient pas figées dans le marbre.

Architectural Fitness Functions

Il s'agit de critères objectifs ou de mesures qui évaluent la performance et l'efficacité du système par rapport à ses objectifs. Ceux-ci peuvent être variés, tels que la rapidité d'exécution, la résilience, la sobriété énergétique ou d'autres indicateurs jugés pertinents dans le contexte particulier du projet. Ces fonctions, indicateurs, repères, peuvent elles-mêmes évoluer dans le temps. On peut les compléter et affiner leurs seuils.

Les fonctions de pertinence servent de guide pour déterminer si l'architecture logicielle actuelle est adaptée aux attentes non fonctionnelles et aux besoins en constante évolution. Elles fournissent une mire objective pour observer dans le temps la qualité et l'efficacité du système, et permettent d'orienter les décisions d'évolution et de modification de l'architecture logicielle.

Automated Architectural Governance

La gouvernance architecturale automatisée se réfère à l'utilisation de procédures et d'outils automatisés pour surveiller, maintenir et faire respecter les contraintes et les normes architecturales au sein du système logiciel. Cela inclut l'application cohérente des meilleures pratiques, des directives de conception et des règles de codage. Mais bien sûr, cela n'est pas toujours possible.

Cependant, avec une gouvernance automatisée, les changements et les ajouts au code sont évalués par rapport aux directives architecturales prédéfinies, ce qui garantit que l'architecture globale reste cohérente et conforme aux exigences, même à mesure que le système évolue. Avec les tests fonctionnels qui sont les gardiens des capacités métier, et les fitness functions qui surveillent les capacités du système informatique, il est possible de corriger les tendances indésirables.

Evolutionary Data

Les données jouent un rôle essentiel dans le processus d'évolution d'une architecture logicielle, ne serait-ce que par leur structure et leurs relations qui ont un impact sur la conception des services. Or, les systèmes modernes traitent souvent d'énormes quantités de données, et ces données elles-mêmes évoluent au fil du temps en termes de volume, de format… et de structure.

Une architecture évolutive doit donc être capable de s'adapter à ces changements des données sans perturber le fonctionnement global du système. Cela peut impliquer l'utilisation de méthodes de gestion de données flexibles et évolutives, telles que les bases de données NoSQL, les architectures orientées événements, etc. La discipline data-oriented design a même pour objet de faire remonter cette vision jusqu'au niveau de l'expérience utilisateur, en intégrant la collecte des données d'usage aux stratégies d'évolution du SI ! Il revient donc aux architectes logiciels d'intégrer cette dimension dans toutes leurs réflexions, sans jamais présumer de l'immuabilité des structures de données.

Passer de l'expérience à la réflexion… ou l'inverse ?

En combinant ces trois notions, l'architecte va parvenir à créer un environnement dans lequel le système peut évoluer de manière fluide et continue, en tenant compte à la fois des besoins changeants et des contraintes architecturales. Les architectural fitness functions servent de guides objectifs pour les évolutions nécessaires, tandis que la gouvernance automatisée garantit la cohérence et la conformité architecturale. La prise en compte de l'évolutivité des données assure quant à elle la flexibilité nécessaire pour gérer les variations dans les besoins métiers et les sources de données elles-mêmes.

Dans l'ensemble, ce cadre d'analyse favorise une approche holistique et proactive de l'architecture logicielle, en mettant l'accent sur l'adaptabilité, la qualité et la performance à long terme du système. La conception structurelle vers laquelle il tend est articulée autour de principes de découplage, de réutilisation et d'autres idées et outils encore.

Building Evolutionary Architectures
Pour en apprendre plus, vous pouvez consulter le site dédié à ce sujet (il y a même des vidéos et des katas !) et lire le livre qui lui est consacré (chez O'Reilly, disponible en seconde édition).

Génial ! Vous vous êtes inscrit avec succès.

Bienvenue de retour ! Vous vous êtes connecté avec succès.

Vous êtes abonné avec succès à WENVISION.

Succès ! Vérifiez votre e-mail pour obtenir le lien magique de connexion.

Succès ! Vos informations de facturation ont été mises à jour.

Votre facturation n'a pas été mise à jour.