Qu’est-ce que la virtualisation des services ?

Définition de la virtualisation des services

La virtualisation des services simule le comportement de certains composants d’une application, afin que celle-ci puisse être testée dans son ensemble, de bout en bout. En basant les environnements de test sur des services virtuels au lieu de services de production, les équipes ont la possibilité de réaliser des tests d’intégration à un stade plus précoce du processus de développement. La virtualisation des services s’adresse à tout personnel impliqué dans le développement et la production d’applications logicielles. Il n’est pas rare que l’indisponibilité de certains composants associés à une application testée retarde les tests d’intégration. En émulant les dépendances des composants indisponibles, la virtualisation des services permet d’effectuer des tests d’intégration plus fréquents et plus précoces.
Les solutions de virtualisation des services présentent les caractéristiques suivantes :
✓ Emulation applicative : des composants virtuels simulent le comportement d’une application ou de l’un de ses composants.
✓ Environnements de test multiples : les développeurs et les professionnels de la qualité ont la possibilité de créer des environnements de test à partir de composants virtuels configurés selon leurs besoins.
✓ Utilisation des outils de test habituels : les développeurs et les professionnels de la qualité peuvent utiliser leurs outils de test habituels. Ceux-ci ne font pas la différence entre un système réel et un service virtuel.
La création de composants virtuels vise à simuler un environne-ment réel selon deux points d’entrée fondamentaux :
✓ Observation du système en action : élaboration d’un composant virtuel à partir de l’écoute du trafic réseau du service à émuler.
✓ Lecture des descriptions du système : élaboration d’un composant virtuel à partir d’autres sources d’information (spécifications de service, par exemple). Exemple : fichier WSDL (Web Services Description Language) décrivant les opérations proposées par un service, avec les paramètres attendus et les données renvoyées.
Ces documents sont protégés par le copyright © 2014 John Wiley & Sons, Inc.
Toute divulgation, toute distribution et tout usage non autorisés sont strictement interdits.

La virtualisation des services en action

