Server
Spring Boot
NodeJS
이벤트 루프 기반의
Non-Blocking
처리
단일 스레드 기반으로 주로 멀티 프로세스 사용
하나의 무거운 작업(영상 인코딩, 머신러닝 연산 등)의 이벤트 루프 블로킹 가능성
JVM
멀티 스레드 기반의
Blocking
병렬 처리를 통한 안정성 및 고가용성
컨텍스트 스위칭, 스레드 동기화라는 단점
Spring과 NestJS
레이어드 아키텍처, 싱글톤 등이 유사
Spring의 멀티 스레드는 대규모 트래픽 처리에 특화
NestJS의 비동기 논블로킹으로 실시간 처리에 특화
Spring은 비동기 논블로킹이 가능한가?
방법
설명
@Async
메서드를 별도 쓰레드에서 실행 (Spring TaskExecutor 기반)
WebFlux
Reactor 기반의
논블로킹/리액티브 프로그래밍
지원
CompletableFuture, Mono, Flux
비동기 처리 및 리액티브 스트림