💡 개요
오늘은 Spring에서 제공하는 비동기 프로그래밍 기술인 Spring Flux이 실제론 많이 사용되지 않는다고 하는데, 이 이유에 대해 정리해 보자.
TMI : 오늘 코테봄. 그래서 피곤하다.. 😥
🛠️ Spring Flux
Spring Flux는 기본적으로 동기 방식을 사용하는 서버(Spring MVC)를 비동기 방식을 사용할 수 있도록 해주는 프레임워크 기술이다.
사실 난 비동기 방식을 구현해 본 경험이 거의 없다. (동기도 잘 못하는데..)
굳이 비동기 방식과 관련된 경험을 따지자면, Spring Cloud Gateway를 사용할 때 비동기적인 방식이 기본 동작 방식이라, WebFlux를 어쩔 수 없이 사용하게 된 정도다.
그렇다면 Flux을 왜 많이 사용하지 않을까?
✅ Spring WebFlux가 잘 안 쓰이는 이유
🔥 어렵다
- Mono, Flux, map, flatMap, subscribe 등 기존 MVC 개발자에게는 생소한 개념이 많다.
- 뿐만 아니라 문제가 발생할 경우, 디버깅도 어렵다.
🔥 기본적으로 내부의 모든 구성 요소가 Reactive 해야 한다. (가장 큰 이유지 않을까..)
- 대표적으로 DB에 접근하는 것과 같은 모든 I/O 작업이 논블로킹이어야 진짜 효과를 볼 수 있다.
- 하지만 대부분의 DB (특히 JPA, JDBC)는 Blocking 기반이다. → 이걸 쓰면 WebFlux의 장점이 사라진다.
🔥 서비스 구조가 단순하거나 트래픽이 낮으면 의미 없다.
- 현재 많은 개발자들이 사용중인 동기 방식(Spring MVC)도 적절한 스레드 풀 튜닝으로 대부분의 서비스에서 충분히 좋은 성능을 낸다.
- 대부분의 컴퓨터는 멀티스레드를 지원하기 때문에 충분히 서비스에서 동기방식을 사용하더라도 좋은 성능을 낼 수 있다.
👨🏻💻 참고
'개발 일기' 카테고리의 다른 글
[개발 일기] 2025.05.20 - XSS (0) | 2025.05.20 |
---|---|
[개발 일기] 2025.05.19 - ConcurrentHashMap이 HashMap보다 빠른 이유 (1) | 2025.05.19 |
[개발 일기] 2025.05.17 - 비동기와 멀티스레딩? (1) | 2025.05.17 |
[개발 일기] 2025.05.16 - PSA (Portable Service Abstraction) (0) | 2025.05.16 |
[개발 일기] 2025.05.15 - 클래스마다 무조건 인터페이스를 생성?? (0) | 2025.05.15 |