웹어셈블리 인 액션 - C++ 코드와 엠스크립튼을 활용한 실전 웹어셈블리
제러드 갤런트 지음, 이일웅 옮김 / 한빛미디어 / 2020년 10월
평점 :
장바구니담기


이 글에는 스포일러가 포함되어 있습니다.


웹 개발자에게 가장 큰 화두는 성능이라고 생각하는데요. 웹 페이지가 얼마나 빨리 로드되는지, 웹에 대해 전반적인 응답이 빠른지 등 성능 부분에 민감한 건 사실입니다. 또한, 제작사마다 구현방식이 다르므로 지원 대상 브라우저 마다 일일이 테스트해서 작동여부를 확인해야 되는 경우들이 많습니다.


웹의 역사의 흐름을 바꿔줄 웹 어셈블리(Web Assembly)를 소개합니다. WASM은 브라우저 안에서 코드를 실행하고 웹에서 자바스크립트 외에 다른 언어를 지원하면 애플리케이션의 속도를 높이는 역할을 해주는 장점이 있습니다. 즉 툴 생태계도 발전하고 있으며, 브라우저 개발사인 애플, 구글, 마이크로소프트, 모질라가 웹 어셈블리를 지원하고 있습니다.



웹 어셈블리 인 액션 저서는 웹 어셈블리에 대한 자세한 내용을 1, 2부와 3, 4부로 나누어져서 설명하고 있습니다. 기본적으로 핵심개념은 1, 2부에서 설명하고 있으며 3, 4부는 주로 디버깅과 고급주제로 이루어져 있습니다. 기본개념을 아시는 분들은 바로 3, 4부를 읽는 것도 추천합니다. 특히 순서대로 책을 읽는 것을 권유하는데요. 그 이유는 웹 어셈블리 기술을 이해하고 엠스크립튼 툴킷에 익숙해지기 위해서 1~3장을 차례대로 읽는 방법으로 쉽고 빠르게 익힐 수 있습니다.



기본 핵심개념에서는 웹 어셈블리가 어떤 기술인지, 어떻게 작동하는지 설명하고, 웹 어셈블리 모듈을 컴파일할 때 사용할 엠스크립튼 툴킷의 사용법을 제시하고 있습니다. 더 나아가 웹 어셈블리 모듈을 생성하고 웹 브라우저와 상호작용하는 프로세스에 대한 이야기합니다. 기존 C/C++ 코드 베이스를 웹 어셈블리 모듈로 컴파일하려면 어떻게 수정해야 하는지, 웹 페이지 자바스크립트와 모듈이 상호작용하는 원리, 웹 어셈블리 모듈에서 웹 페이지 자바스크립트를 등 가이드에 대한 내용이 있습니다.



웹 어셈블리 활용에서는 동적 링킹, 병렬 처리 등 고급 주제를 다루면서 브라우저가 아닌 환경에서 웹 어셈블리를 사용하는 방법을 제시해줍니다. 마지막으로 디버깅과 테스팅으로 모듈의 오류를 미리 발견하고 조지하기 위한 기법을 설명합니다. 카드 짝 맞추기 게임 개발을 통해 텍스트 포맷, 모듈의 다양한 디버깅 방법, 모듈의 통합 테스트를 어떻게 작성하는지까지 담고 있습니다.


그리고 C/C++, 자바스크립트, HTML을 기본적인 개념을 이해하고 있는 개발자에게 큰 도움이 되는 내용을 담고 있습니다. 또 예제 코드를 활용해 실습하는 경우 한빛미디어 홈페이지 (hanbit.co.kr/src/10347)에서 파일을 받을 수 있습니다.




웹 어셈블리는 웹 플랫폼에 있어서 상당한 큰 의의가 있는데요. 여러 언어로 작성된 코드들을 네이티브로 가까운 속도로 웹에서 돌릴 수 있는 길을 제시합니다. 이전까지 웹에서 돌려볼 수 없었던 클라이언트 앱들을 웹에서 진행할 수 있도록 도와주기 때문입니다.


웹 개발에서 웹 어셈블리, 자바스크립트는 서로 대체재가 아니라 함께 공존하는 것입니다. 만약 웹사이트를 최대한 인터렉티브하게 만들고 싶다면 웹 어셈블리가 아니라 리액트, 자바스크립트가 필요한 것입니다. 자바스크립트가 웹을 화려하고, 인터랙티브하게 만드는 걸 잘하기 때문입니다. 하지만 자바스크립트는 예를 들어서 이미지 프로세싱 같은 것은 못 합니다. 리얼타임, 빠른 개선 같은 것들을 말입니다. 그런 경우에는 웹 어셈블리를 사용하는 것이 좋습니다.


웹의 미래는 브라우저 제작사들은 자바스크립트 성능 개선 방안을 모색하기 시작했으며, 파이어폭스 제작사인 모질라 재단은 asm.js라는 자바스크립트 서브셋을 발표하기도 했습니다. ( 참고 https://developer.mozilla.org/ko/docs/WebAssembly또한, 웹 어셈블리로 만들어진 UIfimga(https://www.figma.com) 사이트도 있습니다.


추후 게임 설치 없이도 유니티 게임 등 다양한 게임을 을 이제 웹사이트로 컴파일하면 웹사이트는 해당 바이너리 파일을 이해할 수 있게 될 것이고 덕분에 현재 크롬, 파이어폭스, 등에서 데모나 3d 시뮬레이션을 볼 수 있는 것입니다.



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo