한국어
Profile
Wysam

2018.03.29

웹 어셈블리의 오해와 진실...

조회 수 3424 추천 수 5

웹 어셈에 대해서 궁금해 하시는 분들이 많은 것같아 정리 해서 올립니다.

잘못된 부분이 있으면 언제든지 태클 환영입니다.


1. 웹 어셈은 새로운 개발 언어 ? 혹은 어셈블리로 짜는 건가?

 

답변 : 아니요.

 

C 나 C++ 처럼 타겟 코드가 어셈으로 나오는 언어로 개발 합니다.
물론 웹 어셈이 타겟 코드 변환 툴을 제공 해야 합니다.


사실 요즘에는 8비트 MCU도 어셈블리를 안씁니다.
어셈블리를 쓰는 곳을 구지 찾아본다면 서브 코어로 사용하는 DSP 정도인데,
DSP도 순수 어셈가 아닌 매크로 어셈(알제브라 등등)으로 C언어 처럼 사용합니다.

참고로 제가 마지막으로 어셈으로 짠 코드가 약 8년 전입니다.
SPI의 클럭와 데이터 라인의 신호를 만드는 것 이였는데,
그 때도 하드웨어 관련된 작업 아니면 쓸때가 거의 없었어요.

 

2. 웹어셈은 모든 SW을 대체 할 수 있나?

 

답변 : 아니요

 

웹 어셈은 open web을 개발 환경으로 가져갑니다.
즉 모든 SW를 대채 할려면 webrower가 컴퓨터의 모든 시스템 콜을 제공 해줘야 하는데
퍽이나 OS가 그걸 웹 브라우져에게 오픈 해줄까요? 
 
그래서 웹어셈의 깃 허브에 가면 web용과 비 web용으로 구분해서 나누고 있습니다.
비 web의 경우 mmap 등의 시스템 함수를 사용할 수 있다고 되있는데,
비 web용 이면 구지 웹어셈을 사용할 이유가? 아직까지 잘 모르겠습니다.

 

 

3. 웹 어셈은 혁명적이고 신선한 기술 인가?

 

답변 : 아니요

 

웹 어셈 이전에 이미 동일한 기술인 asm.js가 있었습니다. (모질라 에서 제작)
웹 어셈은 asm.js의 업그레이드 버전이라고 보셔야 겠죠.

또한 크로스 환경, 혹은 크로스 컴파일링 기술은 수십년 전부터 발전해 오던 분야 입니다.

웹 어셈 보고 신선하다고 느끼시는분들은
윈도우에서 코딩하고 리눅스 시스템으로 컴파일 해 arm에 프로그램을 실행 시키는 gcc 크로스 컴파일링 기술 보시면
기절 하실 듯..


4. 웹 어셈이 활성화 되면 기존 웹 기술들은 사장 되는가?

 

답변 : 아니요

 

웹 어셈 자체가 자바 스크립트 등의 웹 프론트 단의 작업 속도를 빠르게 하기 위해 나온 기술 입니다.
웹 어셈 깃 허브에서 그 부분을 아주 정확히 명시 하고 있습니다.
현재 웹 환경의 도우미로 생각하시면 되요.


5. 웹 어셈이 활성화 되면 웹브라우져가 brave? 등으로 변화 되는가? 

 

답변 : 아니요

 

웹 어셈을 누가 만드냐면
마이크로 소프트, 애플, 모질라(파이어폭스), 구글에서 만듭니다.
무슨 말이냐면 메이져 웹 브라우져 애들이 웹 어셈을 만들기 위해 모였단 말입니다.

왜냐하면 웹 어셈의 기능이 강화 되려면 브라우져에서 가장 많은 작업이 들어 가야 하기 때문입니다.
그리고 이를 통해 자신들의 입지를 더 강화시키겠죠.

대표적인 예로 selenium이 있습니다.
파이어폭스에서 selenium ide를 설치하시면 웹 브라우져를 매크로 처럼 사용 하실 수 있습니다.
나머지 메이져 웹 브라우져들은 api만 제공 해주죠.

 
6. 그럼 웹 어셈은 뭐가 좋은 건데?

 

답변 : 웹에서 CPU를 많이 사용 하는 작업에 좋다.

 

CPU사용은 순수 CPU 사용 과 IO 사용으로 나눌 수 있습니다.
그런데 CPU를 과도하게 사용하는 작업은 웹 브라우져로 돌리기에 버거운 경우가 많습니다.(예 : 영상 코덱 디코딩)
따라서, 해당 작업들의 속도를 올리기 위해 사용됩니다.


7. 블럭체인과 웹 어셈의 관계는?

 

답변 : 체인망 실행 코드를 웹 환경에서 실시 하는 것으로 보임.

 

이오스 소스를 아직 분석 하지  않아 100% 확신할 수 없지만,
웹 환경에서 스마트 컨트랙트 등의 코드등을 실행하기 위해 이용 되는 것으로 판단합니다.
이 부분은 나중에 소스를 보고 따로 정리 해드리도록 하겠습니다.

 

모델 프로그래밍을 예로 들면

