티스토리 뷰
WebAssembly와의 만남
개인적으로 웹어셈블리를 알게 된 건 이미 2~3년 정도 지났다.
당시에도 매우 흥미있게 지켜봤고, 나만 그런걸수도 있지만 개발자라면 어셈블리라는 단어에 혹하기 마련이다.
다룰 줄 안다면 왠지 남들보다 괜찮은 개발자라고 착각하기 쉽기 때문이다.
다만 당시에 다룰 수 있는 시스템 프로그래밍언어(C++, Rust, Go..) 등이 전혀 없었고(C는 잠깐 배운정도)
실력에 비해 만들고자 하는 것들에 대한 욕심이 과했다.
꿈은 높은데 현실은 시궁창이야
능력은 안되는데, 관심은 많아서 Wasm으로 만들어진 플래시 부활 프로젝트인 Waflash나 Rufle(맞나?)를 관심있게 지켜보기도 했고
ffmpeg을 wasm으로 빌드하여 클라이언트에서도 돌릴 수 있게 한(실전성은 여전히 부족하다) 프로젝트라던가..
늘상 관심있게 지켜보고만 있었더랬다.
어? 시간이 남네?
프리랜서로 일하면서 업무환경이 괜찮은곳에 들어가게 됐다.
시간이 남으니까 뭐라도 하고 싶어졌고,
최근 Rust가 핫하다고 하니, Rust로 개발을 해보자.
웹개발자가 Rust를 쓸 일은 웹어셈블리밖에 없겠구나.
해서 인터넷에서 무작정 Rust 듀토리얼을 보고 따라하고,
아직까지도 초보인 수준이고, 여전히 러스트의 라이프싸이클이나 생성자, 참조 등에 대해 헷갈리지만,
그래도 몇시간 삽질하다보면 효율적이진 않더라도 동작되는 코드를 만들 수 있는 수준이 되었다.
머리가 나빠 부딪히지 않으면 배우지 못하는 사람이다보니, 바로 무언가를 만들어보자! 라는 생각에 도달했다.
Wasm가 속도가 장점이라고 하니 속도 이슈가 있는것들을 wasm으로 빌드해보자!
어? 속도가 느리네?
웹어셈블리는 자바스크립트보다 느린 경우가 대부분이다.
어셈블리 내에서의 연산은 빠르지만, 실질적으로 동작되려면 javascript 데이터간의 상호작용이 이루어져야하는데,
웹어셈블리에서 받을 수 있는 데이터형은 매우 한정되어있다(정수형, 문자형, bytearray..)
Rust내에서, 자바스크립트 데이터를 호출하고 받는 과정은 결국 브라우저의 자바스크립트를 불러오게 되는데
받을때도 내보낼때도 변환을 해줘야한다.
간단한 숫자 계산이나, 알고리즘은 바이트코드로 컴파일되어 좀 더 컴파일 과정이 적은 웹어셈블리코드가 좋지만,
자바스크립트에서만 다룰 수 있는 데이터형인 오브젝트나, 또는 Element 등을 컨트롤 하는것은 그냥 자바스크립트로 하는 것이 더 빠르다는 이야기이다.
현재 웹어셈블리가 자바스크립트보다 빠른 퍼포먼스를 내는 부분은 결국 클라이언트 부분에서도 눈에 보이지 않는 백엔드 부분이란것이다.
메모리에도 4GB(전에는 2GB)라는 한계가 있다.
현재 웹어셈블리가 실무에서 사용될만한 부분은 클라이언트에서 복잡한 이미지데이터를 다루거나 하는등 바이너리 코드를 다룰 때 일뿐이다.
결론을 말하자면
추후 정리해서 해당 카테코리에 글을 쓰긴 하겠지만,
아직 WebAssembly은 실용성보다는 가능성, 즉 미래가치가 기대되는 상태이다.
그래도 네이티브 코드를 유사하게 돌릴 수 있는건 액티브X, 플래시, 실버라이트 등이 다 나가리 된 상태에서는 웹어셈블리가 유일하다고 볼 수 있어 개인적으로 유망한 분야라고 생각을 하고 있다.
그리고 그냥 괜히 러스트가 맘에 들어서 뭔가 해보고 싶다는 동기가 컸다.
그래서 Rust로 만들어진 SPA인 Yew를 사용해 개인 포트폴리오겸 블로그를 개발하기 시작했다.
자잘자잘 한 부분은 수정해야하지만, 대부분의 시스템은 완성되어 이번주내에는 배포할 수 있을 것 같다.
개인 포트폴리오 겸 만드는 것이므로 완성되면 깃헙에 공개할 예정이고, 관련된 고찰이나 내용은 블로그에 꾸준히 쓰지 않을까 싶다.
'프로그래밍 > WebAssembly' 카테고리의 다른 글
WebAssembly의 한계점 (1) | 2022.10.08 |
---|
- Total
- Today
- Yesterday
- 팀별 분석
- #노력만 가상한 글
- #useState 특징
- iframe
- Rust
- contributer
- #팀별 분석
- HWP
- 배포
- 노력만 가상한 글
- 그래프
- API
- 웹어셈블리
- #useState
- vtie
- webassembly
- WASM
- contributor
- #그래프
- KBL
- #업데이트가 이상하게 될떄
- 무관의 왕
- 티스토리API
- JavaScript
- craco
- 마크다운
- 7위를 하는 이유
- ffmpeg
- youtube
- vscode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |