Lukas Georgieff & Alberto Gisbert

Slip Through the Boundaries of Legacy Systems with Kotlin and Spring WebFlux

What if you could handle 10x the load with one-third of the threads? Learn how Porsche integrates with slow legacy systems using a reactive stack.

Slip Through the Boundaries of Legacy Systems with Kotlin and Spring WebFlux
#1about 5 minutes

Building efficient services for legacy system environments

Traditional synchronous architectures struggle with slow legacy systems, creating a need for more resource-efficient reactive approaches.

#2about 5 minutes

Comparing WebFlux and MVC performance under memory constraints

A load test demonstrates that Spring WebFlux handles ten times more requests than Spring MVC with the same limited memory, highlighting its superior efficiency.

#3about 11 minutes

Exploring asynchronous I/O with the publisher model

The core of reactive programming is the publisher model, which avoids blocking threads by using asynchronous I/O and callbacks instead of waiting for data.

#4about 11 minutes

Managing data flow with backpressure and reactive streams

Backpressure combines pull and push models to prevent overwhelming consumers, a core concept formalized by the Reactive Streams specification.

#5about 3 minutes

Implementing reactive streams with Project Reactor's Mono and Flux

Project Reactor provides concrete publisher types like Mono for 0-1 items and Flux for N items, along with a rich set of operators for manipulating data streams.

#6about 4 minutes

How to effectively test reactive publishers

The StepVerifier class in Project Reactor provides a robust way to test asynchronous code by verifying emitted signals, data, and completion states over time.

#7about 6 minutes

Avoiding common pitfalls with nulls and empty publishers

Reactive streams do not permit null values, and empty publishers can cause silent failures in operators like zip, requiring careful handling.

#8about 3 minutes

Understanding assembly time versus subscription time

Failing to distinguish between when a reactive pipeline is defined (assembly time) and when it executes (subscription time) can lead to unexpected eager evaluations.

#9about 4 minutes

Navigating the complexities of caching reactive streams

Standard caching annotations cache the "cold" publisher definition, not the result, requiring the use of operators like .cache() to create a "hot" source that replays the value.

Related jobs
Jobs that call for the skills explored in this talk.

Software Engineer

tree-IT GmbH
Bad Neustadt an der Saale, Germany

Remote
Intermediate
Senior

Featured Partners

From learning to earning

Jobs that call for the skills explored in this talk.

Rust and GoLang

Rust and GoLang

NHe4a GmbH
Karlsruhe, Germany

Remote
55-65K
Intermediate
Senior
Go
Rust