MVC 에서 View를 웹으로 Controller를  웹 어셈블리 Model을 웹 브라우져

이런식으로 구성이 되겠죠.

 

그럼 모두 수고하십시오.

 

 

 

 

 


 

 

Profile
3
Lv

5개의 댓글

Profile
변견
2018.03.29

깔끔한 정리...ㅋㅋㅋ

 

감사합니다.

Profile
가쥐아
2018.03.29

깔끔한 정리 감사합니다

요약을 잘해주셔서

웹어셈블리에 대한 막연한 환상을 가지고 있었는데 차분하게 생각할수 있어 좋네요

제가 이해한건 기존 웹에서 큰작업을 할때 느렸던 부분을 보완할 속도를 높이기위해 나왔구나 라고 이해하게 되네요.

스피드에 집중하는 eos 답습니다. ^^

여튼 웹어쌤으로 eos를 만들고 있다는건 미래를 위한 한수 라고 생각되서 eos 홀더로 기분이 좋네요

Profile
째시기
2018.04.03

웹어샘블리 궁금증이확~! 풀렸네요!

깔끔한 정리 감사합니다.

Profile
eric
2018.05.02

7.번이 잘못 생각하신 것 같아서, 댓글 남깁니다. EOS 컨트랙은 VM만 web assembly 이지, api 는 EOS 가 따로 만든 api 입니다. web assembly 라고 브라우저에서 도는 것은 아닙니다. VM 포팅만 되면 되구요, 현재 그냥 native application 으로 VM 이 포팅되어 있습니다. (nodeos 에 통합되어 있습니다.) EOS 가 web assembly 를 선택한 것은 스마트 컨트랙용 VM 선정하다가 안정성과 속도가 나와서 선택한 것입니다. 초기 EOS 설계할 때는 Wren 이라는 concurrent script 언어를 사용했다가 속도가 생각만큼 나오지 않아서, web assembly 로 바꾸었습니다. 해당 부분은 steemit 에 dan 이 글을 작년에 올렸었습니다. 참고하세요.

Profile
말술소녀밍키
2018.12.19

이런것도 있었네요.. 이오스 코어는 위에분 말대로 웹어셈으로 돌아가는건 아닌거로 알고 있습니다.

Profile
추천 수 제목 글쓴이 날짜
0 EOS.IO 질문 재식 2018.09.04
0 EOSIO DEEP DIVE 페이스북 그룹 소개 smarteasy 2018.08.21
0 EOSJS 시작하기 ogaeng 2018.08.01
0 테스트넷(정글넷) 에서 account 생성할때 램이 부족하다고 오류가 뜹니다. 1 카이쿵 2018.07.17
0 EOS 1.0.5 테스트 노드 계정 생성 에러 3 kai 2018.06.20
4 메인넷 연결을 위한 EOS seed list, config.ini, genesis.json 정보 공유 드립니다. 1 팔오사이 2018.06.11
0 메인넷의 HTTP API 접근 방법 공유 드립니다. 1 팔오사이 2018.06.11
0 Dapp 개발 입문을 해보고 싶습니다. 2 프라다 2018.06.09
0 Dapp 과 Block 과의 관계에 대한 질문요. 2 어카우 2018.05.23
2 제2회 EOS 개발자 밋업을 개최합니다. 10 profile eric 2018.05.21
0 eos 소스 분석 모임을 만들고 싶습니다 이더킬러 2018.05.18
5 EOS Commander 가 dawn4.0 지원하도록 업데이트되었습니다. 3 profile eric 2018.05.17
1 EOS Dapp을 개발해 보고 싶어요. 2 카이쿵 2018.05.12
7 BigInteger library for EOSIO profile eric 2018.05.02
8 JAVA/안드로이드 환경에서 EOS dApp/지갑 개발 4 profile eric 2018.05.02
8 Docker로 EOS Node 쉽게 실행하기 4 profile LeafCat 2018.04.17
0 cleos wallet create error 2 profile veramonte 2018.04.10
0 EOS Dawn 3를 설치하면서... 4 profile 변견 2018.04.09
7 #1. EOS.IO 스마트컨트랙트 개발을 위한 가상 머신 설치하기 by nsjames 1 profile 서리 2018.04.09
5 EOS Source를 분석하는 모임을 만들고자 합니다. 10 profile 변견 2018.04.08
5 웹 어셈블리의 오해와 진실... 5 Wysam 2018.03.29
1 Dapp 개발 난이도..? 1 팔오사이 2018.03.28
3 EOS기반 Dapp 개발을 위한 문서 및 EOS 개발자 텔레그램 방 Link 2 팔오사이 2018.03.28
0 EOS에서 Smart Contract를 개발 할때...??? 3 profile 변견 2018.03.28
9 EOS와 Ethereum의 차이점 7 profile 변견 2018.03.28
0 좋네요 오스신 2018.03.26
0 정말 필요했던 부분이네요...^^ profile 변견 2018.03.26
1 오 개발 소모임이군요 profile 스트라티스 2018.03.26
서버에 요청 중입니다. 잠시만 기다려 주십시오...