채널톡 아이콘

20,000+ RPS 병렬처리를 위한 네이버 면접관이 알려주는 Reactive 프로그래밍

트래픽이 증가할수록 응답이 느려지고, 스레드 풀이 빠르게 고갈되며, 외부 API 호출이 많아질수록 병목이 심해지는 환경에서 근본적인 해결 방법을 찾고 싶은 개발자를 위한 강의입니다. 단순히 서버를 확장하는 방식이 아니라, 구조 자체를 바꾸는 관점에서 문제를 바라보도록 돕습니다. 이 강의를 통해 먼저 전통적인 Spring MVC의 Thread per Request 모델이 어떤 한계를 가지는지 이해하게 됩니다. 왜 CPU는 남아 있는데도 처리량이 올라가지 않는지, 블로킹 I/O가 실제로 어떤 방식으로 시스템 자원을 점유하는지를 코드 레벨에서 확인합니다. 그 다음으로 Reactive Streams의 개념과 표준 스펙을 배우고, Reactor의 Mono와 Flux를 활용해 데이터 스트림을 다루는 방법을 익힙니다. 단순한 사용법이 아니라, 데이터 흐름이 어떻게 시작되고, 어떻게 소비되며, 처리량은 어떻게 조절되는지까지 실습을 통해 체득합니다. 특히 Back Pressure를 활용해 OOM이나 과부하를 방지하는 설계 방식도 직접 구현해 봅니다. 또한 Spring WebFlux의 이벤트 루프 기반 처리 구조를 이해하고, Non-Blocking I/O가 실제 요청 처리 과정에서 어떻게 동작하는지 비교 실습을 진행합니다. MVC와 WebFlux를 나란히 두고 구조적 차이를 확인하며, 언제 Reactive를 선택해야 하는지에 대한 판단 기준도 함께 정리합니다. 단순히 “비동기를 배운다”는 수준에서 끝나지 않습니다. 적은 스레드로 더 많은 요청을 처리하는 방법, 외부 API 의존성이 높은 환경에서 안정적인 흐름을 유지하는 방법, 그리고 고동시성 환경에서 처리량을 확보하는 설계 감각을 배우게 됩니다.

33명 이 수강하고 있어요.

난이도 입문

수강기한 무제한

실습 중심
실습 중심
백엔드이해하기
백엔드이해하기
스프링
스프링
Reactive Programming
Reactive Programming
실습 중심
실습 중심
백엔드이해하기
백엔드이해하기
스프링
스프링
Reactive Programming
Reactive Programming

수강 후 이런걸 얻을 수 있어요

  • Spring WebFlux 기반의 Non-Blocking 서버를 직접 설계하고 구현하는 방법

  • Mono와 Flux를 활용해 데이터 스트림을 설계하고 제어하는 능력

  • Back Pressure를 적용해 과부하를 방지하는 구조 설계 역량

  • MVC와 WebFlux의 구조적 차이를 설명하고 선택 기준을 제시하는 능력

  • 적은 스레드로 높은 동시성을 처리하는 아키텍처 설계 기법

  • 블로킹 코드와 리액티브 코드 혼용 시 발생하는 문제를 식별하고 해결하는 능력

⚡ 실시간 트래픽을 처리하는 Naver 면접관이 알려주는 Reactive 프로그래밍

  • 아래에 있는 내용은 실제 대화 내용입니다.

😁Toss 개발자 : 요즘 트래픽이 계속 터져... CPU는 괜찮은데 스레드가 버티지를 못하고 다 막혀버리네 ㅠㅠ

😄 Hong : 토스는 어떤 구조 사용하지?? Thread per Request 구조로 처리하고 있는 거야?

😁 Toss 개발자 : 응… 대부분 MVC 기반이라 외부 API 호출 많아지면 블로킹 구간 때문에 병목이 생겨. 인프라를 늘려도 근본 해결이 안 되는 느낌이야.

😄 Naver 면접관(개발자) : 저는 그래서 사실 그거 좀 싫어해요. 장단점이 명확하기는 한데... 처리량 관점에서는 리액티브 프로그래밍을 따라 갈 수는 없다고 생각해서 물론 러닝 커브는 좀 있겠지만 ㅠ

