Spring Web Flux : 소개
스프링캠프 2017 에서 Toby 님이 발표한 Spring Web Flux 의 다음 내용을 정리한다.
- WebFlux 사용 이유
- WebFlux 개발 방식
- WebFlux 의 주요 특징
사용 이유
Thread, CPU, Memory 등 자원을 낭비하지 않고 더 많은 요청을 처리할 수 있는 고성능 Web Application 을 만들 수 있다.
이런 부분에서 효율성을 극대화할 수 있는 경우는, 서비스 간 호출이 많은 Microservice Architecture 가 있다.
개발 방식
두 가지 개발 방식을 지원한다.
- 기존의 @MVC 방식 : @Controller, @RequestMapping 등 annotation 을 사용한다.
- 함수형 모델 : annotation 에 의지하지 않고, RouterFunction 과 HandlerFunction 를 사용한다.
주요 특징
- Servlet 기반이 아니다. (서블릿 지원하는 컨테이너에서 동작할 수 있게 호환성은 가지고 있음)
- ServerRequest, ServerResponse 을 사용한다. (HTTP Request, Response 를 추상화한 새로운 모델)
지원하는 웹 서버 컨테이너
- Tomcat, Jetty : 서블릿의 기존 동기-블로킹 방식을 사용하지 않고, 서블릿 3.1+ 의 비동기 논블로킹 요청 처리 방식을 이용한다.
- Netty, Undertow : 서블릿과 상관 없는 비동기-논블로킹 IO 웹 서버에서 동작한다.