Construire une architecture décentralisée

Il s’agit d’un modèle d’architecture qui s’appuie sur les concepts d’architecture centralisée (un core model partagé par toute une organisation) et d’architecture spécifique (des fonctionnalités spécifiques à un domaine sont implémentés afin de répondre à
Christophe DUPONTMis à jour le 18 Juin 2014

Parmi les architectures existantes, larchitecture décentralisée est une forme hybride de plusieurs autres modèles. Sil nest pas difficile à appréhender, ce modèle requiert néanmoins une bonne organisation pour pouvoir être efficace.

Nous allons voir dans cet article ce quest une architecture décentralisée, comment la mettre en place, mais aussi et surtout quels sont les écueils à éviter pour que votre projet ne se transforme pas en catastrophe.

Quest ce que larchitecture décentralisée?

Il sagit dun modèle darchitecture qui sappuie sur les concepts darchitecture centralisée (un core model partagé par toute une organisation) et darchitecture spécifique (des fonctionnalités spécifiques à un domaine sont implémentés afin de répondre à tous les besoins).

De façon basique, il sagit de développer une application quon déploiera sur différents sites.

Lintérêt de ce modèle est donc de centraliser les développements et de garantir que chaque site utilise le même logiciel.

Cela peut être très utile dans le cas dune entreprise qui grandit, surtout si cest par croissance exogène (rachat dentreprise). Dans ce cas les processus sont généralement très différents et lintégration de chaque nouveau site requiert ladaptation de son système dinformation à celui de la maison mère.

Ce modèle permet de plus de développer localement des modules spécifiques à un site. Dans ce cas, les modules seront maintenus localement et le core model centralement.

Dans ce cas, pourquoi utiliser une architecture décentralisée, et pas une interface web?

Prenons lexemple suivant : une entreprise souhaite connecter ses sites industriels à une application, typiquement son ERP. Elle pourrait développer des fonctionnalités spécifiques directement dedans, mais cela aurait 3 contraintes:

Les performances pourraient être affectées par le nombre grandissant dutilisateur connectés;

La maintenance serait plus difficile car la disponibilité de lERP deviendrait dautant plus critique quil y aurait dutilisateurs (imaginez une entreprise ayant des sites tout autour de la terre; fonctionnant 24h/24, les arrêtes seraient difficiles à planifier);

Enfin le développement de modules spécifiques est souvent confronté aux limites imposées par loutil lui-même. En effet, développer en spécifique dans un ERP requiert souvent de toucher au modèle standard, complexifiant la maintenance et les montées de version.

Cest donc pour toutes ces raisons quil est parfois judicieux dajouter un logiciel externe et de le déployer, tout en le connectant au système central. On retrouve alors les avantages de flexibilités, de performance et de maintenance quon aurait perdu sinon. De plus, la disponibilité est améliorer par le fait :

Lapplication étant déployée localement sur plusieurs sites, si lun deux sarrête, les autres ne sont pas affectés.

Les mécanismes de mise en cache permettent de continuer à travailler même si le système central nest plus disponible; les données étant renvoyées automatiquement plus tard.

Comment définir une architecture décentralisée ?

Il faut distinguer les aspects fonctionnels et matériels:

Fonctionnellement

Le fait dutiliser un core model impose de concevoir des processus qui seront suivis sur tous les sites. Cela nécessite donc de travailler de concert avec les key user qui sont les plus à même de connaître les points critiques de chacun de leur processus.

Attention toutefois, définir un core model ne signifie pas que chaque site utilisera toutes les fonctionnalités de celui-ci. Il existe de nombreux cas où il faudra créer 2 processus relativement semblable dans lapplication, le premier correspondant à une partie des sites, le second aux autres sites. Néanmoins si ces 2 processus impliquent plus de développement, ils ont lavantages de partager le même modèle de données et la plupart des fonctions transverses (synchronisation avec le système par exemple). Cest par exemple le cas de 2 sites réalisant des expéditions : certains utiliseront comme unité des unités de boite là où dautres utiliseront des tonnes de kilo. Dans les deux cas, on retrouvera un certains nombres de variables communes (entête de facture, nom de lemployé, etc), mais on aura bien affaire à 2 processus différents (mettre des boites sur une palette nimplique pas les mêmes étapes que la pesée).

On cherchera quand même toutefois à agréger au maximum les processus pour faciliter la maintenance.

Techniquement

Déployer une application localement requiert nécessairement de posséder plusieurs serveurs, présents sur chacun des sites. On veillera donc à utiliser les mêmes serveurs partout, éventuellement en les dimensionnant différemment pour les sites hors normes ou dans les cas où lélasticité prix du matériel est assez forte.

Il convient aussi de définir la granularité des besoins. En effet, déployer localement ne signifie pas forcément déployer sur chaque site physique, mais plutôt sur différents lieux représentants un tout cohérent. Par exemple, pour une application de ged, un déploiement par pays peut-être suffisant. A linverse, une application de gestion de production, utilisée massivement, sera plutôt déployée sur chaque site physique. Là encore évidemment, le coût est une variable importante.

Il ne faut pas non plus oublier de prendre en compte le matériel qui se connectera à lapplication. Que ce soit les versions des os, les périphériques mobiles (téléphones, tablettes, rf gun), les imprimantes utilisées, lecteur dempreintes ou autre, lapplication devra être compatible avec tous. Il conviendra donc de sadapter au matériel existant, mais aussi et surtout de spécifier les futurs matériels à acquérir, de façon à limiter les TU avant déploiement.

Comment déployer une architecture décentralisée ?

On utilisera la plupart du temps un site pilote, qui permettra de valider le logiciel. Suivront ensuite les autres sites. Le rythme de déploiement restera à la discrétion de chacun.

On veillera néanmoins à faire un master du site pilote, quon pourra ainsi copier sur les autres sites. En effet, même si les procédures sont bien suivis, il peut toujours arriver quune étape soient mal réalisée et quune installation échoue.

Déployer nécessite aussi de préparer les données nécessaires à lexploitation. Veillez donc à prévoir assez de temps pour les préparer avec les métiers. On citera parmi les données critiques les login, le paramétrage propre au site (adresse de la base de données, traduction de lapplication, etc) et bien évidemment les données propre à la production.

Enfin, et même si le déploiement sest bien déroulée, tout nest pas fini. En effet, noubliez pas que linstauration dune architecture décentralisée suppose des compromis sur les processus mis en place et que vous allez donc modifier les habitudes des personnes sur site. Il faudra donc suivre les utilisateurs pour sassurer quils ne rencontrent pas de difficultés à utiliser leur nouvelle application.

A ce titre, ne négligez pas la conduite du changement: un logiciel, même terminé, même coûteux, sil est rejeté par ses utilisateurs, est un échec. Lentreprise nhésitera pas à faire marche arrière si le sponsor conclut à la faillite de la solution. La réussite du projet passe donc par laccompagnement des utilisateurs, ce qui signifie :

Etre présent sur site lors du déploiement initial, afin de constater sur place les problèmes rencontrés et accompagnés les utilisateurs dans leur travail;

Mettre en place un numéro de téléphone de support, affiché de façon claire et partout, pour que les utilisateurs ne sentent pas seul en cas de problème;

Enfin, et surtout, les key user qui ont définis les processus doivent aller sur site, plusieurs fois si nécessaire, pour que les utilisateurs utilisent correctement lapplication. La tentation est grande de ne pas déclarer correctement toutes les étapes dun processus (surtout dans le monde industriel), ce qui peut entraîner des situations de blocage de lapplication. On pourrait penser quil sagit dune faiblesse du logiciel, mais rappelez vous que la définition de processus commun impose des compromis. A ce titre, « blinder » lapplication imposerait des coûts de développement exponentiels. Laccompagnement et la formation sont le meilleur moyen de palier à ce problème.

Comment maintenir une architecture décentralisée ?

La maintenance de lapplication déployée nest pas très compliquée lorsquil sagit de simples montées de versions.

En revanche les évolutions impliquant la modification ou lajout de processus doivent être appréhender sérieusement. On recommandera alors, tout comme au début du projet, de réunir les key user pour appréhender les impacts des évolutions, ainsi que pour se mettre daccord sur les nouvelles fonctionnalités à développer. Il nest pas rare que beaucoup de sites aient des besoins différents : ce sera alors à lentreprise de hiérarchiser ces besoins.

Enfin, le cas des montées de version du système centrale, sil implique une modification du core model, est plus problématique. Dans ce cas encore une fois, le choix du planning darrêt de lactivité au niveau global sera laissé à la discrétion de lentreprise.

 

=> En savoir plus sur nos offres de conseil en architecture