| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 바닐라코딩
- JavaScript
- html
- Spring
- 이펙티브자바
- CORS
- http
- 자바
- SpringSecurity
- 자바스크립트
- Hibernate Reactive
- 메가테라
- jvm
- 소프트웨어장인정신
- 상속
- HTTP 완벽가이드
- 신혼여행
- 헤리턴스아라
- 2022회고
- java
- 부트캠프
- 취업회고
- http 완벽 가이드
- leetcode
- css
- til
- 클로저
- 몰디브
- 주간회고
- 포트폴리오
- Today
- Total
codingBird
TIL - 쇼핑몰 프로젝트(Plain Old) 마이그레이션 2일 차. Hibernate Reactive 본문

갓 나와 따끈따끈한 Hibernate Reactive 2.0
이번 마이그레이션을 진행하면서 꼭 해보고 싶은 부분은 아래와 같다.
- WebMVC → WebFlux
- Coroutine
- Blocking DB → R2DBC 또는 Hibernate Reactive
- 멀티 모듈 (어드민, 사용자)
- 선착순 상품
특정 기업에 입사하지 않는 이상 반응형 프로그래밍을 다룰 기회는 없을 것 같지만 그래도 멋있고 재밌어 보이니까 한번 해보려고 한다.
Hibernate Reactive
WebFlux 는 비동기/논블럭 작업을 통해 적은 스레드로 높은 처리량을 가진다는 장점이 있다. (Cpu 코어 x 2개)
하지만 JPA의 구현체 hibernate 는 블럭킹 입/출력인 관계로 스레드 수가 적은 WebFlux 환경에서 hibernate 를 사용하면 WebMVC 환경에서 hibernate 을 사용하는 것에 비해 성능은 매우 좋지 않을 것이다.
물론 Kotlin Coroutine 을 사용하면 크게 문제 없을 것 같은데 그래도 남는 게 시간이고 경험은 중요하니 Hibernate Reactive 를 사용하려 한다.
그리고 R2DBC 가 아닌 Hibernate Reactive 를 사용하고자 하는 이유는 익숙한 JPA 특성을 거의 그대로 가져가면서 비동기 방식으로 수행할 수 있기 때문.
Springboot Devtools 이슈

Springboot Devtools 때문이라고는 꿈에도 몰랐었지…
공식 문서 예제를 보면서 구현하고 있던 도중 위와 같은 오류가 계속 발생했다.
에러 내용은 Hibernate Reactive 가 Reflection 을 통해 필드 값을 읽으려고 하는 데 실패했다는 것.
혹시 final 관련 문제인가 싶어 AllOpen 플러그인도 추가했지만 여전히 같은 오류가 발생해서 도저히 이유를 알 수 없었다.
Hibernate Reactive 사용을 포기하려고 했던 찰나에 우연히 어느 블로그의 글에서 Spring Devtools로 인해 오류가 발생할 수 있다는 글을 보고 Devtools 의존성을 제거했더니 놀랍게도 서버가 정상적으로 실행되는 것을 볼 수 있었다. (Application Classloader 와 Restart Classloader 차이 때문에 발생할 수 있다고 하는데 정확한 이유는 잘 모르겠다)
'TIL' 카테고리의 다른 글
| TIL - 쇼핑몰 프로젝트(Plain Old) v1 → v2 4일 차. 프로젝트 초기세팅 (0) | 2023.07.30 |
|---|---|
| TIL - 쇼핑몰 프로젝트(Plain Old) 마이그레이션 3일 차. Kotlin JDSL Reactive (0) | 2023.07.28 |
| TIL - 쇼핑몰 프로젝트(Plain Old) 마이그레이션 1일 차. 기존 프로젝트 Jmeter 성능 테스트 (0) | 2023.07.25 |
| TIL - Github Action CI (0) | 2023.04.13 |
| TIL - EC2, RDS 연결 (SpringBoot, PostgreSQL) (1) | 2023.04.09 |