[ 一日30分 인생승리의 학습법] WebAssembly 사용 현황 / 2023년

프론트엔드 개발자들에게 잘 알려진 The State of JavaScript와 비슷한 The State of WebAssembly라는, 개발자들을 대상으로 하는 설문조사를 우연히 알게 되었다. 관련 글과 데이터를 보고 재밌어 보여서 내용과 감상을 글로 남겨본다.

면책 조항

 

먼저 면책 조항부터 얘기하자. The State of WebAssembly가 WebAssembly에 관한 유일한 설문 조사라서 개인적으로는 나름 재밌게 보았고 이 글을 작성하기도 했지만 표본수가 300명 남짓한, 그리 공신력 있는 조사는 아니다. 아직은 웹 어셈블리에 대한 관심이 적은 게 이유일 것이라 짐작해본다.

WebAssembly는 다양한 언어로 작성할 수 있다. 그렇다면 WebAssembly를 사용하는 개발자들이 가장 많이 사용하는 언어는 무엇일까? 이미 짐작한 분도 있겠지만 정답은 Rust였다.

조금 특이하게 보았던 부분은 의외로 WebAssembly를 작성하는 데 자바스크립트가 많이 사용된다는 것이었다. 방법이 궁금했는데 위에 링크한 글에서는 예시로 Javy를 들면서 자바스크립트 런타임(혹은 엔진)을 웹 어셈블리로 컴파일한 후 그 안에서 JS를 구동한다는 것이었다. 성능 면에서 이점은 없지만 실행 컨텍스트가 완전히 격리되는 만큼 보안 측면에서는 더 나을 거라는 설명이 있었다.

이쯤에서 "굳이?"라는 생각이 들 수 있다. 격리가 필요하다면 Web Worker로 어느 정도 감당이 될 텐데 왜 이런 방법을 사용하는 걸까. 다른 사례의 의도는 잘 모르겠지만 예시로 든 Shopify의 Javy는 Shopify Functions라는 자체 서버리스 플랫폼에 사용되기 위해 QuickJS를 웹 어셈블리로 컴파일하여 작성된 듯하다. 최근 발표한 Ruvy까지 놓고 보면 자사 플랫폼 서비스에서 다양한 백엔드 언어를 지원하는 게 목적인 것으로 보인다. 다시 말해, 이런 플랫폼이 아니라면 JS 런타임을 웹 어셈블리로 사용하는 건 불필요하지 않을까 싶다.

C++은 짐작했던 바이고 Go도 어느 정도는 이해가 되었다. 프론트엔드 개발자에게 상대적으로 친숙한 문법을 내세운 AssemblyScript도 사용한다고 응답은 사람이 생각보다 많아서 의외였다. 새로운 JS 런타임인 Bun 덕분에 유명해진 Zig도 은근히 사용자가 있는 편이었다.

특이한 점은 Zig로 WebAssembly를 사용해보고 싶다는 응답이 현재 사용량에 비해 꽤 높게 나왔다는 것이다. 물론 "WASM으로 사용해보고 싶은 언어" 응답의 양으로 보면 Rust와 JS가 가장 많았다. 하지만 바로 뒤를 이어 Zig가 올라왔다는 점은 눈에 띄었다.

마이너 한 언어를 둘러보는 걸 좋아해서 Zig도 조금씩 맛보고 있었고, 나 역시 WebAssembly 언어로서 Zig를 눈여겨봤기 때문에 나름 반갑기도 한 결과였다. 하지만 Zig라는 언어는, 아직도 발전 중이고 마이너 변경에도 하위 호환성이 깨질 수도 있는 불안정한 언어이다. 이래저래 사용해 보면서 이런 언어로 Bun이라는 결과물을 내놓은 개발자가 대단하다는 생각부터 들었을 정도이다. 이 언어에 대한 감상은 이 글의 주제에서 벗어나므로 나중에 기회가 있을 때 다른 글에서 다루기로 하겠다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

사용 분야를 보면 웹 애플리케이션이 가장 많고 서버리스 애플리케이션과 플러그인, 백엔드 서비스 등이 뒤를 이었다. 다만, 기업에서 사용되고 있거나 사용될 계획 중인 비율은 낮은 수준에 머물러 있었다. 아무래도 아직은 기능 면에서도 부족하고 웹 애플리케이션이 대체로 어마어마한 성능을 필요로 하지 않다보니 JS 정도의 처리 능력이면 충분한 경우가 많아서라고 생각한다.

기능 면에서는 스레드, 예외 처리, 가비지 컬렉션 등에 대한 요구가 높았는데 표준화 단계에서 이미 진척이 많이 된 항목들이라고 하니 조금은 기대가 된다.

