์น์์ผ์ผ๋ก AWS ๋น์ฉ 10์ต์ ๋ ๋ฆฌ๊ณ ์ป์ ๊ตํ
์น์์ผ์ผ๋ก AWS ๋น์ฉ 10์ต์ ๋ ๋ฆฌ๊ณ ์ป์ ๊ตํ ๊ด๋ จ
๋ณธ๋ฌธ์ ์์ฆIT์ ๋ฒ์ญ๊ฐ David (davidclimbing
)๊ฐ ํจ๊ป Recall.ai ์ ์๋ฆฌ์ ๋ฅด๋น(Elliot Levin)์ ๊ธ <How WebSockets cost us $1M on our AWS bill>์ ๋ฒ์ญํ ๊ธ์
๋๋ค. Recall.ai์ ์์ง๋์ด๋ง ํ ๋ฆฌ๋๋ก ํ๋ํ๊ณ ์์ผ๋ฉฐ, ๊ณ ์ฑ๋ฅ ๋น๋์ค ๋ฐ ์ค๋์ค ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์คํ
์ ๊ฐ๋ฐ์ ์ฃผ๋ํ๋ฉฐ, AWS ๋น์ฉ ์ต์ ํ์ ๊ด๋ จ๋ ๊ธฐ์ ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๊ธฐ์ฌํ์ต๋๋ค. ์ด๋ฒ ๊ธ์์๋ ํด๋ผ์ฐ๋ ์๋น์ค ์ฌ์ฉ ์์๋ ๋น์ฉ ์์ธก๊ณผ ๋ถ์์ ์ฒ ์ ํ ํ๊ณ , ์๋น์ค ๊ท๋ชจ์ ๋ง๋ ๋์ฒด ๊ธฐ์ ์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํ๋ค๋ ์ ์ ๊ฐ์กฐํ๊ณ ์์ต๋๋ค.
IPC[1]๋ ํด๋ผ์ฐ๋ ๋น์ฉ ์ต์ ํ๋ฅผ ๊ณ ๋ คํ ๋ ํํ ๊ฐ๊ณผ๋๋ ๋ถ๋ถ์ ๋๋ค. ํ์ง๋ง AWS์์ ์ด๋น 1TB์ ์์์ IPC๋ก ์ฒ๋ฆฌํ ๋ ๋นํจ์จ์ ์ผ๋ก ๊ตฌํํ๋ฉด ์์ฒญ๋ ๋น์ฉ์ด ๋ฐ์ํ ์ ์๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์์ต๋๋ค.
์น์์ผ[2] ์ฌ์ฉ์ผ๋ก ์ฐ๊ฐ 100๋ง ๋ฌ๋ฌ์ AWS ๋น์ฉ์ด ๋ฐ์ํ๋ ์ฌ๋ก์, ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ณ ๋์ญํญยท์ ์ง์ฐ IPC๋ฅผ ๊ตฌํํ๊ฒ ๋ ๊ณผ์ ์ ์ฌ๋ ์๊ฒ ๋ถ์ํด ๋ณด๊ณ ์ ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์๋ฐฑ ๊ฐ ๊ธฐ์ ์ ๋ฏธํ ๋ด ์๋น์ค๋ฅผ ์ ๊ณตํ๊ณ ์์ต๋๋ค. ๋งค์ ์๋ฐฑ๋ง ๊ฑด์ ๋ฏธํ ์ ์ฒ๋ฆฌํ๊ณ ์์ผ๋ฉฐ, ์ด๋ฅผ ์ํด ๋ฐฉ๋ํ ์ธํ๋ผ๋ฅผ ์ด์ํ๊ณ ์์ต๋๋ค. ๋ํ ๋ชจ๋ ์ธํ๋ผ๋ฅผ AWS์์ ์ด์ํ๊ณ ์์ฃ . ํด๋ผ์ฐ๋ ์ปดํจํ ์ ๋งค์ฐ ํธ๋ฆฌํ์ง๋ง ๋น์ฉ์ด ๋ง์ด ๋ ๋ค๋ ๊ฒ์ด ๋จ์ ์ด๋ฉฐ, ์ด๋ฌํ ์ด์ ๋ก ์ฑ๋ฅ๊ณผ ํจ์จ์ด ๋งค์ฐ ์ค์ํ ๊ณผ์ ๊ฐ ๋์์ต๋๋ค. ๊ณ ๊ฐ๋ค์๊ฒ ๋ ํจ์จ์ ์ธ ๋น์ฉ์ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด, ํ๋์จ์ด์ ์ฑ๋ฅ์ ์ต๋ํ ๋์ด์ฌ๋ฆฌ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ณ ์์ต๋๋ค.
์ต๊ทผ ๋ช ๋ ๊ฐ ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด๋ค์ GPU ๊ฐ์ฉ์ฑ์ด ๋ถ์์ ํ๊ธฐ ๋๋ฌธ์, ์ ํฌ๋ GPU ๋์ CPU์์ ์์ ์ฒ๋ฆฌ๋ฅผ ์ํํ๊ณ ์์ต๋๋ค. ์ต์ ํ ์์ ์ ์์ํ๊ธฐ ์ ์๋ ๋ด์ด ์ํํ๊ฒ ์๋ํ๊ธฐ ์ํด ์ผ๋ฐ์ ์ผ๋ก 4๊ฐ์ CPU ์ฝ์ด๊ฐ ํ์ํ๋๋ฐ์. ์ด 4๊ฐ์ CPU ์ฝ์ด๋ ๋ฏธํ ์ฐธ์ฌ๋ฅผ ์ํ ํค๋๋ฆฌ์ค ํฌ๋ก๋ฏธ์[3][4]๋ถํฐ ๋ฏธ๋์ด ์์ง์ ์ํ ์ค์๊ฐ ์์ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ๊น์ง ๋ด์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ์ต๋๋ค.
์ ํฌ๋ CPU ์ฌ์ฉ๋์ ์ ๋ฐ์ผ๋ก ์ค์ด๊ณ , ์ด๋ฅผ ํตํด ํด๋ผ์ฐ๋ ์ปดํจํ ๋น์ฉ๋ ์ ๋ฐ์ผ๋ก ๋ฎ์ถ๋ ๊ฒ์ ๋ชฉํ๋ก ์ค์ ํ์ต๋๋ค. ์ด๋ ๋งค์ฐ ๋์ ์ ์ธ ๋ชฉํ์์ผ๋ฉฐ, ์ฒซ ๋จ๊ณ๋ ๋ด์ ์ฑ๋ฅ์ ํ๋กํ์ผ๋งํ๋ ๊ฒ์ด์์ต๋๋ค.
CPU ์ฌ์ฉ๋์ ๋ํ ์คํด
์์ ์ฒ๋ฆฌ์ ๋งค์ฐ ๋ง์ ์ปดํจํ ์์์ด ํ์ํ๋ค๋ ๊ฒ์ ๋ชจ๋ ์๊ณ ์๋ ์ฌ์ค์ ๋๋ค. ์ ํฌ๊ฐ ์์ฒญ๋ ์์ ์์์ ์ฒ๋ฆฌํ๊ณ ์๊ธฐ ๋๋ฌธ์, ์ฒ์์๋ CPU ์ฌ์ฉ๋์ ๋๋ถ๋ถ์ด ์์ ์ธ์ฝ๋ฉ๊ณผ ๋์ฝ๋ฉ์ ์ฌ์ฉ๋ ๊ฒ์ด๋ผ๊ณ ์์ํ์ต๋๋ค.
ํ์ง๋ง ์คํ ์ค์ธ ๋ด๋ค์ ํ๋กํ์ผ๋งํด ๋ณด๋ ์ถฉ๊ฒฉ์ ์ธ ์ฌ์ค์ ๋ฐ๊ฒฌํ์ต๋๋ค. CPU ์๊ฐ์ ๋๋ถ๋ถ์ด __memmove_avx_unaligned_erms
์ __memcpy_avx_unaligned_erms
์ด ๋ ํจ์์ ์ฌ์ฉ๋๊ณ ์๋ ๊ฒ์
๋๋ค. ์ด ํจ์๋ค์ด ํ๋ ์ผ์ ๊ฐ๋จํ ์ค๋ช
ํ๊ฒ ์ต๋๋ค.
memmove
์ memcpy
๋ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ๋ณต์ฌํ๋ C ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์์
๋๋ค. memmove
๋ ์ค์ฒฉ๋ ๋ฉ๋ชจ๋ฆฌ ๋ฒ์๋ก ๋ณต์ฌํ ๋ ๋ฐ์ํ๋ ๋ช ๊ฐ์ง ์์ธ ์ํฉ์ ์ฒ๋ฆฌํ์ง๋ง, ํฐ ํ์์ ๋ณด๋ฉด ์ด ๋ ํจ์ ๋ชจ๋ โ๋ฉ๋ชจ๋ฆฌ ๋ณต์ฌโ๋ฅผ ์ํํ๋ ํจ์๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
avx_unaligned_erms
์ ๋ฏธ์ฌ๋ ์ด ํจ์๊ฐ ๊ณ ๊ธ ๋ฒกํฐ ํ์ฅ(AVX)์ ์ง์ํ๋ ์์คํ
์ ์ต์ ํ๋์ด ์์ผ๋ฉฐ, ์ ๋ ฌ๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์๋ ์ต์ ํ๋์ด ์๋ค๋ ์๋ฏธ์
๋๋ค. erms
๋ Enhanced REP MOVSB/STOSB์ ์ฝ์๋ก, ์ต์ ์ธํ
ํ๋ก์ธ์์์ ๋น ๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ด๋์ ์ํ ์ต์ ํ๋ฅผ ์๋ฏธํฉ๋๋ค. ๊ฐ๋จํ ๋งํด ์ด ์ ๋ฏธ์ฌ๋ โํน์ ํ๋ก์ธ์์ ์ต์ ํ๋ ๋ ๋น ๋ฅธ ๊ตฌํโ์ด๋ผ๊ณ ์ดํดํ๋ฉด ๋ฉ๋๋ค.
ํ๋กํ์ผ๋ง ๊ฒฐ๊ณผ, ์ด๋ฌํ ํจ์๋ค์ ๊ฐ์ฅ ๋ง์ด ํธ์ถํ๋ ๊ฒ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ํ์ด์ฌ ์น์์ผ ํด๋ผ์ด์ธํธ์๊ณ , ๋ค์์ผ๋ก๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ํฌ๋ก๋ฏธ์์ ์น์์ผ ๊ตฌํ์ด์์ต๋๋ค.
๊ฐ๋น์ผ ์์ผ ํต์ ์ ๋๊ฐ
์ด๋ฌํ ๊ฒฐ๊ณผ๋ฅผ ๊ณฐ๊ณฐ์ด ์๊ฐํด ๋ณด๋ ์ดํด๊ฐ ๋๊ธฐ ์์ํ์ต๋๋ค. ํค๋๋ฆฌ์ค ํฌ๋ก๋ฏธ์์ ์ฌ์ฉํด ํตํ์ ์ฐธ์ฌํ๋ ๋ด๋ค์ ๊ฒฝ์ฐ, ํฌ๋ก๋ฏธ์์ ์๋ฐ์คํฌ๋ฆฝํธ ํ๊ฒฝ์์ ๋์ฝ๋ฉ๋ ์๋ณธ ์์์ ์ธ์ฝ๋๋ก ์ ์กํ๋ ๋ฐฉ๋ฒ์ด ํ์ํ์ต๋๋ค. ์ฒ์์๋ ๋ก์ปฌ ์น์์ผ ์๋ฒ๋ฅผ ์คํํ๊ณ , ์๋ฐ์คํฌ๋ฆฝํธ ํ๊ฒฝ์์ ์ด์ ์ฐ๊ฒฐํ ๋ค, ํด๋น ์ฑ๋์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ฐฉ์์ ์ฑํํ์ฃ .
์น์์ผ์ ์ ํฌ๊ฐ ์ํ๋ ๊ธฐ๋ฅ์ ์ ๋ง๋ ๊ฒ์ฒ๋ผ ๋ณด์์ต๋๋ค. ์น API ์ค์์๋ ๋น ๋ฅธ ํธ์ด์๊ณ , JS ๋ฐํ์ ๋ด์์ ์ฌ์ฉํ๊ธฐ ํธ๋ฆฌํ์ผ๋ฉฐ, ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ง์ํ๊ณ ์. ๊ฐ์ฅ ์ค์ํ ์ ์ ํฌ๋ก๋ฏธ์์ ์ด๋ฏธ ๋ด์ฅ๋์ด ์์๋ค๋ ๊ฒ์ ๋๋ค. ์ฌ๊ธฐ์ ๋ณต์กํ ์์๋ ์๋ณธ ์์์ ๋์ญํญ์ด ๋๋ผ์ธ ์ ๋๋ก ํฌ๋ค๋ ์ ์ด์์ต๋๋ค. 1080p 30fps์ ๋จ์ผ ์์ ์คํธ๋ฆผ์ ๋น์์ถ I420 ํ์์ผ๋ก ๋ ๋ฉ๋๋ค.
์ ํฌ์ ๋ชจ๋ํฐ๋ง ๊ฒฐ๊ณผ์ ๋ฐ๋ฅด๋ฉด, ์ ์ฒด ๊ท๋ชจ์์ p99 ๋ด์ ์ด๋น 150MB์ ์์ ๋ฐ์ดํฐ๋ฅผ ์์ ํฉ๋๋ค. ์ด๋ ์์ฒญ๋ ์์ ๋ฐ์ดํฐ ์ด๋์ ๋๋ค. ๋ค์ ๋จ๊ณ๋ ์น์์ผ ์ ์ก์ด ์ ์ด๋ ๊ฒ ๋ง์ ์ปดํจํ ์์์ ์๋ชจํ๋์ง ๊ตฌ์ฒด์ ์ธ ์์ธ์ ํ์ ํ๋ ๊ฒ์ด์์ต๋๋ค. ์๋ก์ด ๋ฌธ์ ๋ฅผ ๋ง๋ค์ง ์๊ณ , ์น์์ผ์ ๋จ์ ์ ํผํ ์ ์๋ ํด๊ฒฐ์ฑ ์ ์ฐพ๊ธฐ ์ํด์๋ ๊ทผ๋ณธ ์์ธ์ ์ฐพ์์ผ ํ์ต๋๋ค.
์น์์ผ RFC์ ํฌ๋ก๋ฏธ์์ ์น์์ผ ๊ตฌํ์ ์ดํด๋ณด๊ณ ํ๋กํ์ผ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ ๊ฒฐ๊ณผ, ๋ ๊ฐ์ง ์ฃผ์ ์ฑ๋ฅ ์ ํ ์์ธ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๋ฐ๋ก ๋จํธํ์ ๋ง์คํน์ ๋๋ค.
๋จํธํ
์น์์ผ ๋ช ์ธ๋ ๋ฉ์์ง ๋จํธํ๋ฅผ ์ง์ํฉ๋๋ค. ์ด๋ ํฐ ๋ฉ์์ง๋ฅผ ์ฌ๋ฌ ์น์์ผ ํ๋ ์์ผ๋ก ๋๋๋ ๊ณผ์ ์ ๋๋ค.
์น์์ผ RFC์ ๋ฐ๋ฅด๋ฉด
๋จํธํ์ ์ฃผ๋ ๋ชฉ์ ์ ๋ฉ์์ง๋ฅผ ์์ํ ๋ ํฌ๊ธฐ๋ฅผ ์ ์ ์๋ ๋ฉ์์ง๋ฅผ ๋ฒํผ๋งํ์ง ์๊ณ ๋ ์ ์กํ ์ ์๊ฒ ํ๋ ๊ฒ์ ๋๋ค. ๋จํธํ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค๋ฉด, ์ฒซ ๋ฐ์ดํธ๋ฅผ ์ ์กํ๊ธฐ ์ ์ ์ ์ฒด ๋ฉ์์ง๋ฅผ ๋ฒํผ๋งํ์ฌ ๊ธธ์ด๋ฅผ ๊ณ์ฐํด์ผ ํ ๊ฒ์ ๋๋ค. ๋จํธํ๋ฅผ ํตํด ์๋ฒ๋ ์ค๊ฐ ๋งค๊ฐ์ฒด๋ ์ ์ ํ ํฌ๊ธฐ์ ๋ฒํผ๋ฅผ ์ ํํ๊ณ , ๋ฒํผ๊ฐ ๊ฐ๋ ์ฐจ๋ฉด ๋จํธ์ ๋คํธ์ํฌ๋ก ์ ์กํ ์ ์์ต๋๋ค.
๋จํธํ์ ๋ถ์ฐจ์ ์ธ ์ฉ๋๋ ๋ฉํฐํ๋ ์ฑ[5]์ ๋๋ค. ํ๋์ ๋ ผ๋ฆฌ์ ์ฑ๋์์ ํฐ ๋ฉ์์ง๊ฐ ์ถ๋ ฅ ์ฑ๋์ ๋ ์ ํ๋ ๊ฒ์ด ๋ฐ๋์งํ์ง ์์ ๋, ๋ฉํฐํ๋ ์ฑ์ ๋ฉ์์ง๋ฅผ ๋ ์์ ๋จํธ์ผ๋ก ๋๋์ด ์ถ๋ ฅ ์ฑ๋์ ๋ ์ ๊ณต์ ํ ์ ์๊ฒ ํด์ผ ํฉ๋๋ค.
์๋ก ๋ค๋ฅธ ์น์์ผ ๊ตฌํ์ ๊ฐ๊ธฐ ๋ค๋ฅธ ๊ธฐ์ค์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ํฌ๋ก๋ฏธ์ ์น์์ผ ์์ค์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด, 131KB๋ณด๋ค ํฐ ๋ฉ์์ง๋ ์ฌ๋ฌ ์น์์ผ ํ๋ ์์ผ๋ก ๋จํธํ๋ฉ๋๋ค. 1080p ์๋ณธ ์์ ํ๋ ์ ํ๋์ ํฌ๊ธฐ๋ ์ด๋ฏ๋ก, ํฌ๋ก๋ฏธ์์ ์น์์ผ ๊ตฌํ์ ์ด๋ฅผ 24๊ฐ์ ๊ฐ๋ณ ์น์์ผ ํ๋ ์์ผ๋ก ๋จํธํํ๊ฒ ๋ฉ๋๋ค. ์ด๋ ๋๋ฌด๋ ๋ง์ ๋ณต์ฌ์ ์ค๋ณต ์์ ์ ๋ฐ์์ํต๋๋ค.
๋ง์คํน
์น์์ผ ๋ช ์ธ๋ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ์ ์ก๋๋ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋์ ๋ง์คํน ๋์ด์ผ ํ๋ค๊ณ ๊ท์ ํฉ๋๋ค.
๋คํธ์ํฌ ์ค๊ฐ์(์ธํฐ์ ํฐ์ ๊ฐ์,,)์ ํผ๋์ ๋ฐฉ์งํ๊ณ 10.3์ ์์ ์์ธํ ์ค๋ช ํ๋ ๋ณด์์์ ์ด์ ๋ก, ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ก ์ ์กํ๋ ๋ชจ๋ ํ๋ ์์ ๋ฐ๋์ ๋ง์คํนํด์ผ ํฉ๋๋ค.
๋ฐ์ดํฐ ๋ง์คํน์ 32๋นํธ ๋๋ค ๋ง์คํน ํค๋ฅผ ์์ฑํ๊ณ , ์๋ณธ ๋ฐ์ดํฐ์ ๋ฐ์ดํธ๋ฅผ 32๋นํธ ๋จ์๋ก ์ด ๋ง์คํน ํค์ XOR ์ฐ์ฐํ๋ ๊ณผ์ ์ ๋๋ค. ์ด๋ ํด๋ผ์ด์ธํธ๊ฐ ๋คํธ์ํฌ์์ ๋ํ๋๋ ๋ฐ์ดํธ๋ฅผ ์ ์ดํ์ง ๋ชปํ๊ฒ ํจ์ผ๋ก์จ ๋ณด์์์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ์ด๊ฒ์ด ์ค์ํ ์ ํํ ์ด์ ๋ฅผ ์๊ณ ์ถ๋ค๋ฉด, ์ฌ๊ธฐ์์ ์ดํด๋ณผ ์ ์์ต๋๋ค.
์ด๋ ๋ณด์ ์ธก๋ฉด์์๋ ํ๋ฅญํ์ง๋ง, ์น์์ผ์ผ๋ก ์ ์ก๋๋ ๋ชจ๋ ๋ฐ์ดํธ๋ฅผ ํ ๋ฒ ๋ ์ฒ๋ฆฌํด์ผ ํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ ์น ์ฌ์ฉ์์๋ ํฐ ๋ฌธ์ ๊ฐ ๋์ง ์์ง๋ง, ์ด๋น 100MB ์ด์์ ์ฒ๋ฆฌํ ๋๋ ์๋นํ ์์ ๋์ด ๋ฉ๋๋ค.
๋ ์ ๋ ดํ ๋ฐฉ์์?
์น์์ผ์ ๋์ฒดํ ํ์์ฑ์ ์ธ์ํ๊ณ , ํฌ๋ก๋ฏธ์์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์๋ก์ด ๋ฉ์ปค๋์ฆ์ ์ฐพ๊ธฐ ์์ํ์ต๋๋ค. ์น์์ผ๋ณด๋ค ํจ์ฌ ๋ ํจ์จ์ ์ธ ๊ฒ์ ์ํ๋ค๋ฉด ๋ธ๋ผ์ฐ์ API๊ฐ ์ฌ๊ฐํ๊ฒ ์ ํ์ ์ด๋ผ๋ ๊ฒ์ ๋น ๋ฅด๊ฒ ๊นจ๋ฌ์์ต๋๋ค. ์ด๋ ํฌ๋ก๋ฏธ์์ ํฌํฌํ๊ณ ์ปค์คํ ๊ตฌํ์ด ํ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํ์ต๋๋ค. ํ์ง๋ง ์ด๋ ๋์์ ํจ์จ์ฑ ์ธก๋ฉด์์ ๋ฌดํํ ๊ฐ๋ฅ์ฑ์ด ์ด๋ ธ๋ค๋ ์๋ฏธ์ด๊ธฐ๋ ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ธ ๊ฐ์ง ์ต์ ์ ๊ณ ๋ คํ์ต๋๋ค: raw TCP[6]/IP[7], ์ ๋์ค ๋๋ฉ์ธ ์์ผ, ๊ทธ๋ฆฌ๊ณ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ๋๋ค.
TCP/IP
ํฌ๋ก๋ฏธ์์ ์น์์ผ ๊ตฌํ๊ณผ ์น์์ผ ๋ช ์ธ ์์ฒด๊ฐ ํนํ ๋์ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ผ์ผํต๋๋ค. ํ ๋จ๊ณ ๋ ๊น์ด ๋ค์ด๊ฐ์ ๋ฃจํ๋ฐฑ[8] ์ฅ์น๋ฅผ ํตํด raw TCP/IP ํจํท์ ์ ์กํ ์ ์๋๋ก, ํฌ๋ก๋ฏธ์์ ํ์ฅ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๊ฒ์ ์ด๋จ๊น์?
์ด๋ ๊ฒ ํ๋ฉด ์น์์ผ์ ๋จํธํ์ ๋ง์คํน ๋ฌธ์ ๋ฅผ ์ฐํํ ์ ์๊ณ , ๊ตฌํ๋ ์๋นํ ๊ฐ๋จํ ๊ฒ๋๋ค. ๋ํ ๋ฃจํ๋ฐฑ ์ฅ์น๋ ์ต์ํ์ ์ง์ฐ๋ง์ ๋ฐ์์ํฌ ๊ฑฐ๊ณ ์. ํ์ง๋ง ๋ช ๊ฐ์ง ๋จ์ ์ด ์์์ต๋๋ค. ์ฒซ์งธ, TCP/IP ํจํท์ ์ต๋ ํฌ๊ธฐ๊ฐ ์ ํฌ์ ์๋ณธ ์์ ํ๋ ์ ํฌ๊ธฐ๋ณด๋ค ํจ์ฌ ์์์, ์ฌ์ ํ ๋จํธํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๋๋ท์ผ๋ก ์ฐ๊ฒฐ๋ ์ผ๋ฐ์ ์ธ TCP/IP ๋คํธ์ํฌ์์๋ ํ์ค MTU(Maximum Transmission Unit)๊ฐ 1500๋ฐ์ดํธ์ด๋ฉฐ, ์ด๋ก ์ธํด TCP MSS(Maximum Segment Size)๋ 1448๋ฐ์ดํธ์ ๋๋ค. ์ด๋ ์ ํฌ์ 3MB+ ์๋ณธ ์์ ํ๋ ์๋ณด๋ค ํจ์ฌ ์์ต๋๋ค.
TCP/IP ํจํท์ ์ด๋ก ์ ์ต๋ ํฌ๊ธฐ์ธ 64k์กฐ์ฐจ๋ ์ ํฌ๊ฐ ์ ์กํด์ผ ํ๋ ๋ฐ์ดํฐ๋ณด๋ค ํจ์ฌ ์์ผ๋ฏ๋ก, ๋จํธํ ์์ด TCP/IP๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ์ต๋๋ค. ๋ ๋ค๋ฅธ ๋ฌธ์ ๋ ์์์ต๋๋ค. ๋ฆฌ๋ ์ค ๋คํธ์ํน ์คํ์ด ์ปค๋ ๊ณต๊ฐ์์ ์คํ๋๊ธฐ ๋๋ฌธ์, TCP/IP๋ฅผ ํตํด ์ ์กํ๋ ๋ชจ๋ ํจํท์ ์ฌ์ฉ์ ๊ณต๊ฐ์์ ์ปค๋ ๊ณต๊ฐ์ผ๋ก ๋ณต์ฌ๋์ด์ผ ํฉ๋๋ค. ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ด๋ ์๋นํ ์ค๋ฒํค๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
์ ๋์ค ๋๋ฉ์ธ ์์ผ
๋คํธ์ํน ์คํ์ ์์ ํ ๋ฒ์ด๋ ์ ํต์ ์ธ ์ ๋์ค ๋๋ฉ์ธ ์์ผ์ ์ฌ์ฉํ๋ ๋ฐฉ์๋ ๊ฒํ ํ์ต๋๋ค. IPC๋ฅผ ์ํ ๊ณ ์ ์ ์ธ ์ ํ์ด๋ฉฐ, ์ ๋์ค ๋๋ฉ์ธ ์์ผ์ด ์ค์ ๋ก ์๋นํ ๋น ๋ฅผ ์ ์๋ค๋ ๊ฒ์ด ๋ฐํ์ก์ต๋๋ค. ๊ฐ์ฅ ์ค์ํ ์ ์ ์ ๋์ค ๋๋ฉ์ธ ์์ผ์ด ์ ํฌ ๋ด์ด ์คํ๋๋ ๋ฆฌ๋ ์ค ์ด์์ฒด์ ์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ด๋ฉฐ, ์ ๋์ค ์์ผ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๊ธฐ์กด์ ํจ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค.
ํ์ง๋ง ํ ๊ฐ์ง ๋จ์ ์ด ์์ต๋๋ค. ์ ๋์ค ๋๋ฉ์ธ ์์ผ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ค๋ฉด ์ฌ์ฉ์ ๊ณต๊ฐ์์ ์ปค๋ ๊ณต๊ฐ์ผ๋ก, ๊ทธ๋ฆฌ๊ณ ๋ค์ ๋๋์์ค๋ ๋ณต์ฌ ๊ณผ์ ์ด ํ์ํฉ๋๋ค. ์ ํฌ๊ฐ ๋ค๋ฃจ๋ ๋ฐ์ดํฐ์์ ๊ณ ๋ คํ๋ฉด, ์ด๋ ์๋นํ ์ค๋ฒํค๋์ ๋๋ค.
๊ณต์ ๋ฉ๋ชจ๋ฆฌ
์ฌ๊ธฐ์ ํ ๋จ๊ณ ๋ ๋์๊ฐ ์ ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. TCP/IP์ ์ ๋์ค ๋๋ฉ์ธ ์์ผ ๋ชจ๋ ์ต์ํ ์ฌ์ฉ์ ๊ณต๊ฐ๊ณผ ์ปค๋ ๊ณต๊ฐ ์ฌ์ด์ ๋ฐ์ดํฐ ๋ณต์ฌ๊ฐ ํ์ํฉ๋๋ค. ์ฝ๊ฐ์ DIY๋ฅผ ํตํด ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด, ๋์ฑ ํจ์จ์ ์ผ๋ก ๋ง๋ค ์ ์์์ต๋๋ค. ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ ๊ทผํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ์ ๋๋ค. ์ด๋ ํฌ๋ก๋ฏธ์์ด ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ์ด ๋ฐ์ดํฐ๋ฅผ ์์ ์ธ์ฝ๋๊ฐ ์ค๊ฐ์ ์ด๋ค ๋ณต์ฌ๋ ํ์ ์์ด ์ง์ ์ฝ์ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
ํ์ง๋ง ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ์ก์๋ ํ์ค ์ธํฐํ์ด์ค๊ฐ ์์ต๋๋ค. TCP/IP๋ ์ ๋์ค ๋๋ฉ์ธ ์์ผ๊ณผ ๊ฐ์ ํ์ค์ด ์๋๋๋ค. ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ฐฉ์์ ์ ํํ๋ค๋ฉด, ์ ์ก ๊ณ์ธต์ ์ฒ์๋ถํฐ ์ง์ ๊ตฌ์ถํด์ผ ํ๋ฉฐ, ๋ง์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
AWS ์ฒญ๊ตฌ์๋ฅผ ํ๊น ๋ณด๋ ์์ผ๋ก ๋์๊ฐ ๊ฒฐ์ฌ์ด ์ฐ์ต๋๋ค. ์ต๋์ ํจ์จ์ฑ์ ์ํด์๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ต์ ์ ์ ํ์ด์์ต๋๋ค.
๊ณต์ ๊ฐ ๊ณง ์ฑ๋ฅ
์ง์์ ์ผ๋ก ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์ฝ๊ณ ์ธ ํ์๊ฐ ์์๊ธฐ ๋๋ฌธ์, ์์ ๋ ๋ฒจ ์ ์ก ์ค๊ณ๋ก ๋ง ๋ฒํผ๋ฅผ ์ ํํ์ต๋๋ค. ๋ฌ์คํธ ์ปค๋ฎค๋ํฐ์๋ ์ฌ๋ฌ ๋ง ๋ฒํผ ๊ตฌํ์ฒด๊ฐ ์์ง๋ง, ์ ํฌ ๊ตฌํ์๋ ๋ช ๊ฐ์ง ํน๋ณํ ์๊ตฌ์ฌํญ์ด ์์์ต๋๋ค.
- ๋ฝํ๋ฆฌ: ์ค์๊ฐ์ผ๋ก ์์์ ์ฒ๋ฆฌํด์ผ ํ๋ค ๋ณด๋, ์ฒ๋ฆฌ ์๋๊ฐ ์ผ์ ํด์ผ ํ๊ณ ๋ฒ๋ฒ ๊ฑฐ๋ฆผ์ด ์์ด์ผ ํฉ๋๋ค.
- ๋ค์ค ์์ฐ์, ๋จ์ผ ์๋น์: ํฌ๋ก๋ฏธ์์์ ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๊ฐ ๋์์ ์๋ฆฌ์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฒํผ์ ๋ฃ๊ณ , ๋ฏธ๋์ด ํ์ดํ๋ผ์ธ์ ํ๋์ ์ค๋ ๋๊ฐ ์ด ๋ฐ์ดํฐ๋ฅผ ์๋นํฉ๋๋ค.
- ๋์ ํ๋ ์ ํฌ๊ธฐ: ๋ง ๋ฒํผ๋ ์ค๋์ค ํจํท๊ณผ ํจ๊ป ๋ค์ํ ํด์๋์ ์์ ํ๋ ์์ ์ง์ํด์ผ ํ๋ฏ๋ก, ๊ฐ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ํฌ๊ฒ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
- ๋ณต์ฌ ์๋ ์ฝ๊ธฐ: ๋ฐ์ดํฐ๋ฅผ ๋๋๋ก ๋ณต์ฌํ์ง ์๊ณ , ๋ฏธ๋์ด ํ์ดํ๋ผ์ธ์ด ๋ฒํผ์์ ๋ฐ๋ก ์ฝ์ด๊ฐ ์ ์๊ธฐ๋ฅผ ์ํ์ต๋๋ค.
- ์๋๋ฐ์ค ์นํ์ : ํฌ๋ก๋ฏธ์ ์ค๋ ๋๋ค์ด ์๋๋ฐ์ค ์์์ ๋์๊ฐ๋๋ฐ, ์ด ์ํ์์๋ ๋ง ๋ฒํผ๋ฅผ ์ฝ๊ฒ ์ธ ์ ์์ด์ผ ํฉ๋๋ค.
- ๋น ๋ฅธ ์ ํธ ์ ๋ฌ: ํฌ๋ก๋ฏธ์ ์ค๋ ๋๊ฐ ์๋ก์ด ๋ฐ์ดํฐ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฑฐ๋ ๋ฒํผ ๊ณต๊ฐ์ด ์ฌ์ฉ ๊ฐ๋ฅํ ๋ ๋ฏธ๋์ด ํ์ดํ๋ผ์ธ์ ์ ํธ๋ฅผ ๋ณด๋ผ ์ ์์ด์ผ ํฉ๋๋ค.
๊ธฐ์กด์ ๋ง ๋ฒํผ ๊ตฌํ์ฒด๋ค์ ํ๊ฐํด ๋ดค์ง๋ง, ์ ํฌ์ ์๊ตฌ์ฌํญ์ ๋ง๋ ๊ฒ์ ์ฐพ์ง ๋ชปํ์ต๋๋ค. ๊ทธ๋์ ์ง์ ๊ตฌํํ๊ธฐ๋ก ํ์ต๋๋ค.
์ ํฌ ๋ง ๋ฒํผ ๊ตฌํ์์ ๊ฐ์ฅ ๋นํ์ค์ ์ธ ๋ถ๋ถ์ ๋ณต์ฌ ์๋ ์ฝ๊ธฐ ๊ธฐ๋ฅ ์ง์์ ๋๋ค. ์ผ๋ฐ์ ์ธ ๋ ๊ฐ์ ํฌ์ธํฐ ๋์ ์ธ ๊ฐ์ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์ฐ๊ธฐ ํฌ์ธํฐ: ๋ค์ ์ฐ๊ธฐ ์์น์ ์ฃผ์
- ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํฌ์ธํฐ: ๋ค์์ ์ฝ์ ํ๋ ์์ ์ฃผ์
- ์ฝ๊ธฐ ํฌ์ธํฐ: ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ด์ธ ์ ์๋ ์ฃผ์
๋ณต์ฌ ์๋ ์ฝ๊ธฐ ๊ธฐ๋ฅ์ ์ง์ํ๊ธฐ ์ํด ์ฟ๋ณด๊ธฐ ํฌ์ธํฐ์ ํ๋ ์์ ๋ฏธ๋์ด ํ์ดํ๋ผ์ธ์ ์ ๊ณตํ๊ณ , ํ๋ ์์ด ์์ ํ ์ฒ๋ฆฌ๋ ํ์๋ง ์ฝ๊ธฐ ํฌ์ธํฐ๋ฅผ ์ ์ง์ํต๋๋ค. ์ด๋ ๋ฏธ๋์ด ํ์ดํ๋ผ์ธ์ด ๋ง ๋ฒํผ ๋ด๋ถ์ ๋ฐ์ดํฐ์ ๋ํ ์ฐธ์กฐ๋ฅผ ์์ ํ๊ฒ ์ ์งํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์์ ํ ์ฒ๋ฆฌ๋๊ณ ์ฝ๊ธฐ ํฌ์ธํฐ๊ฐ ์ ์งํ ๋๊น์ง ํด๋น ์ฐธ์กฐ๊ฐ ์ ํจํ๋ค๋ ๊ฒ์ด ๋ณด์ฅ๋๊ธฐ ๋๋ฌธ์ด์ฃ .
ํฌ์ธํฐ๋ฅผ ์ค๋ ๋ ์ธ์ดํ ํ ๋ฐฉ์์ผ๋ก ์ ๋ฐ์ดํธํ๊ธฐ ์ํด ๋จ์ผ ์ฐ์ฐ์ ์ฌ์ฉํ๊ณ , ์๋ก์ด ๋ฐ์ดํฐ๋ ๋ฒํผ ๊ณต๊ฐ์ด ์ฌ์ฉ ๊ฐ๋ฅํจ์ ์๋ฆฌ๊ธฐ ์ํด ๋ช ๋ช ๋ ์ธ๋งํฌ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ๋ง ๋ฒํผ๋ฅผ ๊ตฌํํ๊ณ ๋ค๋ฅธ ๋ช ๊ฐ์ง ์ต์ ํ์ ํจ๊ป ํ๋ก๋์ ์ ๋ฐฐํฌํ ํ, ๋ด์ CPU ์ฌ์ฉ๋์ ์ต๋ 50%๊น์ง ์ค์ผ ์ ์์์ต๋๋ค.
์ด์ฒ๋ผ CPU ํจ์จ์ฑ์ ๋์ด๊ธฐ ์ํ IPC ์ต์ ํ ์์ ์ AWS ๋น์ฉ์ ์ฐ๊ฐ 100๋ง ๋ฌ๋ฌ ์ด์ ์ ๊ฐํ๋ ์ฑ๊ณผ๋ก ์ด์ด์ก์ต๋๋ค. ์ด๋ ๋จ์ํ ๊ธฐ์ ์ ๊ฐ์ ์ ๋์ด, ์๊ฐ๊ณผ ์์์ ํฌ์ํ ๊ฐ์น๊ฐ ์๋ ๋งค์ฐ ํฐ ์ฑ๊ณผ๋ผ๊ณ ํ ์ ์์ต๋๋ค.
์๋ฌธ
IPC (Inter-Process Communication): ํ๋ก์ธ์ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ํต์ ๋ฐฉ์ โฉ๏ธ
์น์์ผ: ์น ๋ธ๋ผ์ฐ์ ์ ์๋ฒ ๊ฐ์ ์ค์๊ฐ ์๋ฐฉํฅ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ํต์ ํ๋กํ ์ฝ โฉ๏ธ
ํฌ๋ก๋ฏธ์: ๊ตฌ๊ธ์ด ๋ง๋ ์คํ์์ค ์น ๋ธ๋ผ์ฐ์ ํ๋ก์ ํธ โฉ๏ธ
ํค๋๋ฆฌ์ค ํฌ๋ก๋ฏธ์: GUI ์์ด ์๋ํ๋ ํฌ๋ก๋ฏธ์ ๋ธ๋ผ์ฐ์ โฉ๏ธ
๋ฉํฐํ๋ ์ฑ: ํ๋์ ํต๋ก๋ ์์์ ํตํด ์ฌ๋ฌ ์ ํธ๋ ๋ฐ์ดํฐ๋ฅผ ๋์์ ์ ์กํ๋ ๊ธฐ์ โฉ๏ธ
TCP: ์ธํฐ๋ท์์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ์์๋๋ก ์ ๋ฌํ๊ธฐ ์ํ ํต์ ๊ท์ฝ โฉ๏ธ
IP: ์ธํฐ๋ท์์ ์ปดํจํฐ๋ค์ด ์๋ก๋ฅผ ์ฐพ๊ณ ํต์ ํ๊ธฐ ์ํ ์ฃผ์ ์ฒด๊ณ โฉ๏ธ
๋ฃจํ๋ฐฑ: ๋คํธ์ํฌ ํต์ ์์ ์๊ธฐ ์์ ์ ๊ฐ๋ฆฌํค๋ ํน๋ณํ ์ฃผ์๋ ๊ฒฝ๋ก โฉ๏ธ