This repository contains a research prototype of the EDGELESS platform, which is under active development within the project EDGELESS (2023-2025).
EDGELESS is a framework that enables serverless edge computing and it is intended especially for edge nodes with limited computational capabilities.
An EDGELESS cluster is managed by an ε-CON (controller) and consists of one or more orchestration domains, each managed by an ε-ORC (orchestrator).
The ε-CON allows clients to request the creation of edge services (called workflows), which consist of a collection of interconnected functions and resources and related annotations. The management of the lifecycle of any such logical functions/resources is delegated by the ε-CON to one ε-ORC, which, in turn, manages the lifecycle of physical function/resource instances on EDGELESS nodes.
Each EDGELESS node may offer multiple run-time environments (e.g., WebAssembly or Docker) to run function instances and resource providers of different types (e.g., file logs or Kafka) to create resource instances.
Orchestration in EDGELESS happens at two levels:
- higher level orchestration is done by the ε-CON at cluster level and it maps logical functions/resources to orchestration domains;
- lower level orchestration is done by the ε-ORC within its orchestration domain, and it maps every logical function/resource to physical instances on its nodes.
It is recommended that you enable at least info-level log directives with:
export RUST_LOG=info
To get the basic system running, first create the default configuration files (they have fixed hardcoded values):
target/debug/edgeless_inabox -t
target/debug/edgeless_cli -t cli.toml
which will create:
balancer.toml
controller.toml
node.toml
orchestrator.toml
cli.toml
Then you can run the EDGELESS-in-a-box, which is a convenience binary that runs every necessary component as one, using the generated configuration files:
target/debug/edgeless_inabox
Congratulations 🎉 now that you have a complete EDGELESS system you may check our workflows/function examples, which are representative of the current EDGELESS features:
Basics:
- Workflows, resources, and functions
- ε-CON
- ε-ORC
- EDGELESS node
- EDGELESS command-line clients
- A step-by-step example
Advanced topics:
- Repository layout
- How to create a new function
- Local orchestration
- Benchmarking EDGELESS
- Docker container runtime
- A multi-domain example
Currently there are several known limitations, including the following ones:
- The dataplane is limited within a single orchestration domain and realized through a full-mesh interconnection between all the nodes.
- The ε-BAL is a mere skeleton with no logic.
- The ε-CON allocates all the functions/resources of a workflow together to the same domain.
- No workflow-level annotations are supported.
- The payload of events is not encrypted.
- There is no persistence of the soft states of the various components.
- There currently are no guarantees on stability and API stability.
The full list of issues is tracked on GitHub.
Stay tuned (star & watch the GitHub project) to remain up to date on future developments.
We love the open source community of developers ❤️ and we welcome contributions to EDGELESS.
The contributing guide contains some rules you should adhere to when contributing to this repository.
The Repository is licensed under the MIT License. Please refer to LICENSE and CONTRIBUTORS.txt.
EDGELESS received funding from the European Health and Digital Executive Agency (HADEA) program under Grant Agreement No 101092950.