## 3 Related Literature
### Streaming Architectures  
Processing streaming data is often discussed in the context of big data analytics and has been applied to many use cases including system monitoring [7; 8], smart cities [9; 10], service monitoring [11; 12; 13], or marketing [14]. The lambda [15] and kappa [16] architectures are two well-known high level architectures in this domain. The lambda architecture consists of a fast (sometimes approximated) analysis flow that consumes real-time data and a batch-based flow that uses stored historical data. The lambda architecture is suited for tasks where both real-time updates and historical insights are useful, such as traffic monitoring [17] or when data may be corrected afterwards [14]. The kappa architecture simplifies the lambda architecture by dropping the batch analysis flow. Code reuse is better in kappa architectures because the same flow is used for updating old analytics or calculating newly added analytics. Both architectures only provide high-level guidelines and are typically implemented using stream processing frameworks such as Apache Storm, Flink, or Spark. The concept of these frameworks is simple: a collection of worker nodes is set up and divides the workload in an efficient manner. This approach is both resilient and horizontally scalable as the workload of failed workers is automatically reassigned and new worker machines may be added as needed. Several works exist that compare the features or performance of these frameworks for different use cases [18; 19; 20]. Another work additionally evaluates Kafka Streams and IBM Streams [21]. However, the choice of technology remains a difficult one, as frameworks under active development may improve over time and performance can even be influenced by the size of the messages being consumed [22]. Another common architecture for stream processing is the microservice architecture, which is considered an implementation of the broader service oriented architecture [23], where different responsibilities of an application are captured into dedicated and independent services. Services interact with other services to form the full application. Similar to software libraries or modules, microservices are a form of abstraction making them easier to test or maintain and promote reuse. However, they distinguish themselves by being reusable across applications through instance sharing, their ability to scale independently, and their ease of integration with other technologies or languages [24; 25]. While a microservice architecture dictates a number of core tenets [23; 26], it remains a high level architecture and leaves a degree of freedom. Practically, they are often implemented as Docker images that interact using REST APIs or configured message brokers such as Kafka or RabbitMQ. Note that a microservice architecture can be combined with a lambda or kappa architecture [17; 27]. Microservice architecture systems described in literature include e-commerce [25] and intelligent transport systems [10]. Fog computing is another paradigm often associated with stream processing at large scale [28]. Instead of collecting and processing all data streams in a central location, the data streams are partially analyzed or aggregated in advance. This can result in lower bandwidth needs or a faster response detection rate for simple events [9]. Coming from the semantic domain, the MASSIF platform suggests a modular system for IoT services [29]. Data is ingested and a semantic converter is chosen using a data attribute. After conversion the data is added to a semantic data bus from which independent services consume, process, and publish data. As MASSIF was mainly meant for low-frequency event data from IoT services, it was later adapted to Streaming MASSIF to handle high frequency data streams [6]. Here, data is filtered by fast operators before being passed to slower, but more expressive reasoners in a process called cascading reasoning. The platform has been used in healthcare [30] and smart (nursing) home [31] prototypes.