DevTales
close
프로필 배경
프로필 로고

DevTales

  • 분류 전체보기 (83)
    • Lang (49)
      • Java (21)
      • Kotlin (3)
      • C (12)
      • Go (9)
      • Python (4)
    • Spring (13)
      • Data (2)
      • Kafka (2)
      • Security (0)
      • Webflux (9)
    • Infra (9)
      • Database (3)
      • Middleware (0)
      • Container (1)
      • OS (5)
    • Build (0)
    • CS (3)
      • Network (1)
      • Security (1)
      • Architecture (1)
    • Leaner's High (5)
    • 기타 (4)
  • 홈
  • 방명록
WebClient

WebClient

HTTP Client 기존에는 RestTemplate을 사용하여 동기 방식으로 HTTP 요청을 수행했지만, 요청량이 증가할수록 스레드가 차오르고 확장성이 떨어지는 문제가 발생했습니다. 이러한 요구를 해결하기 위해 Spring WebFlux에서는 완전한 논블로킹(Non-Blocking) 기반의 HTTP 클라이언트인 WebClient를 제공합니다. WebClient는 Reactor 기반의 함수형(Functional)·유창한(Fluent) API 스타일을 갖추고 있어, 개발자가 스레드와 동시성 처리에 직접 개입하지 않고도 비동기 로직을 선언적으로 구성할 수 있다는 장점이 있습니다. 또한 서버 측에서 요청과 응답을 인코딩/디코딩할 때 사용하는 것과 동일한 코덱(codec)을 활용하며, 스트리밍까지 지원하기 때문..

  • format_list_bulleted Spring/Webflux
  • · 2025. 12. 11.
  • textsms
DispatcherHandler

DispatcherHandler

DispatcherHandler Spring WebFlux에서 WebFluxConfigurationSupport를 통해서 DispatcherHandler를 생성하고 이를 "webHandler"라는 이름의 Bean으로 등록한다는 것을 확인했습니다. 또한 HttpHandlerAutoConfiguration는 "webHandler" 라는 이름의 Bean을 찾아서 WebHttpHandlerBuilder에 조합하고, 최종적으로 HttpHandler Bean을 생성해 등록한다는 것도 확인했습니다. 이번 글에서는 DispatcherHandler에 대해 깊게 살펴보겠습니다. Spring WebFlux는 Spring MVC와 마찬가지로 Front Controller 패턴을 따릅니다. 이때 WebFlux 쪽에서 Fron..

  • format_list_bulleted Spring/Webflux
  • · 2025. 12. 10.
  • textsms
Spring WebFlux

Spring WebFlux

Spring WebFlux Spring portfolio에서 Spring WebFlux에 대해 간단히 정리해보았는데, 이번 글에서는 한 단계 더 들어가 WebFlux가 내부적으로 어떻게 요청을 처리하는지, 그리고 어떤 컴포넌트들이 이를 구성하고 있는지 중심으로 깊게 알아보려고 합니다. Spring WebFlux는 HTTP 요청을 처리할 때 특정 서버 구현체에 종속되지 않고, Netty든 Tomcat이든 어떤 서버를 사용하더라도 동일한 처리 방식으로 애플리케이션을 실행할 수 있는 추상화 계층을 제공합니다. 실제 소켓 I/O 처리와 HTTP 프로토콜 레벨의 작업은 서버가 담당하며, WebFlux는 그 위에서 애플리케이션 로직만 관여하는 구조입니다. WebFlux에서 가장 많이 사용되는 서버 구현체는 Nett..

  • format_list_bulleted Spring/Webflux
  • · 2025. 12. 9.
  • textsms
Reactor operators

Reactor operators

Reactor operators Reactor는 Reactive Streams 사양을 구현한 라이브러리 중 하나이며, 일반적으로 Project Reactor를 의미하는 용어로 사용됩니다. Reactor는 비동기 데이터 흐름을 Mono, Flux 스트림 형태로 다루며, 이를 변환하고 조합하기 위한 다양한 operator(연산자) 를 제공합니다. 이번 글에서는 그 operator(연산자)들에 대해 보다 자세히 살펴보겠습니다. 리액티브 스트림즈에 관한 자세한 내용은 Reacative Programing에서 다뤘습니다. Subscribe Reactor에서 Publisher(Flux/Mono)는 음료가 담긴 컵과 같습니다. 컵 안에는 음료가 준비되어 있어도 빨대를 꽂지 않으면(= subscribe()) 음료는 입..

  • format_list_bulleted Spring/Webflux
  • · 2025. 12. 8.
  • textsms
Netty - ByteBuf

Netty - ByteBuf

ByteBuf Netty로 서버나 클라이언트 코드를 작성하다 보면 거의 반드시 마주치는 객체가 있습니다. 바로 ByteBuf입니다.ChannelHandler에서 channelRead()를 구현할 때도, Encoder, Decoder를 만들 때도, 실제로 오가는 데이터는 모두 ByteBuf 형태로 전달됩니다. 처음 보면 Java NIO의 ByteBuffer와 비슷해 보이지만, 막상 다뤄보면 구조도 다르고 사용 방식도 크게 다르다는 걸 느끼게 됩니다. 특히 readerIndex, writerIndex, zero-copy 지원, 메모리 풀링 같은 개념은 ByteBuffer에는 없는 것들입니다. 그래서 이 글에서는 Netty ByteBuf가 무엇이고, 왜 굳이 ByteBuffer 대신 이런 별도의 타입을 제공하..

  • format_list_bulleted Spring/Webflux
  • · 2025. 12. 3.
  • textsms
Netty Server

Netty Server

Netty Server 이번 글에서는 앞서 Netty - EventLoop와 Channel 에서 살펴본 Netty로 간단한 echo server를 만들어보고, Codec과 Bootstrap에 대해 살펴보겠습니다. Netty - EventLoop와 ChannelNetty 고성능 네트워크 서버를 설계할 때 가장 먼저 맞닥뜨리는 한계는 스레드 기반 동시성 모델의 비효율성입니다. 요청마다 스레드를 생성하거나, 블로킹 I/O로 인해 스레드가 대기 상태에 머무freshdev.tistory.com BaseEchoServer @Slf4jpublic class BaseEchoServer { public static void main(String[] args) { EventLoopGroup parentG..

  • format_list_bulleted Spring/Webflux
  • · 2025. 12. 3.
  • textsms
  • navigate_before
  • 1
  • 2
  • navigate_next
전체 카테고리
  • 분류 전체보기 (83)
    • Lang (49)
      • Java (21)
      • Kotlin (3)
      • C (12)
      • Go (9)
      • Python (4)
    • Spring (13)
      • Data (2)
      • Kafka (2)
      • Security (0)
      • Webflux (9)
    • Infra (9)
      • Database (3)
      • Middleware (0)
      • Container (1)
      • OS (5)
    • Build (0)
    • CS (3)
      • Network (1)
      • Security (1)
      • Architecture (1)
    • Leaner's High (5)
    • 기타 (4)
최근 글
인기 글
최근 댓글
태그
  • #tucker의 go언어 프로그래밍
  • #Java의 정석
  • #혼자 공부하는 C언어
  • #WebFlux
  • #R2DBC
  • #Kotlin In Action
  • #점프 투 파이썬
  • #Netty
  • #비동기
  • #java
전체 방문자
오늘
어제
전체
Copyright © Kakao Corp. All rights reserved.
Designed by 티스토리

티스토리툴바