서버가 느려지는 순간, 로그를 열어 보면 CPU는 한가한데 수백 개의 스레드가 무언가를 기다리느라 묶여 있습니다. 결제사 API의 응답을, 추천 서버의 결과를, 데이터베이스의 쿼리를 말입니다. 일은 거의 하지 않으면서 자리만 차지하고 있는 이 풍경은, "요청 하나가 스레드 하나를 끝까지 붙잡는" 전통적인 방식의 숙명입니다. Spring WebFlux는 바로 이 지점을 다르게 봅니다. 기다리는 동안 스레드를 붙잡아 두지 말고, 그 시간에 다른 일을 시키자는 것입니다.
이 책은 WebFlux의 이론서가 아니라, "언제 WebFlux가 진짜 효과를 내는지"와 "그 상황에서 어떻게 코드를 짜는지"를 7가지 실전 사례로 익히는 실습서입니다. 리액티브가 처음인 독자를 위해 블로킹과 논블로킹의 차이, `Mono`와 `Flux`라는 흐름의 기초부터 차근차근 시작해, 외부 API를 병렬로 모으는 BFF, 실시간 알림(SSE), 대용량 스트리밍 export, WebSocket, 결제 웹훅, 검색·AI 연동, 센서 데이터 수집까지 현장에서 반복적으로 등장하는 사례들을 직접 만들어 봅니다. 사용하는 기술은 Java, Spring Boot, Thymeleaf, Spring Data JDBC, MySQL, Spring Security, Lombok, Validation, Tailwind CSS, Maven으로, 현업에서 가장 흔한 조합 그대로입니다.
특히 이 책은 데이터베이스 접근에 리액티브 전용 기술(R2DBC)이 아니라 블로킹인 Spring Data JDBC를 씁니다. 현실의 많은 프로젝트가 바로 이 조합 위에 놓여 있기 때문입니다. 그래서 "블로킹 작업을 흐름 속에서 안전하게 다루는 법"을 회피하지 않고 정면으로 다룹니다. 책 전체에 걸쳐 `ReactShop`이라는 하나의 커머스 백엔드를 빈 프로젝트에서 7가지 사례를 갖춘 서비스로 키워 가며, 모든 기법은 단 하나의 원칙으로 수렴합니다. "기다림은 스레드가 아니라 흐름에 맡긴다."
이 책은 리액티브 프로그래밍이 처음인 입문자와, Spring MVC 경험은 있지만 WebFlux 실전 적용이 막막한 실무 개발자를 함께 염두에 두고 썼습니다. 필요한 것은 Java 기본 문법과 Spring Boot로 간단한 웹 애플리케이션을 만들어 본 경험 정도면 충분합니다. 책을 덮을 때 여러분의 손에는 동작하는 ReactShop 프로젝트 하나와, "이 상황엔 WebFlux를 이렇게 쓰면 된다"는 7가지 실전 패턴, 그리고 전면 전환이 아니라 내 서비스의 어느 한 부분부터 시작하면 되는지에 대한 분명한 감각이 남을 것입니다.