EdgeX Foundry is a vendor-neutral, open source project from the Linux Foundation that provides a common framework for IoT edge computing. The target is industrial IoT, although it can be applied to other IoT applications such as supporting consumer products. It defines a collection of loosely-coupled microservices that communicate via network (Fig. 1) interfaces in a manner similar to other network frameworks like the Robot Operating System (ROS). This allows services to be collected on a single gateway or distributed across a number of nodes based on application requirements.
Components are designed to work in a plug-and-play fashion. Certification of EdgeX components helps to ensure interoperability and compatibility. The group collaborates other open-source projects, standards groups, and industry alliances to ensure consistency and interoperability across the IoT framework.
1. The EdgeX Foundry framework is a collection of microservices that link devices with application services.
EdgeX components can run on a variety of systems, including Windows; Mac OS; and Ubuntu desktop, server, and core. The components are created using the Eclipse Java Mavin projects and the microservices are written in Java 8. They can take advantage of the MongoDB data base system by default for persistent data. Applications can be written in other languages as well, like Python, C++, and Go.
EdgeX is coming from the cloud down to IoT gateways so much of the architecture and terminology will be more familiar to DevOps than embedded developers. One aspect that highlights this difference is that EdgeX microservices are often delivered in the form of Docker containers. This modular approach allows systems to be configured quickly and to take advantage of tools like docker-compose to pull a system together.
The Eclipse development system can be employed in a hybrid configuration where code developed in Eclipse can call Docker-based EdgeX services. This can simplify application development.
The platform allows sensor and device makes to deliver application level drivers. This allows system integrators to combine services and devices into custom IoT solutions.
The system consists of a set of core services that include registration and configuration support. Other services include support for logging, scheduling, notification, and so on. There is even a rules engine. The device management support is still a work in progress and all areas continue to be improved with new service versions. Developers can use any combination of services in addition to creating new ones.
The communication model allows services to be migrated or split among nodes within the system (Fig. 2). It also allows for creation of services to handle load leveling and system scaling. This flexibility is key to the system’s success as hardware performance continues to provide more integration options.
2. EdgeX services can reside throughout an IoT environment from edge gateways to the cloud.
EdgeX is already being utilized in a variety of products and projects. It is also supported by a range of hardware platforms, such as those available from Cavium and Dell.