Mozilla, Fastly, Intel ๋ฐ Red Hat
๋ธ๋ผ์ฐ์ ์ธ๋ถ์์ ์คํํ ์ ์๋ WebAssembly ํ์์ผ๋ก ์ ๊ณต๋๋ ์ด์ ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๋ ค๋ฉด API๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ค ํ๋
๋ณดํธ๋ฅผ ์ํด ๊ฐ ์ข ์์ฑ ๋ชจ๋์ด ๋ณ๋๋ก ๊ฒฉ๋ฆฌ๋ WebAssembly ๋ชจ๋๋ก ๋ถ๋ฆฌ๋๊ณ ๊ทธ ๊ถํ์ด ์ด ๋ชจ๋๊ณผ ๊ด๋ จํด์๋ง ์ค์ ๋๋ ๋๋ ธํ๋ก์ธ์ค ๊ฐ๋ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ์๋ฉ๋๋ค(์๋ฅผ ๋ค์ด ๋ฌธ์์ด ์ฒ๋ฆฌ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋คํธ์ํฌ ์์ผ์ด๋ ํ์ผ์ ์ด ์ ์์) ํ๋ก์ธ์ค ๋ถ๋ฆฌ์ ๋ฌ๋ฆฌ WebAssembly ํธ๋ค๋ฌ๋ ๊ฐ๋ณ๊ณ ์ถ๊ฐ ๋ฆฌ์์ค๊ฐ ๊ฑฐ์ ํ์ํ์ง ์์ต๋๋ค. ํธ๋ค๋ฌ ๊ฐ์ ์ํธ ์์ฉ์ ์ผ๋ฐ ํจ์๋ฅผ ํธ์ถํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋๋ฆฌ์ง ์์ต๋๋ค. ๋ถ๋ฆฌ๋ ๊ฐ๋ณ ๋ชจ๋ ์์ค๋ฟ๋ง ์๋๋ผ ๊ณตํต ๋ฉ๋ชจ๋ฆฌ ์์ญ๊ณผ ํจ๊ป ์๋ํด์ผ ํ๋ ๋ชจ๋ ๊ทธ๋ฃน ์์ค์์๋ ์ํ๋ ์ ์์ต๋๋ค.
์์ฒญ๋ ๊ถํ์ ์ข ์์ฑ ์์ฒด ์์ค์์ ๊ฒฐ์ ๋ ์๋ ์๊ณ ์์ ๋ชจ๋์ ์ํด ์ฒด์ธ์ ๋ฐ๋ผ ์ข ์์ฑ์ผ๋ก ์์๋ ์๋ ์์ต๋๋ค(WASI์ ๋ฆฌ์์ค๋ ํน์ํ ์ ํ์ ํ์ผ ์ค๋ช ์(๋ฅ๋ ฅ)์ ์ฐ๊ฒฐ๋ฉ๋๋ค). ์๋ฅผ ๋ค์ด, ํน์ ๋๋ ํฐ๋ฆฌ ๋ฐ ์์คํ ํธ์ถ์ ์ก์ธ์คํ๋ ๊ธฐ๋ฅ์ ๋ชจ๋์ ์์ํ ์ ์์ผ๋ฉฐ, ๋ชจ๋์ ๊ฐ๋ฐ ์ธํ๋ผ๊ฐ ์์๋๊ฑฐ๋ ์ทจ์ฝ์ ์ด ์๋ณ๋๋ฉด ๊ณต๊ฒฉ ์ค์ ์ก์ธ์ค๋ ์ด๋ฌํ ๋ฆฌ์์ค์๋ง ์ ํ๋ฉ๋๋ค. ๋ชจ๋ ์์ฑ์์ ๋ฆฌ์์ค ์ ์ธ์ ํ ์คํธ ์ฒ๋ฆฌ ๋ชจ๋์ด ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ์ด ์ ์๋ ๊ถํ์ ์์ฒญํ๋ ๊ฒฝ์ฐ์ ๊ฐ์ด ์์ฌ์ค๋ฌ์ด ํ๋์ ๋ํ๋ด๋ ์งํ๊ฐ ๋ ์ ์์ต๋๋ค. ์ฒ์์ ์ค์ ๋ ๊ถํ์ ํ์ธํ๊ณ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ๋ก์ปฌ ๋ชจ๋ ์๋ช ์ด ์ ๋ฐ์ดํธ๋ ๋๊น์ง ์ข ์์ฑ ๋ก๋๊ฐ ๊ฑฐ๋ถ๋ฉ๋๋ค.
Bytecode Alliance ์ฐํ์ ๊ณต๋ ๊ฐ๋ฐ์ ์ํด
-
wasmtime โ WASI ํ์ฅ์ด ํฌํจ๋ WebAssembly ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๋ฐ ๋ ๋ฆฝ ์คํํ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์คํํ๊ธฐ ์ํ ๋ฐํ์์ ๋๋ค. ์ด๋ ํน์ ๋ช ๋ น์ค ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ WebAssembly ๋ฐ์ดํธ์ฝ๋๋ฅผ ์คํํ๊ณ ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ์คํ ํ์ผ์ ์ฐ๊ฒฐํ๋ ๊ฒ์ ๋ชจ๋ ์ง์ํฉ๋๋ค(wasmtime์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ด์ฅ๋์ด ์์ต๋๋ค). Wasmtime์ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๊ฒ ๋ฐํ์์ ํ์ฅํ ์ ์๋ ์ ์ฐํ ๋ชจ๋์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฆฌ์์ค๊ฐ ์ ํ๋ ์ฅ์น์ ๋ํด ๊ฐ๋จํ ๋ฒ์ ์ ๋ง๋ค ์ ์์ต๋๋ค. -
๋ฃจ์ โ WebAssembly ํ์์ ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํ ์ปดํ์ผ๋ฌ ๋ฐ ๋ฐํ์. ๋ ํนํํน์ง Lucet์ JIT ๋์ ๋ณธ๊ฒฉ์ ์ธ ์์ ์ปดํ์ผ(AOT, ์ฌ์ ์ปดํ์ผ)์ ์ง์ ์คํ์ ์ ํฉํ ๊ธฐ๊ณ์ด ์ฝ๋๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ด ํ๋ก์ ํธ๋ Fastly์ ์ํด ๊ฐ๋ฐ๋์์ผ๋ฉฐ ์ต์ํ์ ๋ฆฌ์์ค๋ฅผ ์๋นํ๊ณ ์ ์ธ์คํด์ค๋ฅผ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์์ํ๋๋ก ์ต์ ํ๋์์ต๋๋ค(Fastly๋ ๊ฐ ์์ฒญ์ ๋ํด ์์๋๋ ํธ๋ค๋ฌ์ ๋ํด WebAssembly๋ฅผ ์ฌ์ฉํ๋ ํด๋ผ์ฐ๋ ์์ง ์ปดํจํ ์์ง์์ Lucet์ ์ฌ์ฉํฉ๋๋ค). ๊ณต๋ ํ๋ก์ ํธ์ ์ผํ์ผ๋ก Lucet ์ปดํ์ผ๋ฌ๋ Wasmtime์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉํ๋๋ก ๋ณํ๋ ๊ณํ์ ๋๋ค. -
WAM (WebAssembly Micro Runtime)์ ์๋ Intel์ด ์ฌ๋ฌผ ์ธํฐ๋ท ์ฅ์น์ ์ฌ์ฉํ๊ธฐ ์ํด ๊ฐ๋ฐํ WebAssembly๋ฅผ ์คํํ๊ธฐ ์ํ ๋ ๋ค๋ฅธ ๋ฐํ์์ ๋๋ค. WAMR์ ์ต์ํ์ ๋ฆฌ์์ค ์๋น์ ์ต์ ํ๋์ด ์์ผ๋ฉฐ RAM ์ฉ๋์ด ์ ์ ์ฅ์น์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ํ๋ก์ ํธ์๋ WebAssembly ๋ฐ์ดํธ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํ ์ธํฐํ๋ฆฌํฐ์ ๊ฐ์ ๋จธ์ , API(Libc์ ํ์ ์งํฉ) ๋ฐ ๋์ ์ ํ๋ฆฌ์ผ์ด์ ๊ด๋ฆฌ๋ฅผ ์ํ ๋๊ตฌ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. -
ํฌ๋ ์ธ ๋ฆฌํํธ โ ํ๋์จ์ด ์ํคํ ์ฒ์ ๋ ๋ฆฝ์ ์ธ ์ค๊ฐ ํํ์ ํน์ ํ๋์จ์ด ํ๋ซํผ์ ์ต์ ํ๋ ์คํ ๊ฐ๋ฅํ ๊ธฐ๊ณ์ด ์ฝ๋๋ก ๋ณํํ๋ ์ฝ๋ ์์ฑ๊ธฐ์ ๋๋ค. Cranelift๋ ๋งค์ฐ ๋น ๋ฅธ ๊ฒฐ๊ณผ ์์ฑ์ ์ํด ํจ์ ์ปดํ์ผ์ ๋ณ๋ ฌํ๋ฅผ ์ง์ํ๋ฏ๋ก JIT ์ปดํ์ผ๋ฌ๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค(Cranelift ๊ธฐ๋ฐ JIT๋ Wasmtime ๊ฐ์ ๋จธ์ ์์ ์ฌ์ฉ๋จ). -
WASI ๊ณตํต โ ์ด์ ์ฒด์ ์์ ์ํธ ์์ฉ์ ๊ตฌ์ฑํ๊ธฐ ์ํ WASI(WebAssembly System Interface) API์ ๋ณ๋ ๊ตฌํ -
ํ๋ฌผ-์์ โ ๋ธ๋ผ์ฐ์ ์ธ๋ถ์์ WebAssembly๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด WASI ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ Rust ์ฝ๋๋ฅผ WebAssembly ๋ฐ์ดํธ์ฝ๋๋ก ์ปดํ์ผํ๊ธฐ ์ํ ๋ช ๋ น์ ๊ตฌํํ๋ Cargo ํจํค์ง ๊ด๋ฆฌ์์ฉ ๋ชจ๋; -
์ํธ ะธwasmparser โ ํ ์คํธ(WAT, WAST) ๋ฐ WebAssembly ๋ฐ์ดํธ์ฝ๋์ ๋ฐ์ด๋๋ฆฌ ํํ์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ธฐ ์ํ ํ์์ ๋๋ค.
์์ฝํ์๋ฉด WebAssembly๋ Asm.js์ ๋งค์ฐ ๋น์ทํ์ง๋ง
์ถ์ฒ : opennet.ru