간단히 말해서, 그렇습니다.
WebAssembly(Wasm)는 웹 개발에 폭풍을 일으킨 주요 기술로 등장했습니다. 인기 게임 Doom이 브라우저에서만 실행되는 초기 기술 데모부터 일반 웹페이지에서 데스크톱과 같은 전체 환경을 제공하는 Photoshop과 같은 대규모 레거시 앱에 이르기까지 WebAssembly는 전 세계의 모든 개인용 컴퓨터에 이미 설치된 친숙한 프로그램에서 완전히 새로운 경험을 제공합니다.
Wasm은 사용자 컴퓨터의 프로세서 유형에 관계 없이 거의 모든 프로그래밍 언어가 지원하도록 설계되었으며, 브라우저가 사용자 데이터나 시스템 리소스에 대한 무단 액세스를 방지하기 위해 사용하는 여러 가지 유리한 보안 속성을 가지고 있습니다. 이러한 속성은 브라우저 밖에서도 매우 유용한 것으로 밝혀졌습니다. 특히 코드를 격리하여 실행하거나 매우 이식성이 뛰어난 코드를 실행하려는 경우에 유용합니다.
기본적으로 WebAssembly는 실행 중인 시스템의 리소스에 액세스할 수 없습니다. Wasm은 0과 1을 순수하게 조작하는 것이므로, 본격적인 앱 개발보다는 비디오 디코딩이나 이미지 조작과 같은 계산량이 많은 작업에 주로 사용됩니다. WebAssembly 샌드박스에 현재 시간이나 파일에 저장된 데이터에 대한 정보와 같은 외부 기능에 대한 액세스 권한을 부여하는 것은 비교적 쉽지만, 정확히 어떤 API를 사용하는지는 앱마다 다릅니다.
Unix 시스템은 브라우저 외부의 WebAssembly에서 발생하는 것과 유사한 현상을 경험했습니다. 많은 앱이 네트워킹과 파일 시스템과 같은 일반적인 시스템 리소스에 액세스하려고 했지만, 각 운영 체제는 이를 처리하는 방식이 약간씩 달랐습니다. 이러한 이유로 POSIX는 표준 휴대용 운영 체제 인터페이스로 처음 선보였으며, 모든 유닉스 계열 시스템은 이 인터페이스를 채택하여 프로그램과 운영 체제의 통신 방식을 표준화할 수 있었습니다. 이로 인해 하나의 유닉스 계열 시스템에서 작동하도록 설계된 프로그램을 다른 유닉스 계열 시스템에서도 쉽게 작동하도록 이식할 수 있게 되었습니다.
WebAssembly 프로그램이 운영 체제와 통신하는 표준적인 방법을 제공하기 위해 WASI(WebAssembly System Interface)가 탄생했습니다. WASI는 POSIX에서 영감을 받은 CloudABI라는 프로젝트에서 많은 영감을 받았습니다. 이를 통해 WebAssembly가 브라우저 밖에서도 빛날 수 있는 기회가 열렸습니다. 이제 사용자는 WebAssembly의 모든 보안 및 샌드박싱 속성을 세심한 API와 결합하여 샌드박싱을 완전히 잃지 않고도 일반적인 시스템 리소스에 액세스할 수 있었습니다. 자연스럽게 비슷한 기술 중 하나가 떠오르는데, 바로 컨테이너입니다. 이 주제에 대한 논의는 Docker 공동 설립자 Solomon Hykes가 WASI에 대해 공유한 가장 심오한 게시물 중 하나를 참조하지 않고는 완료되지 않습니다.
정말 대단한 발언이네요. WebAssembly는 거의 네이티브 속도에 가까운 속도로 모든 플랫폼에서 안전하게 실행할 수 있는 코드를 패키징하는 이식 가능한 방법을 제공하며, 어떤 운영 체제도 필요하지 않다는 컨테이너에 비해 이점이 있습니다. 개발자가 생산하는 대부분의 컨테이너에는 프로그램이 실행되는 일종의 Linux 운영 체제가 있어 종종 수백 메가바이트에서 수 기가바이트에 달하는 컨테이너 크기가 생성됩니다. WebAssembly 바이너리는 순수 코드이며, 크기는 대개 킬로바이트나 한 자리 수 메가바이트입니다. 컨테이너를 모든 곳에 배포하는 대신 개발자들이 WebAssembly를 배포하는 세상을 상상하는 건 미친 짓처럼 느껴지지만 이러한 현실은 이미 실현되고 있으며 Kubernetes에서 Wasm을 실행하기 위한 여러 프로젝트가 활발하게 개발되고 있습니다.
이미 여러 회사가 프로덕션 단계에서 서버 측 Wasm을 활용하여 이점을 얻고 있습니다. Cloudflare와 Fastly는 둘 다 대규모 엣지 컴퓨팅 네트워크를 보유하고 있으며, 이를 통해 고객은 전 세계의 사용자와 가능한 한 가까운 곳에 코드를 배포할 수 있습니다. 두 회사 모두 빠른 시작 시간과 견고한 다중 테넌시를 갖춘 작고 초가용성 바이너리를 갖기 위해 전략적으로 WebAssembly를 선택했습니다. 신생 기업인 Cosmonic은 영리한 네트워킹을 사용하여 WebAssembly 구성 요소가 손바닥에 있는 작은 장치이든 세계 반대편에서 실행되는 기계이든 실행 위치에 관계없이 원활하게 서로 통신할 수 있도록 합니다. 또 다른 신생 기업인 Fermyon은 WebAssembly를 사용하여 서버 작업 부하 밀도를 대폭 높입니다. 그 결과 서버 비용이 크게 감소하고 지구에도 더 녹색 컴퓨팅이 실현되었습니다.
요약하자면 WebAssembly는 본래 브라우저 내 컴퓨팅을 위해 개발되었지만 브라우저 밖에서도 높은 실행 가능성을 보여주었습니다. 다양한 프로그래밍 언어를 지원하고 보안을 강조하는 디자인으로 인해 코드를 격리하여 실행하고 이식성을 확보하는 데 매우 적합합니다. WASI의 도입으로 서버 측 WebAssembly가 활성화되어 조직에서 Wasm을 활용하여 훨씬 더 비용 효율적인 동시에 더 나은 제품을 제공할 수 있게 되었습니다. 브라우저 외부에서 WebAssembly의 잠재력은 단순한 아이디어가 아니라 업계의 점점 더 커지는 현실입니다.
자세한 내용은 이전 블로그 게시물 " WebAssembly에 관심을 가져야 하는 이유 "를 참조하세요.
또한, "WebAssembly Unleashed" 팟캐스트 를 시청하거나 들어보세요.