Skip to content

Design Decissions

Strict separation into independent components

There is a strict separation between management of the edge nodes (edgefarm.devices), management of the applications (edgefarm.appplications) and the delivery of the application data (edgefarm.network). These components can be used independently and serve as a supplement to existing systems.

Linux as edge node operating system

In recent years, Linux has become the standard for more complex devices. Furthermore, Linux has the largest embedded hardware support, driver support and the most complete open source software stack.

Containers as a core technology

In pure cloud/data center scenarios, container technologies (such as docker) have been well established and have displaced running software directly on the OS stack.

The usage of software and services installed directly in the OS is kept to a minimum (drivers, basic services and container runtime) and everything else is run as a container.

Kubernetes as base system

Kubernetes already brings many useful features that EdgeFarm relies on and that can be used within EdgeFarm.

Functions such as declarative setup, secure authorization, application lifecycle management, storage management, redudancy, etc. are available out of the box and only need to be adapted by EdgeFarm.

Strict separation between device firmware and application

Classically, applications on edge devices are distributed together with the firmware of the device. But this has some disadvantages:

  • Updates take a long time
  • The amount of data to be transferred is difficult to reduce
  • Application development is difficult to separate from firmware development.

EdgeFarm addresses this disadvantages by strictly separating the device firmware from the applications and allowing different groups of users to deploy and operate applications independently from the device software.

The functionality contained in the device firmware is kept to a minimum.

Compatible with different platforms and architectures

EdgeFarm is developed to support as many edge hardware as possible and to avoid dependencies to the underlying Linux OS as much as possible.

EdgeFarm is developed from the start to support arm64 and amd64 architectures.

Declarative setup of all components

Declarative setup in the form of manifest files have become established since the dominance of Kubernetes.

Here, the target state is defined in the form of .yaml manifests and made available to the system. The system takes care that the defined target state is established. The system configuration can be administered with it e.g. comfortably over git repositories, versioned, reviewed and in the case of error also again rolled back. This approach is called GitOps.

EdgeFarm adapts this approach for all system configurations brought in by the user, like firmware, system configurations, device configurations, applications, networks etc.

Automation-first for all components

EdgeFarm provides a base for edge or hybrid applications.

However, the added value of such an application is usually created outside of EdgeFarm by other application systems that use the derived data to implement e.g. a desktop application for end users.

Accordingly, it is important that EdgeFarm can be easily and fully integrated into external development and delivery processes by making all functions available via APIs and offering them secured to these systems.

Flexible hosting

The backend is developed without dependencies on cloud providers or other cloud services. The only dependencies are Kubernetes and open source software components.

This allows EdgeFarm to be deployed in different scenarios, from public cloud to hybrid cloud to private cloud in your own data center.

Open Source

Both our own software and all third-party software used in the form of libraries/frameworks are open source.

All EdgeFarm components are licensed under open source license (either AGPL V3 or MIT).

Independent of industry/market

EdgeFarm solves a generic problem, which exists independently of the industry/market. Accordingly, EdgeFarm does not contain any industry specific code parts and can be used for a wide range of use cases.