---
id: platform-desktop-development
title: "데스크탑 앱 개발 가이드"
category: "Platform_Engineering"
status: "draft"
verification_status: "applied"
canonical_id: ""
aliases: ["desktop development", "데스크탑 개발", "Electron", "VS Code extension", "native app"]
duplicate_of: ""
source_trust_level: "A"
confidence_score: 0.87
created_at: 2026-06-13
updated_at: 2026-06-13
review_reason: ""
merge_history: []
tags: ["platform", "desktop", "electron", "guide", "platform-independent"]
raw_sources: ["일반 데스크탑 공학 지식", "ConnectAI(VS Code 확장) 적용 예"]
applied_in: ["ConnectAI"]
github_commit: ""
---

# [[데스크탑 앱 개발 가이드]]

## 🎯 한 줄 통찰 (One-line insight)
데스크탑 앱의 핵심은 "**프로세스 분리(UI↔백그라운드)·생명주기/자원 관리·확장성·로컬 저장**" 이며, ConnectAI(VS Code 확장)가 이 원리들의 실증 사례다.

## 🧠 핵심 개념 (Core concepts)
메인/렌더러 프로세스, IPC, 생명주기(activate/dispose), 로컬 파일/설정/시크릿, 플러그인 확장, 백그라운드 워커.

## 📖 세부 내용 (Details · 12-field)
- **Problem:** OS 자원 접근·장시간 실행·로컬 데이터·반응적 UI 를 안정적으로.
- **Recommended Architecture:** 얇은 entry(조립) + 계층 분리(인프라/도메인/기능) + IPC 로 UI 분리 + 플러그인 확장 지점. ([[ConnectAI 아키텍처 개요]])
- **Folder Structure:** `src/{core/(인프라), lib/도메인, features/<기능>, ui|webview, integrations}` + entry(activate/main).
- **Core Components:** entry point, IPC 브리지([[IPC Pattern]]), 명령 레지스트리([[Command Pattern]]), 이벤트 버스([[Event Bus Pattern]]), 워커 큐([[Background Worker Pattern]]), 로컬 저장([[Local Storage Pattern]]).
- **State Management:** 메인 프로세스가 진실 소유, UI 는 메시지로 변경 요청([[State Management Pattern]]). 설정은 단일 getConfig.
- **Error Handling:** 사용자 친화 번역, 부가 작업 격리(빈 catch+이유), 보상 트랜잭션([[Error Handling Pattern]]).
- **Testing Strategy:** 순수 도메인 단위 테스트(핵심), IPC/통합 테스트, UI 스모크. (ConnectAI: jest + 순수 함수 격리)
- **Scaling Strategy:** 무거운 작업 워커/순차([[ADR-0004 순차 디스패치 채택]]), 지연 로드(동적 import), 인덱스 캐시([[Caching Pattern]]).
- **Common Mistakes:** disposable 미등록(누수), UI 스레드 무거운 작업, 외부 IPC 입력 미검증, 동적 import 남발, 전역 상태 산재.
- **Refactoring Patterns:** entry 얇게(조립만), god-class 골격+추출([[ADR-0010 오케스트레이터 골격 모듈추출]]), 동적→정적 import, 중복→공통 모듈.
- **Real-world Tradeoffs:** Electron(생산성·크로스플랫폼 ↔ 메모리·번들 크기), 네이티브(성능 ↔ 플랫폼별 코드), 프로세스 분리(격리·보안 ↔ 직렬화 비용).
- **Design Heuristics:** "모든 자원은 dispose 등록", "한 번에 한 모델/무거운 자원", "외부 입력은 신뢰 안 함", "흐름 골격은 한 곳".

## ⚖️ 모순 및 업데이트 (Contradictions & updates)
Electron 은 편하지만 무겁다 — 경량이 중요하면 Tauri/네이티브. 자원 제약(메모리/GPU)이 동시성·아키텍처를 좌우한다(ConnectAI 의 핵심 교훈).

## 🛠️ 적용 사례 (Applied in summary)
ConnectAI(Astra) VS Code 확장 — 본 위키 [[ConnectAI 아키텍처 개요]] 전체가 실증.

## 🔗 지식 그래프 (Knowledge Graph)
- **상위/루트:** [[플랫폼 개발 가이드 인덱스]]
- **관련 개념:** [[IPC Pattern]], [[Event Bus Pattern]], [[Command Pattern]], [[Plugin Architecture Pattern]], [[Background Worker Pattern]], [[VSCode 확장 구조와 생명주기]]
- **참조 맥락:** 작은 모델이 데스크탑/확장 앱을 설계할 때 상위 가이드로 참조.

## 📚 출처 (Sources)
- [S1] 일반 데스크탑(Electron/확장) 공학 지식
- [S2] ConnectAI — 실증 사례

## 📝 변경 이력 (Change history)
- 2026-06-13: 플랫폼 독립 데스크탑 개발 가이드 초안.
