WeAssembly란?

 

웹어셈블리는 C, C++, C#, Rust, GO Lang, Python 등 프로그래밍 언어를 컴파일해서 어느 브라우저에서나 실행 할 수 있게 변경해주는 기술을 의미합니다.

웹브라우저에서는 원래 html, css, javascript 만 읽을 수 있습니다. 하지만 2017년부터 webassembly도 사용 가능 하게 되었고, 현재는 크롬, 사파리, 엣지, 파이어폭 다양한 브라우저에서 webassembly를 실행 시킬 수 있게 되었습니다.

그럼 WebAssembly를 언어처럼 배워야 되느냐? 아닙니다! 웹어셈블리는 개발 언어라기 보다는 브라우저에서 실행가능한 새로운 파일 형식이라고 생각 하면 될꺼 같습니다. 즉, emsdk를 사용하여 웹 브라우저에서 실행 수 있게 ".wasm" 파일로 컴파일하여 웹브라우저에서 실행 할 수 있습니다.

 

emsdk를 사용하여 wasm파일 생성

 


WebAssembly의 작

 

1.고성능

  • WebAssembly는 네이티브 코드와 비슷한 수준의 성능을 공합니다. 이는 복잡한 계산과 그래픽 처리가 필요한 작업해서

 

2. 크로스 플랫폼

  • WebAssembly는 여러 플랫폼과 브라우저에서 동일하게 작동합니다. 이를 통해 개발자는 다양한 환경에서 일관된 성능과 기능을 보장할 수 있습니다.

 

3. 언어 중립적

  • WebAssembly는 다양한 언어를 지원합니다. C, C++, C#, Rust, Golang, Python 등 다양한 언어로 작성된 코드를 WebAssembly로 컴파일하여 브라우저에서 실행 가능합니다.

 

4. 보안성

  • WebAssembly는 샌드박스 환경에서 실행되므로, 코드가 브라우저 밖으로 벗어나지 못하게하여 높은 보안성을 제공합니다. (샌드박스 환경에 대한 설명은 아래 링크 참고)

https://ko.wikipedia.org/wiki/%EC%83%8C%EB%93%9C%EB%B0%95%EC%8A%A4_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%EA%B0%9C%EB%B0%9C)

 

샌드박스 (소프트웨어 개발) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 샌드박스(sandbox)는 보호가 필요한 어린아이들을 위해 모래통에서만 놀도록 하는데서 유래한 소프트웨어 보안 개발기법이다. 운영 환경이 저장소로부터 테스트

ko.wikipedia.org

 

 

5. 빠른 로드 타임

  • WebAssembly 모듈은 크기가 작고, 바이너리 포맷이기 때문에 빠르게 로드되고 실행될 수 있습니다. 즉, Javascript로 생성한 프로그램 보다 WebAssembly를 통해 더 같은 프로그램이라도 더 빠르게 실행 할 수 있습니다.

 

6. 기존 자바스크립트와의 호환성

  • WebAssembly는 기존 웹환경을 망가트리지 않고 동일 하게 사용 할 수 있습니다. 즉, 기존 웹 개발 환경인 HTML, CSS, Javascript와 함께 사용 될 수 있습니다.

 

WebAssembly는 이러한 잠정을 통해 복잡하고 성능이 중요한 웹 애플리케이션을 가능하게 합니다. 이미지 필터, 동영상 플레이어 등 실제로 웹으로 구현 힘들거나 구현하더라도 성능이 나오기 어려운 부분들을 다른 언어로 작성하여 웹에서 실행 함으로써 웹에서 부족한 부분을 채울 수 있습니다.

 

실제로 K사에서 웹어셈블리를 통해 이미지 필터기능의 성능 향상을 했던 사례가 있고, Auto Cad 또한 WebAssembly를 사용하여 Web에서 제품을 실행 가능하도록 했던 사례가 있습니다.

 

https://tech.kakao.com/posts/438

 

FE개발자의 성장 스토리 08 : WebAssembly 개발기 - tech.kakao.com

안녕하세요, FE플랫폼팀에서 전사 에디터 및 웹 사진 편집기를 개발하고 있는 sk...

tech.kakao.com

 

https://web.autocad.com/login

 

https://web.autocad.com/login

 

web.autocad.com

 

이번 포스팅에서는 간단히 WebAssembly에 대해서 설명 했데요. 다음 포스팅에서는 WebAssembly 컴파일 환경 구성 그리고 어떻게 컴파일 하고 실행하는지에 대해서 설명하도록 하겠습니다.

+ Recent posts