WebFlux(Reactive)
- Event Driven
- non-blocking
- 클라이언트 요청 - 서비스 로직 - 데이터 입출력
- WebFlux -
- 관련되는 서비스들이 모두 Reactive 기능을 지원해야 완벽한 비동기 처리가 가능
- 요청을 하고 응답이 올 때까지 다른 프로세스 가능
- 요청이 완료되면 응답을 event 기반으로 요청했던 프로세스에게 알림 (CallBack)
- 요청 수가 많아 thread pool 넘치는 것이 예상되는 환경에서 사용시 성능 이점
MVC(Servlet)
- Synchronous blocking I/O
- one-request-per-thread
- 클라이언트 요청 - 서비스 로직 - 데이터 입출력
- HTTP API - Service - RDBMS 등 현재 대부분의 서비스들은 I/O 처리시 Blocking
- 업무가 완료될 때까지 기다려야 응답 가능
- 컴퓨팅 성능이 좋고, 요청 수가 thread pool 넘지 않는 환경에서 기본적으로 사용
위 그림은 Spring MVC나 Spring WebFlux 둘 다 성능이 동일한 구간이 있다. 서버의 성능이 좋으면 좋아질수록 해당 구간은 더 늘어날 것이다.
- 환경이 해당 구간이라면 굳이 사용할 필요가 없다.
- Spring Document에서는 동기 방식이 코드 작성, 이해, 디버깅하기 더 쉽다. 이 말은 즉 높은 생산성을 가진다는 말과 같은 것으로 보인다.
- 그렇기에 이해타산을 잘 따져서 선택해야 할 필요가 있다.
728x90
반응형
'IT > Spring' 카테고리의 다른 글
Spring Boot Profile(application.yml) (0) | 2021.04.08 |
---|---|
Spring, nginx proxy HATEOAS (0) | 2021.04.07 |
QueryDsl Version Error (0) | 2021.03.17 |
Spring Mongo Database (Multi Database) #2 (0) | 2021.02.28 |
Spring Mongo Database (Multi Database) #2 (0) | 2021.02.24 |