Abstract
Application containerisation has been introduced to mitigate the discrepancies
of the execution environment conguration and set up a complex
application goes through from development to production, including other
steps such as testing, staging, etc. Through an isolation mechanism, containers
bundle into one package (binaries plus all their dependencies) the entire
runtime environment required for an application or any of its components.
Depending on the complexity of the adopted architectural style, container
orchestration, the management and provisioning of containers, their loadbalancing,
security, scaling, and their network conguration might be needed
to smoothen the overall deployment and execution experience. In the peculiar
case of cloud-native applications, containerisation and orchestration are
even more crucial.
Application containerisation and orchestration have risen as two interrelated
technologies. However, they are handled with dierent toolset and
formalisms. This increases the complexity of deploying such applications
due to various moving parts. Moreover, for an independent team to try
out some components of an existing application, they now have to stick
to the prior deployment decisions made on their behalf. We argue that a
better approach is to describe the desired state of both containerisation and
orchestration and leave it to each team to decide on the actual tools and
infrastructure they intend to use.
In this research, we introduce velo, a unifying abstraction domainspeci
c language (DSL) for application containerisation and orchestration.
Intuitively, velo lets the user express the desired state of containerisation
and orchestration for a complex application. It has two components: (1)
an abstract specication language that describes the containerisation and
orchestration for a complex application; and (2) a transpiler, a source-tosource
compiler into both a container-specic and an orchestration-specic
environments.
In order to dene the specication language, we studied various
containerisation and orchestration tools, including docker, rocket,
kubernetes, mesos marathon, docker compose and docker swarm. The
resulting concepts are centred around a virtual bag, a space within the infrastructure
where containers can be run, and a container, an isolated space
in the cluster where various processes corresponding to services will run
and access resources (CPU, network, I/O, etc.). Containers are instantiated
within a virtual bag. Each of these concepts can be further rened and
represented in dierent ways. As well, several ne-grained descriptors are
introduced to complete the specication of an application containerisation
and orchestration. Furthermore, these descriptors can be provided during
specication time or at compilation.
The compiler in velo is implemented against the grammar dened for
Ishuuwa, G (2021). A Unifying Domain-Specific Language To Abstract Containerization And Orchestration In Complex Applications. Afribary. Retrieved from https://track.afribary.com/works/a-unifying-domain-specific-language-to-abstract-containerization-and-orchestration-in-complex-applications
Ishuuwa, Gervasius "A Unifying Domain-Specific Language To Abstract Containerization And Orchestration In Complex Applications" Afribary. Afribary, 06 May. 2021, https://track.afribary.com/works/a-unifying-domain-specific-language-to-abstract-containerization-and-orchestration-in-complex-applications. Accessed 24 Nov. 2024.
Ishuuwa, Gervasius . "A Unifying Domain-Specific Language To Abstract Containerization And Orchestration In Complex Applications". Afribary, Afribary, 06 May. 2021. Web. 24 Nov. 2024. < https://track.afribary.com/works/a-unifying-domain-specific-language-to-abstract-containerization-and-orchestration-in-complex-applications >.
Ishuuwa, Gervasius . "A Unifying Domain-Specific Language To Abstract Containerization And Orchestration In Complex Applications" Afribary (2021). Accessed November 24, 2024. https://track.afribary.com/works/a-unifying-domain-specific-language-to-abstract-containerization-and-orchestration-in-complex-applications