Streaming Data with Spring WebFlux and NDJSON

Why Stream at All The traditional Spring MVC model serializes the entire response into memory before sending it. A controller returns a List<Message>, Jackson converts it to a JSON array, and the framework writes the complete byte buffer to the socket. This works until the dataset is large, the source is slow, or both. Consider a database query that returns 10,000 rows. The blocking approach loads all rows into a List, serializes the entire JSON array, and only then begins writing to the client. Memory usage spikes, time-to-first-byte suffers, and the client waits for the slowest row before seeing anything. ...

March 9, 2025 · 8 min · Alisher Alimov

Comparing 3 Spring Boot Apps: Classic Servlet, Reactive, RSocket

Introduction This article tests three distinct Spring Boot application architectures: Classic Servlet App (Servlet) Reactive RSocket Motivation HTTP is a widely used transport for APIs, and it has pros and cons. It’s old and has big performance issues, but it is still widely used because of its ease of use. Assumptions Basic applications without best practices implementation Tests may not be identical in every aspect JVM parameters remain unoptimized for each application type Requirements Accept messages, receive lists/streams, save to database with empty response List messages by author with return of all messages Identical data feeds across all tests Measure requests per second (RPS) Message Format: ...

February 9, 2025 · 3 min · Alisher Alimov

Reactive Architecture. Theoretical Dive into Blocking Architecture

Business needs first Goals The primary objective for every software engineer is not to provide solutions with the latest modern library or architecture, the main goal is to help businesses to solve their problems. To achieve this software engineers need to provide solutions that will efficiently help to solve business problems with minimum errors and optimum costs that will help businesses be profitable in the end. This goal is critical and directly informs how we allocate our resources and design our systems. ...

February 8, 2025 · 8 min · Alisher Alimov