최상의 웹 앱 성능을 위한 기술, WebAssembly
WebAssembly
웹 어셈블리(webAssembly, WASM)란, C나 C++과 같은 프로그래밍 언어를 컴파일해서 어느 브라우저에서나 빠르게 실행되는 바이너리 형식(0,1로 이루어진 이진 형식)으로 바꿔주는 기술을 뜻한다. (프로그래밍 언어가 아니다!)
필자는 항상 궁금했다. JavaScript의 현재 성능이 웹 개발의 최선일까? 조금 더 성능을 향상 시킬 수는 없을까? 이를 위해 만들어진 WASM라는 기술이 흥미로워 포스팅을 하게 되었다.
주 목적은 웹 페이지에서 고성능의 어플리케이션을 가능케 하는 것이지만 포맷은 다른 환경에서도 실행 및 연동되도록 설계가 되어있다. W3C는 모질라, 마이크로소프트, 구글, 애플의 기여와 함께 표준을 관리하고 있다.
일반적으로 웹 개발자가 웹 어플리케이션을 개발할 때 사용하는 언어는 HTML, CSS, JavaScript이다. 그 중에서도 JavaScript를 이용하여 상태 관리나 동적인 부분을 개발하게 되는데, 근래엔 JavaScript의 속도가 매우 빨라졌지만 그렇다고 해도 C나 C++과 같은 언어들에 비해서는 현저히 느리다.
그리고 JavaScript로만 개발을 하다보니 게임이나 동영상 편집기 등과 같은 고성능의 어플리케이션은 브라우저에서 동작하는데 어려움이 있었다.
만약 브라우저에서 C나 C++과 같은 언어로 개발할 수 있다면 웹에서 고성능의 어플리케이션을 돌릴 수 있을 것이다. 그래서 나온 기술이 웹 어셈블리인 것이다! 우리는 이를 WASM을 통해 변환된 이진코드로 웹 개발을 할 수 있다.
웹 어셈블리는 별도의 플로그인을 사용하지 않고 브라우저에서 C나 C++과 같은 언어수준의 성능을 보여줄 수 있는 기술이 목표이며 JavaScript와 같이 사용된다.
웹 어셈블리는 JavaScript를 대체하는 것이 목적이 아니라 JavaScript를 보완하는 기술이라고 볼 수 있다. 이 기술을 통해 C, C++ 언어도 웹 개발 분야에 자유롭게 사용될 수 있어 기존 컴포넌트나 프레임워크 내의 성능 개선에 기여할 수 있는 소재가 되지 않을까 싶다.