https://github.com/bossm0n5t3r/jvm-web-framework-benchmark
Spring MVC(가상 스레드 vs. 플랫폼 스레드)와 Spring WebFlux 간의 API 성능을 벤치마킹하기 위한 멀티 모듈 프로젝트입니다. Kotlin, Spring Boot, JPA, R2DBC, Gatling을 사용하여 블로킹/논블로킹 모델의 성능을 비교 분석합니다.
https://github.com/bossm0n5t3r/jvm-web-framework-benchmark
docker gatling jpa kotlin performance-benchmark postgresql project-loom r2dbc reactive-programming spring-boot spring-mvc spring-webflux virtual-threads web-framework
Last synced: 2 months ago
JSON representation
Spring MVC(가상 스레드 vs. 플랫폼 스레드)와 Spring WebFlux 간의 API 성능을 벤치마킹하기 위한 멀티 모듈 프로젝트입니다. Kotlin, Spring Boot, JPA, R2DBC, Gatling을 사용하여 블로킹/논블로킹 모델의 성능을 비교 분석합니다.
- Host: GitHub
- URL: https://github.com/bossm0n5t3r/jvm-web-framework-benchmark
- Owner: bossm0n5t3r
- Created: 2025-08-14T09:00:01.000Z (10 months ago)
- Default Branch: master
- Last Pushed: 2026-01-04T06:19:33.000Z (5 months ago)
- Last Synced: 2026-04-07T07:47:31.693Z (2 months ago)
- Topics: docker, gatling, jpa, kotlin, performance-benchmark, postgresql, project-loom, r2dbc, reactive-programming, spring-boot, spring-mvc, spring-webflux, virtual-threads, web-framework
- Language: HTML
- Homepage: https://bossm0n5t3r.github.io/jvm-web-framework-benchmark/
- Size: 2.07 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# JVM Web Framework Benchmark
Spring MVC와 Spring WebFlux의 성능을 비교하기 위한 멀티 모듈 벤치마크 프로젝트입니다.
MVC(virtual thread 유무)와 WebFlux(코루틴 유무) 조합을 동일한 API/DB/외부 호출 조건에서 비교하고, Gatling 리포트로 결과를 남깁니다.
## 구성
- `common`: 공통 DTO/테이블/유틸
- `mvc-app`: Spring MVC + JPA + Virtual Thread (8080)
- `mvc-without-virtual-thread-app`: Spring MVC + JPA (8083)
- `webflux-app`: Spring WebFlux + R2DBC (8081)
- `external-app`: 외부 API 시뮬레이터 (8082)
- `benchmark-app`: Gatling 시뮬레이션 및 커스텀 벤치마크
- `reports`: Gatling 리포트 결과
## 빠른 시작
```bash
# MVC (Virtual Thread)
./gradlew mvc-app:bootRun
# MVC (Virtual Thread 미사용)
./gradlew mvc-without-virtual-thread-app:bootRun
# WebFlux
./gradlew webflux-app:bootRun
# 외부 API 시뮬레이터
./gradlew external-app:bootRun
```
애플리케이션 실행 시 Spring Boot Docker Compose가 PostgreSQL을 자동으로 띄웁니다. 수동 관리가 필요하면 `docker-compose.yaml`을 사용하세요.
## 벤치마크
```bash
# Gatling 시뮬레이션 실행
./gradlew gatlingRun
```
- 시뮬레이션 상세 설명: `benchmark-app/README.md`
- 최신 결과 요약: `benchmark.md`
- HTML 리포트: `reports/gatling/`
- [external-app](/reports/gatling/external-app/index.html)
- [mvc](/reports/gatling/mvc/index.html)
- [mvc-without-virtual-thread](/reports/gatling/mvc-without-virtual-thread/index.html)
- [webflux](/reports/gatling/webflux/index.html)
- [webflux-without-coroutines](/reports/gatling/webflux-without-coroutines/index.html)
## 기술 스택
- Kotlin 2.3.0, Spring Boot 4.0.1, JDK 25
- Spring MVC, Spring WebFlux
- PostgreSQL 18, JPA(Hibernate), R2DBC
- Gatling, Docker Compose