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.