우리 주변에서 기술은 빠르게 변화하고 있습니다. WebAssembly(또는 간단히 Wasm)가 개발자와 기술 매니아들 사이에서 큰 인기를 끌고 있다는 말을 들어보셨을 겁니다. 하지만 WebAssembly가 정확히 무엇이고, 왜 그것이 여러분이 주의를 기울여야 할 만큼 중요한 것일까요? 시작해 볼까요.
기본적으로 WebAssembly는 이진 명령어 집합입니다. x86이나 ARM과 같이 여러분이 들어봤을 수 있는 어셈블리 언어와 비슷하지만, 몇 가지 새로운 특성과 보안 보장이 추가되었습니다. C나 Rust와 같은 프로그래밍 언어로 코드를 작성하면 해당 코드를 WebAssembly 아티팩트로 컴파일할 수 있습니다. Wasm은 원래 웹용으로 만들어졌기 때문에 가장 큰 장점은 거의 기본 속도로 웹에서 고성능 애플리케이션을 실행할 수 있다는 점이었지만, 오늘날 WebAssembly는 브라우저 밖에서도 널리 채택되고 있습니다.
Wasm을 다른 컴파일러 타겟과 차별화하는 한 가지는 이식성입니다. WebAssembly 코드는 기본 아키텍처와 관계없이 런타임이 있는 한 모든 플랫폼에서 실행될 수 있습니다. 즉, 개발자는 코드를 한 번만 작성하면 Windows, macOS, Linux, 모바일 운영 체제, 브라우저, 심지어 전구 등 어디에서나 실행될 수 있다는 것을 기대할 수 있습니다.
특히 오늘날 우리가 살고 있는 디지털 세계에서는 보안이 무엇보다 중요합니다. 따라서 WebAssembly는 보안을 핵심 설계 목표로 만들어졌습니다. 잠시 시간을 내어 웹 브라우저가 무엇을 하는지 생각해 보겠습니다. 웹 페이지를 방문하면 브라우저가 알려지지 않고 신뢰할 수 없는 코드를 다운로드하여 실행합니다. 곰곰이 생각해 보면 정말 무섭습니다. 브라우저의 역할은 악성 코드로부터 사용자와 기기를 보호하는 것이며, 바로 이러한 사고방식이 WebAssembly에 내장되어 있습니다.
WebAssembly는 빠르게 설계되었습니다. JavaScript와 비교해 Wasm 코드는 JavaScript 코드가 구문 분석되기 전에도 디코딩되어 실행을 시작할 수 있습니다. 브라우저에서 새로운 경험을 제공할 뿐만 아니라, 이식성과 보안이 보장되어 브라우저 외부에서도 네이티브에 가까운 성능을 제공합니다.
JavaScript를 대체하는 것이 전혀 아닙니다. 둘은 상호 보완적인 기술이며, 경쟁하기보다는 함께 사용되도록 설계되었습니다. JavaScript는 여전히 웹 앱의 동적이고 대화형 부분에 필요한 반면, Wasm은 컴퓨팅 비용이 많이 드는 작업에 더 많이 사용되고 있습니다.
WebAssembly 코드는 런타임 내에서 실행되므로 기존 애플리케이션에 쉽게 삽입할 수 있습니다. 웹 애플리케이션이든 에지나 서버에서 실행되는 애플리케이션이든 상관없습니다. 이를 통해 거의 모든 언어로 작성된 코드나 심지어 타사의 신뢰할 수 없는 코드로 애플리케이션을 확장할 수 있습니다. 따라서 WebAssembly는 플러그인 시스템에 적합하며, 커뮤니티 멤버나 고객이 제공한 애플리케이션 내에서 코드를 안전하게 실행할 수 있습니다. WebAssembly의 뛰어난 보안 모델이 이 모든 것을 가능하게 합니다.
WebAssembly는 서버리스 컴퓨팅 분야에 큰 변화를 가져왔습니다. Wasm 모듈은 컨테이너에 비해 매우 작습니다. 생산된 대부분 모듈은 킬로바이트 또는 한 자릿수 메가바이트 규모이지만, 컨테이너는 쉽게 수백 메가바이트 또는 수 기가바이트에 달할 수 있습니다. Wasm은 저장소 크기 외에도 유명한 "콜드 스타트" 문제도 해결합니다. Wasm 코드는 마이크로초 단위로 실행을 시작할 수 있으므로 요청에 신속하게 응답하기 위해 코드를 실행 상태로 둘 필요가 없습니다. 대기 시간에 미치는 영향이 매우 미미한 방식으로 요청을 수신했을 때 Wasm 인스턴스를 시작할 수 있습니다. 즉, WebAssembly 기반 시스템은 트래픽이 없을 때 크기를 최대 0까지 줄일 수 있습니다. 이는 자연과 은행 계좌 모두에게 축복이 될 것입니다.
제 생각에, 정말로 획기적인 것은 WebAssembly 컴포넌트 모델입니다. 이는 개발자가 소프트웨어를 구축하고 구성하는 방식을 근본적으로 바꿀 것입니다.
간단히 말해서, 개발자는 WebAssembly 코드를 생성할 수 있는 어떤 언어로든 소프트웨어 구성 요소를 빌드한 다음 이를 쉽게 단일 애플리케이션으로 구성할 수 있습니다.
WebAssembly는 여러분의 관심을 끌만한 기술입니다. 애플리케이션에 새로운 기능을 추가하려는 개발자이든, 확장 가능하고 비용 효율적인 솔루션을 구축하는 데 중점을 둔 기업이든 Wasm이 적합할 수 있습니다. WebAssembly는 점점 더 성숙해지고 지지를 얻으면서 소프트웨어 개발에 대한 우리의 생각과 상호작용 방식을 새롭게 정의할 태세를 갖추고 있습니다. WebAssembly에 주목하세요. WebAssembly는 단순한 미래가 아니라 이미 존재하며 우리가 아는 소프트웨어를 재구성하고 있습니다.
WebAssembly에 대해 더 알고 싶으신가요? YouTube , Spotify 또는 Apple Podcast 에서 F5의 WebAssembly Unleashed 팟캐스트를 확인하세요.