Wasm/Wasi/Wasix를 알아보자

Posted by : on

Category : learning


요약

  • wasm - 웹 환경에서 네이티브 코드를 돌리는 기술 (연산 속도가 매우 빠르다)
  • wasi - 웹 환경에서 네이티브를 돌린다면 크로스플랫폼적이니까, wasm을 이용해 크로스플랫폼 프로그램을 돌리는 기술
  • wasix - wasi 발전이 빠르지 않아 새로 나오게 된 기술, wasi의 고도화버전(래핑버전), 다양한 함수 지원

최근 wasm쪽 커뮤니티에서, wasi 업데이트가 오래 나오지 않아 wasmer팀에서 wasix를 새로 만들었다는 소식이 들려왔다. 링크

새로 만들어진 Wasix에서는 웹소켓, 비동기프로그래밍, 스레딩, 브라우징, 서브프로세스 등… 이게 웹어셈 환경에서 돌아간다고? 싶은 기능들이 돌아간다고 한다.

몇 년 전부터, wasm(웹어셈블리)를 통해 서버에서 연산해야 하는 내용을, 클라이언트단에서 계산할 수 있게 된다, 웹 개발의 미래다 라는 소식을 듣곤 했지만, 공부한 적이 없어서 이번 기회에 함께 공부해보기로 했다.

Wasm이란 무엇인가?

Wasm은 모질라에서 2015년 발표한, 웹 브라우저에서 어셈블리를 실행할 수 있는 기술이다.

기존 웹 브라우저는 자바스크립트 기반으로 돌아가거나, 서버측에서 연산을 하여 반환해주는 식으로 돌아갔기 때문에, 한번에 클라이언트가 고부하의 연산을 요청할경우,

자바스크립트로 돌아가는 웹 브라우저에서는 연산할 수 없고, 서버에서는 너무 많은 요청이 들어와 곤란한 경우가 있었다.

이때 Wasm(웹 어셈블리) 기술을 활용하면 웹 브라우저에서도 빠른 속도로 연산을 할 수 있어서, 웹서버의 부하를 줄여준다는 기대가 있었다.

하지만 Wasm은 개발 난이도가 높으며, “굳이 웹 브라우저에서 고성능의 연산을 할 필요가 없다” 는 의견이 있습니다.

Wasi이란 무엇인가?

실행 파일로 만들어진 프로그램과 비슷한 성능을 자랑하는 웹 어셈블리,

웹 어셈블리는 자바스크립트와 웹 브라우저가 해석하고 실행할 수 있기 때문에 크로스플랫폼이라는 특징이 있다.

이러한 특징을 이용해, 웹 어셈블리로 연산 로직을 만들어, 이를 바이너리로 다시 실행하는 프로젝트가 만들어졌으며, 이를 위한 인터페이스가 Wasi다.

프로그래머가 Wasi를 이용해 웹어셈블리 코드를 짜면, 사용자는 이를 어느 플랫폼에서든 실행할 수 있다. (단순 연산이 아닌, 파일 입출력, 소켓 관리 등의 다양한 함수들이 지원된다.)

하지만 Wasi는 발전이 느려, 이를 해결하기 위해 새로 Wasix가 만들어 졌습니다.

Wasix이란 무엇인가?

Wasix는 Wasi를 실행할 수 있게 도와주는 wasmer프로젝트 그룹에서, Wasi 발전이 더뎌, wasi의 기능을 간단하게 사용하기 위해 만들어진 Wasi의 발전형입니다.

Wasix를 이용해 웹어셈블리를 작성할 경우, 해당 링크내용에 있는 기능들을 사용할 수 있다고 한다.


About 영원염원영웅
영원염원영웅

공부하는것을 좋아합니다.

Email : xhve00000@gmail.com

Website : http://eveheeero.com

Useful Links