[컴] WASM 과 container

 

웹어셈블리 /

WASM 과 container

Docker 는 WebAssembly 를 지원한다고 발표, runtime 으로 WasmEdge 를 사용한다.

WASI, WebAssembly System Interface

WASI is a modular system interface for WebAssembly.

WASI 는 WebAssembly 를 위한 modular system interface 이다.

다음 이미지를 보면 WASI 가 어떤 역할을 하는지 알 수 있다. 대략적으로 이야기하면, OS 가 가지고 있는 기능들을 사용할 수 있게 해주는 interface 라고 보면 된다. 그래서 WASM 은 이 WASI 를 통해서 OS 의 기능에 접근한다. 다른 이야기로 하면, Wasm Runtime 이 browser 에 있는 경우, browser의 기능만 사용하면 되기에 WASI 는 필요없지만, Wasm runtime 이 browser 가 아닌 os 에서 run 이 되는 경우라면, os 에서 제공하는 기능을 사용할 수 있어야 한다. 그래서 WASI 를 정의한 것이라 보면 되겠다.

Wasm Runtime 과 interpreted language

이것은 compiled language 는 그냥 wasm runtime 용으로 build 를 하면 됐지만, interpreted language 에서는 interpreter 를 wasm runtime 용으로 build 를 한다.

example

개인적인 생각

재밌다. 이전에 JVM 이 처음나왔을때, 하나의 code를 여러 platform 에서 사용할 수 있다는 점에서 좋았다. 그러다가 부족한 browser 의 기능을 커버하도록 web browser 에서 JVM 을 plugin(?) 식으로 사용할 수 있었다.

wasm 도 이와 비슷한 모양새다. 다만 처음의 시작이 오히려 browser 였으며, 이 browser 에서 사용되는 이녀석을 WASI 등을 통해 OS 라는 platform 까지 확장하는 모양새다.

다만 ref. 1 에서 이야기처럼, 이 관점은 jvm 보다는 좀 더 큰 관점인 VM 에서 보는 것이 맞을 듯 하다. 이유는 wasm 이 여러 language 로 된 code를 하나의 결과물로 만들어 준다는 점에 있다. 결국 우리가 computer world 에서 사용하는 모든 program 들이 특정 언어(language) 로 만들어진 것이라면, 이 모든 language 를 compile 해서 ‘특정 vm’ 위에서 run 할 수 있다면, 그 특정 vm 은 결국 os 와 다름 아니다.

Reference

  1. WebAssembly: Docker without containers!
  2. Introducing the Docker+Wasm Technical Preview | Docker, 2022-10-24

댓글 없음:

댓글 쓰기