컴퓨터 공학/WebAssembly

[번역] 2021년 웹 어셈블리 현황 설문조사

혼새미로 2022. 1. 13. 20:03
반응형
작성자 : Colin Eberhardt
번역 : 혼새미로

"An Ukiyo-e style painting of Spider-Man on a Rollercoaster." from DALL-E 2

요약

  • 러스트는 가장 많이 사용되고 웹 어셈블리에 가장 적합한 언어이다.
  • 어셈블리스크립트는 웹 어셈블리 언어에서 두 번째로 적합한 언어이다.
  • 웹 어셈블리는 웹, 서버리스, 게이밍 그리고 컨테이너 화 앱에서 가장 큰 영향력을 가질 것으로 기대된다.
  • 더 나은 디버깅 지원이야말로 가장 많은 사람들이 필요하다고 느끼는 요소이다.

개요

웹 어셈블리 (이하 WA) 2018년 W3C에서 마지막 명세서 초안이 출판된 상대적으로 최신 기술이다. WA는 근본적으로 브라우저에서 다중 언어 지원 및 네이티브에 근접한 속도를 갖는 새로운 런타임으로 탄생하였으며, 그 약속을 확실히 이행하였다.

 

거의 4년 전에 WebAssembly 주간 뉴스레터를 시작하였고, 이 기술이 성숙해지고 혁신을 일으키는 것을 지켜보았다. 예전 뉴스레터 이슈들은 WA의 능력을 확장하고 이 기술을 최대한 포용하는 상업적 제품으로 확장시키는데 초점을 맞춘 최신 이슈들과 달리 실험적으로 툴 개발에 집중하였다. 그러나, 이 4년 동안 가장 눈에 띄는 변화는 브라우저 외부에서 발견된 간단하고, 가볍고, 안전한 런타임에 성공했다는 점이다. 요즘은 브라우저 앱보다 서버가 없는 앱, 컨테이너형 앱 또는 블록체인 앱에 대한 기사를 더 많이 보고 있다.
 
이 점을 염두에 두고, 사람들이 WA 기술을 어디에 사용하고 있는지, 어떻게 사용하고 있는지, 미래에 대한 그들의 생각을 좀 더 알아보기 위해 State of WebAssembly 설문조사를 실행할 때가 되었다고 느꼈다.

언어

첫 번째로, 사람들이 현재 WA를 사용하는 언어에 대해 조사하였다.

러스트 개발자의 26%가 WA를 빈번하게 사용하고 있으며, C++과 어셈블리스크립트가 뒤를 잇고 있다.
 
러스트의 성공 비하인드가 무엇일까? 내 생각에는 두 가지가 있다. 첫째, 러스트는 개발자들 사이에서 매우 인기있는 언어로, StackOverflow의 개발자 조사에서 4년 연속으로 '가장 사랑받는' 언어로 선정되었다. 둘째로, 러스트가 현재 WA의 기술적 관점에서 봤을 때 궁합이 좋다는 것이다. 가바지 콜렉션이 필요 없고, 경량 바이너리를 생성하며, 툴링과 커뮤니티 지원이 강력하다.
 
2위는 Emscripten 툴체인을 통해 WA 지원을 제공하는 C++이다. C++ 또한 게임 개발 쪽에서는 인기있는 언어이다.
 
모든 언어의 결과를 보면 응답자가 WA를 얼마나 자주 사용하는지 알 수 있다.

거의 47% 사용자가 빈번한 사용자이다.
 
이 설문조사는 또한 사람들이 사용하고 있는 다른 언어들에 대해서도 질문했는데, 적은 수 (각 사례에서 2% 미만)가 Cheerp를 통해 Kotlin, Elixir, 또는 C++를 사용하는 것으로 나타났다.
 
다음 질문에서는 향후 WA 개발을 위해 어떤 언어를 사용하고 싶은지 물어보았다.

놀랄 것 없이 마찬가지로, 러스트가 만족도 차트에서 1위를 차지했다. 언어 사용량에서 이전 차트 대비 어셈블리스크립트는 C++을 제치고 2위를 차지했다. 어셈블리스크립트에 익숙하지 않은 사용자를 위해 설명하자면, WA 용으로 특별히 설계된 새로운 타입스크립트 같은 언어이다.
 
블레이저도 고 언어에 아슬아슬하게 추월당해 순위에서 밀려났다. 경험상 작년에 마이크로소프트에서 공식적으로 출시한 블레이저 주변에는 굉장히 많은 흥미로운 일들이 있었다. WPF 및 Windows Form 앱을 브라우저로 마이그레이션하는 사람들에게는 가장 매력적일 수 있는 언어이다.

웹어셈블리 앱들

다음으로, 사람들이 WA를 사용하는 이유와 미래의 포부에 대해 살펴본다.
 
설문조사에서는 사람들에게 현재 WA를 어디에 사용하고 있는지 물어보았다. 다음은 '기타'와 함께 단일 응답만 포함하는 모든 응답이다.