Pour comprendre les avantages de la virtualisation des services, rien de mieux que de prendre des exemples. Cette section présente un exemple fictif et reprend un scénario de client réel.
Exemple : Whiz Bang International
Afin de tester une nouvelle application, l’entreprise Whiz Bang International doit déployer le service de vérification de la solvabilité URGoodForIt (service fictif), issu d’un fournisseur tiers. Or, ce service n’est pas disponible dans l’environnement de test, et l’équipe ne peut pas débuter les tests sans ce composant dépendant. L’équipe est donc contrainte de faire un choix : soit réduire la portée des tests, soit retarder le calendrier de livraison.
La figure 1-1 illustre un exemple d’application de commande en ligne associée au service de vérification de la solvabilité URGoodForIt. Whiz Bang International utilise une architecture orientée services (SOA), et la mise en œuvre de l’application s’appuie sur plusieurs services : service de gestion des commandes, service tiers de vérification de la solvabilité, service tiers de paiement, service personnalisé pour le provisionnement d’un nouveau dispositif et base de données. Cette représentation complète du système montre l’environnement de production sans la virtualisation des services.
Le service URGoodForIt se prête parfaitement à la virtualisation pour plusieurs raisons :
✓ La disponibilité de l’environnement de test est retardée, et l’équipe doit attendre que le service soit disponible pour pouvoir débuter les tests.
✓ Chaque exécution du service URGoodForIt induit un coût.
✓ L’équipe doit tester les performances pour 100 000 utilisat-eurs. Le service URGoodForIt étant fourni par un tiers, l’entreprise doit s’acquitter de frais à chaque appel du service dans un test. Le coût lié aux tests de performance pour 100 000 utilisateurs s’enflamme donc très rapidement.
L’indisponibilité de ce service dépendant lors des tests engendre un goulet d’étranglement qui pénalise l’ensemble de l’équipe. Les tests de bout en bout (fonctionnement ou performances) ne pourront débuter que lorsque tous les composants auront été réunis. Ici, la virtualisation du service indisponible débloque la situation. Dans la figure 1-2, on a remplacé un composant de production de la figure 1-1 par un composant virtuel.
Pour être efficace, toute solution de virtualisation des services doit permettre de créer facilement des composants virtuels qui :
✓ Imitent le comportement des véritables composants à l’origine du service
✓ Répondent avec des données réalistes
✓ Traitent les requêtes dans des plages de débit configurables
✓ Peuvent être activés et désactivés lorsque le véritable service devient disponible, sans nécessiter aucune reconfiguration de l’application déployée
Bien sûr, vous devrez à un moment ou un autre tester votre système avec une application de production réelle. La virtualisation des services ne remplace pas le test du code source de l’application composite. Vous ne pouvez pas mettre votre logiciel sur le marché sans avoir réalisé de véritables tests de bout en bout.
La virtualisation des services vise à repérer la plupart des défauts à un stade beaucoup plus précoce du processus, lorsque ceux-ci sont plus faciles et moins coûteux à résoudre. Il se peut que les tests de bout en bout rapportent tout de même des erreurs. Si c’est le cas, celles-ci sont en principe peu nombreuses, et sans doute indétectables hors du test de l’application dans son ensemble à l’aide des composants réels.
Exemple : grande société de services financiers
Cette section présente un exemple de terrain (le nom de la société a été supprimé pour des raisons de confidentialité). Une grande société de services financiers souhaitait tester sa nouvelle application de facturation, dont chaque intégration avec les applications internes et chaque dépendance externe tierce. Les intégrations entre les différents composants de l’application exigeaient des tests permanents au cours du processus de développement.
Par exemple, les interfaces entre l’application de facturation et l’application de commande nécessitaient d’être testées indépendamment l’une de l’autre. La configuration de chaque environnement de test occasionnait de longs délais, en raison de l’indisponibilité d’au moins l’un des composants de l’application. L’équipe risquait donc de subir une situation de test critique en fin de cycle. Le département informatique sollicitait des ressources supplémentaires pour exécuter les tests. Comme certaines suites
Ces documents sont protégés par le copyright © 2014 John Wiley & Sons, Inc.
Toute divulgation, toute distribution et tout usage non autorisés sont strictement interdits. de tests contenaient des milliers de tests individuels, les délais mettaient en péril l’ensemble du projet, en raison du risque de non-respect d’échéances importantes.
En adoptant la virtualisation des services, l’équipe a réalisé une volte-face majeure dans l’économie de test de sa nouvelle application de facturation. Les professionnels de la qualité ont créé des composants virtuels pour émuler certains aspects de l’environnement de terrain, en enregistrant les messages et les réponses au sein de celui-ci. Cet environnement virtualisé se comportait comme l’application réelle, moyennant un effort de création d’environnements de test considérablement moindre. Par conséquent, inutile pour les développeurs et les professionnels de la qualité de tester leurs modifications à partir des véritables applications dépendantes. A la place, les équipes se sont servi de composants virtuels pour tester l’intégration et les performances des composants inchangés avec les composants modifiés ou les nouveaux composants.
Résultat : l’entreprise a réduit de plusieurs semaines à seulement quelques minutes la durée de mise en place de ses environnements de test. Les gains de temps ont permis de limiter considérablement les coûts liés aux tests, et aux professionnels de travailler plus en profondeur les tests et la validation de la qualité des logiciels.

LIRE AUSSI :  Le marketing dans un monde en évolution

Différences entre la virtualisation des services et d’autres types de virtualisation

