AI 요약
2017년 첫 출시된 WebAssembly(Wasm)는 초기 C, C++ 등 저수준 언어를 타겟으로 시작했으나, 이후 SIMD, 예외 처리, GC(가비지 컬렉션) 지원 등 비약적인 발전을 이루었습니다. 2025년 뮌헨에서 열린 WebAssembly CG 회의 발표를 바탕으로 작성된 이 글은, Wasm이 기술적으로는 성숙했음에도 불구하고 웹 플랫폼에서 여전히 JavaScript의 보조 수단인 '2급 언어'로 취급받고 있다는 점을 지적합니다. 현재 Wasm은 코드를 로드하기 위해 번거로운 JS API를 거쳐야 하며, 웹 API에 직접 접근하지 못하는 구조적 한계로 인해 대규모 리소스를 가진 기업들만 주로 활용하는 실정입니다. 저자는 이러한 개발자 경험의 격차가 Wasm의 광범위한 채택을 가로막고 있다고 분석하며, Wasm을 '1급 언어'로 격상시키기 위해 웹 플랫폼과의 긴밀한 통합과 WebAssembly 컴포넌트 도입이 필수적이라고 강조합니다.
핵심 인사이트
- 역사적 발전: 2017년 최초 출시 이후 공유 메모리, SIMD, 예외 처리, 64비트 메모리, GC 지원 등 주요 기능이 대폭 확장되었습니다.
- 구조적 한계: JavaScript는 웹의 '1급 언어'로서 플랫폼에 직접 접근하지만, Wasm은 반드시 JavaScript의 능력을 거쳐야만 웹 API를 사용할 수 있는 '2급 언어' 상태입니다.
- 진입 장벽: 복잡한 로딩 절차와 낮은 통합성으로 인해 현재 Wasm의 혜택은 충분한 투자 여력이 있는 일부 대기업 커뮤니티에 국한되어 있습니다.
주요 디테일
- 성능 기능 추가: 벌크 메모리 명령, 다중 반환값(Multiple returns), 참조값 지원 등을 통해 다양한 언어가 Wasm을 효율적으로 타겟팅할 수 있게 되었습니다.
- 로딩 방식의 불편함: JavaScript는
<script>태그 하나로 로드되지만, Wasm은fetch,instantiate등 수동적인 JS API 호출 과정을 거쳐야 합니다. - 남은 과제: 네이티브 성능과의 격차를 완전히 줄이기 위해 스택 스위칭(Stack switching) 및 개선된 스레딩(Threading) 기술 도입이 현재 진행 중입니다.
- 개발자 경험(DX): JavaScript가 "충분히 좋은(good enough)" 대안으로 여겨지는 상황에서, 복잡한 Wasm 사용법은 개발자들에게 불필요한 비용으로 인식되고 있습니다.
향후 전망
- WebAssembly 컴포넌트 도입: 컴포넌트 모델을 통해 JavaScript 의존성을 낮추고 웹 플랫폼과의 직접적인 상호작용을 가능케 할 계획입니다.
- 생태계 확장: Wasm이 1급 언어로 자리 잡으면 일반 웹 개발자의 진입 장벽이 낮아져 웹 생태계 전반의 앱 성능이 상향 평준화될 것으로 기대됩니다.
