자바스크립트(JavaScript) 의존성 붓기(Bloat), 왜 생기는 걸까?

by DD
2개월 전
조회수 12

자바스크립트(JavaScript) 의존성 붓기(Bloat)는 개발 생산성 저하 및 성능 저하의 주요 원인으로 지목됨

오래된 런타임 지원(Older Runtime Support), 전역 네임스페이스 변조 방지(Protection against global namespace mutation), 크로스-리얼름 값(Cross-realm values)이 주요 원인으로 분석됨

ES3와 같은 구형 엔진 지원을 위한 폴리필(Polyfill) 사용이 불가피하며, 최신 기능 사용을 위한 업그레이드 필요성(Upgrade Necessity)이 제기됨

Node.js의 'primordials' 개념을 통해 전역 객체 변조로부터 보호하려는 시도가 존재함

오래된 런타임 지원(Older Runtime Support)과 폴리필(Polyfill)

자바스크립트(JavaScript) 의존성 붓기(Bloat)의 주요 원인 중 하나는 구형 엔진(Old Engines) 지원이다. 특히 ES3와 같은 구형 환경에서는 `Array.prototype.forEach`, `Object.keys`와 같은 최신 기능이 지원되지 않아, 개발자들은 폴리필(Polyfill)을 통해 호환성을 확보해야 한다. 이러한 폴리필은 의존성 트리를 복잡하게 만들고, 번들 사이즈를 증가시키는 요인으로 작용한다. 따라서, 최신 기능을 사용하기 위해서는 런타임 환경 업그레이드(Runtime Environment Upgrade)가 필수적이다.

전역 네임스페이스 변조 방지(Protection against global namespace mutation) 전략

Node.js 환경에서는 전역 네임스페이스(Global Namespace) 변조를 방지하기 위해 'primordials' 개념을 사용한다. 이는 Node.js 내부에서 사용하는 전역 객체들을 래핑(Wrapping)하여, 외부 스크립트가 전역 객체를 변경하더라도 Node.js 자체의 동작에 영향을 미치지 않도록 보호하는 기술이다. 이러한 보호 메커니즘은 안정성(Stability)을 확보하는 데 기여하지만, 불필요한 의존성을 추가하여 의존성 붓기(Dependency Bloat)를 유발할 수 있다.

크로스-리얼름 값(Cross-realm values) 처리의 어려움

자바스크립트(JavaScript)에서 크로스-리얼름 값(Cross-realm values)은 서로 다른 런타임 환경 간에 값을 주고받을 때 발생한다. 예를 들어, 웹 페이지와 iframe 간의 통신에서 발생하는 문제이다. 이러한 상황에서는 `Object.prototype.toString.call()`과 같은 방법을 사용하여 값의 타입을 정확하게 파악해야 하며, 이는 추가적인 의존성을 필요로 할 수 있다. 따라서, 데이터 격리 아키텍처(Data Isolation Architecture)를 고려하여 안전하고 효율적인 데이터 교환 방식을 설계해야 한다.

The Three Pillars of JavaScript Bloat

댓글 0

첫 번째 댓글을 남겨보세요!