01 — When to Pick Electron
한 줄 답: Electron은 모든 데스크톱 앱의 정답이 아니다. (a) Chromium 통일성이 필요, (b) Node 생태계가 핵심 자산, (c) UI가 복잡(에디터·디자인툴·IDE), (d) 데스크톱 설치가 필수 사용 경험 — 이 넷 중 둘 이상이 강하게 해당하면 Electron이 최선. 하나라도 약하면 Tauri·PWA·네이티브가 더 가볍고 맞다.
Why — 왜 이 문서가 필요한가
Electron 도입 회의에서 가장 자주 빠지는 것이 “Electron이 맞는지”의 검토다. 사내 분위기가 “데스크톱 = Electron” 으로 흘러가면 — 실제로는 PWA로 충분하거나, Tauri가 더 맞거나, 네이티브가 옳은 경우에도 Electron을 고른다. 6개월 뒤 “메모리가 무겁다”·“번들이 크다”·“OS API가 깊지 않다” 같은 불만이 나오는데, 그것은 Electron의 결함이 아니라 선택의 미스매치다.
이 문서는 그 미스매치를 결정 트리로 정리한다. 도입 전에 4개 질문에 답하면 — Electron이 맞는지, 다른 도구가 더 좋은지가 5분 안에 보인다.
How — 결정 트리
질문 1 — 브라우저로 충분한가?
가장 자주 잊는 질문.
사용자가 "이 앱"을 얼마나 자주 쓰는가?
- 매일 1시간 이상 → 데스크톱 앱 필요
- 주 1-2회 → PWA로 충분
- 가끔 → 웹사이트로 충분판단 기준:
- 오프라인 사용이 critical한가? → YES면 데스크톱
- OS API(파일 시스템 접근, 트레이, 알림, 자동 시작)가 필요한가? → YES면 데스크톱
- 백그라운드 실행이 필요한가? → YES면 데스크톱
- URL 즉시 갱신보다 오프라인 안정성이 더 중요한가? → YES면 데스크톱
→ 위 중 하나라도 강하게 YES가 아니면 — PWA가 거의 항상 더 가볍고 빠르다.
질문 2 — Chromium 통일성이 필수인가?
이게 Electron vs Tauri의 진짜 분기점이다.
| 시나리오 | Chromium 통일성 필요? |
|---|---|
| 코드 에디터 (VS Code, Atom) | 극도로 필수 (font rendering, scrollbar) |
| 디자인 툴 (Figma) | 극도로 필수 (WebGL, blend mode) |
| 채팅 앱 (Slack, Discord) | 보통 (textarea, emoji rendering) |
| 음악 플레이어 | 낮음 (단순 UI) |
| 메뉴바 시계·할 일 앱 | 매우 낮음 |
| 사내 어드민 툴 | 낮음 |
| 게임·시각 효과 많은 앱 | 극도로 필수 (Canvas, WebGL) |
→ 극도로 필수면 Electron. 보통/낮음이면 Tauri로도 충분.
OS webview의 차이가 실제로 어떻게 나타나는가:
- macOS WKWebView: Safari 엔진. CSS의 일부 feature가 다르고 (
:has, container queries 도입 늦음), font rendering이 system font에 더 가까움. - Windows WebView2: Edge(Chromium) 엔진. Edge 버전에 따라 다름. Windows 10/11이 자동 업데이트되지만 기업 환경에서 잠금된 경우도 많음.
- Linux WebKitGTK: 가장 오래된 엔진. 일부 CSS feature, WebGL 확장이 없거나 버그. distribution별로 버전이 다름.
→ “우리 사용자의 webview를 우리가 통제하고 싶다”면 → Electron.
질문 3 — OS API가 얼마나 깊은가?
얕음: 파일 열기/저장, 알림, 트레이 아이콘
중간: 자동 시작, 글로벌 단축키, 클립보드 감시
깊음: 파일 시스템 감시, 시스템 통합 메뉴, 권한 prompt
매우 깊음: 커널 드라이버, 권한 상승, 다른 앱과 직접 통신, 시스템 확장| 깊이 | 권장 도구 |
|---|---|
| 얕음 | PWA · Tauri · Electron 모두 가능 |
| 중간 | Tauri · Electron |
| 깊음 | Electron · Wails · 네이티브 |
| 매우 깊음 | 네이티브만 (Swift+AppKit, C#+WinUI 등) |
→ 매우 깊음이라면 — Electron으로도 한계. 네이티브가 옳다.
질문 4 — 팀의 언어 스택이 무엇인가?
이게 생산성과 직결.
| 팀 주력 언어 | 추천 |
|---|---|
| JavaScript/TypeScript + 웹 기술 | Electron (가장 자연스러움) |
| TypeScript + 가벼움 우선 | Tauri (백엔드만 Rust 학습) |
| Go (백엔드 팀) | Wails |
| C#/.NET | .NET MAUI 또는 WinUI |
| Swift/Objective-C | AppKit (macOS 전용일 때) |
| Dart/Flutter (모바일과 공유) | Flutter Desktop |
| C++ | Qt 또는 Neutralino |
→ 팀 언어와 다른 스택을 선택하면 — 생산성 50% 이상 손실. 학습 곡선이 1년 이상.
질문 5 — 모바일도 필요한가?
모바일 동시 출시 필수?
YES, 코드 공유 critical → Capacitor / React Native (데스크톱은 보너스)
YES, 별도 작업 OK → 데스크톱은 Electron, 모바일은 별도
NO, 데스크톱만 → Electron / Tauri / Wails / 네이티브→ Capacitor의 데스크톱은 Electron wrapper다. 데스크톱이 주력이라면 Capacitor는 역방향 선택.
What — 4가지 적합 시나리오
시나리오 A — IDE/에디터 (VS Code, Atom)
왜 Electron인가:
- Chromium 통일성 극도로 필수 (font, scrollbar, syntax highlighting)
- Monaco Editor가 Chromium에 깊이 종속
- Extension API가 Node에 의존 (수천 개 확장)
- 복잡 UI (트리뷰, split pane, 자동완성)
→ Tauri로 옮길 기술적 가능성은 있지만 — 생태계 전체가 Electron에 묶여 있어 비용이 압도적.
시나리오 B — 채팅·협업 (Slack, Discord, Notion)
왜 Electron인가:
- 웹 코드 재사용 (브라우저 버전과 거의 동일)
- 통일된 UX (Mac/Windows/Linux 동일)
- 기능 추가 속도가 비즈니스 critical — Electron은 웹 개발자가 그대로 작업
- Chromium의 WebRTC, push notification
→ Tauri로 가면 Rust 학습 + OS webview 차이 QA — 기능 추가 속도 손실.
시나리오 C — 디자인 툴 (Figma, Sketch)
왜 Electron인가:
- WebGL 의존 극도. Chromium의 WebGL이 가장 안정적.
- Canvas 렌더링 일관성
- font rendering 통일성
→ Figma는 브라우저 버전이 메인이고 데스크톱은 보너스인데, 그 보너스를 Electron으로 만든 이유는 동일 코드.
시나리오 D — 메뉴바 시계, 단순 도구
왜 Electron이 과한가:
- UI가 단순 (시계, 알람, 환율)
- Chromium 통일성 안 중요
- 메모리 100MB를 idle 메뉴바 앱이 쓰는 건 낭비
→ Tauri나 네이티브가 옳다. Electron으로 메뉴바 앱을 만들면 사용자의 RAM을 갉아먹는다.
부적합 시나리오 (Electron이 안 맞는 자리)
(a) 메뉴바 · 트레이 전용 앱
idle 메모리 100~200MB × N 앱 = 사용자 RAM 폭증→ Swift+AppKit (macOS) 또는 .NET (Windows) 또는 Tauri.
(b) 시스템 깊은 통합
- 커널 드라이버, 권한 상승, 시스템 확장
- macOS System Extension, Windows Driver
- 네트워크 가로채기, 다른 앱 자동화
→ Electron이 Chromium sandbox에 갇힌다. 네이티브가 옳다.
(c) 메모리·CPU critical (배터리 절약 앱, 백그라운드 서비스)
- 사용자가 idle 시간에도 켜 두는 앱
- 배터리 powered 환경
- Chromium 자체의 idle 비용이 부담
→ Rust(Tauri 또는 네이티브) 또는 Go(Wails).
(d) 보안·코드 서명이 극도로 critical
- Electron은 Chromium 통째가 공격면
- V8 zero-day가 Chrome과 동시에 영향
- Electron 자체의 CVE도 매년 다수
→ 1Password가 Rust 네이티브로 갔다가 Tauri 검토한 이유. Tauri의 공격면이 더 작다 (Rust 메모리 안전 + OS webview는 OS가 패치).
(e) 모바일이 주력
- 사용자의 80%가 모바일이고 데스크톱이 보조
- 코드 공유가 핵심 가치
→ Capacitor (Ionic) 또는 React Native가 모바일에 최적화. 데스크톱은 그 다음.
What-if — 잘못 선택했을 때
1) PWA로 충분한데 Electron 도입
- 번들 100MB · 메모리 200MB · auto-update 인프라 · 코드 사이닝 · notarization
- 사용자는 그냥 웹사이트면 됐다
- 6개월 운영 비용 = 인프라 엔지니어 1명 대응: 출시 전 PWA로 prototype해서 사용자 반응을 본다.
2) Electron이 맞는데 Tauri로 시작
- Chromium 통일성 부재가 QA 비용 3배
- 사용자별 webview 버그 → 재현 어려움
- 1년 뒤 Electron으로 역이주 (실제 사례 다수, 2022~2023) 대응: Chromium 의존도 셀프 진단 — WebGL, 복잡 CSS, 정밀 font가 필요하면 Electron.
3) Tauri가 맞는데 Electron 도입
- 메모리·번들 부담 → 사용자 불평
- 메뉴바 앱이 100MB → 리뷰에서 욕먹음 대응: 단순 UI는 Tauri 우선 검토. Electron은 “복잡 UI에 한해” 적용.
4) 모바일 시장을 무시
- 데스크톱 Electron 출시 6개월 뒤 모바일 사용자가 더 많아짐
- 데스크톱 코드 100% 재작성 대응: 모바일 가능성이 조금이라도 있으면 — Capacitor/RN으로 시작해 데스크톱 보너스를 받는 게 옵션.
5) “Electron 메모리 무겁다” 신화에 끌려 네이티브로
- 사실 Chrome 탭 3~4개 비용. 데스크톱 RAM 16GB 환경에서는 문제가 아니다.
- 네이티브로 갔다가 생태계 빈약·기능 추가 속도 50% — 더 큰 비용. 대응: 메모리 우려는 실제 measurement로 검증. 추정으로 결정하지 않는다.
”Electron 메모리 무겁다” 신화의 진실
자주 인용되는 숫자
"Slack은 1GB를 먹는다"
"Electron 앱은 100MB부터 시작"
"VS Code가 RAM 폭주"실측
| 앱 | 시작 메모리 | 5분 사용 후 | Chrome 탭 환산 |
|---|---|---|---|
| VS Code (idle, 작은 프로젝트) | ~150MB | ~250MB | 탭 2-3개 |
| Slack (idle, 1 워크스페이스) | ~180MB | ~300MB | 탭 3-4개 |
| Discord (idle) | ~150MB | ~250MB | 탭 2-3개 |
| Notion (idle) | ~200MB | ~400MB | 탭 4-5개 |
| Figma Desktop (idle) | ~250MB | ~500MB | 탭 5-6개 (WebGL 포함) |
→ Chrome 탭 3-4개와 비슷. 3개 띄워둔 사람은 Electron 앱 3개도 비슷한 비용.
신화의 출처
- 2015~2017년에는 실제로 무거웠다 (Chromium 50대 시절). 지금은 V8 snapshot · 메모리 압축 · GPU process 공유 등으로 크게 개선.
- 여러 앱을 동시에 켜 두면 — 프로세스가 N배 (
07-performance-memory). 전체 합이 커 보인다. - 비교 대상이 잘못된 경우 — 메뉴바 앱 100MB를 Swift native 메뉴바 앱(~30MB)과 비교하면 3배다. 그러나 VS Code급 UI를 Swift로 만들면 — 훨씬 더 무거워진다.
그러나 진짜 문제는 시작 시간
| 측정 | 시간 |
|---|---|
| Chrome 탭 새로 열기 | ~0.1초 |
| Electron 앱 cold start | ~1-3초 |
| Tauri 앱 cold start | ~0.3-0.7초 |
| 네이티브 앱 cold start | ~0.1-0.5초 |
→ 시작 시간이 사용자 인식에 더 큰 영향. 메모리는 데스크톱에서 거의 신경 안 쓰임.
Insight — 흥미로운 이야기
”Atom과 VS Code의 운명”
GitHub의 Atom(2014)과 Microsoft의 VS Code(2015)는 같은 Electron 기반. 그러나 Atom은 2022년 EOL, VS Code는 세계 1위 IDE가 되었다.
차이는 Electron이 아니라:
- VS Code의 Extension Host 분리 (별도 process로 확장 격리)
- Language Server Protocol (Microsoft 주도 표준화)
- Monaco Editor의 성능 최적화
→ Electron은 플랫폼일 뿐. 성공은 그 위에 무엇을 어떻게 쌓느냐에 달려 있다.
”Tauri의 약속과 현실”
Tauri는 2020년 출시 후 “Electron 킬러” 마케팅으로 빠르게 성장. 그러나 2024년 현재:
- GitHub Stars: Electron 113k · Tauri 80k (격차 줄어듦)
- production 회사 수: Electron 압도적 (수천 개) · Tauri 수백 개
- 생태계 라이브러리: Tauri 플러그인 < Electron 모듈 1/100
→ 유망하지만 Electron을 대체하려면 5~10년 더 필요. 지금은 공존.
”Slack의 흥미로운 결정”
Slack은 2016년경 Electron을 도입했다. 모바일은 React Native (당시 RN 초기), 데스크톱은 Electron. 5년 뒤 RN 코드 일부를 폐기하고 모바일도 네이티브로 회귀. 그러나 데스크톱 Electron은 유지.
→ 모바일은 네이티브가 옳았고, 데스크톱은 Electron이 옳았다. 같은 회사 안에서도 플랫폼별로 다른 답.
”한국 — 토스의 데스크톱 선택”
토스는 Electron 기반 데스크톱 (인증서 등 PC뱅킹 기능). 이유는:
- 웹 팀이 그대로 작업 — 모바일 RN과 공통 디자인 시스템
- Chrome 확장 (인증서 모듈) 통합 용이
- 기능 추가 속도 — 분기마다 새 기능 출시 가능
→ Tauri를 검토했지만 Rust 학습 + OS webview QA가 기능 출시 속도를 늦춤. 비즈니스 속도가 기술적 최적을 이긴 사례.
요약 + 다이어그램
Electron이 최선인 자리: Chromium 통일성이 필수 + Node 생태계가 자산 + 복잡 UI + 데스크톱 설치 — 이 넷 중 둘 이상이 강하게 해당.
Electron이 과한 자리: 메뉴바·트레이 앱, 단순 UI, 메모리 critical, 모바일 주력, 시스템 깊은 통합.
다음 문서:
02-tauri.md— Electron의 가장 큰 경쟁자 Tauri는 무엇을 약속하고 어디에서 한계가 있나?