한국의 개발자들을 위한 Google for Developers 국문 블로그입니다.
더 많은 브라우저에서 Google Earth를 사용할 수 있게 해주는 WebAssembly를 소개합니다
2019년 7월 22일 월요일
<블로그 원문은
이곳
에서 확인하실 수 있으며 블로그 번역 리뷰는
Jimmy Moon(Web Technology GDE)
님이 참여해 주셨습니다>
게시자: Thomas Nattestad, 웹 어셈블리, V8 및 웹 기능 관련 제품 관리자
14년 전, Google Earth가 처음 나왔을 때 사용자들은 어린 시절 살던 집을 지도에서 바로 확대해 볼 수도 있다는 점에 무척 흥분했습니다. 하지만 그러려면 먼저 애플리케이션을 다운로드해 설치해야 했습니다. 전 세계를 실시간으로 렌더링하려면 브라우저에서 지원하지 않았던 첨단 기술이 필요했으므로, Earth는 네이티브 애플리케이션으로 출시되었습니다.
웹이 발전함에 따라, 우리는 최대한 많은 사람이 Earth를 사용하고 간편하게 전 세계를 경험할 수 있도록 플랫폼에서 Earth를 제공하고 싶었습니다. 웹 앱은
연결 가능
하므로 더 나은 사용자 환경을 제공합니다. 연결 가능하다는 것은 한 번의 클릭으로 전체 사용자 환경에 대한 액세스를 공유할 수 있다는 의미입니다. 웹 앱은 사용자가 소프트웨어를 다운로드할 때 함께 딸려올 수 있는 바이러스의 위험이 없으므로 안전하고, 구성 가능하므로 웹의 다른 부분에 삽입할 수 있습니다.
네이티브 코드를 웹으로 가져오기 위한
W3C
웹 표준인
WebAssembly
(Wasm)에서, Earth 팀은 Google Earth가 여러 브라우저 간에 이동할 수 있도록 하는 솔루션에 한동안 집중한 결과, 마침내 솔루션을 찾아냈습니다. Earth를 웹 환경으로 처음으로 가져온 건 2년 전이었는데, 당시에는 Chrome 전용 솔루션이었던 Native Client(NaCl)를 사용했습니다. 그것이 브라우저에서 네이티브 코드를 실행하고 사용자가 최신 웹 애플리케이션에서 기대하는 성능을 제공하는 유일한 방법이었습니다. 하지만 모든 브라우저가 신기술을 같은 방식으로 지원하는 건 아니라서, 브라우저 간 호환성이란 게 말처럼 쉬운 문제는 아닙니다.
WebAssembly를 사용하면 앱을 여러 브라우저 간에 더욱 액세스 가능하도록 만들 뿐 아니라, 우리가 Google Earth로 지켜본 것처럼 완벽한 온라인 환경을 제공할 수 있는 가능성이 더 많습니다. Earth
프리뷰 베타
를 확인해보면 Earth 팀이 성취한 업적을 확인할 수 있고
여기
에서 기술적 구현에 대한 내용을 읽어볼 수 있습니다.
WebAssembly가 스레드 애플리케이션과 작동하는 방식
WebAssembly에서 작업할 계획이라면 몇 가지 특정한 주제, 특히 스레딩에 관해 이해하는 것이 중요합니다.
다중 스레딩 지원을 제공하는 브라우저도 있지만 그렇지 않은 브라우저도 있습니다. Google Earth는 브라우저에 계속 데이터를 스트리밍하고 압축을 풀어 화면에 렌더링할 준비가 되도록 만듭니다. 백그라운드 스레드에서 이 작업을 할 수 있으면
브라우저에서 Earth의 성능
이 분명히 향상되는 것으로 나타났습니다.
Chrome을 포함해서 곧 새로 나올 Edge 버전, Opera를 비롯한 Chromium 기반 브라우저는 모두 WebAssembly를 위한 지원을 제공하는데, 다중 스레딩을 지원하는 브라우저도 있고 지원하지 않는 브라우저도 있습니다. Chromium을 기반으로 하는 Edge의 새 버전이 나오면 WebAssembly의 앱이 Chrome에서처럼 Edge에서도 작동할 것입니다. Firefox는 WebAssembly를 위해 훌륭한 지원 기능을 제공하지만, SharedArrayBuffer 문제 때문에 다중 스레딩 지원을 중지해야 했습니다. Opera는 Chromium을 기반으로 하지만, Opera의 현재 버전은 WebAssembly의 단일 스레드 지원만 제공합니다. Safari는 WebAssembly의 강력한 구현을 보유하고 있지만 WebGL2를 위한 전체 지원은 제공하지 않습니다.
심층 기술 게시물
에 여러 브라우저 간의 WebAssembly 지원에 대해 더 자세히 설명해두었으므로 참조하시기 바랍니다.
Emscripten: Earth가 브라우저로 포팅하도록 지원한 도구
원래 네이티브 운영체제용으로 만들어진 애플리케이션을 웹으로 가져오는 것은 간단한 작업이 아닙니다. Emscripten 도구 체인은 개발자가 C++를 WebAssembly로 컴파일하는 데 도움이 되고, 네이티브 애플리케이션이 사용하는 OS 인터페이스 중 다수를 에뮬레이트하기도 합니다. 예를 들어 애플리케이션이 POSIX API fopen을 사용하여 OS에 파일을 열라고 지시할 수 있습니다. Emscripten은 이 호출을 보고 로컬 저장소와 같은 브라우저 기술을 통해 올바른 동작을 제공합니다. Emscripten은 OpenGL 호출을 WebGL 호출로 전환하기 위해 똑같은 일을 합니다. 다른 많은 기능과 함께, Emscripten 덕분에 네이티브 앱을 웹으로 가져오는 작업이 극적으로 쉬워집니다.
Emscripten은 세상에 나온 지 35년이나 된 AutoCAD 코드베이스, Sketchup처럼 좀 더 최근에 나온 애플리케이션 등 다른 애플리케이션을 웹으로 포팅하는 데 사용되었습니다.
WebAssembly를 위해 다음에 나올 기능
앞으로 WebAssembly용으로 나와 Earth가 웹 환경 향상을 위해 사용할 기능이 다음과 같이 여러 가지 있습니다.
SIMD 지원:
SIMD(Single Instruction, Multiple Data)는 단일 CPU 명령이 여러 데이터 조각에서 작동하도록 해줍니다. SIMD를 올바른 방법으로 설정하면 높은 데이터 처리량을 달성할 수 있습니다. 올해 말 WebAssembly용으로 최초의 SIMD 지원 기능 세트가 제공되면 Earth의 성능이 대폭 향상될 것으로 기대합니다.
동적 링크:
이 기능 덕분에 Earth의 로드 시간을 최적화할 기회가 주어지고 다른 웹페이지와 온라인 환경에 Earth를 삽입할 길이 열립니다. 현재는 상호작용하는 모듈을 전부 동시에 컴파일해야 합니다. 동적 링크를 사용하면 애플리케이션을 여러 개의 모듈로 나누어 초소형 클라이언트를 탑재한 다음, 시간의 경과에 따라 다른 파트를 모두 로드할 수 있습니다(지연 로드라고 함).
디버깅 향상:
Wasm은 현재 개발자가 개발자 도구에서 소스 코드를 볼 수 있도록 소스 맵을 지원합니다. 개발자가
변수 값을 확인 하거나 특정 스택 트레이스를 볼 수 있습니다.
Earth는 이제 애플리케이션을 더 많은 브라우저로 가져올 수 있게 해주는 교차 브라우저 표준을 채택함으로써 중요한 진전을 이루었으며, 앞으로 더 많은 개선이 이루어질 것입니다. 직접
WebAssembly
와 자신의 네이티브 코드를 사용해 일관되고 뛰어난 성능을 발휘하는 환경으로 모든 사용자에게 접근해 보세요.
Contents
ML/Tensorflow
Android
Flutter
Web/Chrome
Cloud
Google Play
Community
Game
Firebase
검색
Tag
인디게임페스티벌
정책 세미나
창구프로그램
AdMob
AI
Android
Android 12
Android 12L
Android 13
Android 14
Android Assistant
Android Auto
Android Games
Android Jetpack
Android Machine Learning
Android Privacy
Android Studio
Android TV
Android Wear
App Bundle
bootcamp
Business
Chrome
Cloud
Community
compose
Firebase
Flutter
Foldables
Game
gdg
GDSC
google
Google Developer Student Clubs
Google Play
Google Play Games
Interview
Jetpack
Jetpack Compose
kotlin
Large Screens
Library
ma
Material Design
Material You
ML/Tensorflow
mobile games
Now in Android
PC
Play Console
Policy
priva
wa
wear
Wearables
Web
Web/Chrome
Weeklyupdates
WorkManager
Archive
2024
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2023
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2022
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2021
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2020
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2019
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2018
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2017
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2016
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2015
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2014
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2013
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2012
12월
11월
10월
9월
8월
7월
6월
5월
3월
2월
1월
2011
12월
11월
Feed