"제일 가벼운 앱은 애초에 안 들고 가도 되는 앱이야."
브라우저는 이미 거기 있어
요즘 나오는 OS엔 웹 렌더링 엔진이 처음부터 들어 있어. macOS랑 iOS는 WebKit(WKWebView), Windows 10/11은 WebView2(Microsoft가 관리하는 Chromium 기반), 리눅스 데스크톱은 대부분 WebKitGTK. 그러니까 사용자 기계는 이미 HTML을 그리고, JavaScript를 돌리고, CSS를 칠할 줄 알아. 네가 뭘 얹어주기 전부터.
Electron은 여기에 이렇게 걸었어 — 남의 엔진은 못 믿겠으니 내 걸 통째로 들고 간다. 그래서 Electron 앱은 하나같이 Chromium 한 벌(~150MB)이랑 Node.js 런타임을 등에 지고 다녀. Electron 앱 다섯 개를 켜두면 메모리엔 Chromium이 다섯 개 올라가 있는 거야. Tauri는 반대편에 걸었지 — 기계에 이미 깔린 엔진을 빌려 쓴다. 들고 가는 건 HTML/CSS/JS랑, 창 하나 띄워서 시스템 웹뷰를 네 UI 쪽으로 돌려놓을 줄 아는 작은 네이티브 바이너리뿐이야.
반쪽 둘이 모여 앱 하나
Tauri 앱 안에는 둘이 같이 살아:
- 코어 — Rust로 컴파일한 네이티브 프로세스. 창도, 파일시스템도, 네트워크도, OS도 전부 얘가 쥐고 있어. 권한이 필요하거나, 빨라야 하거나, 플랫폼을 타는 일은 다 여기서 벌어져.
- 웹뷰 — OS가 원래 갖고 있던 렌더링 엔진이 네 프론트엔드를 그려. React든 Svelte든 Vue든 생 HTML이든, Tauri는 정말로 신경 안 써.
이 둘은 메모리를 한 조각도 안 나눠 가져. 대신 IPC 다리로 말을 주고받아. 웹뷰가 코어한테 네이티브 일을 부탁하고("이 파일 좀 읽어줘", "이 이미지 저장해줘") 코어가 답을 돌려주는 식이야. 그 말 주고받는 자리가 이 퀘스트 전체의 중심축이야.
"Rust"한테 쫄 필요 없는 이유
Tauri 앱 하나 내겠다고 Rust 고수가 될 필요는 없어. 웬만한 앱에서 네가 짤 Rust는 프론트엔드에 열어줄 함수 몇 개가 전부야. bridge 트랙이 딱 그만큼의 Rust 생존키트를 쥐여줄 거고, 생존을 넘어 더 깊이 가고 싶어지면 Rust는 /cwk-quests/rust-quest에 자기 퀘스트가 따로 있어.