왜 Tauri인가
Electron 앱의 평균 설치 파일 크기는 70~150MB입니다. Tauri 2로 같은 앱을 만들면 2~10MB로 줄어듭니다.
Tauri 2는 Rust 백엔드 + 웹 프론트엔드(React, Vue, Svelte 등) 조합으로, 네이티브에 가까운 성능을 제공합니다.
Tauri 2의 핵심 특징
- 멀티 플랫폼 — Windows, macOS, Linux + iOS, Android (모바일 프리뷰)
- 플러그인 시스템 — 시스템 트레이, 알림, 파일시스템, HTTP 등 공식 플러그인
- IPC 2.0 — Rust ↔ JavaScript 간 타입 안전한 통신
- 보안 모델 — CSP 기반 권한 관리, 각 API별 명시적 허용
- 자동 업데이트 — 내장 업데이터로 배포 자동화
프로젝트 구조
my-app/
├── src/ # React 프론트엔드
├── src-tauri/
│ ├── src/
│ │ └── main.rs # Rust 백엔드
│ ├── Cargo.toml
│ └── tauri.conf.json
├── package.json
└── vite.config.ts
Rust에서 SSH 구현 예시
use ssh2::Session;
use std::net::TcpStream;
#[tauri::command]
async fn connect_ssh(host: String, user: String, pass: String) -> Result<String, String> {
let tcp = TcpStream::connect(&host).map_err(|e| e.to_string())?;
let mut sess = Session::new().map_err(|e| e.to_string())?;
sess.set_tcp_stream(tcp);
sess.handshake().map_err(|e| e.to_string())?;
sess.userauth_password(&user, &pass).map_err(|e| e.to_string())?;
Ok("connected".into())
}
빌드 최적화
Cargo.toml에서 릴리즈 프로필을 최적화하면 바이너리 크기를 극적으로 줄일 수 있습니다:
[profile.release]
lto = true
strip = true
codegen-units = 1
opt-level = "s"
결론
가벼운 유틸리티부터 SSH 기반 서버 관리 도구까지, Tauri 2는 Electron의 현실적인 대안입니다. Rust를 모른다고 걱정할 필요 없습니다 — 핵심 로직만 Rust로 작성하고, UI는 익숙한 React로 구성하면 됩니다.
댓글 0