Application Architecture

A Predix Edge system consists of five major components:
  • Predix Edge OS - The foundational, Yocto-based Linux that has been hardened and purpose-built for industrial Edge applications.
  • Predix Edge Agent – Runs as a native process on the OS, communicates with Edge Manager and PETC, manages application deployment and the application lifecycle (starting, stopping, configuring applications). Edge applications do not directly interact with Edge Agent.
  • Docker Stack – Runs applications launched via the Edge Agent.
  • Predix Edge Technician Console (PETC) – Web UI to manage device enrollment with Edge Manager, application lifecycle and log retrieval; is integrated with Edge Agent.
  • Predix Edge Data Broker – An MQTT service with Publish/Subscribe features provided as an Edge Application itself. It facilitates communication between single-container or multi-container Edge Apps.
Figure 1. Application Architecture
Application Architecture
Predix Edge creates a common file system context when Edge Manager or PETC are used to deploy applications. Edge Agent will make the following directories available to the applications running inside Predix Edge’s Docker Stack subsystem:
  • The /config directory is read-only. When you use Edge Manager or PETC to deploy a zipped configuration file to a given application, Predix Edge Agent deploys and extracts that file into the selected application’s configuration directory.
  • The /data directory is read-write and available to all containers shared within a common application context.
  • The /edge-agent directory is where the secure token is placed for communicating to Predix services, usually in the Predix cloud.
  • The /shared directory is read-only and provides an mqtt_config.json file with app-specific details for communiciating privately over the Data Broker.
Note: The /config, /data, /shared and /edge-agent folders are reserved and will be automatically mounted to a container deployed to Predix Edge via PETC or Edge Manager. These folders will be mounted over any existing folder(s) in a container image with the same name.
Figure 2. Application Containers
Application Containers

Only containers in the same application can access the same /config or /data volume mount.

The mqtt_config.json file provides the following information:
{
  "requestTopic": "edgeAgent/app_<deployment-id>/request/#",
  "statusTopic": "edgeAgent/app_<deployment-id>/response/status",
  "username": " app_<deployment-id>",
  "passwordFile": "/var/run/secrets/p_mqtt_secret",
  "host": "predix-edge-broker",
  "port": "1883"
}

These details enable one app’s containers to communicate privately with another over the Data Broker because they share common connection details.

Application Containers Can Communicate Over a Docker Network

In order for applications to publish or subscribe to messages to the Data Broker, they need to participate in the same Docker network as the broker container. The name of this network is predix-edge-broker_net and its usage is described in the next section.