Unidirectional: Remote Only
The traditional approach to observability data collection up to the release of the Substrates API has been to have instrumentation runtime, such as the agent, to measure and transmit data outbound to a remote endpoint. There is no measurement processing locally; what is collected is transmitted by the agent or collector – source to sink.
Bi-directional: Local and Remote
Substrates changed everything by introducing the concept of a Circuit consisting of multiple Conduits fed by Instruments that allowed Observers to subscribe to Events and, in processing such Events, generate further Events by way of calling into another Instrument. But with the introduction of Percept and Adjunct, it is now possible for Observers attached to Circuit and its locally registered Sources to process Events that have come from a far-off Circuit within another process. This capability enables the creation of hierarchical clusters of remote Observers that aggregate and augment the data flowing outwards and inwards – all with the same circuitry interfacing code.
A decision to collocate or not an Observer with a Sensor should not have any impact on the source code, such as in creating a Digital Twin of one or more Circuits. A networking protocol is only required to enable mirroring of Sources, Subjects, and Events. The underlying networking infrastructure will be kept transparent to the Observers.
A potential candidate for such a networking bridge would be MQTT. In such a setup, a Circuit acts as a local broker with the ability to forward to remote Circuits via a remote MQTT broker. Here, an Adjunct is a proxy for a subscription to a Source within a remote Circuit through an MQTT broker. With MQTT being the underlying communication medium, Circuits can be part of an expansive habitat – a stepping stone to collective intelligence.