
Spring WebFlux๋ Reactive Stream API๋ฅผ ์ฌ์ฉํ์ฌ non-blocking, asynchronous๋ฅผ ์ง์ํ๋ ๋น๋๊ธฐ ์คํ๋ง ์น ํ๋ ์์ํฌ์ด๋ค.
์ด๋ ๋๋์ ์น ํธ๋ํฝ (I/O๊ฐ ๋ง์ ์น ์๋น์ค ๋ก์ง)์์ MVC์ ๋๋นํ์ฌ ํจ์จ์ ์ด๊ณ ๋์ ์ฑ๋ฅ์ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ํ์ฉ๋๊ณ ์๋ค.
๋งค๋ฒ WebFlux์ ์ฑ๋ฅ์ด ์ข๋ค๊ณ ๋ ํ ์ ์์!
๐ ๊ทธ๋ฌ๋ฉด ์ฃผ๋ก ์ด๋์์ ํ์ฉ๋๋...?
- ๋ง์ดํฌ๋ก์๋น์ค์์ ๋ค์ํ ๋์ ์์ฒญ์ ์ํํ๋ gateway server
- ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ์ ์ํ ์น์์ผ
- ๋๋์ I/O๋ฅผ ์ฒ๋ฆฌํ๋ ์ค์๊ฐ ์ฑํ ์๋น์ค
Spring MVC vs Spring WebFlux
Spring ๊ณต์ ํ์ด์ง์ ๋์์๋ ํ๋ฅผ ํตํด ๋์ ์ฐจ์ด์ ์ ์ ์ ์๋ค.
WebFlux๋ ๋น๋๊ธฐ/๋ ผ๋ธ๋กํน์ด๊ณ , MVC๋ ๋๊ธฐ/๋ธ๋กํน์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
MVC๋ Client์ Http Request์ ๋ํด Queue์ ์ง์ด๋ฃ๊ณ , ์์ฒญ์ thread ๊ฐ์๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค๊ณ ํ์ํ ๋ ์ฌ์ฉํ๋ thread pool๋ฅผ ํตํด ์ฒ๋ฆฌํ๋ ํ๋ฆ์ด๋ค. ์์ฒญ์ด ๋ง์ผ๋ฉด ๋๊ธฐ์ด์ ๋ฃ๊ณ , ๋๊ธฐ์ด๊น์ง ๊ฐ๋ ์ฐจ๊ฒ ๋๋ฉด ๊ทธ ๋ค์ ์์ฒญ๋ค์ ์คํจ์ฒ๋ฆฌ ํ๊ฒ๋ ํ๋ค.
๋๊ธฐ์ ์ผ๋ก DB์ ๋ฐ์ดํฐ ์์ฒญ์ ํ๋ ๊ฒ๊น์ง ํ๋์ thread์์ ์งํํ๊ฒ ๋๋ค. ์ด๋ ๋ฌธ์ ํ์ ์ด๋ ํ๋ฆ์ด ์ง๊ด์ ์ด๋ผ๋ ์ฅ์ ์ ๊ฐ์ง๋ค.
ํ์ง๋ง ์์ฒญ์ด ๋ง์์ง๋ฉด ์์ ๋งํ๋ฏ์ด ์คํจ์ฒ๋ฆฌ๊ฐ ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๊ณ ๋ คํด์ผํ๋ค.
๋ฐ๋ฉด์ Reactive์ ๋ ผ๋ธ๋กํน์ด๊ธฐ์ ๋๋์ ์ ์์ ๋ํด ๋์์ฒ๋ฆฌํ๋๋ฐ ์ ์ฉํ๋ค.
๊ทธ ์ด์ ๋ ๋น๋๊ธฐ/๋ ผ๋ธ๋กํน ๋ฐ IO-Multiplexing ๊ธฐ๋ฐ ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ์ฌ์ฉํ๋ Netty ํ๋ ์์ํฌ ๋๋ฌธ์ด๋ค.
Netty
- ๋น๋๊ธฐ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ ๋คํธ์ํฌ ์ดํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ
- ๋ค์ํ ๋คํธ์ํฌ ํ๋กํ ์ฝ ์ง์
์ฐธ๊ณ ์๋ฃ
https://docs.spring.io/spring-framework/reference/web/webflux.html
'Spring > Spring WebFlux' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๐ Reactive] 1. Reactive ์์คํ ๊ณผ Reactive ํ๋ก๊ทธ๋๋ฐ (0) | 2024.12.16 |
---|---|
[WebFlux] Reactor ์ฐ์ฐ์ ์ ๋ฆฌ (0) | 2024.07.17 |
[WebFlux] flatMap๊ณผ map์ ์ฐจ์ด (0) | 2024.07.17 |
[WebFlux] Reactive Streams (0) | 2024.07.03 |
[WebFlux] ๋น๋๊ธฐ/๋๊ธฐ, non-blocking/blocking, CompletableFuture (0) | 2024.07.03 |