728x90
반응형
q 네이티브 성능을 웹으로 WebAssembly
n WebAssembly의 개념
- 웹 페이지 내에서 코드를 직접 수행하는 바이너리 포맷을 정의하는 웹 표준
- 현재 브라우저에서 C, C++, Rust 등과 같은 저수준의 소스 언어를 효과적으로 실행할 수 있는 새로운 형식의 코드 표준
- W3C 커뮤니티 그룹에 구글, MS, 애플, 모질라가 참여하여 웹 성능을 향상시키기 위해 2015년부터 개발하고 표준 포맷으로 2017년 3월 도입되어 현재 지원(Wasm:와즘)
n WebAssembly 등장배경
| 등장배경 | 설명 |
| 플러그인 지원 중단 | 점차적으로 보안적인 이슈와 복잡한 코드 등에 이슈로 NPAPI 등 플러그인 지원 중단 |
| 자바스크립트의 한계 | 3D, 가상/증강현실, 영상처리, 이미지/미디어 편집, 그 외 네이티브 성능을 필요로 하는 여러 분야에서 성능 상의 문제 제기 |
n WebAssembly 목표
| 목표 | 설명 |
| 빠르고, 효과적이고 이식성이 좋을 것 | 일반적인 HW들이 제공하는 기능을 활용하여 여러 종류의 플랫폼 위에서 거의 네이티브에 가까운 속도로 실행 |
| 읽기 쉽고 디버깅 가능 |
저수준의 어셈블리 언어이지만, 쉽게 구현하고 디버깅할 수 있도록 텍스트 포맷 지원 |
| 안전함을 유지할 것 | 샌드박싱된 실행환경에서 안전하게 돌아갈 수 있도록 설계 |
| 기존 웹기술과 공존 | 다른 웹 기술과 마찰없이 사용되면서 하위호환성을 지원 |
q WebAssembly 구동환경 및 핵심 구성
n WebAssembly 구동환경

| 개발자는 자신이 원하는 언어로 소스코드를 작성 이를 웹어셈블리 바이트코드로 컴파일. Emscripten이 컴파일 결과를 받아다가 .wasm 바이너리로 변환 이 바이트코드는 클라이언트(웹브라우저)에서 기기 고유의 코드로 해석된 후 실행 |
n WebAssembly 도구
| 도구 | 설명 |
| Emscripten | 네이티브 코드로 작성된 기존의 코드를 손쉽게 WebAssembly 코드로 전환하는 LLVM-to-JavaScript 컴파일러 |
| WebAssembly Explorer | C/C++ 컴파일러를 통해 어떻게 WebAssembly 코드가 생성되고 브라우저에서 실행되는지를 온라인에서 확인해 볼 수 있는 도구 |
| WasmFiddleWebAssembly Fiddle | JavaScript 코드 조각(snippet)을 온라인에서 직접 작성하고 테스트할 수 있는 서비스인 JSFiddle, JS Bin, CodePen 등과 유사하게 WebAssembly의 코드 조각을 실행해 볼 수 있는 도구 |
| WebAssembly Code Explorer | 바이너리 수준에서 코드가 어떻게 인코딩되는지 살펴볼 수 있는 도구 |
n WebAssembly 핵심구성
| 구성 | 설명 |
| 모듈 | 실행 가능한 컴퓨터 코드로 브라우저에서 컴파일된 WebAssembly 바이너리 |
| 메모리 | 웹어셈블리의 저수준 메모리 접근 명령어에 의해 읽고 쓰여지는 바이트들의 선형 배열이며 사이즈 조절이 가능한 ArrayBuffer |
| 테이블 | (안전성이나 이식성 등을 위해서) Raw 바이트로 메모리에 저장될 수 없는(예를 들면 함수를 가리키는) 레퍼런스로 사이즈 조절 가능한 형식이 지정된 배열 |
| 인스턴스 | 모듈과 모듈이 사용하는 모든 상태의 쌍. 모듈의 상태로는 메모리, 테이블, 임포트된 값의 집합 등이 있음 |
q WebAssembly 적용 방식
| 방식 | 설명 |
| 다이렉트 컴파일링 | 소스 언어를 그 언어의 자체 컴파일러 툴 체인을 통해 웹어셈블리로 변환하는 방식 |
| 서드 파티 툴 | 툴 체인이 WASM을 지원하지 않지만, 서드 파티 유틸리티를 사용해 WASM으로 변환하는 방식 |
| 웹어셈블리 기반 전환 |
웹어셈블리에 내장된 ‘인터프리터(interpreter)’가 해당 언어로 쓰여진 코드를 구동하는 방식 |
※ 대용량 연산 작업이 필요한 경우의 해법이 되며 ActiveX, Portable Native Client(PNaCl)의 대체 가능
728x90
'정보관리기술사 > 한 줄 키워드 + 그림 하나' 카테고리의 다른 글
| 정보보호 공시제도 (0) | 2022.06.09 |
|---|---|
| 블록체인의 유형, 합의 기술 (0) | 2022.06.09 |
| EVM, TCPI (0) | 2022.06.09 |
| 요구사항 명세(SRS) (0) | 2022.06.09 |