📌 원문 문제
WebAssembly(WASM)를 설명하시오.
1. 개념
WebAssembly(WASM)란 다양한 고수준 언어(C/C++·Rust·Go)를 컴파일하여 웹 브라우저 또는 서버에서 네이티브에 가까운 속도로 실행되는 이진(Binary) 포맷의 가상 명령어 집합 아키텍처(ISA)입니다. W3C 표준(2019)으로 모든 주요 브라우저에서 지원됩니다.
2. JavaScript와의 비교
| 구분 | JavaScript | WebAssembly |
|---|---|---|
| 포맷 | 텍스트 (인터프리터) | 바이너리 (컴파일) |
| 실행 속도 | JIT 컴파일 의존 | 네이티브 대비 80~90% 성능 |
| 타입 시스템 | 동적 타입 | 정적 타입 (i32, i64, f32, f64) |
| DOM 접근 | 직접 가능 | JS 브릿지(WebAssembly.instantiate) 필요 |
| 적합 용도 | UI 상호작용·DOM 조작 | CPU 집약 연산 (게임·암호화·영상처리) |
3. WASI와 서버사이드 확장
WASI(WebAssembly System Interface)는 WASM을 브라우저 외 환경(서버·엣지·IoT)에서 실행하기 위한 시스템 콜 인터페이스 표준입니다. Docker 창시자 Solomon Hykes는 “WASM+WASI가 2008년에 있었다면 Docker를 만들지 않았을 것”이라고 말한 바 있습니다.
- 엣지 컴퓨팅: Cloudflare Workers·Fastly Compute@Edge가 WASM을 엣지 함수로 실행. 콜드 스타트 없음
- 플러그인 시스템: Envoy·OPA·Wasm-based 플러그인으로 코드 격리 실행
- AI 추론: ONNX 모델을 WASM으로 컴파일하여 브라우저에서 오프라인 추론
✅ 핵심 암기: WASM = 다중 언어 → 이진 포맷 → 브라우저/서버 고속 실행 | WASI = 서버사이드 시스템 콜 표준 | 엣지 컴퓨팅·플러그인에 활용