WebAssembly WASI์ ํ์ผ ๋์คํฌ๋ฆฝํฐ ๊ฐ์ํ๊ฐ ๋ฆฌ์์ค ์ถ์ํ๋ฅผ ์ด๋ป๊ฒ ํ์ ํ๋์ง ํ์ํฉ๋๋ค. ์ ์ธ๊ณ ๋ค์ํ ์ปดํจํ ํ๊ฒฝ์์ ์์ ํ๊ณ ์ด์์ฑ ์์ผ๋ฉฐ ํจ์จ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ํฉ๋๋ค.
WebAssembly WASI ํ์ผ ๋์คํฌ๋ฆฝํฐ ๊ฐ์ํ: ๋ณดํธ์ ์ธ ๋ฆฌ์์ค ์ถ์ํ ์ ๊ธ ํด์
๋น ๋ฅด๊ฒ ๋ฐ์ ํ๋ ๋ถ์ฐ ์ปดํจํ ํ๊ฒฝ์์ ๋ณด์์ฑ, ๋์ ์ด์์ฑ, ๋๋ผ์ด ํจ์จ์ฑ์ ๋์์ ๊ฐ์ถ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์ถ๊ตฌ๊ฐ ๊ทธ ์ด๋ ๋๋ณด๋ค ์ค์ํด์ก์ต๋๋ค. ์ ์ธ๊ณ์ ๊ฐ๋ฐ์์ ์ํคํ ํธ๋ ์ด๊ธฐ์ข ์ด์ ์ฒด์ , ๋ค์ํ ํ๋์จ์ด ์ํคํ ์ฒ, ๊ฐ๋ ฅํ ๋ณด์ ๊ฒฝ๊ณ์ ๋ํ ๋์์๋ ์๊ตฌ๋ก ์ธํด ๋ฐ์ํ๋ ๋ฌธ์ ์ ์ง๋ฉดํด ์์ต๋๋ค. ์ด๋ฌํ ์ ์ธ๊ณ์ ์ธ ๊ณผ์ ๋ ๊ฐ๋ ฅํ ํจ๋ฌ๋ค์ ์ ํ์ผ๋ก์ WebAssembly(Wasm)์ ๊ทธ ์์คํ ์ธํฐํ์ด์ค์ธ WASI(WebAssembly System Interface)์ ๋ถ์์ ์ด๋์์ต๋๋ค.
WASI ํ์ ์ ํต์ฌ์๋ ํ์ผ ๋์คํฌ๋ฆฝํฐ ๊ฐ์ํ๋ผ๋ ์ ๊ตํ ๋ฉ์ปค๋์ฆ์ด ์์ผ๋ฉฐ, ์ด๋ ๋ณดํธ์ ์ธ ๋ฆฌ์์ค ์ถ์ํ๋ผ๋ ์ฝ์์ ๋ท๋ฐ์นจํ๋ ๊ฐ๋ ์ ๋๋ค. ์ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ์ด ์ค์ํ ์ธก๋ฉด์ ๊น์ด ํ๊ณ ๋ค์ด WASI๊ฐ ๊ฐ์ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ํ์ฉํ์ฌ ํธ์คํธ๋ณ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ถ์ํํจ์ผ๋ก์จ, WebAssembly ๋ชจ๋์ด ๊ธฐ๋ฐ ์ธํ๋ผ์ ๊ด๊ณ์์ด ๋งค์ฐ ์์ ํ๊ณ ์ด์์ฑ ์์ผ๋ฉฐ ํจ์จ์ ์ธ ๋ฐฉ์์ผ๋ก ์ธ๋ถ ์ธ๊ณ์ ์ํธ ์์ฉํ ์ ์๋๋ก ์ง์ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
์ง์์ ์ธ ๊ณผ์ : ์ฝ๋์ ๊ตฌ์ฒด์ ์ธ ๋ฆฌ์์ค ์ฐ๊ฒฐ
WASI์ ์๋ฃจ์ ์ ๋ถ์ํ๊ธฐ ์ ์, ํด๊ฒฐํ๊ณ ์ ํ๋ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณต์ก์ฑ์ ๊ด๊ณ์์ด ํ์ฐ์ ์ผ๋ก ์ธ๋ถ ๋ฆฌ์์ค์ ์ํธ ์์ฉํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ํ์ผ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ, ๋คํธ์ํฌ๋ฅผ ํตํ ๋ฐ์ดํฐ ์ก์์ , ํ์ฌ ์๊ฐ ์ก์ธ์ค, ๋์ ์์ฑ ๋๋ ํ๊ฒฝ ๋ณ์ ์ฟผ๋ฆฌ๊ฐ ํฌํจ๋ฉ๋๋ค. ์ ํต์ ์ผ๋ก ์ด๋ฌํ ์ํธ ์์ฉ์ ์์คํ ํธ์ถ, ์ฆ ์ด์ ์ฒด์ (OS) ์ปค๋์ด ์ ๊ณตํ๋ ํน์ ํจ์๋ฅผ ํตํด ์ํ๋ฉ๋๋ค.
"๊ธฐ๋ณธ" ๋๋ ๋ง: OS๋ณ ์ธํฐํ์ด์ค ๋ฐ ๋ด์ฌ๋ ์ํ
๋ฐ์ดํฐ๋ฅผ ํ์ผ์ ์ ์ฅํ๋๋ก ์ค๊ณ๋ C ๋๋ Rust๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ์๊ฐํด ๋ณด์ธ์. Linux ์์คํ
์์๋ open(), write(), close()์ ๊ฐ์ POSIX ํ์ค ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. Windows ์์คํ
์์๋ CreateFile(), WriteFile(), CloseHandle()๊ณผ ๊ฐ์ Win32 API๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฌํ ๊ทน๋ช
ํ ์ฐจ์ด๋ ํ OS์ฉ์ผ๋ก ์์ฑ๋ ์ฝ๋๊ฐ ๋ค๋ฅธ OS์์ ์คํ๋๋ ค๋ฉด ์๋นํ ์์ ๋๋ ์์ ํ ๋ค๋ฅธ ๊ตฌํ์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ฌํ ์ด์์ฑ ๋ถ์กฑ์ ์ ์ธ๊ณ ๋์ค ๋๋ ๋ค์ํ ๋ฐฐํฌ ํ๊ฒฝ์ ๋์์ผ๋ก ํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์๋นํ ๊ฐ๋ฐ ๋ฐ ์ ์ง ๊ด๋ฆฌ ์ค๋ฒํค๋๋ฅผ ๋ฐ์์ํต๋๋ค.
์ด์์ฑ์ ๋์ด ์์คํ ํธ์ถ์ ์ง์ ์ก์ธ์คํ๋ ๊ฒ์ ์ฌ๊ฐํ ๋ณด์ ์ทจ์ฝ์ ์ ์ผ๊ธฐํฉ๋๋ค. ๋ฌด๋จ ๋๋ ์์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ OS์ ์ ์ฒด ์์คํ ํธ์ถ ๋ฒ์์ ๋ํ ๋ฌด์ ํ ์ก์ธ์ค ๊ถํ์ด ๋ถ์ฌ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ ์ฌ์ ์ธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- ์์คํ ์ ๋ชจ๋ ํ์ผ ์ก์ธ์ค: ๋ฏผ๊ฐํ ๊ตฌ์ฑ ํ์ผ ์ฝ๊ธฐ ๋๋ ์ค์ ์์คํ ๋ฐ์ด๋๋ฆฌ์ ์ ์ฑ ์ฝ๋ ์ฐ๊ธฐ.
- ์์์ ๋คํธ์ํฌ ์ฐ๊ฒฐ ์ด๊ธฐ: ์๋น์ค ๊ฑฐ๋ถ ๊ณต๊ฒฉ ์คํ ๋๋ ๋ฐ์ดํฐ ์ ์ถ.
- ์์คํ ํ๋ก์ธ์ค ์กฐ์: ํ์ ์๋น์ค ์ข ๋ฃ ๋๋ ์๋กญ๊ณ ๋ฌด๋จ ํ๋ก์ธ์ค ์์ฑ.
๊ฐ์ ๋จธ์ (VM) ๋๋ ์ปจํ ์ด๋(Docker ๋ฑ)์ ๊ฐ์ ์ ํต์ ์ธ ๊ฒฉ๋ฆฌ ์ ๋ต์ ๊ฒฉ๋ฆฌ ๊ณ์ธต์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ VM์ ์๋นํ ์ค๋ฒํค๋๋ฅผ ๋ฐ์์ํค๊ณ , ์ปจํ ์ด๋๋ ๋ ๊ฐ๋ณ์ง๋ง ๊ณต์ ์ปค๋ ๋ฆฌ์์ค์ ์์กดํ๋ฉฐ "์ปจํ ์ด๋ ํ์ถ" ๋๋ ๊ณผ๋ํ ๊ถํ ์ก์ธ์ค๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ์คํ ๊ตฌ์ฑ์ด ํ์ํฉ๋๋ค. ํ๋ก์ธ์ค ์์ค์ ๊ฒฉ๋ฆฌ๋ฅผ ์ ๊ณตํ์ง๋ง Wasm๊ณผ WASI๊ฐ ๋ชฉํ๋ก ํ๋ ์ธ๋ถํ๋ ๋ฆฌ์์ค ์์ค์ ๊ฒฉ๋ฆฌ๋ฅผ ๋ฐ๋์ ์ ๊ณตํ๋ ๊ฒ์ ์๋๋๋ค.
"์๋๋ฐ์ค"์ ์ค์์ฑ: ์ ์ฉ์ฑ์ ํฌ์ํ์ง ์๋ ๋ณด์
์๋ฒ๋ฆฌ์ค ํ๋ซํผ, ์ฃ์ง ์ฅ์น ๋๋ ๋ธ๋ผ์ฐ์ ํ์ฅ ํ๋ก๊ทธ๋จ๊ณผ ๊ฐ์ด ํ๋์ ์ด๊ณ ์ ๋ขฐํ ์ ์๊ฑฐ๋ ๋ฉํฐ ํ ๋ํธ ํ๊ฒฝ์ ๊ฒฝ์ฐ ํจ์ฌ ๋ ์๊ฒฉํ๊ณ ์ธ๋ถํ๋ ์๋๋ฐ์ฑ์ด ํ์ํฉ๋๋ค. ๋ชฉํ๋ ์ฝ๋ ์กฐ๊ฐ์ด ์๋๋ ๊ธฐ๋ฅ์ ์ํํ๋๋ก ํ์ฉํ๋, ๋ถํ์ํ ๊ถํ์ด๋ ๋ช ์์ ์ผ๋ก ํ์ํ์ง ์์ ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค๋ฅผ ๋ถ์ฌํ์ง ์๋ ๊ฒ์ ๋๋ค. ์ต์ ๊ถํ ์์น์ผ๋ก ์๋ ค์ง ์ด ์์น์ ๊ฐ๋ ฅํ ๋ณด์ ์ค๊ณ์ ๊ธฐ๋ณธ์ ๋๋ค.
WebAssembly(Wasm): ๋ณดํธ์ ์ธ ๋ฐ์ด๋๋ฆฌ ํ์
WASI์ ํ์ ์ ๋ํด ๋ ์์ธํ ์์๋ณด๊ธฐ ์ ์ WebAssembly ์์ฒด๋ฅผ ๊ฐ๋ตํ๊ฒ ์์ฝํด ๋ณด๊ฒ ์ต๋๋ค. Wasm์ ๊ณ ์ฑ๋ฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํด ์ค๊ณ๋ ์ ์์ค ๋ฐ์ดํธ์ฝ๋ ํ์์ ๋๋ค. ์ฌ๋ฌ ๊ฐ์ง ๊ฐ๋ ฅํ ์ด์ ์ ์ ๊ณตํฉ๋๋ค.
- ์ด์์ฑ: Wasm ๋ฐ์ดํธ์ฝ๋๋ ํ๋ซํผ์ ๊ตฌ์ ๋ฐ์ง ์์ผ๋ฏ๋ก Wasm ๋ฐํ์์ด ์๋ ๋ชจ๋ ์์คํ ์์ CPU ์ํคํ ์ฒ๋ ์ด์ ์ฒด์ ์ ๊ด๊ณ์์ด ์คํ๋ ์ ์์ต๋๋ค. ์ด๋ Java์ "ํ ๋ฒ ์์ฑ, ์ด๋์๋ ์คํ"๊ณผ ์ ์ฌํ์ง๋ง ํจ์ฌ ๋ฎ์ ์์ค์์ ๋ค์ดํฐ๋ธ ์ฑ๋ฅ์ ๊ฐ๊น์ต๋๋ค.
- ์ฑ๋ฅ: Wasm์ ๋ค์ดํฐ๋ธ์ ๊ฐ๊น์ด ์คํ ์๋๋ฅผ ์ํด ์ค๊ณ๋์์ต๋๋ค. Wasm ๋ฐํ์์ ์ํด ๊ณ ๋๋ก ์ต์ ํ๋ ๊ธฐ๊ณ ์ฝ๋๋ก ์ปดํ์ผ๋์ด CPU ์ง์ฝ์ ์ธ ์์ ์ ์ด์์ ์ ๋๋ค.
- ๋ณด์: Wasm์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์์ ํ ์๋๋ฐ์ค์์ ์คํ๋ฉ๋๋ค. Wasm ๋ฐํ์์์ ๋ช ์์ ์ผ๋ก ๊ถํ์ ๋ถ์ฌํ์ง ์๋ ํ ํธ์คํธ ์์คํ ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฆฌ์์ค์ ์ง์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
- ์ธ์ด ๋ถ๋ฌธ: ๊ฐ๋ฐ์๋ ๋ค์ํ ์ธ์ด(Rust, C/C++, Go, AssemblyScript ๋ฑ)๋ก ์์ฑ๋ ์ฝ๋๋ฅผ Wasm์ผ๋ก ์ปดํ์ผํ ์ ์์ด ์ธ์ด๋ณ ๋ฐํ์ ์ข ์์ฑ ์์ด ํด๋ฆฌ๊ธ๋ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์์ ํฌ๊ธฐ: Wasm ๋ชจ๋์ ์ผ๋ฐ์ ์ผ๋ก ๋งค์ฐ ์์ ๋ค์ด๋ก๋ ์๋๊ฐ ๋น ๋ฅด๊ณ ๋ฉ๋ชจ๋ฆฌ ์๋น๊ฐ ๋ฎ์ผ๋ฉฐ ์์ ์๊ฐ์ด ๋จ์ถ๋ฉ๋๋ค. ์ด๋ ์ฃ์ง ๋ฐ ์๋ฒ๋ฆฌ์ค ํ๊ฒฝ์ ์ค์ํฉ๋๋ค.
Wasm์ ๊ฐ๋ ฅํ ์คํ ํ๊ฒฝ์ ์ ๊ณตํ์ง๋ง ๋ณธ์ง์ ์ผ๋ก ๊ฒฉ๋ฆฌ๋์ด ์์ต๋๋ค. ํ์ผ, ๋คํธ์ํฌ ๋๋ ๊ธฐํ ์์คํ ๋ฆฌ์์ค์ ์ํธ ์์ฉํ๋ ๋ด์ฅ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ์ด๊ฒ์ด WASI๊ฐ ๋ฑ์ฅํ๋ ์ง์ ์ ๋๋ค.
WASI: WebAssembly์ ํธ์คํธ ์์คํ ์ ์ ๋ฐํ๊ฒ ์ฐ๊ฒฐ
WASI ๋๋ WebAssembly ์์คํ ์ธํฐํ์ด์ค๋ WebAssembly ๋ชจ๋์ด ํธ์คํธ ํ๊ฒฝ๊ณผ ์์ ํ๊ฒ ์ํธ ์์ฉํ ์ ์๋๋ก ํ๋ ํ์คํ๋ API์ ๋ชจ๋์ ์ปฌ๋ ์ ์ ๋๋ค. OS์ ๊ตฌ์ ๋ฐ์ง ์๋๋ก ์ค๊ณ๋์ด Wasm ๋ชจ๋์ด ๋ธ๋ผ์ฐ์ ์ธ๋ถ์์ ์ง์ ํ ์ด์์ฑ์ ๋ฌ์ฑํ ์ ์๋๋ก ํฉ๋๋ค.
์์คํ ์ธํฐํ์ด์ค์ ์ญํ : ์ํธ ์์ฉ์ ์ํ ๊ณ์ฝ
WASI๋ฅผ ํ์คํ๋ ๊ณ์ฝ์ผ๋ก ์๊ฐํ ์ ์์ต๋๋ค. WASI ์ฌ์์ ๋ฐ๋ผ ์์ฑ๋ Wasm ๋ชจ๋์ ์์คํ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๊ธฐ ์ํด ์ด๋ค ํจ์๋ฅผ ํธ์ถํ ์ ์๋์ง ์ ํํ ์๊ณ ์์ต๋๋ค(์: "ํ์ผ ์ด๊ธฐ", "์์ผ์์ ์ฝ๊ธฐ"). Wasm ๋ชจ๋์ ํธ์คํ ํ๊ณ ์คํํ๋ Wasm ๋ฐํ์์ ์ด๋ฌํ WASI ํจ์๋ฅผ ๊ตฌํํ๊ณ ์ถ์ ์์ฒญ์ ํธ์คํธ OS์ ๊ตฌ์ฒด์ ์ธ ์์ ์ผ๋ก ๋ณํํ๋ ์ญํ ์ ๋ด๋นํฉ๋๋ค. ์ด ์ถ์ํ ๊ณ์ธต์ WASI์ ๊ฐ๋ ฅํจ์ ํต์ฌ์ ๋๋ค.
WASI์ ์ค๊ณ ์์น: ์ญ๋ ๊ธฐ๋ฐ ๋ณด์ ๋ฐ ๊ฒฐ์ ๋ก
WASI์ ์ค๊ณ๋ ์ญ๋ ๊ธฐ๋ฐ ๋ณด์์ ์ํฅ์ ํฌ๊ฒ ๋ฐ์ต๋๋ค. Wasm ๋ชจ๋์ด ํน์ ์์ ์ ์ํํ ์ ์๋ ํฌ๊ด์ ์ธ ๊ถํ("๋ชจ๋ ํ์ผ ์ก์ธ์ค" ๋ฑ)์ ๊ฐ๋ ๋์ , ํน์ ๋ฆฌ์์ค์ ๋ํ ํน์ "์ญ๋"๋ง ๋ฐ์ต๋๋ค. ์ด๋ ํธ์คํธ๊ฐ Wasm ๋ชจ๋์ ํ์ํ ์ ํํ ๊ถํ์ ์ ํ๋ ๋ฆฌ์์ค ์งํฉ์ ๋ํด์๋ง ๋ช ์์ ์ผ๋ก ๋ถ์ฌํจ์ ์๋ฏธํฉ๋๋ค. ์ด ์์น์ ๊ณต๊ฒฉ ํ๋ฉด์ ๊ทน์ ์ผ๋ก ์ต์ํํฉ๋๋ค.
๋ ๋ค๋ฅธ ์ค์ํ ์์น์ ๊ฒฐ์ ๋ก ์ ๋๋ค. ๋ธ๋ก์ฒด์ธ ๋๋ ์ฌํ ๊ฐ๋ฅํ ๋น๋์ ๊ฐ์ ๋ง์ ์ฌ์ฉ ์ฌ๋ก์ ๊ฒฝ์ฐ, ๋์ผํ ์ ๋ ฅ์ ๋ฐ์ Wasm ๋ชจ๋์ด ํญ์ ๋์ผํ ์ถ๋ ฅ์ ์์ฑํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. WASI๋ ์์คํ ํธ์ถ์ ๋ํ ์ ์ ์๋ ๋์์ ์ ๊ณตํ์ฌ ๊ฐ๋ฅํ ํ ๋น๊ฒฐ์ ์ฑ์ ์ค์์ผ๋ก์จ ์ด๋ฅผ ์ด์งํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
ํ์ผ ๋์คํฌ๋ฆฝํฐ ๊ฐ์ํ: ๋ฆฌ์์ค ์ถ์ํ์ ๋ํ ์ฌ์ธต ๋ถ์
์ด์ ํต์ฌ์ผ๋ก ๋์๊ฐ์ WASI๊ฐ ํ์ผ ๋์คํฌ๋ฆฝํฐ ๊ฐ์ํ๋ฅผ ํตํด ๋ฆฌ์์ค ์ถ์ํ๋ฅผ ๋ฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ด ๋ฉ์ปค๋์ฆ์ WASI์ ๋ณด์ ๋ฐ ์ด์์ฑ ์ฝ์์ ์ค์ฌ์ ๋๋ค.
ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ ๋ฌด์์ธ๊ฐ? (์ ํต์ ์ธ ๊ด์ )
์ ํต์ ์ธ Unix ๊ณ์ด ์ด์ ์ฒด์ ์์ ํ์ผ ๋์คํฌ๋ฆฝํฐ(FD)๋ ํ์ผ์ด๋ ํ์ดํ, ์์ผ ๋๋ ์ฅ์น์ ๊ฐ์ ๋ค๋ฅธ ์ ์ถ๋ ฅ ๋ฆฌ์์ค์ ์ก์ธ์คํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ถ์ ์งํ(์ผ๋ฐ์ ์ผ๋ก ์์ด ์๋ ์ ์)์ ๋๋ค. ํ๋ก๊ทธ๋จ์ด ํ์ผ์ ์ด๋ฉด OS๋ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ๋ฐํํฉ๋๋ค. ํ๋ก๊ทธ๋จ์ ํ์ ์์ (์ฝ๊ธฐ, ์ฐ๊ธฐ, ํ์ ๋ฑ)์ ์ด FD๋ฅผ ์ฌ์ฉํฉ๋๋ค. FD๋ ํ๋ก์ธ์ค๊ฐ ์ธ๋ถ ์ธ๊ณ์ ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ๊ธฐ๋ณธ์ ๋๋ค.
Wasm ๊ด์ ์์ ๋ณผ ๋ ์ ํต์ ์ธ FD์ ๋ฌธ์ ๋ ํธ์คํธ๋ณ์ด๋ผ๋ ๊ฒ์ ๋๋ค. ํ OS์ FD ๋ฒํธ๋ ๋ค๋ฅธ OS์์ ์์ ํ ๋ค๋ฅธ ๋ฆฌ์์ค์ ํด๋นํ๊ฑฐ๋ ์ ํจํ์ง ์์ ์ ์์ต๋๋ค. ๋ํ ํธ์คํธ FD๋ฅผ ์ง์ ์กฐ์ํ๋ ๊ฒ์ ์๋๋ฐ์ฑ์ ์ฐํํ์ฌ Wasm ๋ชจ๋์ ์ ์ฝ ์๋ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
WASI์ ๊ฐ์ ํ์ผ ๋์คํฌ๋ฆฝํฐ: ์ถ์ํ ๊ณ์ธต
WASI๋ ์์ฒด์ ์ธ ๊ฐ์ ํ์ผ ๋์คํฌ๋ฆฝํฐ ๊ฐ๋
์ ๋์
ํฉ๋๋ค. WASI๋ก ์ปดํ์ผ๋ Wasm ๋ชจ๋์ด ํ์ผ์ด๋ ๋คํธ์ํฌ ์์ผ๊ณผ ์ํธ ์์ฉํด์ผ ํ ๋, ํธ์คํธ OS์ ํ์ผ ๋์คํฌ๋ฆฝํฐ์ ์ง์ ์ํธ ์์ฉํ์ง ์์ต๋๋ค. ๋์ WASI ์ ์ API(์: wasi_snapshot_preview1::fd_read)๋ฅผ ์ฌ์ฉํ์ฌ WASI ๋ฐํ์์ ์์ฒญํฉ๋๋ค.
์๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํธ์คํธ ์ฌ์ ์ด๊ธฐ: Wasm ๋ชจ๋์ด ์คํ์ ์์ํ๊ธฐ ์ ์ ํธ์คํธ ํ๊ฒฝ(Wasm ๋ฐํ์)์ ํน์ ๋๋ ํฐ๋ฆฌ ๋๋ ๋ฆฌ์์ค๋ฅผ ๋ชจ๋์ ๋ช
์์ ์ผ๋ก "์ฌ์ ์ฝ๋๋ค". ์๋ฅผ ๋ค์ด, ํธ์คํธ๋ Wasm ๋ชจ๋์ด ํน์ ๋๋ ํฐ๋ฆฌ(์:
/my-data) ๋ด์ ํ์ผ์๋ง ์ก์ธ์คํ๊ณ ์ฝ๊ธฐ ์ ์ฉ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ ์ ์๋ค๊ณ ๊ฒฐ์ ํ ์ ์์ต๋๋ค. - ๊ฐ์ FD ํ ๋น: ์ฌ์ ์ด๋ฆฐ ๊ฐ ๋ฆฌ์์ค์ ๋ํด ํธ์คํธ๋ Wasm ๋ชจ๋์ ์๋๋ฐ์ค ๋ด์์๋ง ์๋ฏธ ์๋ ๊ฐ์ ํ์ผ ๋์คํฌ๋ฆฝํฐ(์ ์)๋ฅผ ํ ๋นํฉ๋๋ค. ์ด๋ฌํ ๊ฐ์ FD๋ ์ผ๋ฐ์ ์ผ๋ก 3 ์ด์์ด๋ฉฐ, FD 0, 1, 2๋ WASI์ ์ํด ๊ฐ์ํ๋ ํ์ค ์ ๋ ฅ, ํ์ค ์ถ๋ ฅ ๋ฐ ํ์ค ์ค๋ฅ์ ๊ฐ๊ฐ ์์ฝ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ์ญ๋ ๋ถ์ฌ: ๊ฐ์ FD์ ํจ๊ป ํธ์คํธ๋ ํด๋น ๊ฐ์ FD์ ๋ํ ํน์ ์ญ๋(๊ถํ) ์งํฉ์ ๋ถ์ฌํฉ๋๋ค. ์ด๋ฌํ ์ญ๋์ ์ธ๋ถํ๋์ด ์์ผ๋ฉฐ Wasm ๋ชจ๋์ด ํด๋น ๋ฆฌ์์ค์ ๋ํด ์ํํ ์ ์๋ ์ ํํ ์์
์ ์ง์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋๋ ํฐ๋ฆฌ๋ ๊ฐ์ FD(์:
3)์read,write,create_file์ญ๋์ผ๋ก ์ฌ์ ์ด๋ฆด ์ ์์ต๋๋ค. ๋ค๋ฅธ ํ์ผ์ ๊ฐ์ FD4์read์ญ๋๋ง์ผ๋ก ์ฌ์ ์ด๋ฆด ์ ์์ต๋๋ค. - Wasm ๋ชจ๋ ์ํธ ์์ฉ: Wasm ๋ชจ๋์ด ํ์ผ์์ ์ฝ๊ธฐ๋ฅผ ์ํ ๋, ์ฌ์ ์ด๋ฆฐ ๋๋ ํฐ๋ฆฌ(์:
"data.txt")์ ์๋์ ์ธ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ์ฌwasi_snapshot_preview1::path_open๊ณผ ๊ฐ์ WASI ํจ์๋ฅผ ํธ์ถํฉ๋๋ค. ์ฑ๊ณตํ๋ฉด WASI ๋ฐํ์์ ์๋ก ์ด๋ฆฐ ํ์ผ์ ๋ํ *๋ ๋ค๋ฅธ* ๊ฐ์ FD์ ํด๋น ํน์ ์ญ๋์ ๋ฐํํฉ๋๋ค. ๋ชจ๋์ ์ดํ ์ฝ๊ธฐ/์ฐ๊ธฐ ์์ ์ ์ด ์ ๊ฐ์ FD๋ฅผ ์ฌ์ฉํฉ๋๋ค. - ํธ์คํธ ๋งคํ: ํธ์คํธ์ Wasm ๋ฐํ์์ ์ด๋ฌํ WASI ํธ์ถ์ ๊ฐ๋ก์ฑ๋๋ค. ๊ฐ์ FD๋ฅผ ์กฐํํ๊ณ , ์์ฒญ๋ ์์ ์ ๋ถ์ฌ๋ ์ญ๋๊ณผ ๋น๊ตํ์ฌ ํ์ธํ ๋ค์, ์ฌ์ ์ด๋ฆฐ ๋ฆฌ์์ค๊ฐ ๋งคํ๋๋ ์ค์ ๊ธฐ๋ณธ ํธ์คํธ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๊ฐ์ ์์ฒญ์ ํธ์คํธ OS์ ํด๋น *๊ธฐ๋ณธ* ์์คํ ํธ์ถ๋ก ๋ณํํฉ๋๋ค.
์ด ์ ์ฒด ํ๋ก์ธ์ค๋ Wasm ๋ชจ๋์ ํฌ๋ช ํ๊ฒ ์ด๋ฃจ์ด์ง๋๋ค. Wasm ๋ชจ๋์ ์ถ์์ ์ธ ๊ฐ์ ํ์ผ ๋์คํฌ๋ฆฝํฐ์ ์ด์ ๊ด๋ จ๋ ์ญ๋๋ง ๋ณด๊ณ ์๋ํฉ๋๋ค. ํธ์คํธ์ ๊ธฐ๋ณธ ํ์ผ ์์คํ ๊ตฌ์กฐ, ๊ธฐ๋ณธ FD ๋๋ ํน์ ์์คํ ํธ์ถ ๊ท์น์ ๋ํ ์ง์์ด ์ ํ ์์ต๋๋ค.
์์: ๋๋ ํฐ๋ฆฌ ์ฌ์ ์ด๊ธฐ
์ด๋ฏธ์ง๋ฅผ ์ฒ๋ฆฌํ๋ Wasm ๋ชจ๋์ ์์ํด ๋ณด์ธ์. ํธ์คํธ ํ๊ฒฝ์ ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ผ๋ก ์คํํ ์ ์์ต๋๋ค.
wasmtime --mapdir /in::/var/data/images --mapdir /out::/tmp/processed-images image-processor.wasm
์ด ์๋๋ฆฌ์ค์์๋:
- ํธ์คํธ Wasm ๋ฐํ์(์: Wasmtime)์ ๋ ๊ฐ์ ํธ์คํธ ๋๋ ํฐ๋ฆฌ
/var/data/images์/tmp/processed-images๋ฅผ ์ฌ์ ์ฝ๋๋ค. /var/data/images๋ฅผ Wasm ๋ชจ๋์ ๊ฐ์ ๊ฒฝ๋ก/in์ ๋งคํํ๊ณ , ์๋ฅผ ๋ค์ดread๋ฐlookup์ญ๋์ ๋ถ์ฌํฉ๋๋ค. ์ฆ, Wasm ๋ชจ๋์ ๊ฐ์/in๋๋ ํฐ๋ฆฌ ๋ด์ ํ์ผ์ ๋์ดํ๊ณ ์ฝ์ ์ ์์ต๋๋ค./tmp/processed-images๋ฅผ Wasm ๋ชจ๋์ ๊ฐ์ ๊ฒฝ๋ก/out์ ๋งคํํ๊ณ , ์๋ฅผ ๋ค์ดwrite,create_file๋ฐremove_file์ญ๋์ ๋ถ์ฌํฉ๋๋ค. ์ด๋ฅผ ํตํด Wasm ๋ชจ๋์ ๊ฐ์/out๋๋ ํฐ๋ฆฌ์ ์ฒ๋ฆฌ๋ ์ด๋ฏธ์ง๋ฅผ ์ธ ์ ์์ต๋๋ค.- Wasm ๋ชจ๋์ด
/in/picture.jpg๋ฅผ ์ด๋๋ก ์์ฒญ๋ฐ์ผ๋ฉด ํด๋น ํ์ผ์ ๋ํ ๊ฐ์ FD๋ฅผ ๋ฐ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ํด๋น ๊ฐ์ FD๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์์ต๋๋ค. ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ค๊ณ ํ ๋/out/picture-processed.png๋ฅผ ์ด๊ณ ๋ค๋ฅธ ๊ฐ์ FD๋ฅผ ๋ฐ์ ์ ํ์ผ์ ์ฐ๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค.
Wasm ๋ชจ๋์ ํธ์คํธ์ /in์ด ์ค์ ๋ก /var/data/images์ด๊ณ /out์ด /tmp/processed-images๋ผ๋ ์ฌ์ค์ ์ ํ ์์ง ๋ชปํฉ๋๋ค. ์๋๋ฐ์คํ๋ ๊ฐ์ ํ์ผ ์์คํ
๋ง ์๊ณ ์์ต๋๋ค.
์ค์ง์ ์ธ ์ํฅ ๋ฐ ๊ธ๋ก๋ฒ ์ํ๊ณ๋ฅผ ์ํ ์ด์
WASI์ ํ์ผ ๋์คํฌ๋ฆฝํฐ ๊ฐ์ํ์ ์๋ฆ๋ค์์ ๋จ์ํ ๊ธฐ์ ์ ์ฐ์ํจ์ ํจ์ฌ ๋ฐ์ด๋์ด ์ ์ธ๊ณ์ ์ผ๋ก ๋ค์ํ ๊ธฐ์ ํ๊ฒฝ์์ ์ด์๋๋ ๊ฐ๋ฐ์์ ์กฐ์ง์ ์ฌ์คํ ์ด์ ์ ์ ๊ณตํฉ๋๋ค.
1. ๋น๊ตํ ์ ์๋ ๋ณด์: ์ต์ ๊ถํ ์์น์ ์ค์ ์ ์ฉ
์ด๋ ์๋ง๋ ๊ฐ์ฅ ์ค์ํ ์ด์ ์ผ ๊ฒ์
๋๋ค. ๋ช
์์ ์ธ ํธ์คํธ ์ฌ์ ์ด๊ธฐ ๋ฐ ์ญ๋ ๋ถ์ฌ๋ฅผ ํตํด WASI๋ ์ต์ ๊ถํ ์์น์ ์๊ฒฉํ๊ฒ ์ํํฉ๋๋ค. Wasm ๋ชจ๋์ ๋ถ์ฌ๋ฐ์ ๊ฒ๋ง ์ก์ธ์คํ ์ ์์ต๋๋ค. /etc/passwd๋ฅผ ์ฝ์ผ๋ ค๊ณ ์๋ํ ์ ์์ต๋๋ค.
- ์ง์ ๋ ๋๋ ํฐ๋ฆฌ ๋ฒ์ด๋ ์ ์์:
/data์ ์ก์ธ์คํ๋๋ก ์ค๊ณ๋ ๋ชจ๋์ ๊ฐ์๊ธฐ/etc/passwd๋ฅผ ์ฝ์ผ๋ ค๊ณ ์๋ํ ์ ์์ต๋๋ค. - ๋ฌด๋จ ์์ ์ํ ๋ถ๊ฐ: ์ฝ๊ธฐ ์ ์ฉ ์ก์ธ์ค ๊ถํ์ด ๋ถ์ฌ๋ ๋ชจ๋์ ํ์ผ์ ์ฐ๊ฑฐ๋ ์ญ์ ํ ์ ์์ต๋๋ค.
- ๋ช ์์ ์ผ๋ก ๋ถ์ฌ๋์ง ์์ ๋ฆฌ์์ค ์ก์ธ์ค ๋ถ๊ฐ: ์ฌ์ ์ด๋ฆฌ์ง ์์๋ค๋ฉด ์ก์ธ์คํ ์ ์์ต๋๋ค. ์ด๋ ๋ง์ ์ผ๋ฐ์ ์ธ ๊ณต๊ฒฉ ๋ฒกํฐ๋ฅผ ์ ๊ฑฐํ๊ณ Wasm ๋ชจ๋์ ํจ์ฌ ๋ ์์ ํ๊ฒ ์คํํ ์ ์๋๋ก ํ๋ฉฐ, ์ฌ์ง์ด ์ ๋ขฐํ ์ ์๋ ์์ค์ ๊ฒฝ์ฐ์๋ ๊ทธ๋ ์ต๋๋ค. ์ด๋ฌํ ์์ค์ ๋ณด์์ ๋ค๋ฅธ ์ฌ์ฉ์์ ์ฝ๋๊ฐ ๋์ผํ ์ธํ๋ผ์์ ์คํ๋๋ ์๋ฒ๋ฆฌ์ค ์ปดํจํ ๊ณผ ๊ฐ์ ๋ฉํฐ ํ ๋ํธ ํ๊ฒฝ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
2. ํฅ์๋ ์ด์์ฑ: ํ ๋ฒ ์์ฑ, ์ง์ ์ผ๋ก ์ด๋์๋ ์คํ
Wasm ๋ชจ๋์ ์ ์ ์ผ๋ก ์ถ์์ ์ธ ๊ฐ์ ํ์ผ ๋์คํฌ๋ฆฝํฐ์ WASI API์์๋ง ์๋ํ๋ฏ๋ก ๊ธฐ๋ณธ ํธ์คํธ ์ด์ ์ฒด์ ์์ ์์ ํ ๋ถ๋ฆฌ๋ฉ๋๋ค. ๋์ผํ Wasm ๋ฐ์ด๋๋ฆฌ๋ ๋ค์์์ ์ํํ๊ฒ ์คํ๋ ์ ์์ต๋๋ค.
- Linux ์๋ฒ ( `wasmedge`, `wasmtime` ๋๋ `lucet` ๋ฐํ์ ์ฌ์ฉ).
- Windows ์ปดํจํฐ (ํธํ ๋ฐํ์ ์ฌ์ฉ).
- macOS ์ํฌ์คํ ์ด์ .
- ์ฃ์ง ์ฅ์น (Raspberry Pi ๋๋ ํน์ ๋ฐํ์์ด ์๋ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ ํฌํจ).
- ํด๋ผ์ฐ๋ ํ๊ฒฝ (๋ค์ํ ๊ฐ์ ๋จธ์ ๋๋ ์ปจํ ์ด๋ ํ๋ซํผ).
- WASI ์ฌ์์ ๊ตฌํํ๋ ์ฌ์ฉ์ ์ง์ ์๋ฒ ๋๋ ์์คํ .
ํธ์คํธ ๋ฐํ์์ WASI์ ๊ฐ์ FD ๋ฐ ๊ฒฝ๋ก๋ฅผ ๊ธฐ๋ณธ OS ํธ์ถ๋ก ๋ณํํ๋ ์์ ์ ์ฒ๋ฆฌํฉ๋๋ค. ์ด๋ ๊ฐ๋ฐ ๋ ธ๋ ฅ์ ํฌ๊ฒ ์ค์ด๊ณ , ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ ๋จ์ํํ๋ฉฐ, ์ฌ์ปดํ์ผ ๋๋ ์ฌ์์ง๋์ด๋ง ์์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ฅ ์ต์ ์ ํ๊ฒฝ์ ๋ฐฐํฌํ ์ ์๋๋ก ํฉ๋๋ค.
3. ๊ฐ๋ ฅํ ๊ฒฉ๋ฆฌ: ์ธก๋ฉด ์ด๋ ๋ฐ ๊ฐ์ญ ๋ฐฉ์ง
WASI์ ๊ฐ์ํ๋ Wasm ๋ชจ๋๊ณผ ํธ์คํธ ๊ฐ, ๊ทธ๋ฆฌ๊ณ ๋์์ ์คํ๋๋ ๋ค๋ฅธ Wasm ๋ชจ๋ ๊ฐ์ ๊ฐ๋ ฅํ ๊ฒฉ๋ฆฌ ๊ฒฝ๊ณ๋ฅผ ๋ง๋ญ๋๋ค. ํ ๋ชจ๋์ ์ค์๋์ด๋ ์์์ด ์์คํ ์ ๋ค๋ฅธ ๋ถ๋ถ์ด๋ ๋ค๋ฅธ ๋ชจ๋๋ก ์ฝ๊ฒ ํผ์ง์ง ์์ต๋๋ค. ์ด๋ ์ฌ๋ฌ ์ ๋ขฐํ ์ ์๋ ํ๋ฌ๊ทธ์ธ์ด๋ ์๋ฒ๋ฆฌ์ค ํจ์๊ฐ ๋จ์ผ ํธ์คํธ๋ฅผ ๊ณต์ ํ๋ ์๋๋ฆฌ์ค์์ ํนํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
4. ๋จ์ํ๋ ๋ฐฐํฌ ๋ฐ ๊ตฌ์ฑ
์ ์ธ๊ณ ์ด์ ํ์๊ฒ WASI๋ ๋ฐฐํฌ๋ฅผ ๋จ์ํํฉ๋๋ค. ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ํ ๋ณผ๋ฅจ ๋ง์ดํธ ๋ฐ ๋ณด์ ์ปจํ ์คํธ๋ฅผ ๊ฐ์ถ ๋ณต์กํ ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์ ๊ตฌ์ฑํ๋ ๋์ , Wasm ๋ฐํ์ ํธ์ถ ์ ๋ช ์์ ์ธ ๋ฆฌ์์ค ๋งคํ ๋ฐ ์ญ๋๋ง ์ ์ํ๋ฉด ๋ฉ๋๋ค. ์ด๋ ๋ณด๋ค ์์ธก ๊ฐ๋ฅํ๊ณ ๊ฐ์ฌ ๊ฐ๋ฅํ ๋ฐฐํฌ๋ก ์ด์ด์ง๋๋ค.
5. ํฅ์๋ ์กฐํฉ ๊ฐ๋ฅ์ฑ: ์์ ํ๊ณ ๋ ๋ฆฝ์ ์ธ ๋ธ๋ก์ผ๋ก ๊ตฌ์ถ
WASI์์ ์ ๊ณตํ๋ ๋ช ํํ ์ธํฐํ์ด์ค์ ๊ฐ๋ ฅํ ๊ฒฉ๋ฆฌ๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๋ ์๊ณ ๋ ๋ฆฝ์ ์ธ Wasm ๋ชจ๋์ ์กฐํฉํ์ฌ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ๊ฐ ๋ชจ๋์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐ ๋ฐ ๋ณด์์ด ์ ์ง๋ ์ ์์ผ๋ฉฐ, ๋ฆฌ์์ค ์ก์ธ์ค๊ฐ ์๊ฒฉํ๊ฒ ์ ์ด๋๋ค๋ ๊ฒ์ ์๋ฉด์ ํตํฉํ ์ ์์ต๋๋ค. ์ด๋ ๋ชจ๋์ ์ํคํ ์ฒ, ์ฌ์ฌ์ฉ์ฑ ๋ฐ ์ ์ง ๊ด๋ฆฌ์ฑ์ ์ด์งํฉ๋๋ค.
์ค์ ๋ฆฌ์์ค ์ถ์ํ: ํ์ผ ์ด์
"ํ์ผ ๋์คํฌ๋ฆฝํฐ ๊ฐ์ํ"๋ผ๋ ์ฉ์ด๊ฐ ํ์ผ์๋ง ์ง์คํ๋ ๊ฒ์ ์์ฌํ ์ ์์ง๋ง, WASI์ ๋ฆฌ์์ค ์ถ์ํ๋ ๋ค๋ฅธ ์ฌ๋ฌ ๊ธฐ๋ณธ ์์คํ ๋ฆฌ์์ค๋ก ํ์ฅ๋ฉ๋๋ค.
1. ๋คํธ์ํฌ ์์ผ
ํ์ผ๊ณผ ์ ์ฌํ ๋ฐฉ์์ผ๋ก WASI๋ ๋คํธ์ํฌ ์์ผ ์์ ๋ ๊ฐ์ํํฉ๋๋ค. Wasm ๋ชจ๋์ ์์์ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ์ด ์ ์์ต๋๋ค. ๋์ ํธ์คํธ ๋ฐํ์์ ๋ค์์ ์ํํ ๊ถํ์ ๋ช ์์ ์ผ๋ก ๋ถ์ฌํด์ผ ํฉ๋๋ค.
- ํน์ ๋ก์ปฌ ์ฃผ์ ๋ฐ ํฌํธ์ ๋ฐ์ธ๋ฉ: ์: ํฌํธ 8080๋ง.
- ํน์ ์๊ฒฉ ์ฃผ์ ๋ฐ ํฌํธ์ ์ฐ๊ฒฐ: ์:
api.example.com:443๋ง.
Wasm ๋ชจ๋์ ์์ผ์ ์์ฒญํ๊ณ (๊ฐ์ FD ์์ ), ํธ์คํธ ๋ฐํ์์ ์ค์ TCP/UDP ์ฐ๊ฒฐ์ ๊ด๋ฆฌํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ ์์ ์ธ ๋ชจ๋์ด ๋ด๋ถ ๋คํธ์ํฌ๋ฅผ ๊ฒ์ํ๊ฑฐ๋ ์ธ๋ถ ๊ณต๊ฒฉ์ ์์ํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
2. ์๊ณ ๋ฐ ํ์ด๋จธ
ํ์ฌ ์๊ฐ์ ์ก์ธ์คํ๊ฑฐ๋ ํ์ด๋จธ๋ฅผ ์ค์ ํ๋ ๊ฒ๋ WASI๊ฐ ์ถ์ํํ๋ ์ํธ ์์ฉ์ ๋๋ค. ํธ์คํธ๋ Wasm ๋ชจ๋์ ๊ฐ์ ์๊ณ๋ฅผ ์ ๊ณตํ๋ฉฐ, Wasm ๋ชจ๋์ ํธ์คํธ์ ํ๋์จ์ด ์๊ณ์ ์ง์ ์ํธ ์์ฉํ์ง ์๊ณ ๋ ์๊ฐ์ ์ฟผ๋ฆฌํ๊ฑฐ๋ ํ์ด๋จธ๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒฐ์ ๋ก ๋ฐ ๋ชจ๋์ด ์์คํ ์๊ฐ์ ์กฐ์ํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
3. ํ๊ฒฝ ๋ณ์
ํ๊ฒฝ ๋ณ์๋ ์ข ์ข ๋ฏผ๊ฐํ ๊ตฌ์ฑ ๋ฐ์ดํฐ(์: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๊ฒฉ ์ฆ๋ช , API ํค)๋ฅผ ํฌํจํฉ๋๋ค. WASI๋ Wasm ๋ชจ๋์ ๋ชจ๋ ํธ์คํธ ํ๊ฒฝ ๋ณ์๋ฅผ ๋ ธ์ถํ๋ ๋์ ํธ์คํธ๊ฐ ํ์ํ ํ๊ฒฝ ๋ณ์๋ง ๋ช ์์ ์ผ๋ก ์ ๊ณตํ๋๋ก ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ ๋ณด ์ ์ถ์ ๋ฐฉ์งํฉ๋๋ค.
4. ๋์ ์์ฑ
์ํธํ์ ์ผ๋ก ์์ ํ ๋์ ์์ฑ์ ๋ง์ ์ ํ๋ฆฌ์ผ์ด์
์ ์ค์ํฉ๋๋ค. WASI๋ Wasm ๋ชจ๋์ด ์์์ ๋ฐ์ดํธ๋ฅผ ์์ฒญํ ์ ์๋ API๋ฅผ ์ ๊ณตํฉ๋๋ค. Wasm ๋ฐํ์์ ํธ์คํธ์ ๋์ ์์ฑ๊ธฐ(์: Linux์ /dev/urandom ๋๋ Windows์ `BCryptGenRandom`)์ ํน์ ์ฌํญ์ ์ถ์ํํ์ฌ ๊ณ ํ์ง์ ์์ ํ๊ฒ ์์ฑ๋ ๋์๋ฅผ ์ ๊ณตํ๋ ์ญํ ์ ๋ด๋นํฉ๋๋ค.
๊ธ๋ก๋ฒ ์ํฅ ๋ฐ ํ์ ์ ์ธ ์ฌ์ฉ ์ฌ๋ก
WebAssembly์ ์ฑ๋ฅ ๋ฐ ์ด์์ฑ๊ณผ WASI์ ์์ ํ ๋ฆฌ์์ค ์ถ์ํ์ ์กฐํฉ์ ๋ค์ํ ๊ธ๋ก๋ฒ ์ฐ์ ์ ๋ฐ์ ๊ฑธ์ณ ํ์ ์ ์ฃผ๋ํ ์ค๋น๊ฐ ๋์ด ์์ต๋๋ค.
1. ์ฃ์ง ์ปดํจํ ๋ฐ IoT: ์ ์ฝ๋ ์ฅ์น์์์ ์์ ํ ์ฝ๋
์ฃ์ง ์ฅ์น๋ ์ข ์ข ์ ํ๋ ๋ฆฌ์์ค(CPU, ๋ฉ๋ชจ๋ฆฌ, ์ ์ฅ ๊ณต๊ฐ)๋ฅผ ๊ฐ์ง๋ฉฐ ์ ์ฌ์ ์ผ๋ก ์์ ํ์ง ์๊ฑฐ๋ ์ ๋ขฐํ ์ ์๋ ํ๊ฒฝ์์ ์๋ํฉ๋๋ค. Wasm์ ์์ ํฌ๊ธฐ์ WASI์ ๊ฐ๋ ฅํ ๋ณด์ ๋ชจ๋ธ์ ์ฃ์ง ์ฅ์น์ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ๋ฐฐํฌํ๋ ๋ฐ ์ด์์ ์ ๋๋ค. AI ์ถ๋ก ์ ์ํ Wasm ๋ชจ๋์ ์คํํ๋ ๋ณด์ ์นด๋ฉ๋ผ๋ฅผ ์์ํด ๋ณด์ธ์. ์ด ๋ชจ๋์ ์นด๋ฉ๋ผ ํผ๋์์๋ง ์ฝ๊ณ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ํน์ ๋คํธ์ํฌ ์๋ํฌ์ธํธ์๋ง ์ธ ์ ์์ผ๋ฉฐ ๋ค๋ฅธ ์์คํ ์ก์ธ์ค๋ ํ์ฉ๋์ง ์์ต๋๋ค. ์ด๋ AI ๋ชจ๋์ด ์์๋๋๋ผ๋ ์ฅ์น ์์ฒด๋ ์์ ํ๊ฒ ์ ์ง๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
2. ์๋ฒ๋ฆฌ์ค ํจ์: ์ฐจ์ธ๋ ๋ฉํฐ ํ ๋์
์๋ฒ๋ฆฌ์ค ํ๋ซํผ์ ๋ณธ์ง์ ์ผ๋ก ๋ฉํฐ ํ ๋ํธ์ด๋ฉฐ, ๊ณต์ ์ธํ๋ผ์์ ๋ค์ํ ์ฌ์ฉ์์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค. WASI๋ ์ด ์ฌ์ฉ ์ฌ๋ก์ ๋ํด ๊ธฐ์กด ์ปจํ ์ด๋๋ณด๋ค ์ฐ์ํ ์๋๋ฐ์ฑ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค. ๋น ๋ฅธ ์์ ์๊ฐ(์์ ํฌ๊ธฐ์ ํจ์จ์ ์ธ ์คํ ๋๋ถ)๊ณผ ์ธ๋ถํ๋ ๋ณด์์ ํ ํจ์์ ์ฝ๋๊ฐ ๋ค๋ฅธ ํจ์๋ ๊ธฐ๋ณธ ํธ์คํธ๋ฅผ ๋ฐฉํดํ ์ ์๋๋ก ํ์ฌ ์๋ฒ๋ฆฌ์ค ๋ฐฐํฌ๋ฅผ ํด๋ผ์ฐ๋ ๊ณต๊ธ์ ์ฒด์ ๊ฐ๋ฐ์ ๋ชจ๋์๊ฒ ๋ ์์ ํ๊ณ ํจ์จ์ ์ผ๋ก ๋ง๋ญ๋๋ค.
3. ๋ง์ดํฌ๋ก์๋น์ค ๋ฐ ํด๋ฆฌ๊ธ๋ ์ํคํ ์ฒ: ์ธ์ด ๋ถ๋ฌธ ๊ตฌ์ฑ ์์
์กฐ์ง์ ์ข ์ข ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์ฑํํฉ๋๋ค. ๊ฑฐ์ ๋ชจ๋ ์ธ์ด์์ ์ปดํ์ผ๋๋ Wasm์ ์ด๋ฌํ ์๋น์ค์ ๋ํ ๋ณดํธ์ ์ธ ๋ฐํ์์ด ๋ ์ ์์ต๋๋ค. WASI์ ์ถ์ํ๋ Rust๋ก ์์ฑ๋ Wasm ์๋น์ค๊ฐ Go๋ก ์์ฑ๋ ์๋น์ค๋งํผ ์ฝ๊ณ ์์ ํ๊ฒ ํ์ผ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ ์์ฉํ ์ ์๋๋ก ๋ณด์ฅํ๋ฉฐ, ์ด๋ ์ ์ฒด ์ธํ๋ผ์ ๊ฑธ์ณ ์ด์ ๊ฐ๋ฅํฉ๋๋ค. ์ ์ธ๊ณ์ ์ผ๋ก ํด๋ฆฌ๊ธ๋ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ๋ฅผ ๋จ์ํํฉ๋๋ค.
4. ๋ธ๋ก์ฒด์ธ ๋ฐ ์ค๋งํธ ๊ณ์ฝ: ๊ฒฐ์ ๋ก ์ ์ด๊ณ ์ ๋ขฐํ ์ ์๋ ์คํ
๋ธ๋ก์ฒด์ธ ํ๊ฒฝ์์ ์ค๋งํธ ๊ณ์ฝ์ ์ฌ๋ฌ ๋ถ์ฐ ๋ ธ๋์์ ๊ฒฐ์ ๋ก ์ ์ด๊ณ ์์ ํ๊ฒ ์คํ๋์ด์ผ ํฉ๋๋ค. Wasm์ ๊ฒฐ์ ๋ก ์ ํน์ฑ๊ณผ WASI์ ์ ์ด๋ ํ๊ฒฝ์ ์ค๋งํธ ๊ณ์ฝ ์คํ ์์ง์ ํ์ํ ํ๋ณด์ ๋๋ค. ํ์ผ ๋์คํฌ๋ฆฝํฐ ๊ฐ์ํ๋ ๊ณ์ฝ ์คํ์ด ๊ฒฉ๋ฆฌ๋์ด ๋ ธ๋์ ๊ธฐ๋ณธ ํ์ผ ์์คํ ๊ณผ ์ํธ ์์ฉํ ์ ์๋๋ก ํ์ฌ ๋ฌด๊ฒฐ์ฑ๊ณผ ์์ธก ๊ฐ๋ฅ์ฑ์ ์ ์งํฉ๋๋ค.
5. ์์ ํ ํ๋ฌ๊ทธ์ธ ๋ฐ ํ์ฅ ์์คํ : ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ฅ์ ์์ ํ๊ฒ ํ์ฅ
์น ๋ธ๋ผ์ฐ์ ๋ถํฐ ์ฝํ ์ธ ๊ด๋ฆฌ ์์คํ ๊น์ง ๋ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ๋ฌ๊ทธ์ธ ์ํคํ ์ฒ๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ์ฌ ์ฝ๋๋ฅผ ํตํฉํ๋ ๊ฒ์ ํญ์ ๋ณด์ ์ํ์ ์๋ฐํฉ๋๋ค. WASI ์ง์ Wasm ๋ชจ๋๋ก ํ๋ฌ๊ทธ์ธ์ ์คํํจ์ผ๋ก์จ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์๋ ๊ฐ ํ๋ฌ๊ทธ์ธ์ด ์ก์ธ์คํ ์ ์๋ ๋ฆฌ์์ค๋ฅผ ์ ํํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ง ํธ์ง ํ๋ฌ๊ทธ์ธ์ ์ ๊ณต๋ ์ด๋ฏธ์ง ํ์ผ์ ์ฝ๊ณ ์์ ๋ ๋ฒ์ ์ ์์ฑํ๋ ๊ฒ๋ง ํ์ฉ๋ ์ ์์ผ๋ฉฐ, ๋คํธ์ํฌ ์ก์ธ์ค๋ ๊ด๋ฒ์ํ ํ์ผ ์์คํ ๊ถํ์ ํ์ฉ๋์ง ์์ต๋๋ค.
๋ณดํธ์ ์ธ ์ถ์ํ๋ฅผ ์ํ ๊ณผ์ ๋ฐ ํฅํ ๋ฐฉํฅ
WASI์ ํ์ผ ๋์คํฌ๋ฆฝํฐ ๊ฐ์ํ ๋ฐ ๋ฆฌ์์ค ์ถ์ํ๋ ์์ฒญ๋ ์ด์ ์ ์ ๊ณตํ์ง๋ง, ์ํ๊ณ๋ ์ฌ์ ํ ๋ฐ์ ์ค์ ๋๋ค.
1. ์งํํ๋ ํ์ค: ๋น๋๊ธฐ I/O ๋ฐ ์ปดํฌ๋ํธ ๋ชจ๋ธ
์ด๊ธฐ WASI ์ฌ์์ธ wasi_snapshot_preview1์ ์ฃผ๋ก ๋๊ธฐ I/O๋ฅผ ์ง์ํ๋ฉฐ, ์ด๋ ๋คํธ์ํฌ ์ง์ฝ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ด ๋ ์ ์์ต๋๋ค. ๋น๋๊ธฐ I/O ๋ฐ ๋ ๊ฐ๋ ฅํ Wasm์ฉ ์ปดํฌ๋ํธ ๋ชจ๋ธ์ ํ์คํํ๊ธฐ ์ํ ๋
ธ๋ ฅ์ด ์งํ ์ค์
๋๋ค. ์ปดํฌ๋ํธ ๋ชจ๋ธ์ Wasm ๋ชจ๋์ด ์๋ก์ ๋ด๋ถ ์ธ๋ถ ์ ๋ณด๋ฅผ ์์ง ์๊ณ ์์ ํ๊ณ ํจ์จ์ ์ผ๋ก ํต์ ํ ์ ์๋๋ก ํ์ฌ Wasm ๋ชจ๋์ ์ง์ ์ผ๋ก ์กฐํฉ ๊ฐ๋ฅํ๊ณ ์ํธ ์ด์ฉ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์ด๋ ๋ฆฌ์์ค ๊ณต์ ๋ฐ ์ถ์ํ ๊ธฐ๋ฅ์ ๋์ฑ ํฅ์์ํฌ ๊ฒ์
๋๋ค.
2. ๊น์ ๊ฐ์ํ๋ฅผ ์ํ ์ฑ๋ฅ ๊ณ ๋ ค ์ฌํญ
Wasm ์์ฒด๋ ๋น ๋ฅด์ง๋ง, WASI ํธ์ถ๊ณผ ๊ธฐ๋ณธ ์์คํ ํธ์ถ ๊ฐ์ ๋ณํ ๊ณ์ธต์ ์ฝ๊ฐ์ ์ค๋ฒํค๋๋ฅผ ๋ฐ์์ํต๋๋ค. ๊ทน๋๋ก ๋์ ์ฑ๋ฅ์ I/O ๋ฐ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ์ด ์ค๋ฒํค๋๊ฐ ๊ณ ๋ ค ๋์์ด ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Wasm ๋ฐํ์์ ์ง์์ ์ธ ์ต์ ํ์ ๋ณด๋ค ํจ์จ์ ์ธ WASI ๊ตฌํ์ ์ด ๊ฒฉ์ฐจ๋ฅผ ์ง์์ ์ผ๋ก ์ค์ฌ Wasm + WASI๋ฅผ ๊น๋ค๋ก์ด ์๋๋ฆฌ์ค์์๋ ๊ฒฝ์๋ ฅ ์๊ฒ ๋ง๋ญ๋๋ค.
3. ๋๊ตฌ ๋ฐ ์ํ๊ณ ์ฑ์๋
Wasm ๋ฐ WASI ์ํ๊ณ๋ ํ๊ธฐ์ฐจ์ง๋ง ์์ง ์ฑ์ ๋จ๊ณ์ ๋๋ค. ๋ ๋์ ๋๋ฒ๊ฑฐ, ํ๋กํ์ผ๋ฌ, IDE ํตํฉ ๋ฐ ๋ค์ํ ์ธ์ด ์ ๋ฐ์ ํ์คํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฑํ์ ๊ฐ์ํํ ๊ฒ์ ๋๋ค. ๋ ๋ง์ ํ์ฌ์ ์คํ ์์ค ํ๋ก์ ํธ๊ฐ WASI์ ํฌ์ํจ์ ๋ฐ๋ผ ์ ์ธ๊ณ ๊ฐ๋ฐ์์๊ฒ ๋์ฑ ๊ฐ๋ ฅํ๊ณ ์ฌ์ฉ์ ์นํ์ ์ธ ๋๊ตฌ๊ฐ ๋ ๊ฒ์ ๋๋ค.
๊ฒฐ๋ก : ์ฐจ์ธ๋ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๋ฐ ์ฃ์ง ์ ํ๋ฆฌ์ผ์ด์ ์ง์
WebAssembly WASI์ ํ์ผ ๋์คํฌ๋ฆฝํฐ ๊ฐ์ํ๋ ๋จ์ํ ๊ธฐ์ ์ ์ธ๋ถ ์ฌํญ ์ด์์ ๋๋ค. ์ด๋ ํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ๋ณด์, ์ด์์ฑ ๋ฐ ๋ฆฌ์์ค ๊ด๋ฆฌ์ ์ ๊ทผํ๋ ๋ฐฉ์์ ๊ทผ๋ณธ์ ์ธ ๋ณํ๋ฅผ ๋ํ๋ ๋๋ค. ํธ์คํธ๋ณ ์ํธ ์์ฉ์ ๋ณต์ก์ฑ๊ณผ ์ํ์ ์ถ์ํํ๋ ๋ณดํธ์ ์ด๊ณ ์ญ๋ ๊ธฐ๋ฐ ์์คํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ WASI๋ ๋ณธ์ง์ ์ผ๋ก ๋ ์์ ํ๊ณ , ๊ฐ์ฅ ์์ ์ฃ์ง ์ฅ์น๋ถํฐ ๊ฑฐ๋ํ ํด๋ผ์ฐ๋ ๋ฐ์ดํฐ ์ผํฐ๊น์ง ๋ชจ๋ ํ๊ฒฝ์ ๋ฐฐํฌ ๊ฐ๋ฅํ๋ฉฐ, ๊ฐ์ฅ ๊น๋ค๋ก์ด ์ํฌ๋ก๋์ ์ถฉ๋ถํ ํจ์จ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
๋ค์ํ ์ปดํจํ ํ๋ซํผ์ ๋ณต์ก์ฑ์ ์ง๋ฉดํ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ WASI๋ ๋งค๋ ฅ์ ์ธ ๋น์ ์ ์ ๊ณตํฉ๋๋ค. ์ฝ๋ ์ ์ฒด์์ ์์ ํ๊ณ ์์ธก ๊ฐ๋ฅํ๊ฒ ์ง์ ์ผ๋ก ์คํ๋๋ ๋ฏธ๋์ ๋๋ค. WASI ์ฌ์์ด ๊ณ์ ๋ฐ์ ํ๊ณ ์ํ๊ณ๊ฐ ์ฑ์ํจ์ ๋ฐ๋ผ, ์ด๋ฌํ ๊ฐ๋ ฅํ ์ถ์ํ๋ฅผ ํ์ฉํ์ฌ ๋ณด๋ค ํ๋ ฅ์ ์ด๊ณ ํ์ ์ ์ด๋ฉฐ ๋ณดํธ์ ์ผ๋ก ์ก์ธ์ค ๊ฐ๋ฅํ ์ํํธ์จ์ด ์๋ฃจ์ ์ ๊ตฌ์ถํ๋ ์ฐจ์ธ๋ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ, ์ฃ์ง ๋ฐ ์๋ฒ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ํ ์ ์์ต๋๋ค.
WebAssembly์ WASI์ ํ๊ธฐ์ ์ธ ๋ฆฌ์์ค ์ถ์ํ ์ ๊ทผ ๋ฐฉ์์ ํตํด ์์ ํ๊ณ ์ด์ ๊ฐ๋ฅํ ์ปดํจํ ์ ๋ฏธ๋๋ฅผ ๋ฐ์๋ค์ด์ธ์. ์ง์ ํ ๋ณดํธ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ๋ฅผ ํฅํ ์ฌ์ ์ ์ด๋ฏธ ์ ์งํ๋๊ณ ์์ผ๋ฉฐ, ํ์ผ ๋์คํฌ๋ฆฝํฐ ๊ฐ์ํ๋ ์ด ๋ณํ์ ์ธ ์ด๋์ ์ด์์ ๋๋ค.