StreamCoCo: A DSL for Processing Data-Centric Streams for Industrial IoT Edge Applications
We report our experience of developing and using a simple yet an effective flow-based programming language and its distributed execution engine for detecting behavioral anomalies in physical assets in industrial IoT systems. Our stream processing systems is built using the Reactive Extensions (Rx) library for composing asynchronous data streams and the OMG Data Distribution Service (DDS) for publish-subscribe communication over the network. Our little language is called Stream Concatenation and Coordination (StreamCoCo) due to its similarity to the UNIX shell pipes-and-filter syntax. The novelty lies in the simple declarative programming model baked into the language that upon detection of anomalies in a stream, takes snapshots of other streams which may be distributed. Further, dynamic parallel pipelines of stateful stream processing operators are trivial to implement using StreamCoCo. We leverage the core capabilities of the language for infrastructure health monitoring and data analytics at the edge to assist remote human operators in problem diagnosis.