⚡ Electron8. 생태계 & 대안01 — When to Pick Electron

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-CAppKit (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는 무엇을 약속하고 어디에서 한계가 있나?