์ด์ ๋ Web๋ Qt๋ฅผ ์ด์ฉํด ์ฝ๊ฒ ๊ฐ๋ฐํ์!.
์ปดํ์ผ ์ธ์ด๋ก ์น ์ ํ๋ฆฌ์ผ์ด์
์?
WebAssembly
์น ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ์ ํต์ ์ผ๋ก HTML, CSS, JavaScript, PHP, ASP.NET, JSP ๋ฑ ๋ค์ํ ์น ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ํ์ฉํด ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ๊ทธ๋ฌ๋ WebAssembly ๊ธฐ์ ์ ๋์
์ผ๋ก, ์ด์ ๋ ๋์ฑ ํจ์จ์ ์ด๊ณ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ ์ ์์ต๋๋ค. ํนํ, C, C++, ๊ทธ๋ฆฌ๊ณ Rust์ ๊ฐ์ ๊ณ ์ฑ๋ฅ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์น ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌํํ ์ ์๋ ์๋ก์ด ๊ฐ๋ฅ์ฑ์ด ์ด๋ ธ์ต๋๋ค.

๋ค์ดํฐ๋ธ ์น ์ ํ๋ฆฌ์ผ์ด์
vs. WebAssembly
๋์ผํ ์์ค์ฝ๋๋ก ๋น๋๋ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ WebAssembly ๊ธฐ๋ฐ์ผ๋ก ๋น๋๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ ๋น๊ต ํ๋ฉด์
๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก, ์คํ ์๋์์ ์ ์๋ฏธํ ์ฐจ์ด๋ฅผ ๋๋ผ๊ธฐ ์ด๋ ค์ธ ์ ๋๋ก WebAssembly๊ฐ ๋๋ผ์ด ์ฑ๋ฅ์ ๋ณด์ฌ์ค๋๋ค.
1) ๋์ผํ ์์ค์ฝ๋๋ก ๋น๋ํ Clock ์คํ ๋น๊ต ํ๋ฉด
๋ค์ดํฐ๋ธ ์ปดํ์ผ๋ฌ๋ฅผ ์ด์ฉํด ๋น๋ํ ํ์ผ์ ์คํํ ํ๋ฉด
WebAssembly ๊ธฐ์ ๋ก ๋น๋ํ ์คํํ์ผ(WASM)์ ์น ๋ธ๋ผ์ฐ์ ์์ ์คํํ ํ๋ฉด
2) ๋์ผํ ์์ค์ฝ๋๋ก ๋น๋ํ Submarine Attack ๊ฒ์ ์์ค์ฝ๋ ์คํ ๋น๊ต ํ๋ฉด
๋ค์ดํฐ๋ธ ์ปดํ์ผ๋ฌ๋ฅผ ์ด์ฉํด ๋น๋ํ ํ์ผ์ ์คํํ ํ๋ฉด
WebAssembly ๊ธฐ์ ๋ก ๋น๋ํ ์คํํ์ผ(WASM)์ ์น ๋ธ๋ผ์ฐ์ ์์ ์คํํ ํ๋ฉด
3) ๋์ผํ ์์ค์ฝ๋๋ก ๋น๋ํ Colliding Mice ์คํ ๋น๊ต ํ๋ฉด
๋ค์ดํฐ๋ธ ์ปดํ์ผ๋ฌ๋ฅผ ์ด์ฉํด ๋น๋ํ ํ์ผ์ ์คํํ ํ๋ฉด
WebAssembly ๊ธฐ์ ๋ก ๋น๋ํ ์คํํ์ผ(WASM)์ ์น ๋ธ๋ผ์ฐ์ ์์ ์คํํ ํ๋ฉด
๊ฐ์์ ๋ชฉํ
Microsoft Windows, Linux, macOS ๋ฑ ๋ค์ํ ํ๋ซํผ์์ WebAssembly ๊ฐ๋ฐ ํ๊ฒฝ์ ํจ๊ณผ์ ์ผ๋ก ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ํ์ตํฉ๋๋ค.
๋ํ, C, C++, Rust์ ๊ฐ์ ๊ณ ์ฑ๋ฅ ์ธ์ด๋ฅผ ํ์ฉํ์ฌ WebAssembly ๊ธฐ์ ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ ์ค์ ์คํฌ์ ์ตํ ์ ์์ต๋๋ค.
JavaScript๋ก ๊ฐ๋ฐํ๊ธฐ์๋ ๋ณต์กํ ๋ก์ง์ด๋ ๊ณ ์ฑ๋ฅ์ด ์๊ตฌ๋๋ ์น ์ ํ๋ฆฌ์ผ์ด์
๋ WebAssembly ๊ธฐ์ ์ ํตํด ๋ณด๋ค ์ฝ๊ณ ํจ์จ์ ์ผ๋ก ๊ตฌํํ ์ ์์ต๋๋ค.
C, C++, Rust์ ๊ฐ์ ์ธ์ด๋ก ์ปดํ์ผ๋ WebAssembly ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ค์ดํฐ๋ธ ์์ค์ ์ฑ๋ฅ์ ์ ๊ณตํ๋ฉฐ, ์น ํ๊ฒฝ์์๋ ๋ฐ์ด๋ ์คํ ์๋์ ์์ ์ฑ์ ์๋ํฉ๋๋ค.
์ด ๊ฐ์๋ง์ ํต์ฌ ์ฅ์ โ
์ค์ ๊น์ง ์๊ฐํ ๊ฐ์
์ด ๊ฐ์๋ ์ค๋ฌด ์ญ๋ ํฅ์์ ๋ชฉํ๋ก ์ฒด๊ณ์ ์ผ๋ก ์ค๊ณ๋์์ต๋๋ค. ๊ฐ ์น์
์์๋ ์ด๋ก ํ์ต์ ํตํด ๊ธฐ๋ณธ ๊ฐ๋
์ ํํํ ๋ค์ง ํ, ์ค์ ์์ ๋ฅผ ์ง์ ๊ตฌํํ๋ฉฐ ์ค๋ฌด์ ์ ์ฉํ ์ ์๋ ๊ธฐ์ ์ ์ตํ ์ ์๋๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ์ด ๊ณผ์ ์ ํตํด ํ์ต์๋ ์ค์ ์์ ๋ฐ๋ก ํ์ฉ ๊ฐ๋ฅํ ์ค์ง์ ์ธ ๋ฅ๋ ฅ์ ํค์ธ ์ ์์ต๋๋ค.
์์ํ ๋ผ์ด๋ธ ์ฝ๋ฉ์ผ๋ก ์ง์ค Up
์ง์๊ณต์ ์์ ๋ชจ์ต์ ๊ฐ์ ํ๋ฉด์ ํจ๊ป ๋ด์์ต๋๋ค. ์์ํ ๋ผ์ด๋ธ ์ฝ๋ฉ๊ณผ ํจ๊ป ์งํ๋๋ ์์
์ ํตํด ๋ง์น ์คํ๋ผ์ธ ์์
์ ๋ฃ๋ ๋๋์ผ๋ก ์ธ์ ์ด๋์๋ ํ์ตํด ๋ณด์ธ์.
WebAssembly, ์ด๋ฐ ๋ถ๋ค๊ป ์ถ์ฒํฉ๋๋ค!
โ
์น ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ๊ณ ์ฑ๋ฅ ์น ์ดํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๊ณ ์ ํ๋ ๋ถ
โ
์น ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ์น ์ดํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๊ณ ์ ํ๋ ๋ถ
Q&A ๐ฌ
Q. ์ด๋ก /๋ฌธ๋ฒ ์ธ์ ์ค์ ๋ก ์ฐ์ด๋ ๋ค์ํ ์์ ๋ ์ ํ ์ ์์๊น์?
๋ฌผ๋ก ๊ฐ๋ฅํฉ๋๋ค. WebAssembly๋ฅผ ํ์ฉํด ์น ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ ๊ณผ์ ์ ์ค์ต ์ค์ฌ์ ์์ ๋ก ํ์ตํ ์ ์์ต๋๋ค. ๋ํ, ์ค์ต์ ํตํด ์ค์ ๊ฐ๋ฐ ๊ณผ์ ์์ ํ์ฉํ ์ ์๋ ์ค์ง์ ์ธ ๋
ธํ์ฐ๋ฅผ ์ตํ ์ ์๋๋ก ์ปค๋ฆฌํ๋ผ์ ์ฒด๊ณ์ ์ผ๋ก ๊ตฌ์ฑํ์์ต๋๋ค.
Q. WebAssembly ๊ฐ๋ฐ ํ๊ฒฝ์ผ๋ก ์ํ๋ ์ด์์ฒด์ ์์ ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ์ด ๊ฐ๋ฅํ ๊น์?
๋ฌผ๋ก ๊ฐ๋ฅํฉ๋๋ค. Microsoft Windows, macOS, Linux ๋ฑ ๋ค์ํ ์ด์ ์ฒด์ ์์ WebAssembly ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ๊ฐ์๋ฅผ ํตํด ์ฒด๊ณ์ ์ผ๋ก ํ์ตํ ์ ์์ต๋๋ค.
Q. ํ์ตํ๋ ๊ฐ์ ๋ด์ฉ์ ์ฐธ๊ณ ํ ๋งํ ์๋ฃ๋ ๊ต์ฌ๊ฐ ์์๊น์?
Qt ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ(qt-dev.com)์์ ์ด์์๋ก ํ๋ํ๊ณ ์์ต๋๋ค. ๊ด๋ จํ ์ ๋ณด๋ฅผ ์ด ์ฌ์ดํธ์์ ์ป์ผ์ค ์ ์์ต๋๋ค.
๊ฐ์์ ๋ชฉํ๋ฅผ ํ์ธํด ๋ณด์ธ์.
- Microsoft Windows, Linux ๋ฐ macOS ๋ฑ ๋ค์ํ ํ๋ซํผ์์ WebAssembly ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ฐฐ์๋๋ค.
- WebAssembly ๊ธฐ์ ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ ๋ C++์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ์ ์์ต๋๋ค.
- ๊ธฐ์กด์ ์น ํ๋ก๊ทธ๋๋ฐ์ผ๋ก๋ ๊ฐ๋ฐํ๊ธฐ์๋ ์ด๋ ต๊ณ ๋ณต์กํ ๋ก์ง์ ๊ฐ์ท๊ฑฐ๋ ๊ณ ์ฑ๋ฅ์ ์ํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ WebAssembly ๊ธฐ์ ๋ก ๋ณด๋ค ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ ์ ์์ต๋๋ค.