Definition

Virtualisation des services

La virtualisation des services consiste à créer des répliques des systèmes dont dépendent les nouvelles applications, afin de tester le bon fonctionnement de l'intégration entre ces applications et ces systèmes.

On l'utilise principalement pour intégrer des applications qui dépendent des architectures du cloud et orientées services (SOA, service-oriented architecture) ou qui communiquent avec les données et les interfaces de programmation d'applications (API) de tiers. Les systèmes en question sont, par exemple, les services de gestion de la relation client (CRM, Customer relationship management) tels que Salesforce Service Cloud, les services de planification des ressources (ERP, enterprise resource planning) tels que SAP ECC, et des systèmes internes qui sont en cours de développement.

Les développeurs peuvent implémenter une réplique virtualisée d'un système pour que les testeurs d'intégration évaluent l'intégration de leur application. Ils peuvent ainsi demander des tests tout au long du processus de développement, donc économiser de l'argent et gagner du temps. Sans ces tests, les équipes de développement devraient attendre que ces systèmes soient disponibles pour évaluer l'intégration, ce qui peut prendre beaucoup de temps lorsqu'ils sont contrôlés par un tiers ou en cours de développement.

A la différence de la virtualisation des serveurs, la virtualisation des services ne réplique que des interfaces, des interactions et des comportements spécifiques (autant de situations dans lesquelles un serveur peut interagir avec une application) plutôt qu'un serveur complet.

Fonctionnement de la virtualisation des services

Les outils de virtualisation des services contrôlent le trafic entre le système et l'application qui en dépend. Ils utilisent les données de journalisation pour développer un modèle capable de répliquer les réponses et le comportement du système au moyen d'entrées telles que les instructions SQL pour les bases de données et les messages XML (eXtensible Markup Language) pour les services Web. Lorsque les développeurs testent une nouvelle application, le service virtualisé produit les mêmes réponses que celles que produirait le service réel.

Les développeurs utilisent cette simulation pour anticiper l'intégration dans l'infrastructure d'une nouvelle application, d'un nouveau service ou d'une nouvelle fonctionnalité. Elle évite aux testeurs d'avoir à attendre pour commencer les tests, ce qui supprime un important goulet d'étranglement dans le développement des applications. Les équipes mettent ainsi sur le marché des produits qui comportent moins de défauts, dans les délais et sans discontinuité de service.

Les testeurs peuvent également créer des cas particuliers simulant un volume de trafic élevé ou des connexions lentes. Lorsqu'une application est prête pour l'intégration, les développeurs remplacent la simulation par la situation réelle.

Fournisseurs et produits de virtualisation de services

Parasoft a développé l'un des premiers produits comportant des fonctionnalités de virtualisation de services en 2003, mais c'est iTKO qui a inventé ce terme en 2007. Depuis, la plupart des grands acteurs de ce secteur ont développé ou acheté leurs propres outils de virtualisation des services ; IBM a racheté Greenhat, CA Technologies a acquis iTKO et Hewlett Packard Enterprises a développé son propre produit. Les autres fournisseurs qui offrent des outils de virtualisation des services sont Hoverfly, MockLab, Traffic Parrot, WireMock et SmartBear.

Avantages de la virtualisation des services

Les avantages de la virtualisation des services sont particulièrement importants dans les scénarios de déploiement rapide et de livraison en continu. Elle permet également aux équipes de répéter rapidement les résultats des tests tout au long du processus de développement, ce qui peut être une aubaine pour les équipes DevOps et Agile. Grâce à cette virtualisation, elles peuvent éviter les bogues pendant le développement, élaborer de meilleurs systèmes comportant moins de défauts et répartir la responsabilité des tests de qualité du produit entre plusieurs départements.

figure test en virtualisation des services
La virtualisation des services permet d'effectuer des tests tout au long du processus de développement et de répartir la responsabilité de la qualité entre plusieurs départements.

La virtualisation des services offre aussi des avantages aux entreprises en dehors de ces workflow rapides. Par exemple, si une organisation veut mettre à niveau ses systèmes « back-end », elle peut rencontrer des problèmes d'intégration entraînant des temps d'arrêt une fois les systèmes reconnectés. Dans ce cas, la virtualisation des services permet de tester le système « back-end » tout en l'améliorant, et de tester ses interactions avec le système frontal avant son intégration totale.

Les développeurs peuvent ainsi continuer à développer les applications même s'il leur manque des composants. Avant la virtualisation des services, les testeurs devaient attendre que les applications soient quasiment terminées. Différentes équipes avec des planifications, des priorités et des exigences différentes devaient souvent terminer et assembler les applications pour que les testeurs puissent y accéder.

Grâce aux tests rapides et intégrés que permet la virtualisation des services, les équipes de développement parviennent à terminer dans les délais et, en fin de compte, mettent plus rapidement les produits sur le marché. Les testeurs peuvent détecter plus tôt les éventuels problèmes susceptibles de perturber le processus, évitant ainsi les retards dans les plans de développement. La virtualisation des services dispense également les entreprises d'investir dans de coûteux laboratoires de test.

Inconvénients de la virtualisation des services

Les inconvénients de la virtualisation des services résultent essentiellement des coûts et de la mise en œuvre. Cette dernière est parfois difficile à budgétiser, car plusieurs départements sont concernés. Il peut être difficile de déterminer qui est responsable des tests et qui doit être chargé de la virtualisation des services.

En outre, elle ne remplace pas les tests d'intégration complète avec les systèmes réels. Elle permet d'effectuer des tests d'intégration tout au long du processus de développement, ce qui accélère les tests finaux, mais ces derniers restent indispensables.

Virtualisation des services versus simulacres et bouchons

L'utilisation de simulacres et de bouchons (en anglais, respectivement « mock » et « stub ») est proche de la virtualisation des services, mais à plus petite échelle. Ces techniques servent généralement pour tester des comportements spécifiques dans des contextes restreints, tandis que la virtualisation des services réplique les systèmes à l'échelle de production.

La popularité grandissante de l'architecture orientée services et du développement Agile impose des limites à l'utilisation des simulacres et des bouchons. Dans la virtualisation des services, les tests sont effectués au niveau de l'infrastructure et les modèles peuvent être réutilisés par différentes équipes dans des circonstances différentes. En général, les simulacres et les bouchons nécessitent un développement manuel pour chaque cas d'utilisation. La plupart des architectures de développement exigent un trop grand nombre de variables dépendantes pour que l'utilisation des simulacres et des bouchons soit pratique, et les workflows flexibles demandent une rapidité que cette méthode peine à atteindre.

En outre, les développeurs risquent plus d'introduire des erreurs dans les simulacres et les bouchons à cause de leurs hypothèses sur la manière dont une application est censée réagir dans chaque situation. Les équipes d'assurance qualité peuvent intégrer les deux technologies si elles utilisent la virtualisation des services lorsqu'elles ont besoin d'émuler des systèmes, et les simulacres et les bouchons pour les tests d'unités simples et spécifiques à un contexte.

Cette définition a été mise à jour en août 2018

Pour approfondir sur Virtualisation de serveurs