Spring MVC
- Blocking I/O 방식이다
- 요청 당 하나의 Thread를 사용한다
- 과도한 Thread 사용으로 인한 CPU 대기시간이 늘어나고 메모리 사용에서 오버헤드가 발생한다
- 학습 시간이 상대적으로 짧다
- 10년 이상 주도적으로 사용된 명령형 프로그래밍 기반 기술이기 때문에 숙련된 개발자를 찾기 쉽다
- 기업에서도 신규 프로젝트를 안정적으로 진행할 수 있는 가능성이 높다
Spring WebFlux
- Non-Blocking I/O 방식이다
- 하나의 Thread로 대량의 요청을 처리한다
- 적은 수의 Thread를 사용하므로 CPU와 메모리를 효율적으로 사용한다
- CPU를 많이 사용하는 복잡한 계산을 요청 할 경우 다른 요청들을 처리할 수 없다
- 요청에서 응답까지 Fully Non-Blocking 이어야만 진정한 효과를 발휘할 수 있다
- 학습 난이도가 비교적 높은편이다
- 선언형 방식의 Non-Blocking 프로그래밍 지식을 갖춘 숙련된 개발자를 찾는것이 어렵다
- 기업에서는 개발 인력면에서나 기술적인 측면에서나 위험 부담을 감수해야할 가능성이 높다