Architekturen Cloud-nativer Anwendungen

Cloud-native Anwendungen werden explizit für moderne Cloud-Umgebungen entwickelt und sind darauf ausgelegt, die Vorteile des Cloud Computing optimal auszunutzen. Dies umfasst mehrere Aspekte, wie z.B. eine fein-granulare modulare Architektur, die Verwendung vorhandener Cloud Services statt eigener Entwicklungen, die Ausnutzung der durch die Cloud ermöglichten Elastizität, die Robustheit der Anwendung durch die Verteilung auf unabhängige Rechner, sowie einen insgesamt schnelleren und agileren Entwicklungsprozess.
In diesem Projekt soll erforscht werden, wie eine Entwicklung solcher cloud-nativen Anwendungen unter Beachtung der schon genannten Aspekte unterstützt werden kann. Der Fokus liegt dabei auf der Gesamtarchitektur einer cloud-nativen Anwendung, d.h. wie die einzelnen Komponenten in Zusammenhang stehen und miteinander interagieren.

Ziel ist es, Schemata und Methoden zu entwickeln, die diesen Fokus auf die Gesamtarchitektur miteinbeziehen und somit als Referenz und Unterstützung für die Entwicklung cloud-nativer Anwendungen dienen. Die Schemata und Methoden sollen dabei in verschiedenen Kontexten einsetzbar sein, z.B. beim Architekturdesign und der Planung einer neuen Anwendung aber auch bei der Analyse und Verbesserung einer bestehenden Anwendung. Dazu ist es notwendig, die Architektur einer cloud-nativen Anwendung geeignet darstellbar zu machen (mit Hilfe formaler Modellierungsansätze und geeigneter Visualisierungen). Zusätzlich sollen aussagekräftige Kennzahlen und Metriken definiert werden mit deren Hilfe dann Aussagen über die genannten Aspekte (z.B. Granularität, Elastizität, Robustheit) getroffen werden können.

Insbesondere soll dabei auch die Migration bestehender Anwendungen als Anwendungsfall mit einbezogen werden.
Um die zu entwickelnden Schemata und Methoden schließlich auch praktisch anwendbar zu machen, ist eine geeignete Tool-Unterstützung essentiell. Eine prototypische Umsetzung sollte daher mit der Entwicklung einhergehen. Bei der Umsetzung soll dabei auf einen möglichst hohen Grad der Automatisierung geachtet werden und auch die Integration mit anderen verbreiteten Tools sollte möglich sein.