Shopify ์คํ ์์ค Ruvy: Ruby ์ฝ๋๋ฅผ WebAssembly๋ก ๋ณํํ๋ ๋๊ตฌ
์ ์์๊ฑฐ๋ ๊ฑฐ๋ Shopify๋ ์ต๊ทผ ์์ฌ ํ๋ก์ ํธ์ธ Ruvy๋ฅผ ์คํ์์คํํ์ฌ ๊ฐ๋ฐ์์๊ฒ Ruby ์ฝ๋๋ฅผ WebAssembly(Wasm) ๋ชจ๋๋ก ๋ณํํ ์ ์๋ ๋๊ตฌ ์ฒด์ธ์ ์ ๊ณตํ์ต๋๋ค.

์ํํธ์จ์ด ๊ฐ๋ฐ ์ปค๋ฎค๋ํฐ์ ์๋นํ ๊ด์ฌ์ ๋๊ธฐ ์ํด ์ ๋์ ์ธ ์ ์ ์๊ฑฐ๋ ์ธํ๋ผ ์ ๊ณต์ ์ฒด์ธ Shopify๋ ๋ด๋ถ ํ๋ก์ ํธ์ธ Ruvy๋ฅผ ๋์ค์ด ์ก์ธ์คํ ์ ์๋๋ก ํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. Ruvy๋ ๋์ ์คํ ์์ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ Ruby๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ์๋ค์ด๊ณ ์คํ์ ์ํด ํด๋น WebAssembly (Wasm) ๋ชจ๋์ ์์ฑํ๋ ํดํท์ผ๋ก ์๋ํฉ๋๋ค. ์ด๋ฌํ ์คํ ์์ค ์ด์ ์ ๊ฐ๋ฐ ์ปค๋ฎค๋ํฐ ์ ๋ฐ์ ๋ค์ํ ์๊ฒฌ์ ํตํด ์ด์ต์ ์ป์ ์ ์๊ธฐ๋ฅผ ๋ฐ๋ผ๋ ๋ง์์์ ์ด๋ฃจ์ด์ก์ต๋๋ค.
Ruvy๋ 10์ 18์ผ์ ์ฒซ ๊ณต๊ฐ๋์์ผ๋ฉฐ GitHub ํตํด ์ก์ธ์คํ ์ ์์ต๋๋ค. Shopify๋ Ruby๋ฅผ ์คํํ๋ ๊ฐ์ ๋จธ์ (VM)์ ์ฌ์ ํ์ฑํ๋ฅผ ํตํด ํฅ์๋ ์ฑ๋ฅ์ ํ์ฉํ๋ ค๋ ๊ตฌ์ฒด์ ์ธ ๋ชฉํ๋ก Ruvy ๊ฐ๋ฐ์ ์์ํ์ต๋๋ค. ๋ํ Ruby ์คํฌ๋ฆฝํธ๋ฅผ ํตํด Ruby VM์ ํตํฉ๋ Ruby ํ์ผ์ ์ฑ๋ฅ์ ์ต์ ํํฉ๋๋ค.
Ruvy์ ํน์ง ์ค ํ๋๋ ๋ฐํ์ ์ WASI(WebAssembly System Interface) ์ธ์๋ฅผ ํ๋ก๋น์ ๋ํ ํ์๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. Shopify์ ๋ณด๊ณ ์์ ๋ฐ๋ฅด๋ฉด Ruvy๊ฐ ๋ง๋ Wasm ๋ชจ๋์ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ์ปดํ์ผํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ฝ 70% ๋จ์ถํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค. Wasm ๋ชจ๋์ด ๋น๋๋๋ ๋์ Ruby VM์ ์ฌ์ ํ์ฑํ๋ฅผ ํตํด ์ฑ๋ฅ ํฅ์์ด ๋ฌ์ฑ๋ฉ๋๋ค.
Ruvy๋ CRuby์ ์ํ๋ ๋ ํนํ Wasm ํฌํธ ๋ชจ์์ธ Ruby.wasm์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์์ต๋๋ค. ํ์ฌ ํ๋ก์ ํธ ์ํ์์ Ruvy์๋ ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ๋ฐ์ด๋๋ฆฌ๊ฐ ํฌํจ๋์ด ์์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๋น๋ ์ข ์์ฑ์ ์ค์นํ๊ณ ์ดํ์ Ruvy์ ์ฌ์ฉ ์ ์ปดํ์ผ์ ์ํํ๋ ๊ฒ์ ํ์ ์ฌ์ ๋จ๊ณ์ ๋๋ค. ์ด๋ฌํ ์ข ์์ฑ์ ์ค์นํ๋ ์์ธํ ๋จ๊ณ๋ ํ๋ก์ ํธ์ ๊ด๋ จ๋ ReadMe ์ธ๊ทธ๋จผํธ์ ์ ๊ณต๋ฉ๋๋ค.
Ruvy๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ๋ Wasm ํ์ผ์ ํ์ผ ๊ฒฝ๋ก๊ฐ WASI ์ธ์๋ก ํฌํจ๋ ํ์์ฑ์ ์ฐํํฉ๋๋ค. ์ด๋ ์์ ๊ธฐ๋ฅ์ ๋ํ ๋ณด์ถฉ WASI ์ธ์๋ฅผ ์ ๊ณตํ๋๋ก ์กฐ์ ํ ์ ์๋ ํน์ ์ฃ์ง ์ปดํจํ ์๋น์ค์ ๊ฐ์ ์ปดํจํ ํ๊ฒฝ์ ํธํ์ฑ์ ๋ถ์ฌํ๋ฏ๋ก ์ถ๊ฐ์ ์ธ ์ด์ ์ ๋๋ค. Shopify๋ ์ต๊ทผ ์ปค๋ฎค๋์ผ์ด์ ์์ ์ด ์ถ๊ฐ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ต๋๋ค.
๋๋๊ฒ๋ AppMaster ์ ๊ฐ์ ํ๋ซํผ์ no-code ์ฑ ์ ์ ์์ญ์์ ํฐ ์ง์ ์ ์ด๋ฃจ์์ต๋๋ค. ๊ทธ๋ค์ ๋ชจ๋ธ์ ์๋ ์ฝ๋ ์์ฑ์ ํจ์จ์ฑ๊ณผ ํ์ํ ๋ ์๋ ์ฝ๋ฉ์ ์ ์ฐ์ฑ์ ๊ฒฐํฉํ์ฌ ์ํํธ์จ์ด ์์ฑ์ ๋ํ ๋์์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค.


