The Cloud Application Modelling and Execution Language (CAMEL) is a domain-specific language (DSL) allowing users to specify multiple aspects of cross-cloud applications, such as provisioning and deployment, service-level objectives, metrics, scalability rules, providers, organisations, users, roles, security controls, execution contexts, and execution histories.
CAMEL supports models@run-time, which provides an abstract representation of the underlying running system, whereby a modification to the model is enacted on-demand in the system, and a change in the system is automatically reflected in the model. By exploiting models at both design- and run-time, and by allowing both direct and programmatic manipulation of models, CAMEL enable self-adaptive cross-cloud applications, i.e., cross-cloud applications that automatically adapt to changes in the environment, requirements, and usage.
CAMEL is akin to the Topology and Orchestration Specification for Cloud Applications (TOSCA), which allows users to specify the components comprising the topology of cloud-based applications along with the processes for their orchestration. However, while TOSCA supports the specification of types and templates only, CAMEL supports the specification of types, templates, and instances. Therefore, in its current form, TOSCA can only be used at design-time, while CAMEL can be used at both design-time and run-time. The TOSCA Instance Model Ad Hoc group is investigating how TOSCA could be extended to support the models@run-time approach, taking also into account the experience made with CAMEL.