백엔드 개발 · 심화
Spring WebFlux와 기존 Spring MVC의 차이점은 무엇인가요?
힌트 · 블로킹 vs 논블로킹, Mono/Flux 개념을 생각해보세요.
비동기Non-BlockingReactorBackpressureServlet Stack
모범답안
Spring WebFlux와 Spring MVC의 가장 큰 차이점은 동작 방식입니다. Spring MVC는 Servlet 기반의 동기/블로킹 방식인 반면, Spring WebFlux는 Reactor 기반의 비동기/Non-Blocking 방식으로 동작합니다.
Spring MVC에서는 요청을 처리하는 스레드가 I/O 작업이 완료될 때까지 대기하지만, WebFlux에서는 I/O 작업이 완료될 때까지 스레드가 다른 작업을 수행할 수 있습니다. 이를 통해 WebFlux는 더 적은 스레드로 더 많은 요청을 처리할 수 있어, 동시성 처리 성능이 향상됩니다.
WebFlux는 Mono와 Flux라는 Reactive Streams API를 사용하여 데이터를 비동기적으로 처리합니다. Mono는 0 또는 1개의 데이터를, Flux는 0개 이상의 데이터를 나타냅니다. 또한 Backpressure를 지원하여 생산자가 소비자의 처리 속도에 맞춰 데이터를 전송하도록 제어할 수 있습니다.
결론적으로, Spring WebFlux는 Non-Blocking I/O와 Reactive Streams를 통해 더 높은 확장성과 응답성을 제공하는 데 초점을 맞춘 프레임워크입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Java / Spring 면접 질문
- Spring에서 싱글톤 빈의 동시성 문제는 어떻게 해결하나요?
- Java의 Garbage Collection 동작 원리와 G1 GC의 특징에 대해 설명해주세요.
- Java의 synchronized 키워드와 ReentrantLock의 차이점은 무엇인가요?
- Java의 volatile 키워드의 역할과 사용 시 주의사항에 대해 설명해주세요.
- MSA 환경에서 여러 서비스에 걸친 분산 트랜잭션을 구현해야 할 때, Spring 환경에서 어떤 접근 방식(예: 2PC, Saga 패턴)을 고려할 수 있으며, 각 방식의 장단점과 실제 구현 시 고려사항은 무엇인지 설명해 주세요.
- Spring Security를 사용하여 OAuth 2.0/OIDC 기반의 인증/인가 시스템을 구축할 때, 토큰 발급 및 검증 과정에서 JWT를 활용하는 경우의 장점과 보안 고려사항(예: 토큰 탈취, 리플레이 어택 방지)은 무엇이며, 이를 Spring Security에서 어떻게 구현할 수 있는지 구체적으로 설명해 주세요.