Skip to content
Beside the Wheel
Search
Ctrl
K
Cancel
Email
GitHub
Select theme
Dark
Light
Auto
공부
(5)
spot 인스턴스에서 서버 가용성 개선하기
eBPF로 서버 성능 Profiling하는 법: Pyroscope의 구현 살펴보기
정수론부터 RSA까지
strace로 shaka-packager 버그 추적
Kubernetes The Hard Way
TIL
(937)
AI
(43)
DevOps
(230)
Network
(61)
OS
(155)
개발
(113)
과학
(1)
데이터베이스
(64)
서버
(72)
수학
(20)
알고리즘
(24)
암호학
(32)
언어
(95)
컴퓨터구조
(3)
코드
(24)
독후감
(43)
과학
(1)
사회
(2)
산문
(3)
소설
(12)
인문
(11)
자기계발
(7)
철학
(7)
생각
(6)
고민
변화에 대하여
의식의 영역에 대하여
본질을 보려면
짧은 생각들
소유냐 존재냐
회고
(14)
2022.03-04 대덕소마고 입학소감/다짐
2022.05-08 프로젝트와 인간관계
2022.09-2023.02 불안과 판단
2023.03-07 DMS 리더 회고
2023.08-11 나는 누구인가?
2023.12 더 많은 걸 배우기 위한 경험
2024.01-02 회사 인턴 회고
2024.03-04 고3 근황
2024.05-07 고등학교 마무리
2024.08-12 첫 회사
2025.01-03 입출력
2025.03-08 효능감이란 무엇일까
2025.09-12 연말회고
2026.01-08 담론
Email
GitHub
Select theme
Dark
Light
Auto
태그: webflux
총 7개의 글이 있습니다.
@Controller
webflux
2024. 5. 22.
@Controller로 webFlux를 사용해보자. 프로젝트 생성 스프링부트 프로젝트를 생성하여 `build.gradle`에 Dependencies를 설정한다. 필요한 의존성과, webflux 의존성을 설정해준다. groovy implementation 'org.springframework.boot:spring-boot-starter-webflux' Flux 반환 유형 `Flux`는 Reactive Streams의 Publisher를 구현한 N개 요소의 스트림을 표현하는 Reactor 클래스이다. 기본적으로 text/plain으로 응답이 반환되지만, Server-Sent Event나 JSON Stream으로 반환할 수도 있다. Flux의 반환 유형은 클라이
R2DBC
r2dbc
2024. 5. 22.
R2DBC는 Reactive Relational Database Connectivity의 줄임말이다. R2DBC는 관계형 데이터베이스 접근을 위해 구현해야 할 리액티브 API를 선언하는 스펙이다. JDBC는 완전한 블로킹 API이었고, RDBMS는 NoSQL에 비해 자체 리액티브 클라이언트를 가지고 있는 경우가 적어서 비동기 통신을 하기 힘들었다. 반면에 R2DBC는 Non-Blocking 관계형 데이터베이스 드라이버와 잘 동작하도록 하는 것을 목적으로 만들어졌다. 쿼리를 소켓에 기록하고 스레드는 응답이 수신될 때까지 다른 작업을 계속 처리하여 리소스 오버헤드를 줄이는 방식으로 적은 스레드, 하드웨어 리소스로 동시 처리를 제어할 수 있도록 한다. 하지만, R2DBC는 개념적으로 쉬운 것을 목표로 하므로
R2DBC 사용
r2dbc
2024. 5. 22.
R2DBC를 사용하기 위해서는 의존성을 먼저 추가해주어야 한다. 데이터베이스에 맞는 R2DBC driver와 그 구현체의 의존성을 추가해주자. kotlin implementation("org.springframework.boot:spring-boot-starter-webflux") implementation("org.springframework.boot:spring-boot-starter-data-r2dbc") implementation("com.github.jasync-sql:jasync-r2dbc-mysql:2.0.8") 그리고 yml 설정을 해준다. yml spring: r2dbc: url: r2dbc:pool:mysql://localhost:3306/test
RouterFunctions
webflux
2024. 5. 22.
RouterFunctions로 webFlux를 사용해보자. 기본적인 원리와 방식은 @Controller에서 모두 설명하였으며 같은 기능의 코드를 테스트할 것이기 때문에 해당 글을 먼저 보고 오는 것을 추천한다. 우선 GET("/")으로 Flux의 “Hello World"를 반환하는 Routing을 정의한다. java @Component public class HelloHandler { RouterFunction routes() { return route(GET("/"), req -ok().body(Flux.just("Hello", "World!"), String.class)); } } 스트림 반환은 아래와 같이 한다. `
WebClient
webflux
2024. 5. 22.
외부 서비스와 HTTP로 통신해야 하는 경우 가장 흔한 방법은 RestTemplate을 사용하는 것이다. RestTemplate은 Spring 애플리케이션에서 가장 일반적인 웹 클라이언트지만 블로킹 API이므로 리액티브 기반의 애플리케이션에서 성능을 떨어트리는 원인이 될 수 있다. 대신 Spring5에서 추가된 WebClient를 사용하면 reactive 기반의 비동기-논블로킹 통신을 구현할 수 있다. kotlin webClient .get() .uri("/users/" + userId) .retrieve(); 기본 요청 방법 http method는 webClient의 get, post, put, head 등의 메서드로 지정해준다.
WebFilter
webflux
2024. 5. 22.
WebFilter는 Spring WebMVC의 Filter에 대응되는 클래스이다. WebFilter는 Spring Web package에 있는 클래스이고, WebFlux를 사용할 때만 동작한다. RequestContextWebFilter kotlin import org.springframework.web.server.ServerWebExchange import org.springframework.web.server.WebFilter import org.springframework.web.server.WebFilterChain import reactor.core.publisher.Mono class RequestContextWebFilter( private val requestContex
WebFlux
webflux
2024. 5. 22.
Spring WebFlux는 논블로킹(Non-Blocking) 런타임에서 리액티브 프로그래밍을 할 수 있도록 하는 새로운 Web 프레임워크이다. Spring 5에서 추가되었다. 지금까지 Spring MVC는 서블릿 컨테이너에 `Servlet API`를 기반으로 한 프레임워크이었지만, Spring WebFlux는 Servlet API를 사용하지 않고 `Reactive Streams`와 그 구현체인 `Reactor`를 기반으로 한 새로운 HTTP API로 구현되어 있다. 런타임으로서 Netty, Undertow(서블릿 컨테이너가 아닌 방향)와 같은 WAS로 NonBlocking을 사용할 수 있다. 또한 Servlet 3.1에서 도입된 NonBlocking API를 사용하여 Tomcat, Je