les derniers
articles

Index &
Sommaire
 

Articles « Info » : architecture

 


DÉCOLLAGE !


Présentation du
site WEB AILES
 


Architecture Technique :
Comment structurer ?
Principes généraux
[Architecture], [OhioState], [Serclac], [CA], [Longepe]

 

    Oui, Comment ?
Comment, concrètement, mettre en œuvre les services applicatifs (
composants techniques et services transversaux) identifiés au niveau de l'Architecture Applicative ? Comment sélectionner puis utiliser les technologies retenues ?
Comment faciliter le travail du développeur ? (au travers de framework d'exécution)
Et comment définir les cycles et activités de développement ?
    Comme la sphère précédente Applicative, celle-ci ne développe pas directement les projets concrets mais y participe, car elle fournit les outils pour supporter l'effort de développement.
   Cela comprend une méthodologie, des services techniques implémentés et prêts à l'emploi, un réseau opérationnel, le tout s'appuyant sur infrastructure déjà en place.


 



Lisez-moi et
réagissez !



Écrivez à AILES !



Retour vers le dossier
Architecture Technique



Retour vers le dossier
Architecture
 
Sphère et Point de vue
    Plus encore que d'autres sphères, il est important de distinguer l'Architecture Technique considérée comme un point de vue (et présentée ici : Architecture Technique), de la sphère.
    L'article sur les sphères architecturales rappelle la principale différence entre les 2 notions : 
- un point de vue modélise une ou plusieurs structures (des éléments d'un même domaine architecturale) ;
- une sphère définit la nature de ce que ces structures vont modéliser: ici la nature des éléments modélisés représentent les composants techniques et les interfaces techniques nécessaires au développement des différents projets, mais aussi des aspects méthodologiques ou encore matériels. Si l'on est proche de l'implémentation, la vocation de cette sphère n'est pas de développer des projets. Les seuls développement concrets qui interviennent  à son niveau sont ceux des frameworks (cf. plus bas). En revanche, on trouvera dans cette sphère tout ce qui supporte l'effort de développement.
    Ici, la différence entre point de vue Technique et la sphère Architecture Technique est plus subtile que dans celle exposée lors des principes généraux de la sphère d'Architecture Fonctionnelle
- les deux peuvent et vont servir à développer des classes concrètes (via notamment le point de vue physique);
- les deux peuvent et vont servir à représenter des problématiques de déploiement (via le point de vue de déploiement et celui d'exploitation);
- mais, et là on arrive aux limites d'UML qui, rappelons-le, n'est qu'un langage de modélisation, pas un processus, seule la sphère Architecture Technique propose une méthodologie pour 'mettre en musique' tous les aspects concrets de développement, que ce soit au travers de:
    * framework;
    * procédures et activités de développement;
    * procédures et services de managements du réseau;
    * services et gestion des infrastructures;
Tout cela est illustré dans le diagramme suivant.



    [OhioState] fait clairement apparaître, dans la page 4 de son 'Architectural Framework' les 3 sous-sphères techniques que sont l'architecture de développement, l'architecture d'exécution et l'architecture d'opération.
    * L'aspect framework se retrouve dans les services fournis par l'architecture d'exécution (cf. plus bas).
    * L'aspect 'procédures et activités de développement' se retrouvent détaillées par l'architecture de développement (cf. ci-dessous);
    * L'aspect 'procédures et services de managements du réseau' est géré par l'architecture d'opération (cf. plus loin);
    * L'aspect 'services et gestion des infrastructures' est naturelle dédié à l'infrastructure (cf. paragraphe du même nom)

Architecture de développement
    C'est elle qui va devoir supporter l'effort de développement en:
- précisant les différentes activités.
Ici, le diagramme en isole 5: modélisation, codage et tests unitaires- 'Building' -, tests (d'intégrations), recettes (pour 'Acknowledgement'), la mise en production (pour Delivery).
On peut envisager un autre découpage.
- précisant le cycle de développement: en cycle en Waterfall, en V, Itératif..., ce qui implique également de déterminer qu'est-ce qui circule entre chaque étape (des modèles UML, du code, de la documentation, des librairies, ...), et comment (séparément, regroupés par paquet logique ?)
- précisant les outils techniques concrets: pour supporter la modélisation, le codage, etc., quels outils choisir, quels logiciels utiliser ? 
Une fois choisi, comment les installer ? dans quel ordre ? (rq: il faut aussi s'appuyer et tenir compte des services proposés par l'infrastructure)
Une fois installé, comment les utiliser, les intégrer les uns aux autres ?
Ces outils, comme l'illustre [OhioState] page 6, concernent le développement, les aspects graphiques (comme le 'web authoring'), la gestion de configuration (qui inclue des aspect de 'version control' pour les différentes versions de fichier, mais aussi les aspects 'change management' pour gérer les requêtes de changement / évolution / corrections d'erreurs), des outils de tests et optimisation du code, etc.
- préciser les aspects méthodologiques: (Rq: cette branche peut constituer une sous-sphère à part entière). Cela va des normes de programmation en passant par les modèles de documentations jusqu'aux aspects de modélisation et de codage (avec des 'best practices').

Architecture d'Exécution
    Toutes les technologies concrètes qui sous-tendent les services techniques mises en évidence par la sphère Architecture Applicative(et détaillés dans les Principes Généraux de l'AA) trouvent un choix technologique précis dans cette sphère. Persistance: Oracle, Sybase, ? Serveur d'application: WebLogic?, WebSphere ? Tomcat ??? Broker de données: Tibco ? MQ ???
    Un aspect majeur de son activité réside dans les frameworks qu'elle fournit aux différent projet pour encapsuler des services techniques et aider les développeurs à se concentrer sur la logique applicative et les service métiers de leurs application. Typiquement, dans un environnement mixte 'nouvelles application / legacy', on peut avoir J2EE (java distribué) d'un côté, CORBA de l'autre. Ou encore, on peut avoir à mettre en oeuvre un broker de données type TIBCO ou MQSeries ou .... Plutôt que de forcer tous les développeur à se former sur toutes ces technologie, il est plus intéressant de fournir une encapsulation maison.
    Évidemment, qui dit encapsulation dit 'sur-couche', dit 'problème potentiel de performance'. Une branche potentielle de l'Architecture d'Exécution (qui peut prendre la forme d'une sous-sphère indépendante) est la branche 'prototype', chargée de construire rapidement des mini-applications sur lesquels on pourra appliquer des tests de performances.
    Cela peut amener à développer, en plus des frameworks qui encapsulent les difficultés technologiques, d'autres services techniques concret pour gérer des aspect de transaction, de cache de données, etc; aspects issus des services techniques de l'Architecture Applicative
    Le rôle de l'Architecture d'Exécution est majeur: ces choix sont structurants et impactants. Tous les projets devront utiliser les technologies retenues, mais aussi compter sur l'Architecture d'Exécution pour masquer les évolutions, corrections et patchs de tels ou tels choix.

Architecture d'Opération
    Elle s'occupe de tous les aspects mise en production des applications développées (elle 'rend opérationel' les programmes, d'où le nom anglais 'operation architecture'). [CA] appelle cette sphère 'Operational System Organization'.
    [CA] distingue 3 sous-organisations à l'intérieur d'une sphère architecturale d'Opération:
- la transition: regroupe toutes les étapes de mise en production depuis les phases de recettes jusqu'à l'installation sur la machine de production. Il s'agit de déployer de façon coordonnée avec le cycle de développement (qui livre régulièrement de nouvelles versions), en sachant qu'une plate-forme de production ne s'arrête pas du jour au lendemain. Il faut parfois une deuxième machine de déploiement avec la nouvelle version, une première machine avec la version 'n-1' prête à prendre le relais en cas de pépin.
- le support utilisateur
* Il assure l'installation (parfois à distance) de l'application sur les postes des utilisateurs finaux (dans le cas de logiciels déployés en internes).
* Il fournit un 'help desk' pour répondre aux question. Ce support peut se faire à plusieurs niveau: le premier est en contact direct aux utilisateur, le deuxième traite des problèmes plus compliqués, et le troisième est en contact direct avec les développeurs pour les anomalies ou demandes d'évolutions les plus importantes.
* Il assure également les sessions de formation et autres manuels ou interventions pour faciliter la mise en œuvre et l'utilisation du logiciel.
- la gestion des systèmes, qui regroupe toutes les activités garantissant le bon fonctionnement des logiciels déployés, comme ([OhioState] page 6) de l'analyse ficher de log, de l'administration à distance, de la gestion des ressources, de la mise en oeuvre des sauvegardes et restauration, du monitoring et du reporting. Cette branche travaille en très étroite collaboration avec l'infrastructure afin de gérer également tous les aspects migrations (lors de changement ou d'évolution de matériel et de réseau).

L'Infrastructure
    Quasiment tout projet développé dans une grande ou moyenne société s'appuie sur une infrastructure existante qui est là pour fournir ([Longepe]) "l'ensemble des installations de matériels et de logiciels réalisés pour permettre aux applications informatiques automatisant les processus métiers de s'exécuter dans des conditions satisfaisantes pour l'usager".
Ces installations comportent notamment :
- les réseaux locaux ou longues distances ;
- les plates-formes matérielles ;
- les logiciels de base (système d'exploitations, SGBD, middleware, etc.)
    Ces au niveau de l'infrastructure que l'on trouvera également les aspects d'installation et de déploiement de logiciels servant à supporter l'effort de développement (par exemple, l'installation d'un outils de codage), via une administration distance ou bien un 'master' répliqué sur les disques durs des postes des développeurs, etc. (l'architecture de développement  s'appuie sur ces services pour déployer ses propres outils).
    On trouvera aussi les politiques d'évolutions de matériels, liés aux achats et aux formules d'amortissement.

Pourquoi ?
    [OhioState] rappelle les objectifs principaux derrière une telle Sphère Architecture Technique:
L'architecture utilisée au finale par les développeur:
* tient-elle le coup ?
   - Performance : l'attribut qualité qui mesure la capacité du système à fournir le service métier et traiter tous les événements métier à l'intérieur de son champ d'action en un temps d'exécution donné.
   - Resilience (robustesse) : le système s'écroule-t-il dès la première erreur ou peut-il fonctionner correctement dans des modes plus ou moins dégradés ?
   - Availibility (disponibilité) : l'architecture supporte-t-elle l'exécution du système pour la durée de temps spécifiée ? (par exemple : 7 jours sur 7!)
   - Security (sécurité) : les niveaux de sécurités, tant au niveau de l'application (comme évoquée au niveau applicatif qu'à celui du développement, sont-ils respectés et assurés ?
   - Operability : l'architecture permet-elle une mise en production efficace du système ?
   - Interoperability : toutes les parties du système fonctionnent-elles ensemble sans incompatibilités majeurs ?
(rq: les 2 derniers critères illustrent les concepts véhiculés par le sigle choisi pour la Sphère Architecture Technique , à savoir 'tout doit communiquer': les applications entre elles, bien sûr, mais aussi les codes, documentation, rapport d'erreur, etc., etc...).
* est-t-elle évolutive ?
    - Portability (portabilité) : cette architecture est-elle liée à l'environnement technologique actuelle ou peut-elle supporter un autre environnement ?
    - Scalability (extensibilité) : comment l'architecture supporte la montée en charge ?
    - Flexibility : à quelle rapidité cette architecture peut-elle intégrer de nouvelles spécifications métier ?
    - Maintainability : le système peut-il être modifié / corrigé facilement.

    On remarquera au travers de cette série d'objectifs un retour vers les 2 enjeux de l'Architecture ('architecture' dans son sens général) :
- le guide: maîtriser la complexité d'une architecture, avec ici l'identification claire des objectifs à atteindre pour assurer le bon fonctionnement (cf. premier ensemble d'objectifs de l'AT).
- l'évolutivité: le deuxième ensemble d'objectifs de l'AT illustre bien ce souci majeur qui se cache derrière toute architecture.



             
 
Avertissement !
 
Décollage !  |  Présentation du site web "AILES"  | 
Infos générales  |  articles "Informatique"