๐Ÿถ ๋™๊ธฐ ๋น„๋™๊ธฐ์™€ ๋ธ”๋กœํ‚น I/O ๋…ผ๋ธ”๋กœํ‚น I/O์™€ Spring MVC vs Spring Webflux ๋น„๊ต

์œ ์‚ฌ๊ฐœ๋ฐœ์žยท2024๋…„ 4์›” 15์ผ
0

์ด๋ก ๊ณต๋ถ€

๋ชฉ๋ก ๋ณด๊ธฐ
3/10
post-thumbnail

๋™๊ธฐ, ๋ธ”๋กœํ‚น I/O์™€ ๋น„๋™๊ธฐ, ๋…ผ๋ธ”๋กœํ‚น I/O๋ฅผ ์นดํŽ˜์—์„œ์˜ ์ ์›๊ณผ ๊ณ ๊ฐ์˜ ์ž…์žฅ์œผ๋กœ ์„ค๋ช…ํ•ด๋ณด๋ฉด ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“– ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ

๐Ÿ“š ๋™๊ธฐ

  • ๋™๊ธฐ๋ž€ ์š”์ฒญ ์ž‘์—…๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
  • ์ ์›์ด ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ฃผ๋ฌธ๋งŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค.
  • ํ•œ ์†๋‹˜์ด ์ฃผ๋ฌธํ•˜๊ณ  ์ปคํ”ผ๋ฅผ ๋ฐ›๊ธฐ ์ „ ๊นŒ์ง€ ๋‹ค๋ฅธ ์†๋‹˜์˜ ์ฃผ๋ฌธ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.
  • ๋ชจ๋“  ์ฃผ๋ฌธ์ด ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌ๋œ๋‹ค.
  • ๊ณ ๊ฐ์ด ๋”ธ๊ธฐ ๋ธ”๋ Œ๋””๋“œ ์š”๊ฑฐํŠธ๋ฅผ ์ฃผ๋ฌธํ–ˆ๋‹ค๋ฉด ๊ธธ๊ณ  ๊ธด ์ฃผ๋ฌธ-์ œ์ž‘-์ˆ˜๋ น์˜ ๊ณผ์ •์ด ๋๋‚˜์•ผ๋งŒ ๋‹ค์Œ ๊ณ ๊ฐ์ด ์ฃผ๋ฌธ์„ ํ•  ์ˆ˜๊ฐ€ ์žˆ๊ฒŒ ๋œ๋‹ค. ๋”ธ๊ธฐ ๋ธ”๋ Œ๋””๋“œ ์š”๊ฑฐํŠธ๋Š” ์ œ์ž‘ ๊ณผ์ •์—์„œ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— (๋งˆ์น˜ DB I/O๋กœ ์ธํ•œ ์œ ํœด์ƒํƒœ) ๋’ค์— ๊ณ ๊ฐ์€ ์†์ด ํƒˆ ๊ฑฐ๋‹ค.

๐Ÿ“š ๋น„๋™๊ธฐ

  • ๋น„๋™๊ธฐ๋ž€ ์š”์ฒญ ์ž‘์—…๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
  • ์ ์›์€ ์นดํŽ˜์— ๋“ค์–ด์˜จ ์—ฌ๋Ÿฌ ๊ณ ๊ฐ์˜ ์ฃผ๋ฌธ์„ ๋ฐ›์€ ํ›„ ๊ฐ๊ฐ์˜ ์ฃผ๋ฌธ์„ ๋ฐ”๋ฆฌ์Šคํƒ€์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฒˆํ˜ธํ‘œ๋ฅผ ํ†ตํ•ด ๋‚˜์ค‘์— ์™„์„ฑ๋˜๋ฉด ๋ฒˆํ˜ธํ‘œ๋ฅผ ํ†ตํ•ด ์•ˆ๋‚ด ํ•ด์ค€๋‹ค.
  • ๋ฐ”๋ฆฌ์Šคํƒ€๊ฐ€ ์ปคํ”ผ๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ์„ ๋•Œ๋„ ์ ์›์€ ๊ณ„์†ํ•ด์„œ ๋‹ค๋ฅธ ๊ณ ๊ฐ์˜ ์ฃผ๋ฌธ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ชจ๋“  ์ฃผ๋ฌธ์ด ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ๊ณ ๊ฐ์ด ์ œ์ž‘๊ณผ์ •์ด ๊ธด ๋”ธ๊ธฐ ๋ธ”๋ Œ๋””๋“œ ์š”๊ฑฐํŠธ๋ฅผ ์ฃผ๋ฌธํ–ˆ๋‹ค๊ณ  ํ•ด๋„ ์ œ์ž‘์€ ๋ฐ”๋ฆฌ์Šคํƒ€๊ฐ€ ํ•˜๊ณ  ์ ์›์€ ๋ฒˆํ˜ธํ‘œ๋ฅผ ํ†ตํ•ด ๋‚˜์ค‘์— ์Œ๋ฃŒ๊ฐ€ ์™„์„ฑ๋˜์—ˆ์„๋•Œ ์•ˆ๋‚ด๋ฅผ ํ•ด์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธด ์ œ์ž‘๊ณผ์ •์„ ๋ฌด์‹œํ•˜๊ณ  ๋‹ค๋ฅธ ์ฃผ๋ฌธ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“– ๋ธ”๋กœํ‚น I/O์™€ ๋…ผ๋ธ”๋กœํ‚น I/O

๐Ÿ“š ๋ธ”๋กœํ‚น I/O

  • ๋ธ”๋กœํ‚น I/O๋ž€ ์š”์ฒญ์— ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ ์ด๋‹ค.
  • ์ ์›์—๊ฒŒ ์ปคํ”ผ๋ฅผ ๋ฐ›๊ธฐ ์ „ ๊นŒ์ง€ ์•„๋ฌด์ง“๋„ ๋ชปํ•˜๊ณ  ๋ถ€๋™์ž์„ธ๋กœ ๋ฉˆ์ถฐ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ ์ด๋‹ค.
  • ๊ณ ๊ฐ์€ ์ปคํ”ผ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„ ๋™์•ˆ ๋‹ค๋ฅธ ์ผ์„ ํ•  ์ˆ˜ ์—†๋‹ค.

๐Ÿ“š ๋…ผ๋ธ”๋กœํ‚น I/O

  • ๋…ผ๋ธ”๋กœํ‚น I/O๋ž€ ์š”์ฒญ์— ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๋Š” ๊ฒƒ ์ด๋‹ค.
  • ๊ณ ๊ฐ์ด ์ ์›์—๊ฒŒ ์ฃผ๋ฌธ์„ ํ•œ ๋’ค ๋ฒˆํ˜ธํ‘œ๋ฅผ ๋ฐ›๊ณ , ํ•  ์ผ์„ ํ•˜๋‹ค๊ฐ€ ๋ฒˆํ˜ธํ‘œ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ์ปคํ”ผ๋ฅผ ๋ฐ›์œผ๋Ÿฌ ๊ฐ€๋Š” ๊ฒƒ ์ด๋‹ค.
  • ๊ณ ๊ฐ์€ ์ปคํ”ผ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„ ๋™์•ˆ ๋‹ค๋ฅธ ์ผ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“š ์ •๋ฆฌ

๋™๊ธฐ ๋น„๋™๊ธฐ๋Š” ์–ด๋–ค ์ž‘์—…์˜ ์ˆœ์ฐจ์ฒ˜๋ฆฌ๋ฅผ ํ• ์ง€ ๋ง์ง€์— ๋Œ€ํ•œ ๊ฐœ๋…์ด๋‹ค.
๋ธ”๋กœํ‚น I/O์™€ ๋…ผ๋ธ”๋กœํ‚น I/O๋Š” ์–ด๋–ค ์ž‘์—…์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋‹ค๋ฆด์ง€ ๋ง์ง€์— ๋Œ€ํ•œ ๊ฐœ๋…์ด๋‹ค.

๐Ÿ“– Spring WebMVC

  • ์„œ๋ธ”๋ฆฟ API๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์ „ํ†ต์ ์ธ ์›น ํ”„๋ ˆ์ž„์›Œํฌ
  • ๊ฐ ์š”์ฒญ์ด ์“ฐ๋ ˆ๋“œ ํ’€๊ณผ ๋ณ„๋„์˜ ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ์ฒ˜๋ฆฌ ๋˜๋Š” ๋™๊ธฐ์‹ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉ
  • ์ผ๋ฐ˜์ ์œผ๋กœ ๋ธ”๋กœํ‚น I/O๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌ
  • ์š”์ฒญ๋‹น ์“ฐ๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ฏ€๋กœ ๋งŽ์€ ์ˆ˜์˜ ๋™์‹œ ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ํ™•์žฅ์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ.

๐Ÿ“– Spring WebFlux

  • ๋ฆฌ์•กํ‹ฐ๋ธŒ ์ŠคํŠธ๋ฆผ์ฆˆ ์‚ฌ์–‘์„ ๊ตฌํ˜„ํ•˜์—ฌ ๋น„๋™๊ธฐ ๋ฐ ๋…ผ๋ธ”๋Ÿฌํ‚น ๋ฐฉ์‹์„ ์ œ๊ณต
  • ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜์–ด ์ ์€ ์ˆ˜์˜ ๊ณ ์ •๋œ ์Šค๋ ˆ๋“œ๋กœ ๋งŽ์€ ์ˆ˜์˜ ๋™์‹œ ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•จ.
  • ๋…ผ๋ธ”๋กœํ‚น I/O๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, Reactive Streams API๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•จ
  • ์ ์€ ์ˆ˜์˜ ์Šค๋ ˆ๋“œ๋กœ ๋Œ€๋Ÿ‰์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๋” ์ ํ•ฉํ•œ ๋ฐ˜์‘ํ˜• ๋ฐ ๋…ผ๋ธ”๋กœํ‚น ์ ‘๊ทผ ๋ฐฉ์‹

๐Ÿ“š ์ •๋ฆฌ

์Šคํ”„๋ง MVC์—์„œ๋Š” ๋™๊ธฐ ๋ธ”๋Ÿฌํ‚น ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋™์‹œ์— ๋ฐ›์„ ์ˆ˜ ๋Š” ์žˆ์ง€๋งŒ A์Šค๋ ˆ๋“œ์—์„œ DB I/O ์ž‘์—… ์ˆ˜ํ–‰ ์‹œ ํ•ด๋‹น ์Šค๋ ˆ๋“œ๋Š” ๋ธ”๋Ÿฌํ‚น๋˜์–ด ์œ ํœด์ƒํƒœ๊ฐ€ ๋˜์–ด ์Šค๋ ˆ๋“œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์šด์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค.
๋ฐ˜๋ฉด, ์Šคํ”„๋ง WebFlux๋Š” ๋น„๋™๊ธฐ ๋…ผ๋ธ”๋Ÿฌํ‚น ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋™์‹œ์— ๋ฐ›์œผ๋ฉด์„œ๋„ A์Šค๋ ˆ๋“œ์—์„œ DB I/O ์ž‘์—… ์ˆ˜ํ–‰ ์‹œ์—๋„ ๋…ผ๋ธ”๋Ÿฌํ‚น์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ ํœด์ƒํƒœ๊ฐ€ ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ์ ์€ ์Šค๋ ˆ๋“œ๋กœ ๋” ๋งŽ์€ ์œ ์ €์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

์ฐธ๊ณ 
https://pro-self-studier.tistory.com/89
https://private.tistory.com/24

profile
๊ฐœ๋ฐœ์ž์™€ ์œ ์‚ฌํ•œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€