Non-Blocking 통신 지원 (Netty, Servlet 3.1+ Containers) | Blocking 통신 (Servlet Containers) |
Reactive Adapter를 사용해서 Reactor 뿐만 아니라 RxJava 등의 다른 리액티브 라이브러리를 사용할 수 있는 유연함을 제공 | Servlet API의 스펙에 의존적 |
Spring Security 사용하지만 서블릿 필터 방식이 아닌 WebFilter를 사용해 리액티브 특성에 맞게 인증과 권한 등의 보안을 적용 | Spring Security 사용 |
Reactive Stack의 경우, 웹 계층(프리젠테이션 계층, API 계층)에서는 Spring WebFlux를 사용 | Servlet Stack의 경우, Spring MVC를 사용 |
완전한 Non-Blocking 통신을 위해 리액티브 스택을 데이터 액세스 계층까지 확장한다. R2DBC(Reactive Relation Database Connectivity)는 관계형 데이터베이스에 Non-Blocking 통신을 적용하기 위한 표준 사양(Specification)이며, MySQL, Oracle 등의 데이터베이스 벤더에서는 R2DBC 사양에 맞는 드라이버를 구현해서 공급 | Spring MVC에서 사용하는 JDBC API의 경우 Non-Blocking 통신을 지원하지 않는다. |