😁 Toss 개발자 : 하.. 그러게요 그래서 고민이에요. 그냥 Webflux 넣어버릴까 하는데도 기존 레거시 시스템에 다 도입하기에도 부담스럽고 ㅠㅠ

😄 Naver 면접관(개발자) : ㅋㅋㅋ 그래서 저는 일부 서비스는 WebFlux 기반의 Reactive 구조로 전환했어요. 다 진행은 안하고 그래도 일부라도 논블로킹으로 처리하니까 동일한 자원에서도 처리량이 잘 따라오기는 하더라고요

😄 Hong : 근데 Reactive는 개념만 듣고 도입하면 오히려 더 복잡해질 수도 있잖아요?

😄 Naver 면접관(개발자) : 그쵸 사실 Mono, Flux만 안다고 다 해결이 안되기는 하죠 네트워크 장애나 현실적인 문제들이 많으니깐 이벤트 루프, Back Pressure, 블로킹 코드 혼용 정도?? 이 정도는 고려해야 하지 않을까 싶어요.

😄 Naver 면접관(개발자) : 생각난김에 이거 한번 만들어 보고 싶은데 어떄요?? ㅋㅋㅋㅋ

😄 Hong : 아.... 잘못 걸렸네 ㅋㅋㅋㅋㅋㅋㅋ 이걸 의도한게 아닌데;;

😁 Toss 개발자 : 전 너무 좋죠 ㅋㅋㅋㅋ 적극 추천!!! 저도 한번 들어볼게요... MVC만 찍어내다 보니깐 요즘 뭔가 좀 폼??이 떨어진 기분 ㅋㅋㅋㅋ

🌊 백엔드 개발자는 동기 방식만 잘하면 충분할까요?

여러분은 현재 어떤 구조로 서버를 운영하고 계신가요? 전통적인 Spring MVC 기반으로 만족하고 잘 돌아가고 계시나요?? 그런데 여러분들은 많은 트래픽을 경험하고 있고 그걸 만족스럽게 처리하고 계시는건가요?? 이런 상황을 우리 가정해 볼게요.

  • 외부 API 호출이 많아지면서 응답이 느려지는 문제

  • 스레드 풀이 금방 고갈되는 상황

  • 트래픽은 늘어나는데 인프라 비용도 같이 증가하는 구조

  • 비동기 처리를 해야 하는데 코드가 점점 복잡해지는 경험

현대적인 백엔드 환경에서는 단순히 잘 동작하는 코드를 목표로 작성하지 않습니다. 이런 관점을 넘어서서 트래픽을 효율적으로 처리할 수 있는 구조 설계 능력이 점점 더 중요해지고 있습니다. 이런 부분을 여러분들은 어떻게 고민하고 구현하시나요??

이 질문에 대한 답은 바로 이 강의에 있습니다. 여러 개의 요청을 적은 스레드로 효율적으로 처리하고, Non-Blocking I/O 기반으로 시스템 자원을 극대화하는 방법. Back Pressure를 활용해 안정적인 데이터 흐름을 설계하는 방식까지 모두 이 강의를 통해 확인하시면서 Spring WebFlux에 대해 학습해 보세요.

단순히 이론만 다루는 강의가 아닙니다. 실제 다양한 소스코드를 통해서 Webflux라는 스킬을 직접 사용하고 구현하는 방식을 학습하시는 시간을 가져가시길 바라겠습니다. 🚀

🔥 Why Spring WebFlux!!

Spring WebFlux는 논블로킹(Non-Blocking) 기반의 Reactive 웹 프레임워크입니다. 전통적인 Spring MVC가 Thread per Request 모델이라면, WebFlux는 이벤트 루프 기반의 논블로킹 아키텍처를 사용합니다.

