Design and installation of large distributed systems pose challenges for system architects. This is especially true in case of private clouds, including the popular versatile private cloud framework, OpenStack. The large number of services, huge variety of configuration options and many deployment possibilities make design decisions very difficult. The situation is further complicated by services that depend on each other, so the settings must always be consistent between services.
In such complex systems, the realization of resilience is a major challenge. Services with relevance in the system-wide reliability have to be selected, and appropriate redundancy mechanisms have to be chosen. Complex deployment constraints also have to be enforced to reduce the impact of a failure and improve recovery. Testing of a configuration can be extraordinarily tiresome, because one has to install the whole system.
Through the example of OpenStack I present how model driven approach can be used to solve the aforementioned challenges. I created a configuration space metamodel to describe domain specific knowledge regarding OpenStack, including objects of the system, their settings, relations and dependencies. This model can be used to generate a metamodel to describe and validate deployments according to the configuration space. Deployment models can be realized with Docker containers; herewith practically rapid-prototyping the configuration, These prototypes can then be used for testing.
An appropriate deployment can be calculated with multi-aspect optimization by utilizing linear programming. This method also holds the resource constraints, the constraints originated from dependability mechanisms and also the rules of robust partitioning. Optimization aspects can be dependability and resource management parameters.