In recent years, a plethora of deployment technologies evolved, many following a declarative approach to automate the delivery of software components. Even if such technologies share the same purpose, they differ in features and supported mechanisms. Thus, it is difficult to compare and select deployment automation technologies as well as to migrate from one technology to another.
We conducted a systematic review of declarative deployment technologies and introduce the Essential Deployment Metamodel (EDMM) by extracting the essential parts that are supported by all these technologies. Thereby, the EDMM enables a common understanding of declarative deployment models by facilitating the
comparison, selection, and migration of technologies. Moreover, it provides a technology-independent baseline for further deployment automation research.
|Component||A component is a physical, functional, or logical unit of an application.|
|Component Type||A component type is a reusable entity that specifies the semantics of a component that has this type assigned.|
|Relation||A relation is a directed physical, functional, or logical dependency between exactly two components.|
|Relation Type||A relation type is a reusable entity that specifies the semantics of a relation that has this type assigned.|
|Operation||An operation is an executable procedure performed to manage a component or relation described in the deployment model.|
|Property||A property describes the current state or prescribes the desired target state or configuration of a component or relation.|
|Artifact||An artifact implements a component or operation and are required for their execution.|
|Deployment Model||A deployment model describes declaratively the desired target state of an application including all necessary model entities.|