Aspect-oriented object and component migration

The concept of distributed component architectures is widely used in the modern software development. One problem in these frameworks is that they do not allow the re-binding of an executed entity to another node during runtime. Typical problems founded in this static behavior are ’single point failure’ scenarios or difficulties in the handling of overload situations. On the level of operating system processes the concept of code migration is an approved solution for such problems for a long time. Normally it is difficult to add such a functionality to an already establish software system without changing relevant parts inside. This is founded in the non-functional nature of migration as system feature. Nevertheless it is also aimed to migrate existing applications without any modification of them. The following paper shows how to overcome these problems through an integration of a migration facility into a component system. The integration is done in a non-intrusive manner because of the focusing on widely available commercial component frameworks, in the case of this paper the Microsoft . NET framework. It is shown that the concept of aspect oriented programing enables the possibility for this kind of implementation. With the . NET framework the independence from the migrants programing language is also ensured. The modular architecture of the presented solution allows a flexible appliance regardless of the different use cases. This is verified by two exemplary implementations for migrating applications. For a proper evaluation of the migration functionality performance a new metric is introduced. The experimental evaluation shows that the implemented concept is working correctly in general and that there are several influences which had to be considered in the design of the migration aspects for an application. Komponenten-Architekturen in verteilten Systemen werden in der modernen Software-Entwicklung zunehmend eingesetzt. Ein Problem dabei ist, daß sie zur Laufzeit keine Migration von Applikationen auf andere Knoten ermöglichen. Durch diese statische Architektur entstehen typische Probleme wie ’single point of failure’ Szenarios oder ÜberlastSituationen. Migrationskonzepte sind seit Jahren im Bereich von Prozessen erforscht und praktisch evaluiert. Im Normalfall ist es nur sehr schwer möglich, eine solche Funktionalität in ein bestehendes System nachträglich zu integrieren, ohne primäre Teile der internen Architektur verändern zu müssen. Die liegt vor allem im nicht-funktionalen Charakter der Migrationsfähigkeit an sich begründet. Zusätzlich möchte man auch die Migration von Applikationen erreichen, ohne diese selbst modifizieren zu müssen (transparente Migration). Die folgende Arbeit zeigt wie sich Migration ohne Modifikationen am Kern in ein Komponenten-System integrieren läßt. Die Einbindung erfolgt in einer nicht-destruktiven Art und Weise, da der Fokus hier auf kommerziellen Komponenten-Umgebungen liegt, im speziellen Fall dem Microsoft . NET Framework. Es wird gezeigt, daß das Konzept der aspektorientierten Programmierung dafür die notwendigen Mittel zur Verfügung stellt. Die Unabhängigkeit der Migrationsumgebung von der Programmiersprache des Migranten wird durch den Ansatz der . NET Umgebung sichergestellt. Das modulare Design der vorgestellten Lösung erlaubt die flexible Anpassung und Konfiguration im Rahmen verschiedener Anwendungsfälle. Dies wird durch zwei exemplarische Beispiele für migrierende Applikationen verdeutlicht. Für eine aussagekräftige Evaluierung der Leistungsfähigkeit der Lösung wird eine neue Metrik eingeführt. Die experimentelle Untersuchung zeigt, daß die Implementierung des Konzepts grundlegend funktioniert und fehlerfrei verwendbar ist. Gleichzeitig ist aber auch erkennbar, daß diverse Einflußfaktoren beim Design der Migrationsaspekte zu berücksichtigen sind, damit eine Verbesserung der Applikationsleistung erzielt werden kann.