웹어셈블리 뜻? WASM과 WASI 2가지 이해

WebAssembly 의미 및 개념 설명

웹어셈블리의 의미와 개념에 대해 알아봅시다.

웹어셈블리의 의미와 개념 이해

웹어셈블리(Web Assembly)는 웹사이트의 웹페이지에서 실행할 수 있는 소스코드를 바이너리 형식이나 어셈블리와 유사한 텍스트 형식으로 정의한 웹 표준을 말한다. HTML, CSS, JavaSCript 등 스크립트 기반 프로그래밍 언어로 작성된 소스 코드의 성능 한계를 극복하기 위해 Web Assembly는 C, C++, Rust 프로그래밍 언어로 개발된 소스 코드를 바이너리 버전. 웹 브라우저에서 동작할 수 있도록 해당 형식을 바이너리 형식으로 변환하는 기술입니다. 웹 어셈블리를 “WA” 또는 “WASM”이라고 합니다. 웹어셈블리는 웹브라우저에서 기계어에 가까운 빠른 속도로 실행되는 프로그램이다. 프로그램을 실행하기 위한 구조입니다. 웹 브라우저에서 프로그램을 실행하는 데 사용되는 프로그래밍 언어는 대부분 자바스크립트인데, 자바스크립트는 해석형 프로그래밍 언어로 속도가 느리다는 단점이 있다. 웹 어셈블리(WASM)의 속도는 이 정도입니다. 이 문제를 극복하기 위해 C, C++, Rust 등의 언어로 작성된 소스 코드를 웹 브라우저에서 실행할 수 있습니다. Compile 타입에 비해 실행 속도가 느릴 수 있으나 일반적으로 빠른 속도로 실행됩니다. Web Assembly를 통해 네이티브 수준의 성능과 속도를 얻을 수 있고, 다른 프로그래밍 언어로 작성된 소스 코드를 쉽게 재사용할 수 있으며, 고성능 웹 애플리케이션이 가능합니다.

WebAssembly 의미 및 개념 설명

웹어셈블리는 기존 C나 C++ 언어로 작성된 소스 코드를 기계어에 가까운 형식으로 변환해 웹 애플리케이션의 실행 성능과 속도를 향상시키고, 하드웨어 이식성을 높이는 새로운 형태의 코드를 말한다. 웹어셈블리(Web Assembly)는 C나 C++ 등의 프로그래밍 언어를 컴파일하여 어느 웹 브라우저에서든 빠르게 실행할 수 있는 바이너리 형식으로 변환하는 기술이다. 웹 어셈블리는 새로운 소스 코드를 직접 생성하지 않고 기존 코드를 기반으로 구축됩니다. C, C++, Rust 등의 프로그래밍 언어로 작성된 작은 코드를 효과적으로 컴파일하고 활용하는 구조입니다. 즉, 기존 소스코드를 재활용하도록 설계된 기술이다. 웹 어셈블리(WASM)를 사용하면 여러 프로그래밍 언어로 작성된 소스 코드를 네이티브에 가까운 속도로 실행할 수 있습니다. 개발자는 WebAssembly 코드를 생성하는 방법을 몰라도 WebAssembly 모듈을 웹 애플리케이션으로 가져와 JavaScript를 통해 사용할 수 있습니다.[웹어셈블리 개념과 특징]

구분 내용 개념 소스코드 변환을 통해 웹브라우저에서 고속 실행이 가능한 기술 개발 목적 소스코드의 빠른 실행속도 및 성능, 소스코드의 재사용성, 고성능 웹 애플리케이션 개발 특징 명령형, 구조적, 정적 타이핑, 기타 프로그래밍 언어 소스코드를 바이너리 형식으로 변환 응용분야웹브라우저 또는 서버측 기술범위 40개 이상의 언어 컴파일 가능개발일 2017년 3월개발자 국제 웹 표준화 단체 W3C(World Wide Web Consortium)관련회사W3C, Intel(Intel), Mozilla, Microsoft, Google, Apple LicenseApache 라이선스 2.0파일 형식텍스트 형식(.wat), 바이너리 형식(.wasm)

WebAssembly는 빠르고 효과적이며 이식 가능하도록 설계되었습니다. WebAssembly는 읽기 쉽고 디버깅이 가능합니다. WebAssembly는 또한 보안을 유지하면서 웹에서 제대로 작동하도록 구축되었습니다. 웹 어셈블리(Web Assembly)는 국제 웹 표준화 단체인 월드와이드웹 컨소시엄(W3C)이 2017년 개발한 기술이다. 그리고 W3C에서는 모질라(Mozilla)에서 마이크로소프트, Google, 애플사 Web Assembly 등 주요 웹 브라우저를 생산하는 기업과 협력하여 표준화를 추진했습니다. Web Assembly를 이용하면 기존에 C언어로 개발한 소스코드를 재사용할 수 있으며, JavaScript로 새롭게 구현하여 웹브라우저에서 실행할 수 있습니다. 오히려 C언어로 작성된 소스코드를 자바스크립트에서 사용할 수 있도록 웹어셈블리 소스코드로 변환해주는 구조이다. WASM은 기존 소스 코드를 재사용하면서 애플리케이션 실행 속도와 성능을 향상시킬 수 있습니다. WASM은 기존 웹 애플리케이션으로 개발이 어렵고 속도와 성능이 중요한 게임 분야, 가상현실(VR), 증강현실(AR) 등에서 활발하게 활용될 수 있다. 일반적으로 웹 애플리케이션을 개발할 때 사용하는 언어는 HTML, CSS, 자바스크립트(JavaScript) 등이 있는데, 그 중 동적 부분을 자바스크립트가 담당한다. JavaScript의 속도는 점점 빨라지고 있지만 C 언어, C++ 언어, Rust에 비해 느립니다. Rust는 Mozilla Foundation에서 개발한 프로그래밍 언어로 Web Assembly와 친화력이 높은 언어로 알려져 있습니다. 메모리 관련 안전성이 특히 뛰어나다. 웹 애플리케이션은 자바스크립트를 이용해 개발되면서 게임, 영상 편집 등 고성능 애플리케이션이 웹 브라우저에서 동작하는 데 어려움을 겪었다. 그러나 웹어셈블리의 등장으로 웹사이트에서는 불가능했던 클라이언트 애플리케이션을 활용하는 것이 가능해졌고, 웹상에서 다양한 프로그래밍 언어로 작성된 소스코드를 네이티브 속도에 가까운 속도로 실행할 수 있게 됐다. 웹 어셈블리 언어의 구조는 값과 명령입니다. , 트랩, 함수, 테이블, 선형 메모리, 모듈, 임베더로 구성됩니다. WASI(Web Assembly System Interface)는 웹 브라우저가 아닌 환경에서 웹 어셈블리를 실행할 수 있도록 하는 인터페이스를 말합니다. WASI를 지원하면 동일한 소스코드를 다양한 환경에서 실행할 수 있습니다. WASI는 웹 외부에서 웹 어셈블리를 실행하기 위한 시스템 인터페이스입니다. Web Assembly를 사용하면 기본 앱과 동일한 속도를 얻을 수 있습니다.