Welcome to the documentation of the Apollo-Core Github organization.
The Apollo-Core organization is part of the ApolloWf project of the distributed and parallel systems group of the University of Innsbruck, Austria. The purpose of this open-source project is to enable the execution of complex applications using serverless functions which are distributed across cloud, edge, and IoT resources. At the core of this project is the Apollo Runtime System which orchestrates and optimizes the execution of the application. This GitHub organization (Apollo-Core) contains the source code of the fundamental parts of this runtime system.
-
A short introduction of Apollo's purpose and its focus user group is provided in a Youtube video.
-
A brief guide to quickly set up a running orchestration is provided in the EE-Demo repository and in a Youtube video.
-
A hands-on tutorial demonstrating the tooling and the steps necessary to orchestrate applications with Apollo is provided in the Tutorial repository and in a series of Youtube videos.
If you find issues/bugs or have an idea or need for certain extensions of the framework, please formulate an issue in the repository which seems most appropriate and/or reach our directly by writing an email to [email protected].
Apollo's system and orchestration models have been published in [1] and [2]. If you find Apollo to be useful for your work, please consider citing [2].
The Apollo-Core organization consists of 13 repositories:
- EE-Core - main interfaces shared across the other repositories
- EE-Guice - google guice modules used for dynamic dependency injection
- EE-Model - graph-based system model used to represent the application and the available resources
- EE-IO - definition of the input file format, parsers for the input files (AFCL among others) used to generate the system model
- EE-Enactables - atomic units of execution such as serverless function triggers or control- and data flow constructs
- SC-Core - interfaces for schedulers used during the orchestration
- EE-Control - main components controlling the orchestration at runtime
- EE-Visualization - (real-time) visualization of the system model throughout the orchestration
- EE-Docker - execution of application functions in local Docker containers
- EE-Deploy - infrastructure for deploying Apollo as an orchestration (web) service
- EE-Demo - simple applications for demonstration purposes
- IntegrationTests - integration tests used for the CI workflows
- RepositoryConfiguration - style for the code format, code quality rules applied during the CI checks
[1] Smirnov, F. S. et al. (2021). Apollo: Modular and distributed runtime system for serverless function compositions on cloud, edge, and iot resources. Proceedings of the 1st Workshop on High Performance Serverless Computing, 5-8.
[2] Smirnov, F. S. et al. (2021). Apollo: Towards an efficient distributed orchestration of serverless function compositions in the cloud-edge continuum. Proceedings of the 14th IEEE/ACM International Conference on Utility and Cloud Computing, 1-10.