Le RGESN millésime 2024 est un bon point de départ pour revoir sa stratégie numérique durable et ses pratiques d’éco-conception. Avant de se faire rattraper par les exigences légales...
Embauché il y a 2 ans pour digitaliser les process, Alexandre Aubry raconte tous les changements que cela a induit : transformation de l'organisation, de l'infrastructure matérielle et réseau, ouverture et décommissionnement progressif de l'ERP Cobol...
Nous avons assisté à la conférence client de l'entreprise Orange à Agile en Seine. Cet article vous propose de découvrir comment l'IA Gen devient déjà un atout incontournable chez certains clients.
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.
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.