WebAssembly란
WebAssembly(Wasm)는
브라우저와 서버 환경에서 사용할 수 있는
이식 가능한 저수준 실행 형식이다.
핵심은 세 가지다.
- 빠르다
- 비교적 안전한 샌드박스 안에서 실행된다
- 여러 언어를 타겟으로 삼을 수 있다
왜 필요한가
웹에서는 오랫동안 JavaScript가 사실상 유일한 실행 언어였다.
하지만 성능이 중요한 작업이나 기존 C/C++ 라이브러리 재사용이 필요한 경우에는 한계가 있었다.
이때 WebAssembly를 사용하면
기존 네이티브 코드를 웹 환경으로 가져오거나,
브라우저 안에서도 더 예측 가능한 성능을 기대할 수 있다.
WebAssembly의 장점
1. 이식성
하나의 포맷으로 여러 환경에서 실행할 수 있다.
2. 성능
완전한 네이티브와 같다고 보긴 어렵지만,
자바스크립트만으로 처리하기 어려운 작업에는 충분히 강력하다.
3. 보안성
샌드박스 안에서 동작하므로,
무제한적인 시스템 접근을 기본적으로 허용하지 않는다.
그렇다고 만능은 아니다
WebAssembly를 쓴다고 모든 문제가 해결되는 건 아니다.
- 메모리 안전성 문제는 여전히 중요하고
- C/C++ 코드를 가져오면 기존 취약점이 그대로 따라올 수 있고
- 결국 런타임 구조를 얼마나 잘 이해하느냐가 중요하다
실제로 내가 Wasm 관련 실험을 하면서 느낀 건,
"빠르고 안전한 실행 포맷"이라는 문장만으로는 설명이 부족하다는 점이었다.
내가 보는 WebAssembly
내가 느끼는 Wasm의 흥미로운 지점은
단순히 웹 성능 최적화 도구가 아니라,
- 컴파일러
- 런타임
- 메모리 구조
- 보안 실험
이 네 가지가 다 만나는 지점이라는 것이다.
그래서 WebAssembly를 공부할수록
브라우저 기술만이 아니라 시스템과 보안 쪽 시야도 같이 넓어지는 느낌이 있다.