2017년 2월 7일, Chrome 개발자 버전(Canary)으로 58.0.3004이 나왔다. 오늘 기준으로 2-3일 전이다 (미국 시간 기준일테니). 버전 58에서는 WebAssembly을 기본적으로 사용할 수 있다. 드디어!!!!!!

WebAssembly는 간략하게 설명하자면, Web에 맞게 설계된, Web에서의 가상 CPU에서 동작하기 위한 최적화 된 바이너리 포맷이다. 기존의 Assembly가 무엇인지 아는 분이시라면 이 설명으로도 충분히 짜릿함을 느끼실 수 있으실 것이라 생각한다. 하지만 요즘 시대에는 Assembly는 굉장히 옛날 기술이고 접근하기도 쉽지 않은 기술이다 보니 아마 설명이 충분하지 않으리라 생각하며, 조금 더 보충설명을 해보자.

WebAssembly는, JavaScript를 만든 Brendan Eich 님께서 JavaScript가 근본적으로 해결하지 못하는 문제를 해결하기 위하여 만든, 새로운 표준이자, (아마 거의 확정적으로)미래를 이끌어 나갈 기술이다.


왜 WebAssembly가 필요한지 생각해보자. 잠시 예전을 생각해보자, React가 나오기 이전에… Angular가 나오기 이전에…! 약 지금으로부터 10여년 전 이야기이다. 내가 아직 중학생 시절일 때, 웹은 ActiveX와 Flash, ASP, jQuery로 가득 차 있었다. PHP도 좀 보였던 걸로 기억하며, Java가 한참 붐을 일으키며 JSP가 막 뜨던 시기로 기억한다. 그 당시 웹은 기술로서의 대우를 못 받았다. 웹 디자이너, 에이전시 등이 박봉을 받으며 열심히 일을 할 때였던 것으로 기억한다.

이 당시에는 웹에서 별 것을 할 수가 없었다. JavaScript의 한계도 명확했다. 심지어 2007~2008년 당시에는 ECMAScript 3이 표준이던 때였다. CSS의 표준도 불명확했고, Chrome도 없던 시절이었다. JavaScript와 jQuery가 할 수 있던 일이라고는 말 그대로 웹 페이지를 만드는 데 사용하는 ‘스크립트’ 정도로 인식이 되던 때였으며, 더욱이 jQuery의 등장으로 인해 JavaScript는 언어로 취급도 못 받던 시대였다. (그냥 그거 jQuery 쓰면 되잖아)

시간이 조금 더 지나 Chrome이 혜성처럼 등장했다. 국내에선 별로 인정을 못 받았다. 망할 ActiveX 때문에 (심지어 지금까지도…). 그러다 차츰 속도가 빠르다는 국내 선구자들에 의해 하나 둘씩 사용되다, 차차 사용자층이 늘어났다. 하지만 우리 보수단체층이 기존의 플랫폼을 바꾸는 것을 굉장히 두려워 해서 ActiveX는 계속 권장되어 왔다.(아마 2MB가 정보통신부를 해체하지 않았으면 네이버도 구글처럼 컸을 수도 있다고 생각한다)

그러는 사이 해외에선 Chrome 덕분에 웹이 너무너무 성장했다. 단지 옛날의 웹이 아니었다. Chrome 의 V8 덕분에 Node.js도 등장하고, 백엔드도 바뀌었다. Chrome의 V8 덕분에 프론트엔드도 속도가 빨라져서 과거엔 성능 문제 때문에 시도도 못했던 SPA 프레임워크도 많이 나오게 되었고, 기술이 많이 축적이 되었다.


이젠 나를 포함한 많은 개발자들이 웹을 사랑하게 되며, JavaScript로 모든 것을 하려고 했다. 정말 그렇다. 모바일 (Cordova, Phonegap, React Native, NativeScript), 프론트엔드 (주력 분야), 백엔드 (Node; 심지어 성능도 특정한 응용에서는 굉장히 빠르다). JavaScript 하나로 다 할 수 있다. 물론 공부는 많이 해야 한다.

이처럼 다재다능해진 JavaScript의 한계점이 존재했으니, 바로 프론트엔드 부분에서이다. 결국은 브라우저 내에서 동작하는데, 이 브라우저가 모두 같은 브라우저를 쓰면 참 좋겠지만 사용자는 그렇지 않다. 특히 우리나라는 아직도 IE를 쓰고 있다 (관공서에선 아직도 XP에서 IE8을 쓰는 경우를 보았다…) 그래서 비디오 디코딩, 고성능 그래픽 게임 등, 많은 연산을 요구하는 처리는 불가능했다. WebAssembly가 등장하기 이전 까지는!!!!

TL, DR; WebAssembly는 브라우저에서 많은 연산 처리를 위해(비디오 디코딩, 3D 게임 등) 설계 된 표준이다.

이제 2020년이면 Windows 7 지원도 종료되고 XP는 지원이 원래 중단되었고, ActiveX도 걷어내주었으면 하는 희망과 함께 WebAssembly의 무궁한 성장을 기대해본다. 아마 이제는 브라우저만 키면 운영체제와 상관 없이 Adobe Photoshop을 사용할 수 있는 날이 오지 않을까?