[Electron] 웹으로 개발한 소스를 데스크톱 앱으로?

HOU·2024년 9월 5일
post-thumbnail

Electron을 사용한 웹 애플리케이션 개발의 장점 및 단점 분석

1. 개요

현재 React를 기반으로 한 웹 애플리케이션을 개발하고 있으며, JavaScript를 사용하여 다양한 외부 라이브러리(react-datepicker, gant-task-react 등)를 통합하고 있습니다. 이 문서에서는 Electron을 사용하여 기존 웹 애플리케이션을 데스크탑 애플리케이션으로 확장할 때의 장점과 단점을 분석합니다. Electron은 Chromium과 Node.js를 결합하여 웹 기술로 데스크탑 애플리케이션을 만들 수 있는 오픈 소스 프레임워크입니다.

2. Electron의 장점

2.1 웹 기술의 재사용

Electron은 기존의 웹 기술(HTML, CSS, JavaScript)을 그대로 사용하여 데스크탑 애플리케이션을 만들 수 있습니다. 현재 웹 애플리케이션을 ReactJavaScript로 개발하고 있으므로, Electron을 사용하면 코드를 거의 수정하지 않고 데스크탑 애플리케이션으로 확장할 수 있습니다.

  • 장점: 기존 코드 재사용 → 개발 시간과 비용 절감.
  • 특징: 웹 페이지를 데스크탑 애플리케이션으로 바로 패키징 가능.
2.2 멀티 플랫폼 지원

Electron을 사용하면 Windows, macOS, Linux에서 동일한 코드를 사용하여 애플리케이션을 실행할 수 있습니다. 플랫폼별로 별도의 코드를 작성할 필요가 없으므로 유지보수 비용이 크게 줄어듭니다.

  • 장점: 여러 운영체제 지원 → 개발자가 단일 코드를 작성하여 멀티 플랫폼 배포 가능.
  • 특징: 크로스 플랫폼 배포 지원.
2.3 Node.js와의 통합

Electron은 Node.js와 완벽히 통합되어, 웹 애플리케이션에서 사용할 수 없는 파일 시스템 접근, 네이티브 모듈 사용 등의 기능을 손쉽게 구현할 수 있습니다. 예를 들어, 로컬 파일 시스템에서 데이터를 저장하거나, 네이티브 파일 다이얼로그를 열 수 있습니다.

  • 장점: 데스크탑 수준의 파일 및 하드웨어 접근 가능.
  • 특징: 브라우저의 제한 없이 다양한 Node.js 모듈 사용 가능.
2.4 외부 라이브러리와의 호환성

Electron은 웹뷰를 통해 웹 기술을 렌더링하므로, 현재 사용 중인 React, react-datepicker, gant-task-react와 같은 외부 라이브러리와도 호환됩니다. 특별한 추가 작업 없이 기존에 사용 중인 라이브러리를 그대로 사용할 수 있습니다.

  • 장점: 라이브러리 호환성 → 추가적인 라이브러리 수정이 필요 없음.
  • 특징: 다양한 React 라이브러리 및 npm 패키지 사용 가능.
2.5 자동 업데이트 및 배포

Electron은 자동 업데이트 기능을 지원하여, 배포된 애플리케이션의 최신 버전을 사용자에게 손쉽게 배포할 수 있습니다. 이는 애플리케이션 유지보수와 업데이트 관리에서 효율적입니다.

  • 장점: 사용자에게 최신 버전 자동 배포 가능.
  • 특징: 업데이트 배포가 간편함.

3. Electron의 단점

3.1 메모리 및 성능 문제

Electron은 Chromium을 사용하여 각 애플리케이션 인스턴스를 실행하므로, 일반적인 네이티브 애플리케이션에 비해 메모리 사용량이 많습니다. 다수의 Electron 애플리케이션을 동시에 실행할 경우, 메모리 사용이 급격히 증가할 수 있습니다.

  • 단점: 메모리 사용량 증가 → 리소스가 제한된 환경에서는 성능 저하 가능성.
  • 특징: 크롬 브라우저 수준의 메모리 사용량.
3.2 애플리케이션 크기 증가

Electron은 Node.jsChromium을 포함하기 때문에 애플리케이션 자체의 크기가 상당히 커질 수 있습니다. 기본적으로 작은 규모의 웹 애플리케이션이라도, 패키징 시 상당한 용량을 차지하게 됩니다.

  • 단점: 배포 크기 증가 → 애플리케이션 설치 및 다운로드 시 사용자에게 불편을 줄 수 있음.
  • 특징: 각 플랫폼마다 기본 Electron 바이너리를 포함해야 함.
3.3 보안 문제

Electron은 웹 기술을 사용하지만, 데스크탑 애플리케이션처럼 파일 시스템과 시스템 자원에 접근할 수 있기 때문에 보안 취약점이 발생할 수 있습니다. 이를 예방하기 위해서는 권장되는 보안 가이드라인을 엄격하게 따라야 합니다.

  • 단점: 보안 관리 필요 → 잘못된 설정으로 인해 애플리케이션이 보안에 취약할 수 있음.
  • 특징: 브라우저보다 더 많은 권한을 가지기 때문에, 개발자가 직접 보안을 관리해야 함.
3.4 성능 제약

Electron 애플리케이션은 네이티브 애플리케이션과 비교해 성능이 떨어질 수 있습니다. 특히 고사양을 요구하는 작업(예: 복잡한 그래픽 렌더링, 대규모 데이터 처리)에서는 성능 차이가 두드러질 수 있습니다.

  • 단점: 네이티브 애플리케이션 대비 성능 저하 가능.
  • 특징: 브라우저 기반 렌더링으로 인해 CPU 및 GPU 사용량이 증가할 수 있음.

4. Electron을 고려할 때의 상황

현재 React와 JavaScript 기반으로 개발 중이며, 다양한 외부 라이브러리(예: react-datepicker, gant-task-react)를 사용 중이기 때문에, Electron을 사용하면 웹 기술을 그대로 데스크탑으로 확장하는 것이 매우 유리합니다. 특히 멀티 플랫폼 지원이 필요한 경우와 코드 재사용이 필요한 경우에 Electron은 적합한 선택이 될 수 있습니다.

그러나 성능에 민감한 애플리케이션이거나, 리소스가 제한된 환경에서 사용되는 애플리케이션이라면, Electron의 성능 및 메모리 사용 문제를 충분히 고려해야 합니다. 또한, 보안 취약점에 대비한 철저한 보안 관리가 필요합니다.

5. 결론

Electron은 웹 애플리케이션을 데스크탑 애플리케이션으로 확장할 때 매우 유용한 도구이며, 현재 사용 중인 React 및 JavaScript 기술 스택을 그대로 유지하면서 크로스 플랫폼 애플리케이션을 만들 수 있습니다. 코드 재사용과 멀티 플랫폼 지원 측면에서 큰 장점이 있지만, 메모리 사용량과 성능 문제, 보안 취약점 등을 고려해야 합니다.

Electron을 사용해 애플리케이션을 배포하려면, 이러한 장단점을 이해하고, 애플리케이션의 사용 환경에 맞는 최적의 선택을 하는 것이 중요합니다.


profile
하루 한 걸음 성장하는 개발자

0개의 댓글