웹 어셈블리(WASM)란

Lisa Lee·2024년 6월 12일
post-thumbnail

아래 내용은 얄코님의 유튜브를 보고 공부한 내용입니다.
자세한 내용은 영상을 봐주세요!
https://youtu.be/plzARATOPdQ?si=OXYK8Qh5Eu8ENfwQ

웹 어셈블리(WASM)의 동작

  • 웹 어셈블리는 다양한 언어(C, C++, Rust 등)로 작성된 코드를 컴파일하여 생성된 바이너리 포맷 (언어가 아님)
  • 브라우저에서 고성능 연산을 수행할 수 있도록 설계됨
  • 브라우저는 이 바이너리 포맷을 직접 실행함으로써 빠르고 효율적인 성능을 제공
  • Javascript 인터페이스를 통해 접근하여 웹 어셈블리 파일(.wasm)을 로드하고 실행

바이너리 포맷(Binary Format)이란?

  • 데이터를 0과 1로 구성된 이진수로 표현하는 방식
  • 컴퓨터가 이해하고 처리할 수 있는 가장 기본적인 형태의 데이터 표현 방식

웹 어셈플리에서의 바이너리 포맷

  • 컴파일: 웹 어셈블리 코드는 C, C++, Rust 등의 언어로 작성된 후 웹 어셈블리 컴파일러를 통해 바이너리 포맷(.wasm 파일)로 변환
  • 실행: 브라우저는 이 바이너리 파일을 로드하여 직접 실행
    (이 과정에서 Javascript보다 더 빠른 성능 발휘)

웹 어셈블리의 특징

  1. 언어 중립성: 웹 어셈블리는 특정 프로그래밍 언어에 종속되지 않으며, 다양한 언어에서 컴파일 가능
  2. 바이너리 포맷: 웹 어셈블리 코드는 바이너리 포맷으로 컴파일되어 빠르게 실행
  3. 브라우저 지원: 주요 웹 브라우저에서 웹 어셈블리를 지원
  4. 고성능: 자바스크립트보다 훨씬 빠른 실행 속도를 제공
  5. 샌드박스 환경: 웹 어셈블리는 안전한 실행 환경을 제공하여 보안성이 높음

웹 어셈블리의 장점

  1. 성능: 자바스크립트보다 빠른 속도로 복잡한 계산 및 그래픽 작업을 처리. 특히, 게임, 3D 렌더링, 고성능 애플리케이션에서 유용
  2. 이식성: 다양한 플랫폼에서 동일한 코드를 실행 가능
  3. 보안: 샌드박스 환경에서 실행되어 시스템 자원에 직접 접근하지 않으므로 보안성이 높음
  4. 메모리 관리: 명시적인 메모리 관리로 효율적인 메모리 사용 가능
  5. 멀티스레딩 지원: 멀티스레딩을 지원하여 더 나은 성능을 제공

웹 어셈블리 사용법

  1. 코드 작성: C, C++, Rust 등으로 코드를 작성
  2. 컴파일: 작성된 코드를 웹 어셈블리로 컴파일 (Emscripten, Rust의 wasm-pack 등 도구 활용)
  3. 로딩 및 실행: 자바스크립트를 통해 .wasm 파일을 웹페이지에서 로드하고 실행
  4. 프레임워크 사용: Blazor와 같은 프레임워크를 사용하여 더 쉽게 웹 어셈블리 코드를 작성하고 브라우저에서 실행할 수 있음

웹 어셈블리 예제 및 활용 분야

  • 고성능 웹 애플리케이션: 피그마, 오토데스크 CAD, 구글 어스 등의 애플리케이션은 웹 어셈블리를 활용하여 브라우저에서도 높은 성능을 제공
  • 게임 개발: 복잡한 물리 엔진과 그래픽 렌더링 작업을 처리
  • 데이터 처리: 대량의 데이터 처리 및 분석 작업에서 웹 어셈블리가 유리
profile
개발 공부하고 있는 10+N 년차 기획자입니다

0개의 댓글