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

Tauri가 진짜 뭐냐면

~12 min · tauri, architecture, webview, rust

Level 0웹 관광객
0 XP0/56 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete
"제일 가벼운 앱은 애초에 안 들고 가도 되는 앱이야."

브라우저는 이미 거기 있어

요즘 나오는 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에 자기 퀘스트가 따로 있어.

Code

main.rs — 두 줄이 곧 네이티브 앱 하나·rust
// src-tauri/src/main.rs —데스크톱 앱의 네이티브 진입점 전체.
// 응, 진짜로. 알맹이는 lib.rs에 둬서 모바일이 같이 쓸 수 있게 해.
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]

fn main() {
    app_lib::run();
}
Cargo.toml — 이 의존성들이 Tauri 앱으로 만들어줘·toml
# src-tauri/Cargo.toml — 네이티브 쪽은 그냥 Rust 크레이트야.
# `tauri = "2"`가 프레임워크 전체를 끌어오고, features로 부가기능을 켜.
[dependencies]
tauri = { version = "2", features = [] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"

External links

Exercise

Activity Monitor(macOS)나 작업 관리자(Windows)를 열어. 돌고 있는 Electron 앱을 찾아봐 — VS Code, Slack, Discord, Notion 전부 Electron이야. 메모리를 얼마나 먹는지, helper 프로세스를 몇 개나 띄우는지 봐. 그리고 한 문장 써봐: 네가 만들고 싶은 앱이라면 브라우저를 직접 들고 가는 게 그 값을 할까, 아니면 OS 웹뷰를 빌리는 쪽이 남는 장사일까?
Hint
누구한테나 통하는 정답은 없어 — 재보고 고르는 문제야. '정답' 프레임워크를 찾는 게 아니라 판단을 연습하는 거니까. 앱별 RAM이랑 'Helper' 프로세스 개수를 눈여겨봐.

Progress

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

댓글 0

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

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