Mastering Event Driven Streaming Systems
Amount of data that web scale systems produce is constantly growing.
Proliferating of mobile and smart devices moves requirements towards the sky in terms of throughput, and in the same way we want to operate on data flow in near real time fashion. Near future will bring the 5G standard, and more and more IoT devices will produce more and more data. It is not only related to the software systems, but physical devices as well. Today, projects in the areas of logistics and smart cities are our new reality. And as a result, we need systems that can drink from a firehose.
Building a high-performance streaming platform is not an easy task and the CAP theorem makes it even more challenging. Having unpredictable network delays means that we can receive signals from the past.
And there is always a tradeoff between performance and consistency. There is a lot of streaming frameworks such as Storm and Flink, but they have some fundamental limitations that sometimes make their usage problematic.
This talk is centered on the architectural challenges and best approaches in building high-performance event-driven streaming systems, and covers topics such as:
- Reactive and Functional revolution
- Data-centric thinking and Functional approach on architectural level
- Reactive programming on service level with non-blocking execution
- Events as a state change and what is CQRS and when we need that?
- Streaming architectures as combined functions (Pattern Matching vs. Contracts/Protocols)
- CAP theorem and related problems
- Do we always need Kafka and what are the alternatives?
- Common architectural patterns for high-speed stream processing
- Performance measurements for different approaches with an explanation
Discussion on the best architectural approaches is illustrated by examples of the challenges of building a streaming platform for observability on large scale for timeseries data. Example case is implemented as Java microservices with Reactive Streams, Message Queue and Time-Series storage.