Last Updated: 2023-12-19

tauri-story-cover

잠시 시간적 여유가 있어서 이번 기회에 그동안 해보고 싶던 TAURI를 접해보기로 했다. 개념적으로만 알고 있던 TAURI를 실제로 사용해 보기 위해 만들 애플리케이션을 구상하였고 디자인하고 결과물을 만들었으며, 이 과정에서 내가 느낀 TAURI를 기록해 보고자 한다.

필자가 만든 앱은 nvm desktop 버전이며, 현재는 window 버전만 지원하도록 하였다. 이 프로그램은 80% 정도 진행된 상태에서 TAURI에 대해 글을 쓰고자 잠시 개발을 멈추고 이 포스팅을 작성하였다.

참고로 이번 포스팅은 TAURI에 대한 기술적 내용을 전달하기보다는 매우 주관적으로 내가 TARUI를 쓰고 느낀 바를 얘기해 보려고 하니 이 점은 참고하기를 바란다.

Electron과의 차이

TAURI의 장점은 Javascript 및 Vue, React와 같은 Framework를 사용하여 윈도우, 맥, 리눅스의 애플리케이션을 만들 수 있다는 것이다. 이 부분은 Electron과 동일하지만 차이점이라면 안정성에 있다. 이 안정성을 가져가기 위해서 TAURI는 Rust를 채택하였다. 이 부분이 Electron과의 다른 점이다. Electron은 Node.js 런타임을 기반으로 동작하기 때문에 안정성 측면에서는 부족한 편이다. ContextBridge 와 같은 API를 사용하여 프로세스 간 분리를 하지만 TAURI는 애초부터 Rust로 구분을 지었다. 알다시피 Rust는 안정성 측면에서는 매우 우수하다. 이외에 TAURI의 장점은 Electron에 비해 빌드 후 설치파일의 적은 용량과 속도로 볼 수 있다.

Rust를 모른다면…

TAURI를 처음 사용해 보는 것이기 때문에 Electron을 처음 접할 때와 마찬가지로 생소하다. 하지만 개발하는 꾸준히 진행하는 과정에서 일단 Rust에서 막혔다. 내가 Rust를 잘 모르기 때문인데, TAURI 자체도 생소하지만, Rust까지 커버하기 위해서는 많은 시간이 필요해 보였다. Front 쪽이야 게 눈 감추듯 개발을 진행하지만, System의 설정과 메뉴, 로그 등 시스템 측면에서 처리되어야 할 비즈니스 루틴들을 Rust로 구현하기가 여간 어려운 게 아니었다. 이 말인즉, TRAUI는 Rust를 모른다면 매우 러닝 커브가 크다는 말이다.

시스템 애플리케이션을 만들겠다는 목적 자체가 시스템 자원을 사용해야 하는데 Rust를 모른다면 차라리 웹으로 만드는 것이 낫다고 생각한다. 물론 Rust를 알고 있다면 시도해 볼 만하다.

출시된 지 얼마 되지 않았지만…

TAURI는 2019년에 출시되고 2022년도에 정식 릴리즈된 따끈따끈한 기술이다. 그렇기 때문에 커뮤니티가 매우 적고 정보 역시 적다. 필자도 개발하면서 산 넘어서 산이었다. 어떤 문제를 접하여 이를 해결하기 위해 github 등 모든 곳을 뒤져도 정보를 찾기 힘들었다. 거의 80% 개발이 다 된 상태에서 이 글을 쓰는 이유도 여기에 있다. 또한 공식 문서의 API가 조금씩 다르다는 것이다. github의 이슈에서 찾은 내용 몇 가지를 보고 해결한 후 문서를 다시 보면 전혀 기록되어 있지 않다. 그리고 제일 큰 문제는 제목대로 출시된 지 얼마 되지 않았고 릴리즈 버전은 1. x인데 벌써 2.x 버전의 알파 버전이 출시되었다. 크루 내부적인 문제도 있겠거니 생각하지만 불과 1~2년 만에 2버전을 출시하는 것은 Core에 수정될 수 없는 큰 결함이 있을 수 있다는 생각도 든다. 안정성을 추구하며 Rust를 사용하지만, 만약 수정이 불가피한 결함이 있다면 참 아이러니한 상황인 듯하다. 개인적으로 2.x 버전을 준비하느라 1.x 버전에 대해 소홀한 게 아닌가 싶기도 하다.

결론

필자는 업무적으로도 Electron을 사용하여 배포까지 해보았고 지금에서야 개인적으로 진행하는 프로젝트에 TAURI를 반영하여 적용해 보았다. 이 프로젝트는 80% 정도 완성되었지만, 다시 Electron으로 포팅해야겠다고 생각한다. NSIS, 시스템 제어 등의 기능들을 이 적은 정보로 TAURI로 계속 개발해 나갈 수 없을 것 같다. 물론 TAURI가 나쁘다는 것은 아니다. 필자가 Rust의 지식이 부족해서 그럴 수 있기 때문이다. 하지만 누군가에게 조언하자면 지금 전반적인 상황을 본다면 당분간은 Electron으로 개발하는 것이 좋다고 조언해 줄 것이다.