본문 바로가기
C.W.K.
Stream
Lesson 04 of 04 · published

Electron 말고 Tauri

~10 min · tauri, electron, lightness, webview

Level 0식은 초고
0 XP0/33 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"Electron 은 앱마다 브라우저 통째를 실어. Tauri 는 OS 가 이미 가진 걸 빌려. 가벼움이 핵심이야."

아빠가 도망치는 bloat

Rekindle 이 존재하는 이유는 범용 에디터가 무겁기 때문이야. 그러니 그 껍데기가 선반에서 제일 무거운 선택일 수는 없지. Electron 은 앱마다 Chromium 을 통째로 싣고 다녀. 네 코드를 한 줄도 쓰기 전에 150MB 가 기본으로 깔리는 거야. 그리고 그 무게가 네 머신에 깔린 Electron 앱 수만큼 곱해져. 앱마다 브라우저 사본을 하나씩 돌리고 있으니까. '지금 쓰는 것보다 가볍다' 가 핵심인 도구가 앱마다 브라우저를 싣는다면 그건 자멸이야.

webview 를 빌려, 싣지 마

Tauri 는 Rekindle 이 다른 데서 계속 쓰는 그 수를 그대로 둬. 번들하지 말고 빌린다는 것. Chromium 을 싣는 대신 운영체제가 이미 제공하는 webview 를 쓰고, macOS 면 WKWebView 지, 네이티브 작업은 Rust 코어에 맡겨. 그래서 바이너리가 한 자릿수 MB 로 유지돼.

              Electron                 Tauri
webview       Chromium 번들            OS webview 빌림 (WKWebView)
기준 크기     앱당 ~150MB+             한 자릿수 MB
백엔드        Node.js                  Rust
철학          전부 실음                OS 가 이미 가진 걸 빌림

편집 코어로 CodeMirror 를 빌린 것과 똑같은 본능이야. 플랫폼이 이미 갖고 있는 무거운 상품은 다시 짓지도, 다시 싣지도 말라는 것. Cinder 도 같은 이유로 이 결정을 내렸고, Rekindle 은 그 스택을 거의 그대로 물려받았어. 형제끼리 스택을 맞추는 데는 추가 비용이 안 드니까.

'편의를 위한' Electron fallback 은 없어

솔깃한 배신은 늘 각주 형태로 와. '편의를 위해서, 호환성도 넓힐 겸 Electron 빌드도 하나 만들자' 같은 말. 하지 마. 가벼움은 보험 삼아 양다리 걸칠 부가 요소가 아니라 이 프로젝트의 thesis 야. Electron fallback 은 이 프로젝트가 도망치려던 그 bloat 를 조용히 다시 들여오고, 일단 생기면 저항이 제일 적은 길이 돼버려. 어떤 원칙은 편리한 예외를 거부해야만 살아남는데, 이게 딱 그런 원칙이야.

Code

Electron 은 브라우저를 싣고, Tauri 는 빌려·text
              Electron                 Tauri
webview       Chromium 번들            OS webview 빌림 (WKWebView)
기준 크기     앱당 ~150MB+             한 자릿수 MB
백엔드        Node.js                  Rust
철학          전부 실음                OS 가 이미 가진 걸 빌림

# CodeMirror 를 빌린 것과 같은 본능이야. 플랫폼이 이미 가진
# 무거운 상품은 다시 싣지 마.

External links

Exercise

네 머신에 깔린 Electron 앱들 크기를 한번 확인해봐. Slack, VS Code, Discord 같은 것들. 하나같이 자기 Chromium 을 짊어지고 있어. 다 더해봐. 이제 그것들이 각자 OS webview 를 빌렸다면 어땠을지 상상해봐. 그 차이가 Rekindle 이 내기를 거부한 세금이고, '그냥 Electron 빌드도 만들자' 가 취향 문제가 아니라 thesis 차원의 거절인 이유야.
Hint
macOS 라면 응용 프로그램 폴더에서 .app 번들 크기를 보면 돼. 대부분이 Chromium 인 100MB 넘는 기본 무게가 앱마다 반복되는데, Tauri 의 webview 빌리기 모델이 없애는 게 바로 그 중복이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.