(fr) Un changement de paradigme est en cours dans le domaine des systèmes informatiques distribués. Á la place du calcul en centre de données, nous avançons vers le calcul fait en réseau de bord. En conséquence, l’environnement opérationnel des systèmes distribués continue à devenir plus stressant en raison du manque de fiabilité inhérente et de l’hétérogénéité des réseaux de bord. Par exemple, dans le cas de la téléphonie mobile et les réseaux ad hoc, l’Attrition (la proportion des noeuds ayant changé par unité de temps) peut être extrêmement élevée en raison de la mobilité des noeuds, des fréquentes déconnexions / reconnexions et des changements de configuration. En outre, dans de tels environnements dynamiques, le système peut faire face à un haut taux d’attrition et du partitionnement du réseau d’une manière fréquente. Dans cette thèse, nous proposons une approche générique pour la construction d’applications distribuées qui leur permet de survivre d’environnements opérationnels de haut stress tels que ceux-ci, en fournissant toujours un service utile pour les utilisateurs. Pour survivre dans des environnements stressants tels que les réseaux de bord, le système a besoin de fortes propriétés d’auto-guérison. Nous faisons des études empiriques à la fois du comportement et de la conception d’un système dans un environnement à stress élevé. En d’autres termes, nous cherchons des réponses aux questions non triviales suivantes : Un système peut-il guérir les dommages dus au stress dans son environnement opérationnel et retrouver sa pleine fonctionnalité quand le stress disparaît ? Peut-on prédire le comportement du système, à savoir, la fonctionnalité disponible pendant le stress ? Quels sont les conditions préalables ; en d’autres termes, quelles propriétés devraient posséder le mécanisme de guérison pour atteindre ces objectifs dans un environnement stressant? Afin de répondre à ces questions, nous présentons et formalisons d’abord les concepts de Réversibilité et de Phase. La Réversibilité implique que la fonctionnalité d’un système (l’ensemble de services qu’il peut fournir de façon satisfaisante) est une fonction (appellée la fonction de réversibilité) de son niveau de stress actuel dans son environnement opérationnel et ne dépend pas de l’histoire de ce niveau. Comme le stress est une condition globale qui ne peut pas être facilement mesuré par des noeuds individuels, nous proposons le concept de Phase afin d’approcher la fonction de réversibilité. La Phase est une propriété de chaque noeud qui donne une indication qualitative de la fonctionnalité du système disponible à ce noeud. La Phase peut être déterminée sans aucun calcul distribué supplémentaire. Dans cette thèse, nous expliquons l’utilité de ces concepts au moyen de deux études de cas. Nous nous appuyons sur le concept de réseau superposé structuré (Structured Overlay Network - SON), une approche bien connue pour la construction de systèmes distribués décentralisés. Dans notre Premier Étude de Cas, nous étendons un SON existant, qui réalise un système de stockage clé-valeur transactionnel répliqué, pour être réversible, ce qui implique que le système est en mesure de retrouver sa fonctionnalité originale quand le stress (par exemple, l’attrition, le partitionnement de réseau, la dynamicité du réseau physique, etc.) diminue. Nous évaluons la réversibilité du système en utilisant des stratégies de maintenance existantes, à savoir Correction-on-Change, Correction-on-Use, la stabilisation périodique, et la fusion d’anneau. Nous proposons un nouveau mécanisme de maintenance, appelé Base de Connaissances, pour améliorer les conditions de réversibilité contre les environnements inhospitaliers. Nous identifions les stratégies de maintenance nécessaires pour atteindre la réversibilité. Au moyen de simulations, nous démontrons la réversibilité pour un réseau superposé avec des niveaux élevés de partitionnement, attrition et taux de perte de paquets. Nous analysons également l’interaction entre deux paramètres de stress, à savoir l’attrition et le partitionnement, et nous identifions les limites de l’attrition et du partitionnement simultanés, jusqu’Ã laquelle le système peut atteindre la réversibilité par lui-même. Nous faisons des conclusions générales quant à la capacité des stratégies de maintenance pour atteindre la réversibilité. Afin d’approcher la fonction de réversibilité, et donc de décrire le comportement qualitatif d’un système, nous introduisons le concept de Phase. Tous les noeuds dans la même phase présentent les mêmes propriétés qualitatives, qui sont différentes pour les noeuds d’autres phases. Comme la phase, à chaque noeud , fournit une indication qualitative des opérations disponibles, il permet aux applications en cours d’exécution sur le système, de gérer leur comportement de façon prévisible dans un environnement stressant. Nous démontrons l’existence de Transitions de Phase Réversibles (à savoir, une fraction importante des noeuds qui changent de phase) dans un système soumis au stress et nous montrons que notre concept de phase est analogue à la phase macroscopique des systèmes physiques. Nous identifions empiriquement les Points Critiques (c’est-à-dire, lorsqu’il existe plus d’une phase simultanément dans des fractions importantes du système) observés dans nos expériences. Nous étendons chaque noeud du système e à calculer sa phase sans aucune synchronisation globale. Nous proposons une API pour permettre à la couche d’application d’être informée de la phase actuelle du noeud. Dans notre Deuxième Étude de Cas, nous présentons une application, un éditeur graphique collaboratif distribué, construit au-dessus du système de stockage clé-valeur, et nous expliquons comment le rendre conscient de sa Phase, à savoir, comment optimiser son comportement en fonction d’une observation en temps réel de la phase à chaque noeud. De plus, nous analysons comment l’application elle-même peut réaliser la réversibilité dans sa sémantique. En utilisant la phase du noeud sous-jacent, l’application fournit une indication à l’utilisateur en ce qui concerne son comportement (actuel et prévu). Ainsi, l’application peut améliorer son comportement par rapport à l’utilisateur, à savoir, l’utilisateur peut comprendre et décider quoi faire dans un environnement de stress élevé. Nos études de cas montrent l’utilité de la réversibilité pour la construction de systèmes distribués et de la phase pour la construction d’applications au dessus de ces systèmes. La réversibilité donne une fonctionnalité améliorée (interne à l’application) et la phase donne une meilleure facilité d’utilisation (pour l’utilisateur externe). Ainsi, basé sur ces concepts, dans cette thèse nous préparons la voie pour la construction des systèmes informatiques complexes qui peuvent être prouvés corrects, notamment les systèmes distribués et des applications à utilisation améliorée, pour les environnements opérationnels avec un stress arbitrairement élevé.
Paul, R. R. (2016). Building distributed systems for high-stress environments using reversibility and phase-awareness. https://hdl.handle.net/2078.5/42209