Le Cloud est devenu une plate-forme très répandue pour le déploiement d'applications distribuées. Aujourd'hui, virtuellement tout titulaire d'une carte bancaire peut avoir accès à des services provenant du Cloud. De plus en plus d'entreprises peuvent sous-traiter leurs infrastructures d'hébergement et, ainsi, éviter des dépenses provenant d'investissements initiaux en infrastructure et de maintenance.
Beaucoup de petites et moyennes entreprises, en particulier, ont désormais accès à des fonctionnalités comme le passage à l'échelle, la disponibilité et la fiabilité, qui avant le Cloud étaient presque réserveés à de grandes entreprises. Son modèle attractif de coûts ``pay-as-you-go'', qui permet aux clients de payer sur demande par les services et ressources utilisés, a un rôle important dans la popularisation du Cloud.
Les services du Cloud peuvent être offerts aux utilisateurs de plusieurs façons. Dans cette thèse, nous nous concentrons sur le modèle d'Infrastructure sous Forme de Service. Ce modèle permet aux utilisateurs d’accéder à des ressources de calcul virtualisés sous forme de machine virtuelles (MVs).
Pour installer une application distribué, un client du Cloud doit d'abord définir l'association entre son application (ou ses modules) et l'infrastructure. Il est nécessaire de prendre en considération des contraintes de coût, de ressource et de communication pour pouvoir choisir un ensemble de MVs provenant d'opérateurs de Cloud (Cloud providers) publiques et privés le plus adaptés. Cependant, étant donné la quantité exponentiel de configurations, la définition manuelle de l'association entre application et infrastructure peut être un challenge dans des scénarios à large échelle ou ayant des contraintes importantes de temps.
La grande offre d'opérateurs de Cloud dans le marché et les potentielles avantages de l'installation d'une application distribuée sur plusieurs sites du Cloud, comme redondance et accessibilité, par exemple, font ce challenge encore plus complexe. En outre, pour automatiser ce processus, le passage à l'échelle d'un algorithme d'association ne peut pas être ignoré. En effet, le problème de calculer une association entre une application et une infrastructure est une généralisation du problème de homomorphisme de graphes, qui est NP-complet.
Dans cette thèse, nous adressons le problème de calculer des placements initiaux et de reconfiguration pour des applications distribuées sur potentiellement de multiples Clouds. L'objectif est de minimiser les coûts de location et de migration en satisfaisant des contraintes de ressources et communications. Pour cela, nous utilisons une approche incremental en divisant le problème en trois sous-problèmes et proposons des heuristiques performantes capables de calculer des placements de bonne qualité très rapidement pour des scénarios à petite et large échelles.
D'abord, nous modelons le problème en tant qu'un problème de placement oublieux de communication et proposons heuristiques basés sur algorithmes de vector packing pour calculer des solutions de placements initiaux. Deuxièmement, nous étendons nos modèles d'application et infrastructure par l'introduction de contraintes de communication et proposons une heuristique basé sur des algorithmes de homomorphisme de graphes pour calculer de solutions de placements initiaux conscients de communication. Troisièmement, nous introduisons le concept de reconfiguration d'application à nos modèles et proposons une heuristique capable de calculer de solutions de placements conscients de communication et de reconfiguration.
Ces heuristiques, qui sont basées sur des algorithmes de partition de graphes et de bin packing multi-dimensions, ont été évaluées en les comparant avec des approches de l'état de l'art comme des solveurs exactes et des meta-heuristiques. Nous montrons en utilisant des simulations que les heuristiques proposées arrivent à calculer des solutions de bonne qualité en quelques secondes tandis que des autres approches prennent des heures ou jours pour les calculer.
Gratuit
Mots clés
Disciplines