대부분의 사람들은 웹 앱 개발을 위해 WA를 사용하고 있다. 향후 설문 조사에서는 웹에서 이 서비스를 사용하는 방법과 사용처를 조금 더 구체적으로 물어보는 것도 좋아보였다.
 
WA는 아직 상대적으로 어린 기술이고 어디에 영향을 미칠지에 대한 발견을 해나가고 있다. 다음 질문에서는 향후 WA가 가장 큰 영향을 미칠 분야에 대해 물어보았다.

응답자의 69%는 WA가 미래의 웹 개발에 큰 영향을 미칠 것으로 기대하고 있다.
 
그러나, 이 설문조사 응답자들은 WA가 광범위한 영역에서 상당한 영향을 미칠 것으로 생각하고 56%는 서버리스에서 큰 영향을 미칠 것으로 기대하고 있다.
 
범용 런타임으로서의 WA의 중요성을 도커의 공동 설립자 중 한 명이 자주 인용한 이 트윗에서 가장 적절하게 설명되었다.

WASM + WASI가 2008년에 존재했다면 도커를 만들 필요가 없었을 것이다. 그만큼 중요한 것이다. 서버의 WA는 컴퓨팅의 미래이다.

흥미롭게도 상당수의 사람들이 WA가 앞으로 블록체인 앱에 어떤 영향을 미칠지 모른다고 말했다. WA는 블록체인 커뮤니티에서 큰 관심을 끌고 있으며, 이더리움 2.0 로드맵을 추진하고 있다.

웹어셈블리의 미래와 니즈

WA는 처음에 최소 실행 가능 제품 (MVP)으로 출시되었으며, C++의 유스케이스 및 기존 C++ 코드베이스 마이그레이션에 중점을 둔 초기 기능 집합이다. 그 이후로 변경 가능한 글로벌 및 다중 값 반환을 포함한 새로운 런타임 기능이 추가되었다. 그러나, 로드맵에는 훨씬 더 큰 새로운 기능이 몇 가지 있다.
 
다음 질문은에서는 향후에 어떤 WA 기능에 관심이 있는지 물었다.

스레드가 최고 관심사로 나왔다. 이 제안은 원자 메모리 연산과 공유 선형 메모리에 대한 지원을 추가하여 WA 모듈이 스레드 환경에서 작동할 수 있도록 지원한다. 특히 이 제안에는 WA 모듈이 스레드를 직접 생성할 수 있는 작업이 포함되어 있지 않다.
 
다음은 WASI로, Bytecode Alliance가 주도하는 사양으로, 다양한 브라우저 외 기능들을 추가하고 있다. 인터페이스 유형에 이어 다른 언어로 작성된 모듈이 서로 직접 통신하는 것이 훨씬 쉬워지는 제안이 나왔다.
 
나는 가비지 컬렉션이 사람들의 우선순위에서 너무 낮은 것을 보고 조금 놀랐다. C# 및 어셈블리스크립트와 같은 언어는 자체 가비지 컬렉터를 WA 모듈의 일부로 제공해야 한다. 이 제안은 호스트 가비지 컬렉터와 통합할 수 있는 기회를 열어주므로 모듈이 더 작고 효율적이다.
 
다음 질문으로 미래에 WA가 성공하기 위해 가장 필요한 것은 무엇인지 물어보았다.

가장 많은 사람들이 더 좋은 디버깅 지원의 필요성을 꼽았다. 툴링에는 일관성이 부족하며, 일부는 소스맵을 사용하고, 다른 일부는 DWARF를 사용한다. 대부분의 경우 중단점, 스택 트레이스 및 로컬 변수 검사를 통한 디버깅을 불가능하다.
 
반대로 언어 지원은 우선순위가 아니며, 대부분의 언어는 어떤 형태로든 WA에 컴파일되고 있다. 새로 추가할 필요가 없고 이미 지원되는 개발된 개발자 경험만 개선하면 된다. 그러나 이는 말처럼 쉽지 않다.

인구통계

마지막으로, 설문조사는 인구 통계를 개략적으로 설명하는 몇 가지 질문을 포함했다. 그 결과들을 여기서 간단히 설명한다.
 
응답자들은 자바스크립트, 백엔드 및 WA 개발에서 자신의 기술 수준을 발표하도록 요청받았다.

또한 WA를 얼마나 오래 사용했거나 알고 있었는지에 대한 질문도 하였다. 대부분은 이 기술에 익숙하지 않았다.

또한 WA를 얼마나 오래 사용했거나 알고 있었는지에 대해 질문도 하였다. 대부분은 이 기술에 익숙하지 않았다.
 
이 조사는 196개국에서 결과를 얻었으며, 미국 (21.8%), 중국 (9.1%), 독일 (9.1%)이 가장 많았다.

결론

이 설문조사에 참여해주신 모든 분들께 감사드린다. 결과를 직접 분석하려면 CSV 파일로 사용할 수 있다. 흥미로운 결과가 발견되면 공유해주길 바란다.

반응형