Skip to content

Latest commit

 

History

History

mvc-vs-webflux

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Spring MVC vs WebFlux

시나리오

image

  • Order Service에 요청을 보내면, Order ServiceItem Service에 Redis에 저장된 값을 감소시키고 감소시킨 값을 반환

  • 같은 시나리오에서 아래의 상황을 비교

    1. Spring MVC로만 구성했을 때
    2. Spring WebFlux로만 구성했을 때
    3. Spring WebFlux + Redis-Reactive

Redis에 값을 저장하는 이유

  • 관계형 데이터베이스에 값을 저장하는 경우 DB connection 과정에서 결국 병목이 발생하기 때문에 MVC와 WebFlux의 성능을 비교하는 것이 무의미해질 수 있음

준비

실험

Vusers: 10, Run Count: 10000

MVC + Redis

image

WebFlux + Redis

image

WebFlux + Redis-Reactive

image


Conclusion

구분 TPS Peak TPS Mean Test Time(ms) Run Time
MVC + Redis 618.8 788 13.31 00:02:52
WebFlux + Redis 952.7 1261 8.00 00:01:51
WebFlux + Redis-Reactive 971.7 1271 7.60 00:01:50
  • WebFlux가 MVC보다 동일한 리소스의 상황에서 효율적으로 처리하는 것을 확인할 수 있음
  • Redis-reactive를 활용했을 때 그렇지 않을 때보다 일정 부분 성능이 개선됨을 확인할 수 있음
    • 비동기 + 비동기
    • 실험을 잘못한건지 dynamic한 차이를 보이지는 못 함. 이후 공부 필요
  • 서비스 예제를 order, item으로 잡아서 상황이 애매할 수 있지만, 만약 서비스 제공 기능이 현재 게임의 실시간 랭킹을 보여주는 기능이고, 플레이어의 활동에 따라 점수가 산정돼서 실시간 랭킹을 제공해야 한다면 WebFlux를 이용했을 때 효과적으로 서비스를 제공할 수 있을 것으로 생각됨

Reference