Architecting Cloud-native Applications

Cloud-native applications are developed specifically for modern cloud platforms. They are designed and built to maximally exploit the benefits offered by cloud computing. This comprises several aspects, such as a fine-grained modular architecture, using existing cloud services instead of custom solutions, exploiting the rapid elasticity of cloud computing, achieving robustness by distributing an application over independent nodes, and finally a faster and more agile development process through the fast and on-demand availability of resources in the cloud.
The goal of this project is to analyze how the development of such cloud-native applications can be supported and improved with regard to the already mentioned aspects. The focus is on the overarching architecture of a cloud-native application, specifically how the individual components are combined and how they interact, rather than focusing on individual components.

Therefore, schemas and methodologies need to be produced which explicitly cover this overarching architecture. They should act as a reference for supporting the development of cloud-native applications and be applicable in several contexts. This means they should support the initial design and planning of an architecture, the evolution of an architecture during the lifetime of an application, as well as the analysis and improvement of an existing application.
To achieve this, the architecture should be representable in a useful way (by using formal modeling approaches as well as helpful visualizations).  Furthermore, meaningful indices and metrics should be defined which allow for  deriving conclusions about the mentioned aspects (e.g. granularity, elasticity, robustness).

As an additional use case, the migration and transformation of existing non-cloud-native applications should be included into the described project. And to make the envisioned schemas and methodologies practically applicable, a suited tool-support is essential. Therefore, a prototypical implementation of tools should accompany the project. A high degree of automation should be a core aspect for such tools to reduce the usage overhead. And additionally, the integration with other established tools and framework should be possible to increase their practical value.