dimanche 14 novembre 2010

Hébergement cloud et architecture applicative

Quels sont les liens entre hébergement cloud et architecture applicative ?

Lors de la mise en place d'une nouvelle application, le choix d'utilisation d'une plate-forme cloud pour l'hébergement n'est que l'un des maillons d'une longue chaine de décisions.

Les multiples bénéfices de l'approche cloud sont certes séduisants mais insuffisants pour justifier à eux seuls un changement de technologie.

Le cloud computing n'est pas une baguette magique qui, accompagnée de quelques incantations, solutionnerait tous les problèmes de performances, de déploiement et de maintenance des applications.

Tout d'abord, il est assez peu probable de tirer avantage d'une application n'ayant pas été prévue pour ce type de plate forme. Tous les mécanismes de dimensionnement dynamique seront mal, voire pas du tout exploités et la virtualisation mal maîtrisée peut jouer quelques fois des tours.

Dans les approches traditionnelles, les architectures logicielles tendent à être de plus en plus complexes. Les choix  effectués pour organiser la "forme" (l'architecture) d'une application sont de plus en plus engageants sur des durées relativement longues. Un mauvais choix est donc très pénalisant. Par contre, à l'inverse, les demandes des utilisateurs arrivent de plus en plus vite et changent de plus en plus souvent pour s'adapter au contexte économique.

Une architecture de type SOA est particulièrement bien adaptée à une utilisation sur une infrastructure cloud.

Pourquoi ?
  • chaque service fonctionnel peut être déployé individuellement pour prendre en compte les problématiques de montée en charge. En rajoutant des instances supplémentaires, il est possible d'augmenter la "puissance" de traitement uniquement sur les fonctionnalités qui en ont besoin,
  • décorréler les traitements métier de leur orchestration autorise une plus grande réutilisation et une agilité dans la définition des workflows de traitements,
  • chaque service possède une capacité multitenant et permet un seul déploiement physique pour traiter tous les contextes d'utilisation de ce service. Le fait d'être déployé sur une infrastructure élastique permet d'ajuster le dimensionnement non plus au niveau d'une application métier mais au niveau de la fonctionnalité de manière transverse pour tous les utilisateurs,
  • tout comme les instances de serveurs peuvent être utilisées en self-service chez un hébergeur, les clients utilisent une bibliothèque de web-services et de widgets pour composer leurs applications sur-mesure sans déploiement spécifique,
  • à partir du moment où l'agrégation de fonctionnalités devient le mode de construction privilégié des applications, on peut facilement intégrer au sein du même traitement des web-services / widget internes et externes et accélérer encore la production d'applications transverses englobant les systèmes d'informations des partenaires, clients et fournisseurs.
Une architecture SOA sur une plate forme cloud permet :
  • une adaptation rapide au contexte économique et concurrentiel
  • au système d'information d'être un support d'évolution et non pas une contrainte. Il accélère le développement.
  • aux équipes métier de s'éloigner des préoccupations techniques pour monter dans l'abstraction. Il est temps aujourd'hui, pour les entreprises non spécialisées, de se débarrasser des questions d'architecture pour se concentrer uniquement sur les processus métier.
  • d'intégrer progressivement de nouvelles fonctionnalités dans des applications existantes sans bousculer l'existant
Le propre d'une architecture logicielle moderne doit être sa capacité d'adaptation. Tout comme les infrastructures cloud permettent d'utiliser les ressources dont on a besoin au moment où on en a besoin et pour n'importe quelle durée (une heure, une journée, un mois, un an), tout comme les méthodologies agiles privilégient l'adaptabilité dans les processus de développement, les applications doivent être capables d'évoluer très vite dans des directions non envisagées initialement.

Si l'on accepte de louer un serveur virtuel chez un hébergeur cloud, il semble tout à fait logique d'appliquer la même démarche à un niveau d'abstraction plus élevé et de louer également l'usage des fonctionnalités fonctionnant sur l'infrastructure virtualisée. Ces fonctionnalités seront intégrées de manière ad hoc pour constituer l'application finale.

Tirer pleinement parti de cette approche nécessite l'utilisation d'outils d'orchestration. Ces outils sont les clés de l'agilité. Ils permettent de modifier les process métiers sans développement technique en s'appuyant sur des web-services internes et externes. Toutes les problématiques techniques (adaptation à la charge, sécurité) sont reportées au niveau des plate formes d'hébergement des services.

Les entreprises en charge de ces dernières sont spécialisées dans la mise en place et l'hébergement de ce type de services et sont plus performantes que des prestataires généralistes ou des services internes.

Pour franchir cette étape de manière sereine, il faut que les prestataires proposent :
  • des garanties et des SLA élevées,
  • des prix attractifs
La manière dont sont implémentés les services ne doit pas être un critère de sélection à partir du moment où le contrat d'utilisation de ces services garantit son niveau de fonctionnement (et bien entendu que le prestataire soit à même de tenir ses engagements).

Le Cloud va permettre à l'approche SOA de se développer de manière plus importante grâce à :
  • la pratique de l'assemblage (mashup) devenu possible par le foisonnement de services matures mis à disposition par des éditeurs tiers et leur facilité d'intégration
  • la généralisation de la facturation à l'usage qui va diminuer notablement les coûts de mise en oeuvre

Aucun commentaire:

Enregistrer un commentaire