Spring WebFlux는 다음과 같은 특징을 가지고 있습니다.

  • Non-Blocking I/O

    • 요청을 처리하는 동안 스레드를 점유하지 않고, I/O 작업이 완료될 때까지 효율적으로 자원을 활용합니다. 이를 통해 적은 스레드로도 높은 동시성을 처리할 수 있습니다.

  • Reactive Streams & Back Pressure

    • Reactive Streams 표준을 기반으로 동작하며, Back Pressure를 통해 데이터 생산자와 소비자 간의 처리 속도를 조절할 수 있습니다. 과도한 데이터 유입으로 인한 시스템 과부하를 방지할 수 있습니다.

  • Event Loop 기반 처리

    • 전통적인 Thread per Request 모델이 아니라 이벤트 루프 기반 구조로 동작하여, 대규모 동시 요청 환경에서도 효율적인 처리 구조를 제공합니다.

  • High Concurrency

    • 외부 API 호출, DB I/O 등 대기 시간이 많은 작업에서도 스레드 블로킹 없이 처리하여 고트래픽 환경에서 강점을 가집니다.

  • Functional & Annotation

    • Spring MVC와 유사한 Annotation 기반 개발은 물론, RouterFunction을 활용한 함수형 스타일의 API 구성도 지원합니다.

공식 문서에서는 Spring Webflux를 다음과 같이 설명합니다.

The original web framework included in the Spring Framework, Spring Web MVC, was purpose-built for the Servlet API and Servlet containers. The reactive-stack web framework, Spring WebFlux, was added later in version 5.0. It is fully non-blocking, supports Reactive Streams back pressure, and runs on such servers as Netty, and Servlet containers.

Both web frameworks mirror the names of their source modules (spring-webmvc and spring-webflux) and co-exist side by side in the Spring Framework. Each module is optional. Applications can use one or the other module or, in some cases, both — for example, Spring MVC controllers with the reactive WebClient.


( Spring Framework에 처음 포함된 웹 프레임워크인 Spring Web MVC는 Servlet API와 Servlet 컨테이너를 기반으로 설계되었습니다. 이후 버전 5.0에서 Reactive 스택 기반의 웹 프레임워크인 Spring WebFlux가 추가되었습니다.

Spring WebFlux는 완전히 논블로킹(Non-Blocking) 방식으로 동작하며, Reactive Streams의 Back Pressure를 지원합니다. 또한 Netty와 같은 서버뿐만 아니라 기존의 Servlet 컨테이너에서도 실행될 수 있습니다.

두 웹 프레임워크는 각각의 소스 모듈 이름(spring-webmvc, spring-webflux)을 그대로 따르며, Spring Framework 내에서 나란히 공존합니다. 각 모듈은 선택적으로 사용할 수 있습니다. 애플리케이션은 둘 중 하나만 사용할 수도 있고, 경우에 따라 두 모듈을 함께 사용할 수도 있습니다. 예를 들어, Spring MVC 컨트롤러를 사용하면서 Reactive 기반의 WebClient를 함께 사용하는 방식도 가능합니다. )

여러분들은 Spring WebFlux를 단순하게 비동기라고만 이해하시면 안됩니다. Non-Blocking I/O 기반 처리, 적은 리소스로 높은 동시성 처리, Back Pressure 등등을 이해하셔야 하고 특히 MSA 환경에서 서비스 간 통신이 많은 구조라면 Reactive 방식은 선택이 아닌 필수가 되어가고 있습니다.

이 강의를 통해 Reactive 프로그래밍을 단순한 비동기가 아닌 실제 처리량을 확보하는 기술로 이해하고 실제로 테스트 해보면서 바로 활용 할 수 있는 경험을 쌓아보시기를 추천드립니다. 🚀

🚀 실제 공고는 어떤것을 요구할까요??

토스의 서버 개발자 JD

토스페이먼츠의 서버 개발자 JD

다우 키움 계열사의 서버 개발자 JD

헥토 그룹의 서버 개발자 JD

이 강의의 특징

📌 네이버 플랫폼 환경에서의 Reactive 설계 경험 기반 강의

  • 이 강의는 단순히 WebFlux 문법을 설명하는 강의가 아닙니다. 실제 대규모 트래픽과 외부 API 의존성이 높은 환경에서 어떤 문제를 겪었고, 왜 Reactive 구조를 선택했는지 그 배경부터 설명합니다.

    “왜 WebFlux인가?”에 대한 실무적인 답을 드리는 강의입니다.


📌 90% 이상 실습 중심의 커리큘럼

  • Reactive는 이론만으로 이해하기 어렵습니다. Mono와 Flux의 동작 흐름, Non-Blocking 처리 방식, 이벤트 루프 기반 구조를 직접 코드로 확인해야 비로소 감이 옵니다.

    이 강의는 대부분의 시간을 실습으로 구성하여 Reactive 흐름을 눈으로 보고, 직접 체험하면서 이해하도록 설계되었습니다.


