WebAssembly(Wasm)์ ์์คํ ์ธํฐํ์ด์ค(WASI)๋ฅผ ํตํ ์์ ํ ํ์ผ ์์คํ ์ ๊ทผ์ ํ์ํ์ธ์. ํฌ๋ก์ค ํ๋ซํผ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์๋ฒ๋ฆฌ์ค ๊ธฐ๋ฅ์ ์ง์ํ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ์ข ํฉ ๊ฐ์ด๋์ ๋๋ค.
WebAssembly WASI: ์์คํ ์ธํฐํ์ด์ค ๋ฐ ํ์ผ ์์คํ ์ ๊ทผ
WebAssembly(Wasm)๋ ์น ๋ธ๋ผ์ฐ์ ๋ฟ๋ง ์๋๋ผ, ์ ์ ๋ ์ธ๋ถ ํ๊ฒฝ์์๋ ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ๊ธฐ์ ๋ก ๋ถ์ํ์ต๋๋ค. ์ด๋ ๋ค์ดํฐ๋ธ์ ๊ฐ๊น์ด ์ฑ๋ฅ, ๋ณด์ ๋ฐ ์ด์์ฑ์ ์ ๊ณตํฉ๋๋ค. Wasm์ ์ ์ฌ๋ ฅ์ ์ต๋ํ ์คํํ๋ ํต์ฌ ์์๋ WebAssembly ์์คํ ์ธํฐํ์ด์ค(WASI)์ ๋๋ค. ์ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์์๋ WASI๋ฅผ ํ์ํ๊ณ , ํนํ ํ์ผ ์์คํ ์ ๋ํ ์ ๊ทผ์ ์ ๊ณตํ๋ ์ค์ํ ์ญํ ์ ์ด์ ์ ๋ง์ถฐ ๊ทธ ์ด์ , ๊ตฌํ ๋ฐ ํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๋ฏธ์น๋ ์ํฅ์ ์์ธํ ์ค๋ช ํฉ๋๋ค.
WebAssembly(Wasm)๋ ๋ฌด์์ธ๊ฐ?
WebAssembly๋ ์คํ ๊ธฐ๋ฐ ๊ฐ์ ๋จธ์ ์ ์ํด ์ค๊ณ๋ ๋ฐ์ด๋๋ฆฌ ๋ช ๋ น์ด ํ์์ ๋๋ค. ์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ํ ์ด์ ๊ฐ๋ฅํ ์ปดํ์ผ ๋์์ผ๋ก ์ฌ์ฉ๋์ด, ์น(๋ฐ ๊ทธ ์ด์)์์ ๊ณ ์ฑ๋ฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ ์ ์๊ฒ ํฉ๋๋ค. ๊ฐ๋ฐ์๋ค์ ๋ธ๋ผ์ฐ์ ์ฉ ์ฝ๋๋ฅผ ์ง์ ์์ฑํ๋ ๋์ , C, C++, Rust, Go์ ๊ฐ์ ์ธ์ด๋ก ์์ฑ๋ ์ฝ๋๋ฅผ Wasm ๋ชจ๋๋ก ์ปดํ์ผํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ชจ๋์ ์น ๋ธ๋ผ์ฐ์ ๋ Node.js ๋๋ ์๋ฒ์์ ์คํ๋๋ ์ ์ฉ Wasm ๋ฐํ์๊ณผ ๊ฐ์ ๋ค๋ฅธ Wasm ๋ฐํ์ ํ๊ฒฝ์์ ์คํ๋ ์ ์์ต๋๋ค. Wasm์ ์ฃผ์ ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ฑ๋ฅ: Wasm์ ๋ค์ดํฐ๋ธ์ ๊ฐ๊น์ด ์คํ ์๋๋ฅผ ์ ๊ณตํ์ฌ, ๊ณ์ฐ ์ง์ฝ์ ์ธ ์์ ์ ์ ํฉํฉ๋๋ค.
- ๋ณด์: Wasm ๋ชจ๋์ ์๋๋ฐ์ค ํ๊ฒฝ์์ ์คํ๋์ด ํธ์คํธ ์์คํ ์ ๋ํ ์ ๊ทผ์ ์ ํํ๊ณ ๋ณด์์ ๊ฐํํฉ๋๋ค.
- ์ด์์ฑ: Wasm ๋ชจ๋์ ๋ค์ํ ํ๋ซํผ๊ณผ ์ํคํ ์ฒ์์ ์คํ๋ ์ ์์ด ํฌ๋ก์ค ํ๋ซํผ ํธํ์ฑ์ ์ด์งํฉ๋๋ค.
- ๊ฐ๋ฐฉํ ํ์ค: Wasm์ W3C ํ์ค์ผ๋ก, ๊ด๋ฒ์ํ ์ฑํ๊ณผ ์ง์์ ๋ณด์ฅํฉ๋๋ค.
WASI์ ์ญํ
Wasm์ ์คํ ํ๊ฒฝ์ ์ ๊ณตํ์ง๋ง, ์๋๋ ํ์ผ ์์คํ , ๋คํธ์ํฌ ๋ฐ ๊ธฐํ ์ด์ ์ฒด์ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ์์คํ ๋ฆฌ์์ค์ ์ง์ ์ ๊ทผํ ์ ์์์ต๋๋ค. ๋ฐ๋ก ์ด ์ง์ ์์ WASI๊ฐ ๋ฑ์ฅํฉ๋๋ค. WASI๋ Wasm ๋ชจ๋์ ์ด๋ฌํ ๋ฆฌ์์ค์ ๋ํ ์์ ํ ์ ๊ทผ์ ์ ๊ณตํ๊ธฐ ์ํด ์ค๊ณ๋ ๋ชจ๋ํ ์์คํ ์ธํฐํ์ด์ค์ ๋๋ค. Wasm ์ ํ๋ฆฌ์ผ์ด์ ์ด ํธ์คํธ ์ด์ ์ฒด์ ์ ์ํธ ์์ฉํ๊ธฐ ์ํ ํ์คํ๋ API๋ผ๊ณ ์๊ฐํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ค์ ์น ๊ธฐ๋ฐ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋์ด ๋ ๋ค์ฌ๋ค๋ฅํ๊ณ ๊ฐ๋ ฅํ Wasm ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค. WASI๋ Wasm์ด ํต์ ๋๊ณ ์์ ํ ๋ฐฉ์์ผ๋ก ์ธ๋ถ ์ธ๊ณ์ ์ํธ ์์ฉํ ์ ์๋๋ก ํ๋ ์ค์ํ ์๊ตฌ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
WASI์ ์ฃผ์ ๋ชฉํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋ณด์: ์์คํ ๋ฆฌ์์ค์ ๋ํ ์ ๊ทผ์ ์ ํํ๋ ์๋๋ฐ์ค ํ๊ฒฝ์ ์ ๊ณตํ์ฌ ์ ์ฌ์ ์ธ ๋ณด์ ์ํ์ ์ํํฉ๋๋ค.
- ์ด์์ฑ: Wasm ๋ชจ๋์ด ์์ ์์ด ๋ค๋ฅธ ์ด์ ์ฒด์ ์์ ์คํ๋ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ์ ์ฐ์ฑ: ํ์ผ ์์คํ , ๋คํธ์ํน, ์๊ณ ๋ฑ ๋ค์ํ ์์คํ ์ธํฐํ์ด์ค๋ฅผ ์ง์ํ๋ ๋ชจ๋ํ ์ค๊ณ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ํ์คํ: ์์คํ ๋ฆฌ์์ค์ ์ํธ ์์ฉํ๊ธฐ ์ํ ํ์ค ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ์ฌ ์ํธ ์ด์ฉ์ฑ๊ณผ ์ฝ๋ ์ฌ์ฌ์ฉ์ ์ด์งํฉ๋๋ค.
WASI์ ํ์ผ ์์คํ ์ ๊ทผ
ํ์ผ ์์คํ ์ ๊ทผ์ WASI์ ํต์ฌ ๊ธฐ๋ฅ์ ๋๋ค. ์ด๋ฅผ ํตํด Wasm ๋ชจ๋์ ํธ์คํธ ์์คํ ์ ํ์ผ์ ์ฝ๊ณ , ์ฐ๊ณ , ์กฐ์ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฐ๋จํ ํ์ผ ์ฒ๋ฆฌ ์์ ๋ถํฐ ๋ค์๊ณผ ๊ฐ์ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฅด๊ธฐ๊น์ง Wasm ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ๊ด๋ฒ์ํ ๊ฐ๋ฅ์ฑ์ ์ด์ด์ค๋๋ค:
- ์๋ฒ๋ฆฌ์ค ํจ์: ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง์ ์ ๋ก๋๋ ํ์ผ ์ฒ๋ฆฌ.
- ๋ฐ์ดํฐ ๋ถ์: ํ์ผ์ ์ ์ฅ๋ ๋์ฉ๋ ๋ฐ์ดํฐ ์ธํธ ๋ถ์ ๋ฐ ์กฐ์.
- ๋ช ๋ น์ค ๋๊ตฌ: ํ์ผ ๊ด๋ฆฌ๋ฅผ ์ํ Wasm ๊ธฐ๋ฐ ๋ช ๋ น์ค ์ ํธ๋ฆฌํฐ ์์ฑ.
- ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์ : ํ์ผ์ ์ฝ๊ณ ์ฐ๋ ํฌ๋ก์ค ํ๋ซํผ ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ.
WASI ์ด์ ์๋ Wasm ๋ชจ๋์ ํ์ผ ์์คํ ์ํธ ์์ฉ์ด ํฌ๊ฒ ์ ํ๋์์ต๋๋ค. ์ผ๋ถ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์กด์ฌํ์ง๋ง, ์ข ์ข ๋ธ๋ผ์ฐ์ ๋ณ API์ ์์กดํ๊ฑฐ๋ ์๋นํ ๋ณด์ ํํ์ ์๋ฐํ์ต๋๋ค. WASI๋ Wasm ๋ชจ๋์ด ํ์ผ ์์คํ ๊ณผ ์ํธ ์์ฉํ๋ ํ์คํ๋๊ณ ์์ ํ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ฌ ๋ ๋์ ๋ฒ์์ ์ฌ์ฉ ์ฌ๋ก์ ์ ํฉํ๋๋ก ๋ง๋ญ๋๋ค.
WASI๋ฅผ ํตํ ํ์ผ ์์คํ ์ ๊ทผ ์๋ ๋ฐฉ์
WASI ํ์ผ ์์คํ ์ ๊ทผ์ ์ผ๋ฐ์ ์ผ๋ก '์ผ์ดํผ๋น๋ฆฌํฐ(capability)'๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํ๋ฉ๋๋ค. ์ผ์ดํผ๋น๋ฆฌํฐ๋ Wasm ๋ชจ๋์ ๋๋ ํฐ๋ฆฌ๋ ํ์ผ๊ณผ ๊ฐ์ ํน์ ๋ฆฌ์์ค์ ๋ํ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ๋ ํ ํฐ์ ๋๋ค. Wasm ๋ชจ๋์ ์ผ๋ฐ์ ์ผ๋ก ํธ์คํธ ํ๊ฒฝ(์: Wasm ๋ฐํ์)์ ์ํด ๋ช ์์ ์ผ๋ก ์ด๋ฌํ ์ผ์ดํผ๋น๋ฆฌํฐ๋ฅผ ๋ถ์ฌ๋ฐ์์ผ ํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ Wasm ๋ชจ๋์ด ์ฌ์ฉํ๋๋ก ํ๊ฐ๋ ๋ฆฌ์์ค์๋ง ์ ๊ทผํ๋๋ก ๋ณด์ฅํ์ฌ ๋ณด์์ ๊ฐํํฉ๋๋ค.
๊ฐ๋จํ ๊ฐ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋ชจ๋ ์ปดํ์ผ: Rust, C++, Go ๋ฑ์ผ๋ก ์์ฑ๋ ์ฝ๋๋ฅผ WASI ํจ์๋ฅผ ๊ฐ์ ธ์ค๋ Wasm ๋ชจ๋๋ก ์ปดํ์ผํฉ๋๋ค.
- ์ผ์ดํผ๋น๋ฆฌํฐ ์ ๊ณต: ํธ์คํธ ํ๊ฒฝ์ Wasm ๋ชจ๋์ ํน์ ๋๋ ํฐ๋ฆฌ๋ ํ์ผ์ ์ ๊ทผํ ์ ์๋ ๋ฅ๋ ฅ๊ณผ ๊ฐ์ ์ผ์ดํผ๋น๋ฆฌํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ ์ข ์ข ๋ชจ๋์ด ์ธ์คํด์คํ๋ ๋ ํ์ฉ๋ ๊ฒฝ๋ก ์งํฉ์ ์ง์ ํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค.
- ํ์ผ ์์คํ ํธ์ถ: Wasm ๋ชจ๋์ ์ ๊ณต๋ ์ผ์ดํผ๋น๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ ์์คํ ๊ณผ ์ํธ ์์ฉํ๊ธฐ ์ํด WASI ํจ์(์: `fd_open`, `fd_read`, `fd_write`, `fd_close`)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์๋๋ฐ์ฑ: WASI๋ ํ์ผ ์์คํ ์์ ์ด ํ๊ฐ๋ ๋ฆฌ์์ค๋ก ์ ํ๋๋๋ก ๋ณด์ฅํ์ฌ ๋ชจ๋์ด ํ์ผ ์์คํ ์ ๋ค๋ฅธ ๋ถ๋ถ์ ์ ๊ทผํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
์ค์ฉ์ ์ธ ์์ (Rust)
Rust์ WASI๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ ํ์ผ์ ์ฝ๋ ๊ฐ๋จํ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋จผ์ Rust ํด์ฒด์ธ(rustup)์ด ์ค์น๋์ด ์๊ณ ์ปดํ์ผ ๋์์ด `wasm32-wasi`๋ก ์ค์ ๋์๋์ง ํ์ธํ์ธ์.
Cargo.toml:
[package]
name = "file_reader"
version = "0.1.0"
edition = "2021"
[dependencies]
wasi = "0.11"
src/main.rs:
use std::fs::File;
use std::io::{self, Read};
fn main() -> io::Result<()> {
let args: Vec = std::env::args().collect();
if args.len() != 2 {
eprintln!("Usage: file_reader <filename>");
std::process::exit(1);
}
let filename = &args[1];
let mut file = File::open(filename)?;
let mut contents = String::new();
file.read_to_string(&mut contents)?;
println!("File contents:\n{}", contents);
Ok(())
}
Wasm ๋ชจ๋ ๋น๋ํ๊ธฐ:
cargo build --target wasm32-wasi --release
์ด๊ฒ์ Wasm ๋ชจ๋(์: `target/wasm32-wasi/release/file_reader.wasm`)์ ์์ฑํฉ๋๋ค. WASI ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Wasm ๋ชจ๋ ๋ด์์ ํ์ผ I/O์ ํ์ํ ํจ์๋ฅผ ์ ๊ณตํฉ๋๋ค. Wasm ๋ชจ๋์ ์คํํ ๋, ํธ์คํธ ํ๊ฒฝ(์: `wasmer` ๋๋ `wasmtime`๊ณผ ๊ฐ์ Wasm ๋ฐํ์)์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ํ์ผ์ ์ฝ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ง์ ํ ์ ์๋๋ก ํ์ฌ ํ์ผ ์์คํ ์ ๊ทผ์ ์ ๊ณตํ๊ณ , ํ์ผ ์์คํ ์ํธ ์์ฉ์ ํจ๊ณผ์ ์ผ๋ก ์๋๋ฐ์ฑํฉ๋๋ค. `wasmer` ๋๋ `wasmtime` ๋ช ๋ น์ค ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํ์ผ๋ WASM ๋ชจ๋์ ์คํํ ์ ์์ต๋๋ค.
Wasmer๋ก ์คํํ๊ธฐ:
wasmer run file_reader.wasm --dir=. -- file.txt
์ด ์์ ์์ `--dir=.`์ Wasm ๋ชจ๋์ ํ์ฌ ๋๋ ํฐ๋ฆฌ์ ๋ํ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ๊ณ , `file.txt`๋ ์ธ์๋ก ์ ๋ฌ๋ ํ์ผ ์ด๋ฆ์ ๋๋ค. ๊ทธ๋ฌ๋ฉด ํ๋ก๊ทธ๋จ์ `file.txt`์ ๋ด์ฉ์ ์ฝ๊ณ ์ถ๋ ฅํ๋ ค๊ณ ์๋ํฉ๋๋ค. ๋ชจ๋์ ์คํํ๊ธฐ ์ ์ ํ์ฌ ๋๋ ํฐ๋ฆฌ์ `file.txt` ํ์ผ์ ์์ฑํ๋ ๊ฒ์ ์์ง ๋ง์ธ์.
ํ์ผ ์์คํ ์ ๊ทผ์ WASI๋ฅผ ์ฌ์ฉํ๋ ์ด์
ํ์ผ ์์คํ ์ ๊ทผ์ WASI๋ฅผ ์ฌ์ฉํ๋ฉด ๋ช ๊ฐ์ง ์ค์ํ ์ด์ ์ด ์์ต๋๋ค:
- ๋ณด์: ์๋๋ฐ์ค ํ๊ฒฝ์ ํ์ผ ์์คํ ์ ๋ํ ์ ๊ทผ์ ์ ํํ์ฌ ์ ์์ ์ธ ๊ณต๊ฒฉ์ ์ํ์ ์ต์ํํฉ๋๋ค.
- ์ด์์ฑ: WASI๋ฅผ ์ฌ์ฉํ๋ Wasm ๋ชจ๋์ ์์ ์์ด ๋ค๋ฅธ ์ด์ ์ฒด์ ์ ์ํคํ ์ฒ์์ ์คํ๋ ์ ์์ต๋๋ค.
- ํ์คํ: WASI๋ ํ์ผ ์์คํ ์ํธ ์์ฉ์ ์ํ ํ์คํ๋ API๋ฅผ ์ ๊ณตํ์ฌ ์ํธ ์ด์ฉ์ฑ์ ์ด์งํ๊ณ ํ์ต ๊ณก์ ์ ์ค์ ๋๋ค.
- ์ ์ฐ์ฑ: ์น ๋ธ๋ผ์ฐ์ ๋ถํฐ ์๋ฒ ์ธก ๋ฐฐํฌ๊น์ง ๋ค์ํ ํ๊ฒฝ์์ ์คํํ ์ ์๋ ๊ณ ๋๋ก ์ด์ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค.
- ๋ฆฌ์์ค ์ ์ด: ์ผ์ดํผ๋น๋ฆฌํฐ ๊ธฐ๋ฐ ์ ๊ทผ์ Wasm ๋ชจ๋์ด ์ ๊ทผํ ์ ์๋ ๋ฆฌ์์ค๋ฅผ ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์๊ฒ ํ์ฌ ๋ฆฌ์์ค ๊ด๋ฆฌ๋ฅผ ๊ฐ์ ํ๊ณ ์ฐ๋ฐ์ ์ด๊ฑฐ๋ ์ ์์ ์ธ ์ค์ฉ์ ๋ฐฉ์งํฉ๋๋ค.
๊ณ ๊ธ WASI ํ์ผ ์์คํ ๊ฐ๋
๊ธฐ๋ณธ์ ์ธ ํ์ผ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ๋ฅผ ๋์ด, WASI๋ ํ์ผ ์์คํ ์ํธ ์์ฉ์ ์ํ ๋ ๊ณ ๊ธ ๊ฐ๋ ์ ์ง์ํฉ๋๋ค.
๋๋ ํฐ๋ฆฌ์ ๊ฒฝ๋ก
WASI๋ ๋ชจ๋์ด ๋๋ ํฐ๋ฆฌ๋ก ์์ ํ๊ณ , ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ , ํ์ผ ์์คํ ๊ฒฝ๋ก๋ฅผ ํ์ํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ ํ์ผ ๋ชฉ๋ก ๋ณด๊ธฐ, ํน์ ๋๋ ํฐ๋ฆฌ ๋ด์ ์ ํ์ผ ๋ง๋ค๊ธฐ, ์ ์ฒด ํ์ผ ์์คํ ๊ตฌ์กฐ ๊ด๋ฆฌ์ ๊ฐ์ ์์ ์ ์ง์ํฉ๋๋ค. ๊ฒฝ๋ก ์กฐ์์ ํ์ผ์ ๊ด๋ฆฌํ๊ณ ๊ตฌ์ฑํ๋ ๋ฐ ์ค์ํ ๊ธฐ๋ฅ์ ๋๋ค.
ํ์ผ ๋์คํฌ๋ฆฝํฐ
WASI๋ ์ด๋ฆฐ ํ์ผ๊ณผ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ํ์ผ ๋์คํฌ๋ฆฝํฐ(FD)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ Wasm ๋ชจ๋์ด ํน์ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๋ ๋ฐ ์ฌ์ฉํ๋ ๊ณ ์ ํ ์ ์์ ๋๋ค. `fd_open`๊ณผ ๊ฐ์ WASI ํจ์๋ FD๋ฅผ ๋ฐํํ๋ฉฐ, ์ด๋ ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ, ๋ซ๊ธฐ์ ๊ฐ์ ํ์ ์์ ์ ์ฌ์ฉ๋ฉ๋๋ค. ๋ฆฌ์์ค ๋์๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ํ์ผ ๋์คํฌ๋ฆฝํฐ ๊ด๋ฆฌ๊ฐ ์ค์ํฉ๋๋ค.
๊ถํ๊ณผ ์ผ์ดํผ๋น๋ฆฌํฐ
์์ ์ธ๊ธํ๋ฏ์ด, WASI๋ ํ์ผ ์์คํ ์ ๊ทผ์ ์ผ์ดํผ๋น๋ฆฌํฐ ๊ธฐ๋ฐ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค. ํธ์คํธ ํ๊ฒฝ์ Wasm ๋ชจ๋์ด ์ ๊ทผํ ์ ์๋ ๋๋ ํฐ๋ฆฌ์ ํ์ผ์ ๊ฒฐ์ ํฉ๋๋ค. ์ด ๊ถํ ์์คํ ์ ์ธ๋ถํ๋ ์ ์ด ์์ค์ ์ ๊ณตํ์ฌ ๋ณด์์ ๊ฐํํ๊ณ ๊ด๋ฆฌ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์์ ๋ฐ๋ผ ๋ฆฌ์์ค ์ ๊ทผ์ ์กฐ์ ํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํธ์คํธ ์์คํ ์ ์์ ํ์ผ์ ์ ๊ทผํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
์คํธ๋ฆฌ๋ฐ๊ณผ ๋ฒํผ๋ง
WASI๋ ํ์ผ ๋ฐ์ดํฐ๋ฅผ ์คํธ๋ฆฌ๋ฐํ๊ณ ๋ฒํผ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฝ๊ณ ์ธ ์ ์๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค. ์คํธ๋ฆฌ๋ฐ์ ๊ณผ๋ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋นํ์ง ์๊ณ ๋์ฉ๋ ํ์ผ์ ์ฒ๋ฆฌํ๋ ๋ฐ ํนํ ์ค์ํฉ๋๋ค. ๋ฒํผ๋ง์ ์์คํ ํธ์ถ ํ์๋ฅผ ์ค์ฌ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
์ฌ์ฉ ์ฌ๋ก ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
WASI์ ํ์ผ ์์คํ ์ ๊ทผ ๊ธฐ๋ฅ์ ๋งค์ฐ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ์ฃผ๋ชฉํ ๋งํ ์์ ๋๋ค:
์๋ฒ๋ฆฌ์ค ํจ์
WASI๋ ์๋ฒ๋ฆฌ์ค ํจ์์ ์ด์์ ์ ๋๋ค. ๊ฐ๋ฐ์๋ ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง(์: Amazon S3, Google Cloud Storage, Azure Blob Storage)์ ์ ์ฅ๋ ํ์ผ์ ์ฝ๊ณ , ์ฒ๋ฆฌํ๊ณ , ์ฐ๋ Wasm ๋ชจ๋์ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ๋ชจ๋์ ์ด๋ฒคํธ(์: ํ์ผ ์ ๋ก๋)์ ์ํด ํธ๋ฆฌ๊ฑฐ๋ ์ ์์ผ๋ฉฐ ์์ ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ๋ฐฉ์์ผ๋ก ์คํ๋ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ํด๋ผ์ฐ๋์์ ํ์ผ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ๋ณํํ ์ ์์ต๋๋ค. ๋ค์ํ ๊ธ๋ก๋ฒ ์ง์ญ ๋ฐ ์ธ์ด์ ํ์ผ์ ์ฒ๋ฆฌํ๊ณ ๋ถ์ํ ์ ์๋ ๊ตญ์ ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํด ๋ณด์ญ์์ค.
๋ช ๋ น์ค ๋๊ตฌ
WASI๋ ํฌ๋ก์ค ํ๋ซํผ ๋ช ๋ น์ค ์ ํธ๋ฆฌํฐ๋ฅผ ๋ง๋ค ์ ์๊ฒ ํฉ๋๋ค. ๊ฐ๋ฐ์๋ ํ์ผ ์ฒ๋ฆฌ, ๋ฐ์ดํฐ ์กฐ์ ๋๋ ๊ธฐํ ์์ ์ ์ํํ๋ Wasm ๋ชจ๋์ ์์ฑํ ๋ค์, WASI ๋ฐํ์์ ์ง์ํ๋ ๋ชจ๋ ํ๋ซํผ์์ ์คํํ ์ ์์ต๋๋ค. ํ ์คํธ ์ฒ๋ฆฌ, ์ด๋ฏธ์ง ์กฐ์ ๋๋ ๋ฐ์ดํฐ ๋ถ์๊ณผ ๊ฐ์ ์์ ์ ์ํ ๋๊ตฌ๋ Wasm ๋ชจ๋๋ก ํจํค์ง ๋ฐ ๋ฐฐํฌ๋ ์ ์์ด, ๋ค๋ฅธ ์ด์ ์ฒด์ ์์ ์ฝ๊ฒ ๋ฐฐํฌํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ ์ธ๊ณ์ ์ผ๋ก ๋ฐฐํฌํ ์ ์๋ ๋ฐ์ดํฐ ์ ์ ์ฉ Wasm ๊ธฐ๋ฐ ๋๊ตฌ๋ฅผ ์์ํด ๋ณด์ญ์์ค.
๋ฐ์ดํฐ ๋ถ์ ๋ฐ ์ฒ๋ฆฌ
WASI๋ Wasm ๊ธฐ๋ฐ ๋ฐ์ดํฐ ๋ถ์ ๋๊ตฌ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ , ๊ณ์ฐ์ ์ํํ๊ณ , ๋ณด๊ณ ์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. Wasm์ ์ด์์ฑ ๋๋ถ์ ๋ค์ํ ํ๋ซํผ์์ ์ฝ๊ฒ ๋ฐฐํฌํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ํ์ผ์ ์ ์ฅ๋ ๋์ฉ๋ ๋ฐ์ดํฐ ์ธํธ(์: CSV ํ์ผ, ๋ก๊ทธ ํ์ผ)๋ฅผ ๋ถ์ํ๊ณ ๋ํํ ์๊ฐํ๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ๊ธ์ต ๋ถ์, ๊ณผํ ์๋ฎฌ๋ ์ด์ ๋๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๋ชจ๋ ๋ถ์ผ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณ ๋ คํด ๋ณด์ญ์์ค.
๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์๋ WASI๋ฅผ ํ์ฉํ์ฌ ํ์ผ ์์คํ ๊ณผ ์ํธ ์์ฉํ๋ ํฌ๋ก์ค ํ๋ซํผ ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ผ์ ์ฝ๊ณ , ์ฐ๊ณ , ์กฐ์ํ์ฌ ์ฌ์ฉ์์๊ฒ ์น์ํ ํ์ผ ์์คํ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด๋ ๋ก์ปฌ ํ์ผ ์ ์ฅ, ๋ฌธ์ ํธ์ง ๋๋ ๊ธฐํ ํ์ผ ๊ธฐ๋ฐ ์์ ์ด ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํนํ ์ ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด Windows, macOS, Linux์์ ์ผ๊ด๋๊ฒ ์๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. Wasm๊ณผ WASI๋ก ๊ตฌ์ถ๋ ์ด๋ฏธ์ง ํธ์ง ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ํ ์คํธ ํธ์ง๊ธฐ๋ฅผ ์๊ฐํด ๋ณด์ญ์์ค.
์น ๊ธฐ๋ฐ ํ์ผ ์กฐ์
Wasm์ ์๋ ๋ธ๋ผ์ฐ์ ์ ์ค์ ์ ๋์์ง๋ง, WASI๋ ๊ทธ ํ๊ฒฝ ๋ฐ์์์ ์ํธ ์์ฉ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ด๋ ์๋ฒ์์ ํ์ผ์ ์ฒ๋ฆฌํด์ผ ํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฌธ์ ์ฝ๋๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ ํ์ผ ์ ๊ทผ์ ํ๊ณ๋ฅผ ํผํ๊ณ ๋ ๋ณต์กํ ํ์ผ ๊ธฐ๋ฐ ์์ ์ ํ์ฉํ์ฌ ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํต๋๋ค. ์๋ฒ ์ธก์์ ๋์ฉ๋ ํ์ผ์ ์ฒ๋ฆฌํ๋ ํ์ผ ๋ณํ๊ธฐ๊ฐ ๊ทธ ์๊ฐ ๋ ์ ์์ต๋๋ค.
WASI ํ์ผ ์์คํ ์ ๊ทผ ๊ตฌํํ๊ธฐ
WASI ํ์ผ ์์คํ ์ ๊ทผ์ ๊ตฌํํ๋ ๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์ ๋จ๊ณ๋ฅผ ํฌํจํฉ๋๋ค:
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ ํ: Wasm ์ปดํ์ผ์ ์ง์ํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(์: Rust, C/C++, Go)๋ฅผ ์ ํํฉ๋๋ค. Rust๋ ๊ฐ๋ ฅํ ํด๋ง, ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ ๋ฐ WASI ์ง์์ผ๋ก ์ธํด ํนํ ์ธ๊ธฐ๊ฐ ๋ง์ต๋๋ค.
- ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ : Wasm ์ปดํ์ผ๋ฌ, WASI SDK(ํ์ํ ๊ฒฝ์ฐ), Wasm ๋ฐํ์์ ํฌํจํ ํ์ํ ๋๊ตฌ์ ์ข ์์ฑ์ ์ค์นํฉ๋๋ค.
- ์ฝ๋ ์์ฑ: WASI ํ์ผ ์์คํ API ํจ์(์: `fd_open`, `fd_read`, `fd_write`)๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
- ์ฝ๋๋ฅผ Wasm์ผ๋ก ์ปดํ์ผ: ์ ์ ํ ์ปดํ์ผ๋ฌ์ ๋์(์: `wasm32-wasi`)์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ Wasm ๋ชจ๋๋ก ์ปดํ์ผํฉ๋๋ค.
- ์ผ์ดํผ๋น๋ฆฌํฐ ์ ๊ณต: Wasm ๋ชจ๋์๋ ํ์ํ ๊ถํ์ด ๋ถ์ฌ๋์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐํ์ ์์ ์ ๋ชจ๋์ ์ด๋ ๋๋ ํฐ๋ฆฌ์์ ํ์ผ์ ์ฝ๊ณ , ์ฐ๊ณ , ์์ฑํ ์ง ์์์ผ ํฉ๋๋ค.
- Wasm ๋ชจ๋ ์คํ: Wasm ๋ฐํ์์ ์ฌ์ฉํ์ฌ Wasm ๋ชจ๋์ ์คํํฉ๋๋ค.
๋๊ตฌ ๋ฐ ๋ฐํ์
WASI๋ฅผ ์ง์ํ๋ ์ฌ๋ฌ ๋๊ตฌ์ ๋ฐํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- Wasmer: ๋ค์ํ ํ๋ซํผ์์ Wasm ๋ชจ๋์ ์คํํ๋ ๋ฒ์ฉ WebAssembly ๋ฐํ์์ ๋๋ค.
- Wasmtime: Bytecode Alliance์์ ๊ฐ๋ฐํ ๋ ๋ฆฝํ JIT ์คํ์ผ WebAssembly ๋ฐํ์์ผ๋ก, ์ฑ๋ฅ๊ณผ ๋ณด์์ ์ค์ ์ ๋ก๋๋ค.
- WASI SDK: WASI ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ ๋๊ตฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ์์ ๋๋ค.
- Node.js: Node.js๋ WASI๋ฅผ ์ง์ํ์ฌ Node.js ํ๊ฒฝ ๋ด์์ Wasm ์คํ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- Docker: WASI๋ Docker์ ํตํฉ๋์ด Wasm ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์ด๋ํํ ์ ์๊ฒ ํ๊ณ ์์ต๋๋ค.
๋ณด์ ๊ณ ๋ ค์ฌํญ
WASI๋ Wasm ๋ชจ๋์ ์์ ํ ํ๊ฒฝ์ ์ ๊ณตํ์ง๋ง, ๊ฐ๋ฐ์๋ ์ฌ์ ํ ๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ๋ ํด์ผ ํฉ๋๋ค.
- ์ต์ ๊ถํ ์์น: Wasm ๋ชจ๋์ ํ์ํ ์ต์ํ์ ๊ถํ๋ง ๋ถ์ฌํฉ๋๋ค.
- ์ ๋ ฅ ์ ํจ์ฑ ๊ฒ์ฌ: ๋ฒํผ ์ค๋ฒํ๋ก ๋ฐ ์ฝ๋ ์ฃผ์ ๊ณต๊ฒฉ๊ณผ ๊ฐ์ ์ทจ์ฝ์ ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ชจ๋ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ฆํฉ๋๋ค.
- ์์กด์ฑ ๊ด๋ฆฌ: ์ ์ฌ์ ์ผ๋ก ์ทจ์ฝํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๋๋ก ์์กด์ฑ์ ์ ์คํ๊ฒ ๊ด๋ฆฌํฉ๋๋ค.
- ์ ๊ธฐ์ ์ธ ๊ฐ์ฌ: Wasm ๋ชจ๋๊ณผ ํธ์คํธ ํ๊ฒฝ์ ๋ณด์ ์ทจ์ฝ์ ์ ์ ๊ธฐ์ ์ผ๋ก ๊ฐ์ฌํฉ๋๋ค.
- ์๋๋ฐ์ฑ: Wasm ๋ฐํ์์ด ์๋๋ฐ์ค๋ฅผ ๊ฐ์ ํ๊ณ ํ์ผ ์์คํ , ๋คํธ์ํฌ, ํ๊ฒฝ ๋ณ์๋ฅผ ํฌํจํ ์์คํ ๋ฆฌ์์ค์ ๋ํ ์ ๊ทผ์ ๋ช ์์ ์ผ๋ก ํ์ฉ๋ ๊ฒ๋ง์ผ๋ก ์ ํํ๋์ง ํ์ธํฉ๋๋ค.
WASI์ ํ์ผ ์์คํ ์ ๊ทผ์ ๋ฏธ๋
WASI์ ๊ทธ ํ์ผ ์์คํ ์ ๊ทผ ๊ธฐ๋ฅ์ ๋์์์ด ๋ฐ์ ํ๊ณ ์์ต๋๋ค. ์งํ ์ค์ธ ๊ฐ๋ฐ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ฑ๋ฅ ํฅ์: ์คํ ์๋๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํ Wasm ๋ฐํ์์ ์ง์์ ์ธ ์ต์ ํ.
- API ์ง์ ํ๋: ์ถ๊ฐ์ ์ธ ์์คํ ์ธํฐํ์ด์ค(์: ๋คํธ์ํน, ์ค๋ ๋ฉ, ๊ทธ๋ํฝ)๋ฅผ ์ง์ํ๊ธฐ ์ํ ์๋ก์ด WASI API ๊ฐ๋ฐ.
- ํ์คํ ๋ ธ๋ ฅ: ๋ค๋ฅธ Wasm ๋ฐํ์ ๋ฐ ํ๋ซํผ ๊ฐ์ ์ํธ ์ด์ฉ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ์ง์์ ์ธ ํ์คํ ๋ ธ๋ ฅ.
- ํด๋ผ์ฐ๋ ํ๋ซํผ๊ณผ์ ํตํฉ: ๊ฐ๋ฐ์๊ฐ ์๋ฒ๋ฆฌ์ค ํ๊ฒฝ์์ Wasm ๋ชจ๋์ ์ฝ๊ฒ ๋ฐฐํฌํ๊ณ ์คํํ ์ ์๋๋ก ํด๋ผ์ฐ๋ ํ๋ซํผ๊ณผ์ ํตํฉ ์ฆ๋.
WASI์ ํ์ผ ์์คํ ์ ๊ทผ์์์ ๊ทธ ์์ฉ์ ๋ํ ๋ฏธ๋๋ ๋ฐ์ ๋ณด์ ๋๋ค. ๊ธฐ์ ์ด ์ฑ์ํจ์ ๋ฐ๋ผ, Wasm๊ณผ WASI์ ํ์ ํ์ฉํ๋ ๋์ฑ ์ ๊ตํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณผ ์ ์์ ๊ฒ์ผ๋ก ๊ธฐ๋๋ฉ๋๋ค.
๊ฒฐ๋ก
WebAssembly(Wasm)์ ๊ทธ ์์คํ ์ธํฐํ์ด์ค์ธ WASI๋ ๊ฐ๋ฐ์๋ค์ด ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ถํ๊ณ ๋ฐฐํฌํ๋ ๋ฐฉ์์ ํ์ ํ๊ณ ์์ต๋๋ค. WASI๋ Wasm ๋ชจ๋์ด ํ์ผ ์์คํ ์ ํฌํจํ ์์คํ ๋ฆฌ์์ค์ ์ํธ ์์ฉํ๋ ์์ ํ๊ณ , ์ด์ ๊ฐ๋ฅํ๋ฉฐ, ํ์คํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. WASI๋ฅผ ํตํ ํ์ผ ์์คํ ์ ๊ทผ์ ์๋ฒ๋ฆฌ์ค ํจ์์ ๋ช ๋ น์ค ๋๊ตฌ๋ถํฐ ๋ฐ์ดํฐ ๋ถ์ ๋ฐ ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฅด๊ธฐ๊น์ง ๊ด๋ฒ์ํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์์ ๋ ผ์๋ ๊ฐ๋ ๊ณผ ๊ตฌํ ์ธ๋ถ ์ฌํญ์ ์ดํดํจ์ผ๋ก์จ, ๊ฐ๋ฐ์๋ค์ WASM๊ณผ WASI์ ํ์ ํ์ฉํ์ฌ ํ์ ์ ์ด๊ณ ํจ์จ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค. WASI์ ํ์ผ ์์คํ ์ ๊ทผ์ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๋ฏธ๋๋ฅผ ์ํ ํ์ ๊ธฐ์ ์ด๋ฉฐ, ํฌ๋ก์ค ํ๋ซํผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธธ์ ์ด๊ณ ์ ์ธ๊ณ์ ์ผ๋ก ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด์์ฑ, ์ฑ๋ฅ ๋ฐ ๋ณด์์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.