"코드가 완성됐다고 출시할 수 있는 게 아니다" — 보안, 성능, UX, 배포까지 점검해야 프로덕션 수준의 앱이 됩니다.


1. 보안 체크리스트

필수

  • contextIsolation: true (기본값 유지)
  • nodeIntegration: false (기본값 유지)
  • sandbox: true 설정
  • CSP(Content Security Policy) 헤더 설정
  • 외부 URL 네비게이션 차단 (will-navigate)
  • 새 창 열기 제한 (setWindowOpenHandler)
  • preload에서 ipcRenderer를 직접 노출하지 않음
  • 민감한 데이터(API 키 등)를 소스 코드에 포함하지 않음

권장

  • ASAR 무결성 검증 활성화
  • Electron Fuse 설정 (RunAsNode: false 등)
  • 코드 서명 (macOS: 공증, Windows: EV 서명)
  • OS 키체인으로 비밀 저장 (keytar)
  • IPC 채널 화이트리스트 적용

2. 성능 체크리스트

시작 속도

  • show: false + ready-to-show 패턴 적용
  • 불필요한 모듈의 지연 로딩
  • DevTools를 프로덕션에서 비활성화
  • 앱 번들링 및 minification

런타임 성능

  • CPU 집약 작업을 Worker Thread 또는 UtilityProcess로 분리
  • IPC 호출 배치 처리
  • 대용량 리스트는 가상 스크롤링 적용
  • 이벤트 리스너 정리 (메모리 누수 방지)

앱 크기

  • devDependencies 분리 확인
  • 불필요한 파일 제외 (files 패턴)
  • locale 파일 제거
  • 네이티브 모듈 asarUnpack 설정

3. UX 체크리스트

기본 UX

  • macOS에서 window-all-closed 시 앱 종료하지 않음
  • macOS에서 activate 이벤트로 윈도우 재생성
  • 윈도우 크기/위치 저장 및 복원
  • 저장하지 않은 변경사항 확인 다이얼로그

시스템 통합

  • 시스템 다크 모드 연동 (nativeTheme)
  • 외부 링크를 기본 브라우저에서 열기 (shell.openExternal)
  • 트레이 아이콘 (필요한 경우)
  • 키보드 단축키 설정

접근성

  • 키보드만으로 모든 기능 사용 가능
  • 스크린 리더 호환
  • 충분한 색상 대비
  • prefers-reduced-motion 존중

4. 안정성 체크리스트

  • 에러 핸들링 (uncaughtException, unhandledRejection)
  • 크래시 리포트 설정 (Sentry 또는 crashReporter)
  • 로깅 시스템 구축 (electron-log)
  • 렌더러 크래시 복구 (render-process-gone)
  • 오프라인 상태 처리

5. 배포 체크리스트

빌드

  • 3개 플랫폼 빌드 확인 (Windows, macOS, Linux)
  • 아이콘 준비 (ico, icns, png)
  • 앱 메타데이터 설정 (이름, 버전, 설명)
  • ASAR 패키징

코드 서명

  • macOS: Developer ID + 공증(Notarization)
  • Windows: 코드 서명 인증서

자동 업데이트

  • electron-updater 설정
  • 업데이트 서버 설정 (GitHub/S3/자체 서버)
  • 업데이트 UI (진행률, 재시작 안내)
  • 차등 업데이트 설정 (선택)

CI/CD

  • GitHub Actions 빌드 파이프라인
  • 자동 테스트 (유닛 + E2E)
  • 태그 기반 자동 릴리스

6. 법적 체크리스트

  • 오픈 소스 라이선스 확인 (license-checker)
  • 개인정보 처리 방침 (데이터 수집 시)
  • EULA (필요한 경우)
BASH
# 오픈 소스 라이선스 확인
npx license-checker --summary
npx license-checker --failOn 'GPL'  # GPL 의존성 체크

출시 전 최종 테스트

BASH
# 1. 깨끗한 환경에서 빌드
rm -rf node_modules dist release
npm ci
npm run build
npm run package

# 2. 패키징된 앱 실행 확인
# macOS: open release/mac/MyApp.app
# Windows: release/win/MyApp.exe

# 3. 자동 업데이트 테스트
# 이전 버전 설치 → 새 버전 출시 → 업데이트 확인

# 4. 모든 플랫폼에서 기능 테스트

면접 포인트 정리

  • 보안: contextIsolation, CSP, 코드 서명이 3대 필수 항목
  • 성능: 시작 속도, 메모리 관리, 앱 크기 최적화
  • UX: 시스템 테마 연동, 윈도우 상태 저장, 접근성
  • 안정성: 크래시 리포트, 로깅, 에러 핸들링
  • 배포: CI/CD, 자동 업데이트, 코드 서명 자동화

이 체크리스트를 모두 통과하면, 프로덕션에 출시할 준비가 된 것입니다. 55편의 Electron 시리즈를 마무리합니다!

댓글 로딩 중...