📌 MVC와 WebFlux의 구조적 차이를 통해 확인하는 레벨업

  • “비동기”라는 단어 하나로는 설명이 부족합니다. Thread per Request 모델의 한계, 블로킹 구간이 만드는 병목, 논블로킹 아키텍처의 동작 방식 등을 통해 차별화된 개발자 커리어를 준비하실 수 있습니다.


📌 주니어에게는 한 단계 위의 시야를 제공

  • 시니어에게는 아키텍처 선택 기준을

    단순 CRUD 서버를 만드는 개발자를 넘어, 트래픽과 자원 효율을 고려하는 설계 역량을 키울 수 있습니다.

    WebFlux는“유행 기술이 아니라 고동시성 환경에서의 선택지 중 하나를 제대로 이해하는 과정입니다.

🤭 이 강의를 함께 준비해주신 네이버 면접관님!

Ande (Naver)

10년차 백엔드 서버 개발자

강사님들의 이름을 클릭하여 더 자세한 이력도 확인해보세요!

제가 알고 있는 다양한 기술과 스택을 다른분들과 공유하고 의논하고 싶어서 이렇게 강의를 만들게 되었습니다. 제 노하우를 다른분들이 습득하시고 저와같은 실수를 하지 않았으면 합니다.

지인 추천(카카오 면접관)으로 이렇게 함께 합류하게 되었고 Hong의 주도하에 함께 촬영을 하게 되었습니다., 최대한 많은 내용을 녹여드리고자 노력하였으니. 많은관심 부탁드립니다. 또한 질문도 편하게 부탁드립니다. 제가 최대한 확인하고 답변드리도록 할게요. 감사합니다.

[現] 네이버 서버(본사) 개발자

[前] 신세계 그룹소속 백엔드 개발자

[前] 헬스케어 스타트업 서버 개발자

[前] 서울 4년제 컴퓨터공학 전공

참고 사항

실습 환경

  • OS

    • Apple M3 Air

    • Docker version 28.0.0, build f9ced58158

    • java 17.0.12 2024-07-16 LTS

여러분들의 커리어를 준비해나가기 위한 오픈 채팅방을 운영하고 있습니다. 많은 관심 부탁드려요!

이런 분들께
추천드려요

학습 대상은
누구일까요?

  • 트래픽이 늘어날수록 스레드 풀 고갈 문제로 불안한 백엔드 개발자

  • MVC 구조의 한계를 느끼지만 대안을 찾지 못한 Spring 개발자

  • Reactive를 도입하고 싶지만 개념이 막연해 시도조차 못 하는 개발자

  • 인프라 확장으로만 문제를 해결해 비용 부담이 커지는 팀의 개발자

  • MSA 환경에서 서비스 간 통신 지연 문제로 고민하는 플랫폼 개발자

  • 고동시성 환경 설계 경험이 부족해 커리어 성장에 갈증을 느끼는 개발자

안녕하세요
Hong입니다.

7,968

수강생

498

수강평

143

답변

4.7

강의 평점

27

강의

자기 소개

집에서 빈둥대다 개발에 흥미를 느껴 개발 공부를 시작하였고 현재는 판교에서 플랫폼 서버 개발을 담당하여 진행하고 있습니다. 제가 공부를 했던 방법과 실무에서 접하실 수 있는 여러가지 문제점들과 해결책을 여러분들에게 제공하고 싶어 지식공유자 활동을 이어나가고 있습니다.

 

강의는 오로지 저만의 지식을 통해 만들어지지 않습니다. 모든 강의는 함께하시는 분들이 계십니다.

 

지식공유자 경력

[前] 샌드박스IP 관련 블록체인 개발자

[前] 메타버스 백엔드 개발자

[] 판교에서 고여가는 서버 개발자

 

인터뷰 이력

기타 문의

  • unduck2022@gmail.com

더보기

커리큘럼

전체

25개 ∙ (6시간 0분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!

Hong님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!

비슷한 강의

같은 분야의 다른 강의를 만나보세요!

얼리버드 할인 중

₩39

50%

₩99,000