Electron에 대해 사람들이 잘못 알고 있는 것들
(felixrieseberg.com)- 작성자 Felix Rieseberg는 Electron개발에 10년 넘게 참여한 co-maintainer
- Electron은 웹 기술로 UI를 구현하고, 필요하다면 네이티브 코드를 자유롭게 섞어 쓸 수 있도록 해줌
- 많은 앱(Visual Studio Code, Slack, Discord, Figma, ChatGPT, Claude, Notion, 1Password, Docker Desktop 등)이 Electron을 채택하고 있음
- 이 문서는 Electron의 주요 오해들을 짚어 보고, 왜 이런 선택을 했는지 설명함
Electron이 JavaScript와 네이티브 코드를 대립시킨다
- 흔히 "Electron은 자바스크립트만 사용하므로 네이티브보다 뒤처진다"라는 이야기가 있음
- 실제로 Electron은 JavaScript에 더해 C++, Objective-C, Rust 등 네이티브 코드를 함께 쓸 수 있음
- 예를 들어 1Password는 Rust로 대부분의 코드를 작성하고, UI는 Electron을 활용함
- Electron의 강점은 필요한 만큼 네이티브 코드를 섞고, UI 영역에서 웹 기술을 활용할 수 있는 융통성임
- SwiftUI, GTK, Win32 등을 활용해 부분적으로 네이티브 UI를 제공하는 데모 예시도 존재함
Web 앱은 나쁘다
- "모든 네이티브 앱이 항상 더 우수하다"는 견해가 있으나, 시장 상황은 그렇게 단순하지 않음
- NASA의 Mission Control, Bloomberg Terminal, McDonald’s 키오스크, SpaceX의 Dragon 2 등도 Chromium 기반 웹 기술을 활용함
- 웹 기술은 전 세계적으로 가장 폭넓게 사용되고 있으며, 잘 구현된 웹 앱은 훌륭한 사용자 경험을 제공함
- "웹 앱은 실력이 부족한 사람이 만드는 것"이라는 주장은 사용 환경의 요구 사항과 개발자의 선택 상황을 고려하지 않은 단순화임
운영체제 WebView가 더 성능이 뛰어나다
- macOS나 Windows, Linux에 내장된 WebView가 종종 더 낫다고 주장하는 이들이 있음
- 실제로 Slack은 초기 MacGap(WebView 기반)을 사용했으나, 성능 문제로 결국 Electron(Chromium)을 채택했음
- 최신 Chromium 엔진이 자원이 많이 드는 대신 가장 활발히 최적화가 이루어지는 부분이기도 함
- 운영체제에 내장된 WebView가 공유 자원을 통해 작은 메모리 사용량을 보일 수도 있지만, 보안과 안정성 문제로 실제로 격리된 경우가 많음
- Electron을 통해 최신 엔진 버전을 직접 관리할 수 있고, 그로 인해 안정성과 보안을 독립적으로 유지할 수 있음
번들 크기가 중요하다
- 일반적으로 Electron 앱은 100~300MB 규모로, 이 점을 비판하는 시각이 있음
- 하지만 사용자들은 앱 용량보다는 기능, 편의성, 안정성 등 다른 요소를 더 우선시하는 경향이 강함
- 예를 들어 4K 화질 Netflix 스트리밍은 한 시간에 수 GB를 사용하고, Call of Duty 업데이트는 수백 GB에 달하기도 함
- 결국 실제 사용자 만족도에 비해 앱의 크기는 상대적으로 덜 중요한 요소가 되는 경우가 많음
Electron을 이겨라
- Electron은 "좋은 데스크톱 앱을 만들어 보자"라는 목표를 지닌 사람들의 오픈소스 노력으로 시작된 것임
- Electron은 경쟁자가 적은 상황에서 시작해, 지금도 충분한 기능과 안정성을 제공해 왔음
- Electron을 ‘이기려면’ Electron이 하는 일을 보다 잘할 수 있는 플랫폼을 만들어야 함
- Electron 유지보수자들은 더 나은 대안이 나온다면 기꺼이 그것을 환영할 것임
tauri를 대안으로 생각하긴하는데, 배포시에 정상작동안하는 특이한 경우가 있을까봐 걱정입니다. (예전에 win32환경에서 msxml.dll등 기본 등록된 dll을 참조하는 프로그램 배포했다가 정말 고생했던 기억때문에, 내재화해서 배포했는데... 유사한 문제가 생기지 않을지)
electron쪽 의견대로, 그냥 사이즈를 잊어버리는게 맞지만, 번들사이즈가 너무커서요.
tauri는 그게 문제인 것 같습니다..
플랫폼별 웹뷰하고 내장된 프로그램이 다 다르다보니 그게 가장 큰 문제이긴합니다. 배포하고 난 다음에 무슨일이 생길지 몰라서요.
그렇다고 tauri에 웹뷰자체를 내장하자니, 일렉트론 보다 번들사이즈가 더 커지고요..
그래서 프로덕션 크로스플랫폼 앱 개발에 있어서 tauri는 아직 성숙하지 않았다고 생각하긴합니다.
SwiftUI, GTK, Win32 등을 활용해 부분적으로 네이티브 UI를 제공하는 데모 예시도 존재함
본문에서 실제 데모 코드 링크가 걸려있어서 확인해봤는데 아주 단순하게 같이 쓸 수 있다 수준으로 쉬운 느낌은 아니네요. 일단 가능하다 정도에 의의를 둬야 할 듯...