마치며

정확한 근거를 들 수는 없지만 머지않은 미래에 WebAssembly는 웹을 구성하는 중요한 요소로 자리매김할 것이라고 생각한다. 섣부른 판단일지 모르나 어쩌면 웹의 유일무이한 언어로서 JS가 지켜온 자리가 조금은 흔들리는 계기가 될 수도 있다. 하지만 이번 설문조사 결과에서 보았듯 WebAssembly의 현재 상태는 아직 갈 길이 멀다. 당장 프로덕션에 적용하기엔 무리겠지만, 조금이라도 더 많은 사람들이 이 기술에 관심을 가졌으면 하는 바람과 함께 글을 마친다.

해당 조사 결과에 대해 더 자세한 내용은 The State of WebAssembly 2023에서 볼 수 있다.

 

[출처] https://taegon.kim/archives/10660

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
1178 [ 一日30分 인생승리의 학습법] A Tutorial and Elementary Trajectory Model for the Differential Steering System of Robot Wheel Actuators : 로봇 휠 액츄에이터의 차동 조향 시스템에 대한 튜토리얼 및 기본 궤적 모델 file 졸리운_곰 2023.11.29 103
1177 [ 一日30分 인생승리의 학습법] Streamline Your MLOps Journey with CodeProject.AI Server : CodeProject.AI 서버로 MLOps 여정을 간소화하세요 file 졸리운_곰 2023.11.25 95
1176 [ 一日30分 인생승리의 학습법] Comparing Self-Hosted AI Servers: A Guide for Developers / : 자체 호스팅 AI 서버 비교: 개발자를 위한 가이드 file 졸리운_곰 2023.11.25 102
1175 [ 一日30分 인생승리의 학습법] Self-Hosted Artificial Intelligence: Keeping Control of Your Data : 자체 호스팅 인공 지능: 데이터 제어 유지 file 졸리운_곰 2023.11.25 94
1174 [ 一日30分 인생승리의 학습법] AI_머신러닝 기초 정리 file 졸리운_곰 2023.11.24 114
1173 [ 一日30分 인생승리의 학습법] 머신러닝 내용 요약 및 정리 졸리운_곰 2023.11.24 102
1172 [ 一日30分 인생승리의 학습법] 당신이 알아두어야 할 10가지 머신러닝 알고리즘 file 졸리운_곰 2023.11.24 100
1171 [ 一日30分 인생승리의 학습법] GN⁺: WASM by Example - 예제로 배우는 WASM (wasmbyexample.dev) 졸리운_곰 2023.11.17 93
1170 [ 一日30分 인생승리의 학습법] GHIDRA 소개 및 사용 file 졸리운_곰 2023.11.17 105
1169 [ 一日30分 인생승리의 학습법] [블록체인 이론] IPFS 쉽게 이해하기 file 졸리운_곰 2023.11.04 96
1168 [ 一日30分 인생승리의 학습법] 자바스크립트 - IPFS 접근 file 졸리운_곰 2023.11.04 133
1167 [ 一日30分 인생승리의 학습법] IPFS 사용하기 file 졸리운_곰 2023.11.04 93
1166 [ 一日30分 인생승리의 학습법] The Best 10 Open Source Projects for Developers to Contribute : 개발자가 기여할 수 있는 최고의 10개 오픈 소스 프로젝트 file 졸리운_곰 2023.10.29 3047
» [ 一日30分 인생승리의 학습법] WebAssembly 사용 현황 / 2023년 졸리운_곰 2023.10.27 105
1164 [ 一日30分 인생승리의 학습법] 웹 3(Web3) 란 무엇일까? : 분산 인터넷의 미래 file 졸리운_곰 2023.10.24 103
1163 [ 一日30分 인생승리의 학습법] keycloak 설치 및 사용 file 졸리운_곰 2023.10.12 128
1162 [ 一日30分 인생승리의 학습법] KEYCLOAK 서버 설치 및 계정 생성 file 졸리운_곰 2023.10.12 96
1161 [ 一日30分 인생승리의 학습법][Web3] React와 web3의 만남 - Web3-react로 NFT 민팅하기 (3) file 졸리운_곰 2023.10.05 102
1160 [ 一日30分 인생승리의 학습법][Web3] React와 web3의 만남 - Web3-react로 NFT 민팅하기 (2) file 졸리운_곰 2023.10.05 123
1159 [ 一日30分 인생승리의 학습법][Web3] React와 web3의 만남 - Web3-react로 NFT 민팅하기 (1) file 졸리운_곰 2023.10.05 92
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED