FR 3093842 A1 20200918 FR 1902609 A 20190314 Description Titre de l'invention : Procédé et système pour optimiser des groupements de machines virtuelles d'une plateforme informatique en nuage [000 La présente invention concerne un procédé et un système pour optimiser des instances de machine virtuelle (VM) d'un groupement de machines virtuelles (VM) dans une plateforme informatique en nuage afin d'éviter l'utilisation d'instances VM dont la performance s'est dégradée. [0002] Au cours des quelques dernières années, la distribution des services/applications via une plateforme informatique en nuage est devenue chose ordinaire. L'avantage principal de l'informatique en nuage est qu'elle ne rencontre pas la plupart des soucis liés au matériel physique et/ou aux ressources logicielles, permettant ainsi aux utilisateurs de se concentrer sur le coeur de leur activité plutôt que de se préoccuper de la maintenance et du déploiement de centres de données. Le modèle d'informatique en nuage est basé sur le l'octroi, à un utilisateur, d'un accès à des ressources informatiques physiques avec un mode de facturation permettant à l'utilisateur de payer les ressources informatiques au fur et à mesure qu'elles sont consommées pour faire fonctionner les services/applications sur la plateforme informatique en nuage. Au fur et à mesure que la demande pour les applications/services gérés en nuage évolue, les ressources spécifiques sous-jacentes peuvent être dimensionnées de façon dynamique pour satisfaire les besoins informatiques des services/applications en nuage à tout moment donné. [0003] La gestion d'un centre de données peut s'avérer extrêmement onéreux et par conséquent, pour rendre le modèle d'informatique en nuage rentable, les fournisseurs d'informatique en nuage, également connus sous le nom de fournisseurs d'infrastructure comme service (laaS), utilisent le concept de virtualisation permettant à de multiples utilisateurs de partager les mêmes ressources physiques sous-jacentes. La virtualisation permet la partition de ressources matérielles et/ou logicielles en des instances de machine virtuelle isolées (VM) qui peuvent être attribuées à un utilisateur à la demande pour exécuter des applications et/ou des services sur la plateforme informatique en nuage. [0004] De façon générale, la qualité de service et le coût pour exécuter un service et/ou une application en nuage sur la plateforme informatique en nuage sont fortement dépendants des ressources informatiques physiques consommées par les instances VM attribuées. Dans des solutions existantes, l'affectation de ressources physiques est généralement basée sur la surveillance de l'utilisation de la ressource, p. ex. l'utilisation de 2 la CPU, de chaque instance VM exécutant le service et/ou l'application en nuage. L'utilisation des ressources informatiques attribuées à chaque instance VM pourrait varier selon la demande du service et/ou de l'application qui y sont hébergés. Cependant, dans certains cas, l'utilisation d'une instance VM n'est pas liée à la demande pour le service et/ou l'application, mais plutôt à la qualité et/ou au type de ressources informatiques attribuées par le fournisseur d'infrastructure comme service (laaS) aux instances VM. Lorsqu'il est demandé aux fournisseurs laaS de fournir un nombre d'instances VM avec des caractéristiques techniques spécifiques, ceux-ci doivent fournir des instances VM qui sont identiques en matière de ressources et de performance. Cependant cela n'est pas toujours le cas et des instances VM dont la performance s'est dégradée peuvent être utilisées à la place. En conséquence, la performance globale d'un groupement VM peut s'être dégradée, ce qui peut affecter la qualité de service (QoS) fournie par l'application et/ou le service. Dans des solutions existantes, le problème de la performance dégradée peut être surmonté en augmentant le nombre d'instances VM dans le groupement VM, p. ex. via le di mensionnement des instances VM. Cependant, l'augmentation des instances VM augmenterait aussi inutilement le coût associé à l'instanciation des instances VM requises. [0005] Un objectif de la présente invention est de fournir un procédé et un système pour optimiser les instances de machine virtuelle (VM) d'un groupement de machines virtuelles (VM) dans une plateforme informatique en nuage afin d'éviter l'utilisation d'instances VM dont la performance s'est dégradée. [0006] L'objectif est atteint par le système et le procédé montrant les caractéristiques techniques des aspects respectifs décrits ci-dessous. [0007] Selon un premier aspect de la présente invention, un procédé pour optimiser un groupement de machines virtuelles, fonctionnant dans une plateforme informatique en nuage, est fourni. Le groupement VM comprenant une pluralité d'instances de machine virtuelle (VM), chaque instance VM étant provisionnée sur au moins un dispositif hôte d'au moins un fournisseur de service d'infrastructure et étant configurée pour exécuter au moins un composant d'au moins une application logicielle configurée pour fournir un service en nuage, ledit service en nuage étant accessible à l'utilisateur via une interface de communication configurée pour recevoir et rediriger les requêtes de l'utilisateur au service en nuage, le procédé comprenant : - la sélection d'une application logicielle fonctionnant dans le groupement VM au moyen d'un module de sélection ; - la surveillance pour l'application logicielle sélectionnée, au moyen d'un module de surveillance, d'un composant d'application logicielle correspondant dans chaque instance VM du groupement VM; and - la gestion de la pluralité des instances VM au moyen d'un module de gestion VM ; 3 dans lequel la gestion de la pluralité des instances VM comprend : - la détermination des paramètres de groupement du groupement VM, les paramètres de groupement comprenant des données relatives aux caractéristiques techniques de chaque instance VM, et des composants d'applications logicielles fonctionnant sur chaque instance VM dans le groupement VM; - l'identification, parmi les instances VM exécutant les composants de l'application logicielle, des instances VM déficientes dans lesquelles au moins une métrique de performance VM est en dessous d'une fourchette de valeurs de performance ciblée correspondantes ; et - l'optimisation de la performance des instances VM déficientes ; dans lequel l'étape d'optimisation de la performance des instances VM déficientes comprend : - la demande auprès du fournisseur de service d'infrastructure d'une instance VM de remplacement ayant les mômes caractéristiques techniques que chaque instance VM déficiente; - la copie des composants de l'application logicielle fonctionnant sur chaque instance VM déficiente vers chaque instance VM correspondante de remplacement ; - la comparaison d'au moins une métrique de performance VM avec celle d'une instance VM déficiente correspondante; and - la demande au fournisseur de service d'infrastructure, sur la hase des résultats de comparaison de performance, de mettre tin à l'instance VM la moins performante pour chaque comparaison, définissant ainsi un ensemble d'instances VM restantes, l'ensemble d'instances VM restantes comprenant l'instance VM la plus performante pour chaque comparaison. [0008] Il a été constaté qu'il est possible d'évaluer continuellement la performance des instances VM dans le groupement VM et d'éviter ainsi, ou tout au moins de minimiser l'utilisation d'instances VM dont la performance s'est dégradée, ce qui peut affecter la qualité du service (QoS) du service en nuage et/ou de l'application logicielle. Par ailleurs, la présente invention assure que le dimensionnement des ressources informatiques attribuées est implémenté comme réponse à une demande croissante pour le service en nuage désiré et/ou l'application logicielle plutôt due à l'utilisation d'instances VM dont la performance s'est dégradée. La performance d'une instance VM peut se dégrader pour plusieurs raisons. Par exemple, la performance dégradée peut être causée par un problème matériel sur les machines hôtes, également désignées comme dispositifs hôtes, exécutant les instances VM, p. ex. des problèmes relevant de carte de réseau, de carte de mémoire, d'un contrôleur de disque, d'un dysfonctionnement de la CPU, et ainsi de suite. En outre, la dégradation de la performance des instances VM peut être causée par plusieurs applications logicielles qui doivent avoir une même exigence de performance, en partageant les ressources de la même instance VM. Pour assurer que chaque instance VM fonctionne conformément aux exigences de performance désirée de l'application logicielle, au moins une métrique de performance peut être surveillée, soit de façon continue, soit périodiquement. Par ailleurs, l'étape d'identification, et le remplacement lorsque la nécessité est avérée, d'instances VM déficientes peut contribuer à l'utilisation efficace par les applications logicielles, fonctionnant dans le groupement VM, des ressources physiques affectées aux instances VM, ce qui peut entrainer une amélioration de la performance de chaque instance VM pour ladite au moins une métrique de performance. [0009] Selon des modes de réalisation, ladite au moins une métrique de performance VM comprend au moins une métrique d'application associée à au moins un composant d'application de l'application logicielle sélectionnée. [0010] Ladite au moins une métrique de performance peut être une métrique de performance VM comprenant au moins une métrique d'application associée à au moins un composant d'application de l'application logicielle sélectionnée. Par exemple, ladite au moins une métrique de performance VM peut être associée à la performance d'une ressource physique attribuée telle qu'une utilisation de la CPU, une utilisation de mémoire, un espace de disque, une performance d'un dispositif de réseau, une utilisation d'un stockage de données, un taux d'échec d'application (ACR) et un taux de requêtes d'utilisateurs. Les métriques de performance d'application peuvent être sous forme d'indicateurs clés de performance (KPIs). Les métriques de performance devant être surveillées peuvent être sélectionnées par un utilisateur et/ou peuvent être dérivées d'un accord de niveau de service (SLA) entre le fournisseur de service d'infrastructure, le fournisseur de services de plateforme en nuage et/ou le fournisseur de services d'applications logicielles. [0011] Selon des modes de réalisation du deuxième aspect, pour chacune de ladite au moins une métrique de performance VM, la fourchette de valeurs de performance ciblée correspondantes est déterminée par la valeur de performance moyenne obtenue pour chacune des métriques de performance VM sur toutes les instances VM. [0012] Il a été constaté que le fait de dériver chaque fourchette de valeurs de performance ciblée à partir de la valeur moyenne de performance de chaque instance VM pour la métrique correspondante de performance VM peut apporter une vision plus réaliste de la performance actuelle des instances VM dans le groupement VM. De cette façon, des problèmes techniques plus importants peuvent être mis en avant, p. ex. avec la performance des ressources physiques attribuées par le fournisseur d'infrastructure comme service (laaS). De cette façon, un ensemble d'actions différentes peut être déclenché, lequel peut être suivi par les étapes pour optimiser le groupement VM. Les caractéristiques techniques des instances VM peuvent être relatives à la CPU attribuée, à la capacité de mémoire et aux ressources réseau. La fourchette de valeurs de performance ciblée pour chaque métrique de performance VM peut être déterminée en prenant la valeur de performance des instances VM ayant les mêmes caractéristiques techniques et en exécutant les mêmes applications. [0013] Selon des modes de réalisation, l'optimisation de la performance des instances dé- ficientes est continuellement répétée jusqu'à ce que chacune des métriques de performance VM se situe dans la valeur de performance ciblée dans toutes les instances VM restantes. [0014] En répétant de façon continue l'étape d'optimisation, on assure que le fournisseur de service comme infrastructure (laaS) fournira au groupement VM les instances VM les plus performantes. L'optimisation continue peut entrainer l'évitement de l'utilisation des instances VM dont la performance s'est dégradée et par conséquent le maintien de la QoS fournie par les applications logicielles en cours d'exécution sur les instances VM. [0015] Selon des modes de réalisation, le nombre d'instances VM à terminer est déterminé sur la hase d'un budget de dysfonctionnement de VM indiquant le nombre d'instances VM qui peuvent être supprimées sans affecter la qualité de service de l'application logicielle en cours d'exécution dans le groupement VM. [0016] De cette façon, on assure que la qualité de service requise (QoS) fournie par les ap- plications logicielles peut être maintenue durant l'étape d'optimisation du groupement VM. La QoS peut être impactée lorsque le nombre d'instances VM terminées dépasse un seuil prédéterminé, ce qui peut être défini par l'utilisateur ou peut être calculé sur la base des exigences de performance de l'application logicielle. Les exigences de performance de l'application logicielle peuvent fluctuer dans le temps, p. ex. en fonction de la fréquence des requêtes d'utilisateurs entrantes. [0017] Selon des modes de réalisation, le groupement VM comprend des instances VM avec des caractéristiques techniques hétérogènes. [0018] Il a été constaté que le fait d'intégrer dans le groupement VM des instances VM de type hétérogène ayant des caractéristiques techniques différentes, peut offrir l'avantage d'héberger dans le groupement VM une variété d'applications logicielles ayant des exigences de performance différentes. Par ailleurs, l'intégration d'instances VM hétérogènes peut offrir l'avantage supplémentaire de permettre aux composants d'applications logicielles d'être redistribués dans le groupement VM selon leurs exigences de performance qui peuvent fluctuer dans le temps en fonction de la demande rencontrée par l'application de logicielle. [0019] Selon des modes de réalisation, l'optimisation de la performance des instances VM déficientes comprend une étape de redistribution des composants d'application des instances VM déficientes vers des instances VM hautement performantes, où chacune 6 de ladite au moins une métrique de performance se situe au-dessus de la fourchette de valeurs de performance ciblée correspondantes. [0020] Tl a été constaté que le fait de redistribuer les composants d'applications logicielles peut optimiser l'utilisation des ressources physiques affectées aux instances VM et peut améliorer la performance de chaque instance VM. Avec la mise en oeuvre de l'étape de redistribution, il est possible de répartir la charge de travail rencontrée par les composants d'applications logicielles, améliorant ainsi la performance des instances VM dans le groupement VM. L'étape de redistribution peut être mise en oeuvre avant ou après l'étape de remplacement. Par exemple, l'étape de redistribution peut être mise en oeuvre après l'identification des instances VM déficientes, niais avant l'étape d'optimisation des instances VM déficientes. De cette façon, si le problème de performance des VM déficientes est résolu par l'étape de redistribution, alors il est possible qu'il ne soit pas nécessaire de mettre en oeuvre les étapes d'optimisation des instances VM déficientes. Cependant, l'étape de redistribution peut être mise en oeuvre après ou dans le cadre des étapes pour optimiser les instances VM déficientes. [0021] Selon des modes de réalisation, la redistribution comprend : l'identification des exigences de performance des composants d'application fonctionnant sur des instances VM déficientes ; l'identification, sur la base de la performance et des caractéristiques techniques de chaque instance VM hautement performante, d'instances VM candidates capables d'accommoder les exigences de performance de chacun des composants d'applications identifiés ; et la copie du composant d'application vers les instances VM candidates sélectionnées hautement performantes. [0022] Il a été constaté que la mise en oeuvre des étapes de redistribution ci-dessus présente l'avantage de distribuer le composant d'application logicielle conformément à leurs exigences de performance dans le groupement VM. Par exemple, les composants d'applications logicielles friands de performance peuvent être déplacés vers des instances VM hautement performantes avec suffisamment de capacité de performance pour accommoder leurs exigences de performance. Par conséquent, la redistribution des composants d'applications logicielles peut contribuer à une meilleure utilisation des ressources informatiques affectées aux instances VM du groupement VM par les composants d'application. [0023] Selon des modes de réalisation, ladite au moins une métrique de performance VM est sélectionnée par un utilisateur. [0024] Selon des modes de réalisation, ladite au moins une des métriques de performance VM peut être dérivée d'un d'accord de niveau de service entre le fournisseur de service d'infrastructure et le fournisseur de services de la plateforme informatique en nuage. [0025] Selon des modes de réalisation, ladite au moins une métrique de performance VM est associée à la performance d'une ressource physique attribuée comprenant au moins un 7 des éléments suivants : de la CPU, l'utilisation de mémoire, un espace de disque, la performance d'un dispositif de réseau, l'utilisation de stockage de données, le rendement d'une application logicielle, un taux d'échec d'application (ACR) et une fréquence de requêtes d'utilisateurs. [0026] Selon des modes de réalisation, la gestion de la pluralité des instances VM comprend une requête au module de surveillance pour surveiller une métrique de performance spécifique de chaque instance VM. [0027] Selon des modes de réalisation, le module de gestion VM fonctionne sur au moins une instance VM. [0028] Selon des modes de réalisation, la détermination des paramètres de groupement du groupement VM, comprend au moins une des actions suivantes : la réception d'une couche laaS qui est couplée en mode communication avec fournisseur de services d'infrastructure, d'informations relatives aux ressources affectées aux instances VM et de la permission d'accéder et de demander des instances VM de remplacement directement aux fournisseurs de services d'infrastructure, et/ou la réception d'une couche PaaS, couplée en mode communication avec la platcformc informatique en nuage, d'informations relatives aux applications logicielles fonctionnant dans la plateforme et de la localisation des composants de l'application logicielle dans chaque groupement VM, et/ou la réception, du module de surveillance, des métriques de performance d'application de chaque composant d'application logicielle en cours d'exécution dans chaque instance VM. [0029] Il a été constaté que le couplage en mode communication du module de gestion VM avec au moins la couche laaS la couche PaaS et le module de surveillance présente l'avantage de permettre la détermination de la performance de chaque instance VM sur la base des métriques dérivées directement des applications en cours d'exécution sur chaque instance VM plutôt que sur la base des métriques laaS qui sont généralement accessibles uniquement au fournisseur de service d'infrastructure et sont difficiles à modifier. De cette façon, il est possible d'évaluer la performance des instances VM dans le groupement VM et, lorsque cela est nécessaire, d'optimiser la performance des instances VM évitant ainsi d'utiliser des instances VM dont la performance s'est dégradée qui peuvent impacter la QoS fournie par les applications en cours d'exécution sur le groupement VM. Par ailleurs, l'utilisation des informations de la couche PaaS permet au module d'optimisation d'identifier la meilleure façon de distribuer l'application et/ou les composants d'application, p. ex. en déplaçant des composants d'application vers des instances VM plus appropriées afin d'améliorer la performance des instances VM impactées. [0030] Selon un deuxième aspect de la présente invention, un procédé pour optimiser un groupement de machines virtuelles, fonctionnant dans une plateforme informatique en 8 nuage, est fourni. Le groupement VM comprenant une pluralité d'instances de machine virtuelle (VM), chaque instance VM étant provisionnée sur au moins un dispositif hôte d'au moins un fournisseur de service d'infrastructure et étant configurée pour exécuter au moins un composant d'au moins une application logicielle configurée pour fournir un service en nuage, ledit service étant accessible à l'utilisateur via une interface de communication configurée pour recevoir et transmettre les requêtes de l'utilisateur au service en nuage, le procédé. comprenant : un module de sélection configuré pour sélectionner au moins une application (120) dans le groupement VM ; un module de surveillance configuré pour surveiller, pour l'application logicielle sélectionnée, ledit au moins un des composants d'application logicielle correspondant dans chaque instance VM du groupement VM ; et un module de gestion VM couplé en mode communication avec le module de surveillance et étant configuré pour : déterminer les paramètres de groupement du groupement VM, les paramètres de groupement comprenant des données relatives aux caractéristiques techniques de chaque instance VM, et les composants d'applications logicielles en cours d'exécution sur chaque instance VM dans le groupement VM ; et identifier, parmi les instances VM exécutant les composants de l'application logicielle, des instances VM déficientes dans lesquelles au moins une métrique de performance VM est en dessous d'une fourchette de valeurs de performance ciblée correspondantes ; dans lequel le module de gestion VM comprend un module d'optimisation pour optimiser la performance des instances VM déficientes, le module d'optimisation est configuré pour : demander au fournisseur de service d'infrastructure une instance VM de remplacement ayant les mêmes caractéristiques techniques pour chaque instance VM déficiente, copier les composants de l'application logicielle en cours d'exécution sur chaque instance VM déficiente vers chaque instance VM correspondante de remplacement, comparer au moins une métrique de performance VM avec celle d'une instance VM déficiente con-espondante et demander au fournisseur de service d'infrastructure de mettre fin, sur la base des résultats de comparaison de performance, à l'instance VM la moins performante pour chaque comparaison, définissant ainsi un ensemble d'instances VM restantes, l'ensemble d'instances VM restantes comprenant l'instance VM la plus performante pour chaque comparaison. [0031] Selon des modes de réalisation du deuxième aspect, ladite au moins une métrique de performance VM comprend au moins une métrique d'application associée à au moins un composant d'application de l'application logicielle sélectionnée. [0032] Selon des modes de réalisation du deuxième aspect, pour chacune desdites au moins une métrique de performance VM, la fourchette de valeurs de performance ciblée correspondantes est déterminée par la valeur de performance moyenne obtenue pour chacune des métriques de performance VM sur toutes les instances VM. 9 [0033] Selon des modes de réalisation du deuxième aspect, l'optimisation de la performance des instances déficientes est configurée pour optimiser continuellement les instances VM déficientes jusqu'à cc que chacune des métriques de performance VM se situe dans la valeur de performance ciblée dans toutes les instances VM restantes. [0034] Selon des modes de réalisation du deuxième aspect, le nombre d'instances VM à terminer est déterminé sur la hase d'un budget de dysfonctionnement de VM indiquant le nombre d'instances VM qui peuvent être supprimées sans affecter la qualité de service de l'application logicielle en cours d'exécution dans le groupement VM. [0035] Selon des modes de réalisation du deuxième aspect, le groupement VM comprend des instances VM avec des caractéristiques techniques hétérogènes. [0036] Selon des modes de réalisation du deuxième aspect, le module d'optimisation est configuré pour redistribuer les composants d'application des instances VM déficientes vers des instances VM hautement performantes, dans lesquelles chacune de ladite au moins une métrique de performance se situe au-dessus de la fourchette de valeurs de performance ciblée correspondantes. [0037] Selon des modes de réalisation du deuxième aspect, le module d'optimisation est configuré pour redistribuer les composants d'application en : identifiant les exigences de performance des composants d'applications fonctionnant sur des instances VM déficientes ; identifiant, sur la base de la performance et des caractéristiques techniques de chaque instance VM hautement performante, les instances VM candidates, capables d'accommoder les exigences de performance de chacun des composants d'applications identifiés ; et copiant le composant d'application vers l'instance VM candidate sélectionnée hautement performante. [0038] Selon des modes de réalisation du deuxième aspect, ladite au moins une métrique de performance VM est sélectionnée par un utilisateur. [0039] Selon des modes de réalisation du deuxième aspect, ladite au moins une des métriques de performance VM peut être dérivée d'un d'accord de niveau de service entre le fournisseur de service d'infrastructure et le fournisseur de services de la plateforme informatique en nuage. [0040] Selon des modes de réalisation du deuxième aspect, ladite au moins une métrique de performance VM est associée à la performance d'une ressource physique attribuée comprenant au moins un des éléments suivants : l'utilisation de la CPU, l'utilisation de mémoire, un espace de disque, la performance d'un dispositif de réseau, l'utilisation de stockage de données, le rendement d'une application logicielle, un taux d'échec d'application (ACR) et une fréquence de requêtes d'utilisateurs. [0041] Selon des modes de réalisation du deuxième aspect, la gestion de la pluralité des instances VM comprend une requête au module de surveillance pour surveiller une métrique de performance spécifique de chaque instance VM. [0042] Selon des modes de réalisation du deuxième aspect, le module de gestion VM fonctionne sur au moins une instance VM. Il a été constaté que le fait d'intégrer le module d'optimisation sur au moins une des instances VM dans le groupement VM peut offrir l'avantage de surveiller de façon plus précise la performance des instances VM dans le groupement VM. En outre, le module de surveillance peut fonctionner sur au moins une des instances VM dans le groupement VM. [0043] Conformément aux modes de réalisation du deuxième aspect, le module de gestion VM est configure pour déterminer les paramètres de groupement sur la hase des données reçues d'au moins l'un de : une couche laaS qui est couplée en mode communication avec le fournisseur de services d'infrastructure, des informations relatives aux ressources affectées aux instances VM et la permission d'accéder et de demander des instances VM de remplacement directement aux fournisseurs de services d'infrastructure ; une couche PaaS, couplée en mode communication avec la plateforme informatique en nuage, d'informations relatives aux applications logicielles fonctionnant dans la plateforme et de la localisation des composants de l'application de logicielle dans chaque groupement VM; et du module de surveillance, des métriques de performance d'application de chaque composant d'application logicielle en cours d'exécution dans chaque instance VM. [0044] [fig.1] montre à titre d'exemple un groupement VM conforme à des modes de réa- lisation de la présente invention. [0045] [fig.2] montre à titre d'exemple un groupement VM conforme à des modes de réa- lisation de la présente invention. [0046] [fig.3] montre à titre d'exemple comment le module d'optimisation est connecté aux différentes couches de la plateforme en nuage conformément avec les modes de réalisation de la présente invention. [0047] [fig.4] montre à titre d'exemple un module de surveillance conforme à des modes de réalisation de la présente invention. [0048] [fig.5] montre à titre d'exemple un module d'optimisation conforme à des modes de réalisation de la présente invention. [0049] [fig.6] montre un procédé exemplaire pour optimiser un groupement VM dans la plateforme informatique en nuage illustrée dans les figures 1 à 5, conformément à des modes de réalisation de la présente invention. [0050] [fig.7] montre à titre d'exemple les étapes du procédé à suivre pour optimiser les instances VM déficientes dans le groupement VM conformément à des modes de réalisation de la présente invention. [0051] La présente invention sera illustrée en utilisant les modes de réalisation exemplaires montrés dans les figures 1 à 7 qui seront décrits de façon plus détaillée ci-dessous. Il faut noter que toutes les références faites aux dimensions sont seulement indicatives et 11 ne limitent d'aucune façon l'invention. Alors que l'invention a été montrée et décrite en faisant référence à certains modes de réalisation illustrés dans la présente, les hommes de métier comprendront que diverses modifications de formes et de détails peuvent y être apportées sans pour autant s'éloigner du champ d'application de l'invention couvert par les revendications en annexe. Par ailleurs, alors que l'invention a été décrite en faisant référence à un système et/ou à un procédé particulier pour optimiser des groupements de machines virtuelles d'une plateforme informatique en nuage, les hommes de métier comprendront que des changements de formes et de détails peuvent être apportés pour faciliter d'autres types de procédés et/ou de systèmes sans s'éloigner du champ d'application de l'invention. [0052] La [fig.1] montre à titre d'exemple une plateforme informatique en nuage 100 conforme à des modes de réalisation dc la présente invention. La plateforme informatique en nuage 100 peut être fournie par un fournisseur de services de plateforme (PaaS) et peut comprendre une interface dc communication 110 configurée pour recevoir des requêtes provenant d'une pluralité d'utilisateurs 150 via un réseau 160, p. ex. l'internet, pour accéder à au moins à une d'application et/ou au service fonctionnant sur au moins un groupement de machines virtuelles (VM) 120. Chaque groupement VM 120 dans la plateforme informatique en nuage 200 peut être provisionné avec une pluralité d'instances de machine virtuelle (VM) 121, chacune d'elles étant arrangée pour exécuter au moins une instance d'application logicielle 122, comme illustrée dans la figure 2. Par exemple, les blocs d'application 122 (1, 2, 3 et 4) montrés dans la figure 2 peuvent faire référence à des applications logicielles autonomes et/ou peuvent faire référence à des composants d'une application logicielle qui peut être distribuée dans le groupement VM 120. Les instances VM 121 peuvent être provisionnées sur un serveur hôte physique, p. ex. un ordinateur serveur d'un fournisseur d'infrastructure comme service (laaS) 170 et des ressources informatiques physiques attribuées pour prendre en charge le fonctionnement des applications logicielles et/ou les composants d'application 122 fonctionnant sur les instances VM 121. Les ressources informatiques physiques attribuées peuvent inclure, mais ne sont pas limitées à l'affectation de la CPU, de la mémoire, des dispositifs saisie/sortie, des périphériques, du logiciel d'exploitation, des dispositifs réseau et ainsi de suite. Un module de surveillance 210 peut être fourni pour surveiller au moins un des applications logicielles 122 et/ou des composants logiciels 122 fonctionnant sur chaque instance VM 121, représentés dans la figure 2 comme applications 1, 2, 3 et 4. Le module de surveillance 210 peut être configuré pour fonctionner sur au moins une instance VM 121 du groupement VM 120. Par exemple, comme illustré dans la figure 2, les instances 2 et 4 comprennent un module de surveillance 210, chacun étant configuré pour surveiller au moins un des applications logicielles et/ou des composants 12 d'applications logicielles 122 fonctionnant sur chaque instance VM 121 du groupement VM 120. Préférablement un module de sélection, non illustré, peut être fourni pour sélectionner au moins une application logicielle devant être surveillée. Lc module de sélection peut être autonome ou peut être fourni comme étant intégré au module de surveillance 210. Chaque module de surveillance 210 peut être configuré pour surveiller au moins une métrique de performance VM associée aux composants de l'application logicielle sélectionnée 122 ou des applications selon le cas. Par exemple, ladite au moins une métrique de performance VM peut être associée à la performance d'une ressource physique attribuée telle qu'une utilisation de CPU, une utilisation de mémoire, un espace de disque, une performance d'un dispositif réseau, une utilisation d'un stockage de données, le rendement d'une application, un taux d'échec d'application (ACR), la fréquence des requêtes d'utilisateurs, et ainsi de suite. Les métriques d'application à surveiller peuvent être sélectionnées par un utilisateur et/ou dérivées, p. ex. d'un accord de niveau de service (SLA). Un module de gestion VM 220 peut être utilisé pour gérer les instances VM 121 du groupement VM 120. Comme le montre la figure 2, le module de gestion VM 210 peut fonctionner sur au moins une des instances VM 121. Chaque groupement VM 120 peut être fourni avec un module d'équilibrage de charge de travail 180 qui peut être configuré pour distribuer les requêtes d'utilisateurs entre les instances VM 121 exécutant l'application logicielle demandée 122 afin de répartir la charge de travail rencontrée par chaque instance VM 121. [0053] Comme le montre la figure 3, le module de gestion VM 220 peut être configuré pour accéder, via au moins une interface de programmation d'application (API), à chaque couche de la plateforme informatique en nuage 100. Par exemple, le module d'optimisation 220 peut obtenir de chaque bouche un éventail d'informations qui peuvent inclure : - de la couche du fournisseur laaS 170, des informations relatives aux caractéristiques techniques de chaque instance VM 121 utilisées dans le groupement VM sélectionné 120; - de la couche PaaS 100, des informations relatives aux applications 122 en cours d'exécution dans chaque groupement VM et la localisation des composants d'applications logicielles dans les instances VM 121 du groupement VM 120, c.-à-d. dans quelle instance VM 121 fonctionne chaque composant d'application logicielle ; et - de l'application/module surveillance 210, des informations relatives aux métriques de performance d'application, à surveiller, également connus comme indicateurs clés de performance (KPIs). [0054] Le module de gestion VM 220 peut être configuré via l'API pour demander di- rectement auprès du fournisseur laaS 170 de créer et/ou de mettre fin aux instances 13 VM 121. De façon générale, le module de gestion VM 220 peut utiliser les informations reçues de la couche PaaS 100 pour découvrir automatiquement les applications en cours d'exécution et leur localisation dans le groupement VM d'intérêt 120, et peut régulièrement sonder tous les modules d'application/de surveillance 210 fonctionnant dans le groupement VM 120 pour obtenir des indicateurs de performance d'application également connus comme indicateurs clés de performance (KPis) qui peuvent être utilisés pour calculer les niveaux de performance de chaque instance VM 121 dans le groupement VM sélectionné. [0055] La Figure 4 montre un exemple d'un module de surveillance 210 conforme à des modes de réalisation de la présente invention. Le module de surveillance 210 peut être fourni avec un moteur de surveillance d'application 211 qui est configuré pour surveiller au moins une métrique de performance d'application associée à au moins un composant de l'application de logicielle sélectionnée. Un module de métriques de performance 212 peut être fourni pour sélectionner les métriques de performance à surveiller. Les métriques de performance devant être surveillées peuvent être sélectionnées par un utilisateur et/ou peuvent être dérivées d'un accord de niveau de service (SLA) entre le fournisseur de service d'infrastructure, le fournisseur de service de plateforme en nuage et/ou le fournisseur de services d'applications logicielles. Le module de gestion VM 220 peut demander au module de surveillance 210 de surveiller une métrique spécifique de performance d'application pour chaque instance VM 121 dans le groupement VM 120. Le module de surveillance 210 peut par ailleurs être fourni avec une base de données 213 pour stocker les valeurs des métriques de performance surveillées des instances VM 121 et toute autre information désirée. [0056] La Figure 5 montre un exemple d'un module de gestion VM 220 conforme à des modes de réalisation de la présente invention. Le module de gestion VM 220 peut être configuré pour déterminer, au moyen d'un module d'identification de paramètres de groupement 223, un ensemble de paramètres du groupement du groupement VM 120. Les paramètres de groupement peuvent être associés aux caractéristiques techniques de chaque instance VM 121 et aux composants de l'application logicielle sé- lectionnée 122, ou aux applications fonctionnant sur chaque instance VM 121 dans le groupement VM 120. Sur la base des paramètres de groupement et des valeurs de métriques de performance reçues du module de surveillance 210, le module de gestion VM 220 peut identifier, au moyen d'un module d'identification de VM déficiente 222, les instances VM 121 déficientes dans le groupement VM sélectionné 120 dans lequel au moins une métrique de performance VM se situe en dessous d'une fourchette de valeurs de performance ciblée correspondantes. Le module d'identification de VM déficiente 222 peut être configuré pour traiter les valeurs reçues du module de surveillance 210 et déterminer conformément si la performance de chaque instance 14 VM 121 se situe dans des valeurs ciblées pour ladite au moins une métrique de performance. Le module d'identification de VM déficiente 222 peut par ailleurs être configuré pour classer chaque instance VM 121 qui fonctionne en dessous de la valeur ciblée pour la métrique de performance sélectionnée. Les informations relatives aux instances VM déficientes identifiées 121 peuvent être stockées et communiquées un module d'optimisation 221. Le module d'optimisation 221 peut demander, via une API, au fournisseur laaS 170 de créer une instance VM de remplacement pour chaque instance VM déficiente identifiée par le module d'identification de VM déficiente 222. Chaque instance VM de remplacement peut avoir les mêmes caractéristiques que chaque instance VM déficiente correspondante. Une fois que les instances VM de remplacement ont été créées, le module d'optimisation 221 peut être configuré pour copier l'application logicielle en cours d'exécution sur chaque instance VM déficiente vers chaque instance VM de remplacement correspondante 121. La performance de chaque instance VM de remplacement pour ladite au moins une métrique de performance est déterminée et le module d'optimisation 221 peut conformément décider quelle version garder dans le groupement VM 120, entre l'instance VM, l'instance VM déficiente ou l'instance VM de remplacement. L'instance VM la moins performante de chaque paire d'instances VM, d'instances VM déficientes et d'instances VM de remplacement correspondantes fait l'objet d'une demande de terminaison auprès du fournisseur laaS 170. [0057] Outre le système pour optimiser un groupement VM 120 comme décrit pré- cédemment, un procédé exemplaire 300 conforme aux modes de réalisation de la présente invention peut être fourni. Le procédé d'optimisation d'un groupement VM 120 peut commencer à l'étape 310 en sélectionnant l'application logicielle et/ou les composants d'application à surveiller. L'étape 310 peut par ailleurs inclure de déterminer au moins une métrique de performance d'application à surveiller. L'étape 310 peut être suivie par l'étape 311 où ladite au moins une application logicielle sélectionnée est surveillée pour ladite au moins une métrique de performance sélectionnée. L'étape 320 est associée à la gestion des instances VM 121 dans le groupement VM. L'étape de gestion 320 peut être mise en oeuvre dans une série d'étapes illustrées dans la figure 6. Par exemple, l'étape de gestion 320 peut inclure une étape 321 par laquelle les paramètres de groupement VM sont déterminés. Les paramètres de groupement peuvent comprendre des données relatives aux caractéristiques techniques de chaque instance VM, p. ex. la CPU, la mémoire, le dispositif réseau et les composants d'applications logicielles fonctionnant sur chaque instance VM dans le groupement VM. Une fois que les paramètres de groupement ont été déterminés, l'étape 322 peut être mise en oeuvre pour identifier les instances VM déficientes dans le groupement VM sélectionné ayant au moins une métrique de per- formance VM qui peut avoir été définie à l'étape 310 [comme étant] en dessous d'une fourchette de valeurs cibles de performance. La fourchette de valeurs de performance ciblées peut être définie sur la hase d'un taux maximum désiré d'utilisation de ressources pour chaque instance VM qui peut être défini par l'utilisateur ou le système. Le taux d'utilisation de ressources peut être relatif à l'utilisation maximum et/ou minimum d'utilisation de ressources physiques affectées à chaque instance VM par le fournisseur laaS 170. Une fois qu'au moins une instance VM déficiente a été identifiée, l'étape 323 peut alors être déclenchée pour optimiser les instances VM déficientes 121 dans le groupement VM 120. Les étapes 321, 322 et 323 peuvent être répétées de façon continue ou périodique, assurant ainsi que le groupement VM 120 est fourni avec les instances VM 121 les plus performantes qui peuvent être générées dudit au moins un fournisseur laaS. [0058] Conformément aux modes de réalisation de la présente invention, l'étape d'optimisation des instances VM déficientes 121 dans le groupement VM 120 peut comprendre une série d'étapes illustrées dans la figure 7. Par exemple, à l'étape 3231 une demande au fournisseur de service d'infrastructure 170 peut être émise pour la génération d'une instance VM de remplacement ayant les mêmes caractéristiques techniques que chaque instance VM déficiente identifiée. Une fois que les instances VM de remplacement ont été générées, les composants d'applications logicielles de chaque instance VM déficiente sont copiés vers l'instance VM de remplacement correspondante à l'étape 3232. À l'étape 3233, la performance de chaque instance VM de remplacement est comparée à la performance de l'instance VM déficiente correspondante. L'instance VM 121 la plus performante de chaque paire d'instances VM, déficiente et de remplacement, est identifiée pour la même métrique de performance à l'étape 3234. Si la performance de la VM déficiente est meilleure que la performance de l'instance VM de remplacement correspondante, une demande de terminaison est alors émise à l'étape 3235 auprès du fournisseur laaS 170 pour mettre fin à l'instance VM de remplacement 121. D'autre part, si la performance de la VM de remplacement est meilleure que la performance de l'instance VM déficiente 121 correspondante, alors une demande est émise à l'étape 3236 auprès du fournisseur laaS 170 pour mettre fin à l'instance VM déficiente. Une fois que la comparaison pour chaque paire d'instances VM, déficiente et de remplacement, a été complétée, l'étape 3237 est amorcée, par laquelle un ensemble d'instances VM restantes est déterminé, 'ensemble d'instances VM restantes comprend l'instance VM la plus performante pour chaque comparaison. [0059] Un exemple de l'invention peut être donné dans la présente, dans un but illustratif uniquement. Une plateforme en nuage 100 d'un fournisseur de services de plateforme (-PaaS) peut être fournie avec un groupement VM 120 qui comprend 20 instances 16 VM 121, chacune exécutant un composant de l'application logicielle 122. Au moins une des instances VM 121 héberge un module dc surveillance 210 qui est configuré pour surveiller au moins une métrique performance d'application, p. ex. l'utilisation de la CPU dc l'instance VM. Un module dc gestion VM 220 est fourni sur l'une des instances VM 121 du groupement VM 120. Le module de gestion VM 220 est configuré pour gérer les instances VM 121 pour la métrique de performance d'application sélectionnée, surveillée par le module de surveillance 210 qui dans cc cas peut être l'utilisation de la CPU de chaque instance VM. Le module de sur- veillance 210 veille, conformément à la métrique de performance sélectionnée, à l'usage de la CPU dc chaque instance VM 121 dans le groupement VM. Le module de gestion VM 220 peut évaluer de façon continue si la performance de chaque instance VM 121 pour la métrique de performance sélectionnée, dans cc cas l'utilisation de la CPU, se situe dans une fourchette de valeurs de performance ciblée, p. ex. entre 50-80 % dc la performance maximum d'une instance VM. Une fois que le module de gestion VM 220 détecte que la performance de certaines, p. cx. cinq, instances VM 121 se situe au-dessus de la fourchette dc performance ciblée, p. ex. au moins à 90 %, il commence alors le processus d'optimisation au moyen du module d'optimisation 221. Le processus d'optimisation implique dc demander au fournisseur d'infrastructure 170 de générer, conformément à cet exemple, cinq instances de remplacement correspondant aux cinq instances VM 121 identifiées comme étant déficientes ; c.-à-d. que [de ce fait] la métrique de performance surveillée est supérieure à la fourchette de valeurs de performance ciblée. Les cinq instances de remplacement 121 sont générées avec les mêmes caractéristiques techniques que les instances VM déficientes correspondantes. Une fois générées, le module d'optimisation 221 copierait les composants d'applications logicielles 122 fonctionnant sur chacune des cinq instances VM déficientes identifiées 121 vers chacune des cinq instances VM de remplacement. Le module d'optimisation de 221 comparerait ensuite la performance de chaque instance VM de remplacement avec chaque paire d'instances VM déficientes correspondantes pour la même métrique de performance afin d'identifier laquelle des deux versions de la même instance VM, déficiente ou VM de remplacement, performe le mieux. Pour chaque paire, l'instance VM la moins performante est terminée et un ensemble d'instances VM restantes est déterminé comprenant l'instance VM 121 la plus performante pour chaque comparaison. Le module de gestion VM 220 peut répéter continuellement les étapes ci-dessus pour assurer que le groupement VM 120 comprend les instances VM les plus performantes qui peuvent être générées par le fournisseur laaS sélectionné 170. [0060] En général, les routines exécutées pour mettre en oeuvre les modes de réalisation de l'invention, qu'elles soient implémentées dans le cadre d'un système d'exploitation ou 17 d'une application spécifique, d'un composant, d'un programme, d'un objet, d'un module ou d'une séquence d'instructions, ou même un sous-ensemble de ceux-là, peuvent être désignées dans les présentes comme «code de programme informatique » ou simplement « code de programme». Le code de programme comprend typiquement des instructions lisibles par ordinateur qui résident à des moments divers dans des dispositifs divers de mémoire et de stockage dans un ordinateur, et qui lorsqu'il est lu et exécuté par un ou plusieurs processeurs dans un ordinateur, amène cet ordinateur à mettre en oeuvre les opérations et/ou des éléments propres aux aspects variés des modes de réalisation de Les instructions d'un programme informatique lisibles par ordinateur pour accomplir les opérations des modes de réalisation de l'invention peuvent être, par exemple, le langage d'assemblage ou soit un code source ou un code objet, écrit en combinaison avec un ou plusieurs langages de programmation. [0061] Le code de programme mis en oeuvre dans une/un quelconque des applications/ modules décrits dans les présentes peut être distribué individuellement ou collectivement comme un produit programme, sous une variété de formes différentes. En particulier, le code de programme peut-être distribué en utilisant un support de stockage lisible par ordinateur ayant en lui-même des instructions de programme lisibles par ordinateur pour amener un processeur à mettre en oeuvre des aspects des modes de réalisation de [0062] Les supports de stockage de données lisibles par ordinateur qui sont intrinsèquement non transitoires, peuvent inclure des médias tangibles volatiles et non volatiles, amovibles et non amovibles, implémentés dans tout procédé ou technologie de stockage de données, tels que des instructions de programme lisibles par ordinateur, des structures de donnée, des modules de programme, ou autres données. Les supports de stockage lisibles par ordinateur peuvent par ailleurs inclure la mémoire vive aléatoire (RAM), la mémoire morte à lecture seule (ROM), la mémoire à lecture seule, programmable et effaçable (EPROM), la mémoire à lecture seule, programmable et effaçable électriquement (EEPROM), une mémoire flash, ou toute technologie de support solide de mémoire, disque compact portable doté d'une mémoire à lecture seule (CD-ROM), ou tout autre stockage optique, des cassettes magnétiques, des bandes d'enregistrement magnétiques, des mémoires de disque magnétique ou tout autre médium pouvant être utilisé pour stocker l'information désirée et apte à être déchiffré par un ordinateur. Un support de stockage lisible par ordinateur ne peut être interprété comme étant en soi des signaux transitoires (par exemple, des ondes radio ou toutes autres ondes électromagnétiques se propageant, des ondes électromagnétiques se propageant à travers un support de transmission telle qu'un guide d'ondes, ou des signaux électriques transmis par câble). Les instructions de programme lisibles par or- 18 dinateur peuvent être téléchargées sur un ordinateur, un autre type d'appareil de traitement de données programmable ou sur tout autre dispositif de support de stockage lisible par machine, ou vers un ordinateur externe ou vers un dispositif de stockage externe via un réseau. [0063] Les instructions de programme lisibles par ordinateur, stockées sur un support lisible par ordinateur, peuvent être utilisées pour instruire un ordinateur, d'autres types d'appareils programmables de traitement ou d'autres dispositifs pour fonctionner d'une façon particulière, de sorte que les instructions stockées sur un support lisible par ordinateur produisent un article de fabrication comprenant les instructions qui implémentent les fonctions/actions spécifiées dans les organigrammes, diagrammes de séquence, et/ou diagrammes blocs. Les instructions de programme informatique peuvent être fournies à un ou plusieurs processeurs d'un ordinateur à usage général, un ordinateur dédié ou un autre appareil programmable de traitement de données pour produire une machine, de sorte que les instructions, lorsqu'elles sont exécutées via un ou plusieurs processeurs, accomplissent une série de calculs pour mettre en oeuvre les fonctions, actions, et/ou les actions spécifiées dans les organigrammes, diagrammes séquentiels et/ou diagrammes blocs. [0064] Dans certains autres modes de réalisation, les fonctions, les actions et/ou des opérations spécifiées dans les organigrammes, diagrammes de séquence, et/ou des diagrammes blocs peuvent être réorganisées à nouveau, traitées en série et/ou traitées en même temps conformément aux modes de réalisation de l'invention. De plus, un quelconque des organigrammes, diagrammes séquentiels, et/ou diagrammes bloc peut inclure plus ou moins de blocs que ceux qui sont illustrés conformément à des modes de réalisation de l'invention. [0065] La terminologie utilisée dans les présentes a pour but de décrire uniquement des modes de réalisation particuliers et n'est pas destinée à limiter les modes de réalisation de l'invention. On comprendra par ailleurs que les termes « comprendre », « comprend » et/ou «comprenant », lorsqu'ils sont utilisés clans cette spécification, précisent la présence de caractéristiques, de nombres entiers, d'étapes, d'opérations, d'éléments, et/ ou de composants, mais n'excluent pas la présence ou l'ajout d'une ou de plusieurs caractéristiques, de nombres entiers, d'étapes, d'éléments, de composants et/ou de groupes, en cela. De plus, dans la mesure où les termes «inclut », « ayant», « a », « avec » « compris de» ou des variantes de ceux-ci, sont utilisés dans la description détaillée des revendications, ces termes sont censés être inclusifs de façon similaire au terme «comprendre ». [0066] Bien que l'invention ait été illustrée par une description de modes de réalisation divers et bien que ces modes de réalisation aient été décrits de façon considérablement détaillée, les demandeurs n'ont pas l'intention de restreindre, ou de limiter, en aucune 19 façon le champ d'application à ces détails. Des avantages et des modifications supplémentaires apparaîtront aisément aux hommes de métier. L'invention sous ses aspects plus larges n'est donc pas limitée aux détails spécifiques, aux appareils représentatifs et aux procédés, ainsi qu'aux exemples illustratifs montrés et décrits. Par conséquent, il est possible de s'éloigner de ces détails sans s'éloigner de la portée du concept inventif général. [Revendication 1]