Webflux 소개

2024. 9. 17. 16:08·프레임워크/자바 스프링

Spring WebFlux는 Reactive Stream API를 기반으로 한 비동기, 논블로킹 웹 프레임워크로, 대량의 트래픽과 I/O가 많은 환경에서 기존 서블릿 기반의 Spring MVC보다 더 효율적인 성능을 제공합니다. WebFlux의 핵심 키워드는 Reactive Stream, Non-blocking, Asynchronous입니다.

주요 활용 사례

  • 마이크로서비스 게이트웨이(Gateway)
  • WebSocket
  • 실시간 채팅 서비스

하지만 모든 상황에서 Spring WebFlux가 최적은 아닙니다. 특히 CPU Bound 작업(연산이나 계산이 주가 되는 경우)에서는 Spring MVC와 같은 동기 처리 방식이 더 나은 성능을 발휘할 수 있습니다. 반면, I/O Bound 작업(입출력 작업이 많은 경우)에서는 WebFlux의 비동기적 처리 방식이 더 유리할 수 있습니다.

핵심 개념 설명

1. CPU Bound vs I/O Bound

  • CPU Bound: 계산 및 연산에 중점을 둔 작업. WebFlux는 I/O 작업에 최적화되어 있으므로 CPU Bound 작업에서는 Spring MVC가 더 적합할 수 있습니다.
  • I/O Bound: 입출력에 관련된 작업. WebFlux의 비동기 논블로킹 처리가 큰 장점을 발휘합니다.

2. Sync/Async

  • 동기(Sync): 요청과 응답이 순차적으로 진행됩니다. 단순한 작업 흐름에서 적합할 수 있지만, I/O가 많을 때는 비효율적일 수 있습니다.
  • 비동기(Async): 요청과 응답이 비동기적으로 처리되어 더 높은 동시성 처리가 가능합니다.

3. Blocking/Non-Blocking

  • Blocking: I/O 작업이 완료될 때까지 대기하는 방식. 자원을 비효율적으로 사용할 수 있습니다.
  • Non-Blocking: 작업이 완료될 때까지 대기하지 않고, 다른 작업을 처리할 수 있어 효율적입니다.

4. Project Reactor (Reactive Stream)

  • Spring WebFlux는 Project Reactor 기반으로, 리액티브 스트림 API를 사용하여 비동기 데이터 처리를 제공합니다. 이는 높은 성능과 동시성을 요구하는 애플리케이션에서 중요한 역할을 합니다.

5. Spring WebFlux

  • 비동기 논블로킹 웹 프레임워크로, I/O 작업이 많은 대규모 트래픽 처리에 최적화되어 있습니다.

6. WebClient

  • Spring WebFlux에서 제공하는 비동기 HTTP 클라이언트로, 외부 서비스와 통신할 때 논블로킹 방식으로 요청을 처리할 수 있습니다.

결론

Spring WebFlux는 I/O Bound 작업에서 특히 유용하며, 비동기 처리와 논블로킹 특성으로 대규모 트래픽과 리소스 효율성이 중요한 애플리케이션에서 높은 성능을 발휘합니다. 하지만 CPU Bound 작업이나 명확한 흐름이 요구되는 환경에서는 여전히 Spring MVC와 같은 동기 방식이 더 적합할 수 있습니다.

저작자표시 (새창열림)

'프레임워크 > 자바 스프링' 카테고리의 다른 글

Webflux - reactor  (0) 2024.09.18
Webflux - spring mvc vs webflux  (1) 2024.09.18
접속자 대기열 시스템 #1: 시스템 설계와 Spring WebFlux, Redis  (3) 2024.09.09
대규모 트래픽 게시판 구축 시리즈 #14: 배포 자동화  (1) 2024.09.07
대규모 트래픽 게시판 구축 시리즈 #13: 알림 서비스 구현과 통합 - AWS SNS 및 Slack  (0) 2024.09.07
'프레임워크/자바 스프링' 카테고리의 다른 글
  • Webflux - reactor
  • Webflux - spring mvc vs webflux
  • 접속자 대기열 시스템 #1: 시스템 설계와 Spring WebFlux, Redis
  • 대규모 트래픽 게시판 구축 시리즈 #14: 배포 자동화
hyeseong-dev
hyeseong-dev
안녕하세요. 백엔드 개발자 이혜성입니다.
  • hyeseong-dev
    어제 오늘 그리고 내일
    hyeseong-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (284)
      • 여러가지 (108)
        • 알고리즘 & 자료구조 (72)
        • 오류 (4)
        • 이것저것 (29)
        • 일기 (2)
      • 프레임워크 (39)
        • 자바 스프링 (39)
        • React Native (0)
      • 프로그래밍 언어 (38)
        • 파이썬 (30)
        • 자바 (3)
        • 스프링부트 (5)
      • 운영체제 (0)
      • DB (17)
        • SQL (0)
        • Redis (17)
      • 클라우드 컴퓨팅 (2)
        • 도커 (2)
        • AWS (0)
      • 스케쥴 (65)
        • 세미나 (0)
        • 수료 (0)
        • 스터디 (24)
        • 시험 (41)
      • 트러블슈팅 (1)
      • 자격증 (0)
        • 정보처리기사 (0)
      • 재태크 (5)
        • 암호화폐 (5)
        • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    spring
    WebFlux
    완전탐색
    docker
    AWS
    프로그래머스
    celery
    EC2
    RDS
    취업리부트
    Docker-compose
    Spring Boot
    DP
    Python
    java
    SAA
    파이썬
    mybatis
    Spring WebFlux
    reactor
    자바
    OOP
    그리디
    FastAPI
    시험
    #개발자포트폴리오 #개발자이력서 #개발자취업 #개발자취준 #코딩테스트 #항해99 #취리코 #취업리부트코스
    항해99
    Redis
    ecs
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeseong-dev
Webflux 소개
상단으로

티스토리툴바