“…For example, developers may decide today to use a PaaS provider for a particular module because it is more cost effective, or because it requires less management effort, but tomorrow they may decide to move some component to IaaS level because their needs or business model may require more control over virtual machines (VM), e.g., for a better integration with their enterprise's infrastructure, or because they need to increase the security level of their services. Unfortunately, moving an application's component between different providers is problematic, and it is more difficult between different abstraction levels, since changes in these decisions require some development efforts [Petcu, 2011, Di Martino, 2014, in order to adapt the components to new service requirements and their integration with other application's components, running in other providers.…”