streaming data architecture
A streaming data architecture is an information technology framework that puts the focus on processing data in motion and treats extract-transform-load (ETL) batch processing as just one more event in a continuous stream of events. This type of architecture has three basic components -- an aggregator that gathers event streams and batch files from a variety of data sources, a broker that makes data available for consumption and an analytics engine that analyzes the data, correlates values and blends streams together.
The system that receives and sends data streams and executes the application and real-time analytics logic is called the stream processor. Because a streaming data architecture supports the concept of event sourcing, it reduces the need for developers to create and maintain shared databases. Instead, all changes to an application’s state are stored as a sequence of event-driven processing (ESP) triggers that can be reconstructed or queried when necessary. Upon receiving an event, the stream processor reacts in real- or near real-time and triggers an action, such as remembering the event for future reference.
The growing popularity of streaming data architectures reflects a shift in the development of services and products from a monolithic architecture to a decentralized one built with microservices. This type of architecture is usually more flexible and scalable than a classic database-centric application architecture because it co-locates data processing with storage to lower application response times (latency) and improve throughput. Another advantage of using a streaming data architecture is that it factors the time an event occurs into account, which makes it easier for an application’s state and processing to be partitioned and distributed across many instances.
Streaming data architectures enable developers to develop applications that use both bound and unbound data in new ways. For example, Alibaba’s search infrastructure team uses a streaming data architecture powered by Apache Flink to update product detail and inventory information in real-time. Netflix also uses Flink to support its recommendation engines and ING, the global bank based in The Netherlands, uses the architecture to prevent identity theft and provide better fraud protection. Other platforms that can accommodate both stream and batch processing include Apache Spark, Apache Storm, Google Cloud Dataflow and AWS Kinesis.