
인터뷰 번역) Tauri vs 다른 Rust GUI 프레임워크: Arboretum 개발자의 이야기
지난 1년간 한 개발자는 Rust를 활용해 로컬 우선 방식의 PKMS(Personal Knowledge Management System) 앱인 Arboretum을 개발하며 다양한 Rust GUI 프레임워크를 탐색했습니다.
그는 데스크톱 애플리케이션 개발이라는 복잡한 영역에서 어떤 도구가 자신의 요구를 가장 잘 충족할 수 있는지 고민하고, 실험하며, 결국 Tauri를 선택했습니다.
Q1. 먼저, Arboretum에 대해 간단히 소개해 주실 수 있나요?
개발자:
Arboretum은 사용자가 지식을 체계적으로 정리하고 관리할 수 있도록 돕는 PKMS 앱입니다.
이 앱은 로컬 우선(Local-First) 접근 방식을 채택하여 사용자의 데이터를 안전하게 보호하면서도 강력한 검색 기능과 리치 텍스트 편집기를 제공합니다.
저는 특히 사용자가 데이터를 완전히 제어할 수 있도록 설계했고, Rust로 작성된 백엔드를 통해 성능과 안정성을 극대화하려 노력했습니다.
Q2. Rust GUI 프레임워크를 선택하는 과정이 궁금합니다. 처음에는 어떤 옵션들을 고려했나요?
개발자:
처음에는 네이티브 Rust GUI 프레임워크들부터 살펴봤습니다.
Iced, Slint, egui 같은 도구들이 있었죠. 이들은 Rust의 강점을 잘 활용하며 외부 의존성이 적다는 장점이 있었습니다.
하지만 제가 원하는 세련된 UI 디자인을 쉽게 구현할 수 있을지 확신이 서지 않았어요.
예를 들어, Iced는 작고 효율적인 바이너리를 생성하지만, 복잡한 레이아웃이나 고급 위젯을 구현하기에는 한계가 있더라고요.
그 후에는 Flutter와 Rust를 결합하는 방법도 시도해봤습니다.
flutter_rust_bridge라는 도구를 통해 Rust와 Dart 코드를 연결할 수 있었는데, 초기에는 매력적으로 보였습니다.
Flutter는 아름다운 UI와 빠른 개발 속도를 제공했지만, 리치 텍스트 편집기와 같은 특정 기능에서 한계를 느꼈어요.
오픈 소스 리치 텍스트 편집기는 성능이 좋지 않았거나 플랫폼 통합(표준 단축키, IME 지원 등)이 미흡했죠.
또한 Flutter의 데스크톱 지원이 아직 초기 단계라는 점도 우려되었습니다.
Q3. 웹 기반 Rust 프레임워크들도 시도하셨다고 들었는데요. 어떤 옵션들을 살펴보셨나요?
개발자:
네, 맞습니다. Dioxus, Tauri와 Leptos, 그리고 Tauri와 Yew 같은 웹 기반 Rust 프레임워크들도 시도해봤습니다.
Dioxus는 Rust 코드로 프런트엔드와 백엔드를 모두 작성할 수 있다는 점이 매력적이었지만, 당시에는 생태계가 아직 성숙하지 않아서 아쉬웠습니다.
Leptos와 Yew도 흥미로웠지만, React와 같은 기존 웹 프레임워크에 비해 익숙함과 자원의 부족을 느꼈어요.
결국 Tauri와 React를 결합하는 것이 가장 현실적인 선택으로 보였습니다.
Tauri는 Rust로 작성된 백엔드를 유지하면서도, 웹 기술의 풍부한 생태계를 활용할 수 있게 해줬거든요.
특히 리치 텍스트 편집기와 같은 JavaScript 기반 도구들을 쉽게 통합할 수 있다는 점이 큰 장점이었습니다.
Q4. 그렇다면 Tauri의 어떤 점이 가장 마음에 들었나요?
개발자:
Tauri의 가장 큰 장점은 Rust와 웹 기술의 시너지를 극대화할 수 있다는 점입니다.
Rust로 핵심 로직을 처리하면서도, UI는 웹 기술로 구축할 수 있죠.
이를 통해 성능과 개발 생산성을 동시에 잡을 수 있었습니다.
예를 들어, Arboretum에서는 Tantivy라는 Rust 기반 검색 엔진을 쉽게 통합할 수 있었고, React와 npm 생태계를 통해 UI 컴포넌트와 리치 텍스트 편집기를 빠르게 구축할 수 있었습니다.
또한 크로스 플랫폼 지원도 중요한 요소였습니다.
Tauri는 Windows, macOS, Linux 등 다양한 플랫폼으로 애플리케이션을 배포하는 데 매우 유리했어요.
Electron과 달리 작은 바이너리 크기와 낮은 메모리 사용량도 큰 장점이었습니다.
Q5. 반면에 Tauri의 단점이나 어려움은 없었나요?
개발자:
물론 있었습니다.
tauri는 운영체제의 기본 웹 뷰를 사용하기 때문에, 플랫폼마다 웹 뷰의 차이로 인해 호환성 문제가 발생할 수 있습니다.
예를 들어, Safari와 WebView2 간의 URL 파싱 불일치는 개발 과정에서 많은 시간을 할애했습니다.
또한 Linux 환경에서는 WebKitGTK의 성능 문제로 인해 Arboretum이 아직 출시되지 못하고 있어요.
번들 크기도 고민거리였습니다. 현재 Arboretum의 macOS 빌드 크기는 381MB로, 일반적인 Electron 앱과 거의 같은 수준입니다.
이는 드라이브 공간에 민감한 사용자들에게는 단점이 될 수 있습니다.
Q6. 그럼에도 불구하고 Tauri를 선택한 이유는 무엇인가요?
개발자:
웹 생태계의 거대한 규모와 다양성 때문입니다.
UI 개발에 필요한 거의 모든 도구와 라이브러리는 이미 웹 생태계에 존재합니다.
npm 패키지 관리자를 통해 리치 텍스트 편집기, 접근성 라이브러리, UI 컴포넌트 등을 쉽게 찾고 사용할 수 있죠. 이를 통해 애플리케이션의 핵심 기능에 집중할 수 있었습니다.
또한 미래 가능성도 중요한 요소였습니다.
Chromium Embedded Framework(CEF)와 Servo 같은 새로운 기술들이 Tauri와 통합될 가능성이 모색되고 있어요.
이러한 발전은 Tauri의 한계를 점차 해결할 것으로 기대됩니다.
Q7. 마지막으로, Rust GUI 프레임워크를 고민 중인 개발자들에게 조언을 해주신다면?
개발자:
Rust GUI 프레임워크를 선택할 때는 자신의 프로젝트 요구 사항과 개발팀의 기술 스택을 고려해야 합니다.
네이티브 Rust GUI 프레임워크들은 외부 의존성이 적고 Rust의 강점을 잘 활용하지만, 복잡한 UI를 구현하기에는 한계가 있을 수 있습니다.
반면에 Tauri와 같은 웹 기반 프레임워크는 웹 생태계의 풍부한 자원을 활용할 수 있지만, 플랫폼 간 호환성 문제와 같은 도전 과제가 있습니다.
저는 다양한 옵션을 직접 사용해보고, 자신에게 맞는지 판단해 보는 것을 추천합니다.
만약 의심이 들거나 프레임워크가 명확한 해결책을 제공하지 않는 문제에 직면한다면, Tauri를 사용해보세요.
물론 모든 상황에 완벽한 선택은 아니지만, Rust의 강점과 웹 생태계의 시너지를 극대화할 수 있는 도구라는 점은 분명합니다.
'Rust' 카테고리의 다른 글
Rust 'unsafe' 제대로 파헤치기: 개발자가 알아야 할 모든 것 (0) | 2025.02.09 |
---|---|
녹슬지 않는 튼튼함, Rust의 강력한 타입 시스템: TypeScript 경험을 넘어선 새로운 세계 (0) | 2025.02.09 |
Rust 초보자의 경험: OOP 한계와 컴파일 시간 문제점 완벽 분석 (0) | 2025.02.09 |
리눅스 커널과 Rust의 갈등: Hector Martin 사퇴 이후의 미래와 과제 (0) | 2025.02.09 |
Rust로 간단한 CLI 유효성 검사 도구 만들기 (0) | 2024.11.24 |