On associe souvent le terme virtualisation aux « machines virtuelles » ou à la « virtualisation matérielle ». En réalité, le terme virtualisation s’applique à de nombreux aspects de l’informatique : serveurs, applications, réseau, stockage, etc. Généralement, la virtualisation signifie « utiliser des ressources informatiques pour imiter d’autres ressources informatiques ».
En virtualisation matérielle, par exemple, un même serveur physique est partitionné en plusieurs serveurs virtuels. Grâce aux logiciels de virtualisation, chaque machine virtuelle présente l’apparence d’un matériel dédié, ce qui contribue à réduire les coûts matériels. Toutefois, le déploiement de la virtualisation matérielle et de la création d’images de machines virtuelles engendre d’autres coûts.
Ces documents sont protégés par le copyright © 2014 John Wiley & Sons, Inc.
Toute divulgation, toute distribution et tout usage non autorisés sont strictement interdits.
L’utilisation de machines virtuelles comme environnement de test a beaucoup fait parler d’elle récemment. En effet, ce type d’environnement offre une bonne représentation des éléments envoyés en production, dans un espace d’infrastructure inférieur à celui d’environnements de préproduction physiques intégraux. Les services informatiques ou de test peuvent créer des images virtuelles de l’environnement de production, afin de travailler sur des machines virtuelles sans avoir à procéder à certaines tâches manuelles, ni à assurer les coûts inhérents au provisionnement et à l’élaboration d’un serveur de préproduction physique. L’image virtuelle étant théoriquement très proche de la réalité, cette démarche renforce la confiance du groupe de test. Il existe cependant un inconvénient : la création et la gestion permanente de ces images (suivi de l’utilisation des licences, installations et mises à jour du système d’exploitation, par exemple) peuvent accroître considérablement le coût du projet, sans compter l’attente et le déploiement de chaque composant nécessaire à l’application.
En virtualisation de services, cependant, les composants logiciels sont virtualisés grâce à l’émulation de leur interface et à l’imitation de leurs comportements. La virtualisation des services n’émule que ce dont l’environnement de test a besoin, et, par rapport à la virtualisation matérielle, élimine les tâches supplémentaires liées à la gestion des licences, à la configuration et à l’exécution de tous les autres éléments nécessaires sur une machine virtuelle (système d’exploitation, par exemple). Certains investissements sont bien sûr indispensables pour créer les composants virtuels des services. En même temps, les composants virtuels sont disponibles tout au long du cycle de vie de l’application et occupent très peu d’espace (considérablement moins qu’une machine virtuelle). De plus, les composants virtuels sont plus faciles à partager et plus rapides à déployer, car ils sont hébergés sur un serveur spécialement optimisé à cet effet.

Valeur ajoutée de la virtualisation des services

La virtualisation des services peut changer radicalement l’économie et le déroulement du processus de développement d’applications. La qualité des applications repose sur la responsabilité de chacun, du développement, aux tests et au déploiement. La virtualisation des services s’adresse donc à toute l’équipe au cours de l’ensemble du cycle de vie applicatif.
Ces documents sont protégés par le copyright © 2014 John Wiley & Sons, Inc.
Toute divulgation, toute distribution et tout usage non autorisés sont strictement interdits.
L’un des avantages majeurs de la virtualisation des services est qu’elle permet de réaliser des tests à un stade beaucoup plus précoce du processus de développement, en réduisant les goulets d’étranglement de test. Toutefois, pour déployer tous ses avantages, la technologie de virtualisation des services ne doit pas rester confinée aux processus de test formels.

Réalisation des tests

Les équipes de test efficaces s’accordent sur un principe fondamental : il faut tester tôt et souvent au cours du processus de développement. Pourquoi ? Parce que plus les défauts sont détectés et isolés tôt, plus ils sont simples à résoudre. Facile à dire, direz-vous. Plus les tests débutent tard ou plus la mise en place des environnements de test prend de temps, moins il est probable de pouvoir tester au bon moment, et donc d’obtenir de bons résultats. La virtualisation des services contribue à limiter les coûts des tests et accélère les délais de commencement et d’exécution des tests.
La virtualisation des services offre des avantages quel que soit le type de test, y compris les tests fonctionnels (manuels et automatisés), d’intégration et de performance. Prenons l’exemple des tests de performance. Les performances des applications composites actuelles sont littéralement la somme de la capacité de chaque composant applicatif à répondre dans les temps. La dégradation du temps de réponse d’un quelconque composant peut ralentir les performances de l’application, et donc nuire à l’expérience utilisateur. En reportant les tests de performance à la fin du déploiement de l’application (approche classique), il est beaucoup plus difficile d’identifier la cause du ralentissement et de la mauvaise qualité de l’expérience utilisateur.

Formation et coursTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *