๋๊ธฐ, ๋ธ๋กํน 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