LinkedIn이 2개 탭에서 2.4 GB RAM을 사용해도 아무도 놀라지 않는 웹 생태계의 병리
LinkedIn Uses 2.4 GB of RAM Across Two Tabs. We All Just Shrugged.
AI 요약
Context
단일 페이지 애플리케이션架构는 초기 번들 로딩을 극대화하고, React 컴포넌트가 제대로 언마운트되지 않아 타이머가 정리되지 않으며, 캐시 크기가 무한히 증가한다. HTTP Archive 데이터 기준 2026년 2월 median 웹 페이지는 780 KB JavaScript를 shipping하며 이는 2년 전 대비 44% 증가한 수치다. Standish Group 연구에 따르면 软件 기능의 64%가 거의 또는 전혀 사용되지 않으며, Pendo 연구에서는 80%로 보고 있다.
Technical Solution
- [JavaScript 번들] → [Tree shaking과 Code splitting으로 사용되지 않는 코드 제거]
- [SPA 상태 관리] → [unmount 시 리스너 해제와 타이머 정리]
- [캐시 관리] → [만료 정책과 크기 제한 도입으로 무한 성장 방지]
- [기능 shipping] → [실제 사용률 측정 기반 feature flag로 불필요한 기능 로딩 차단]
- [데이터 전송] → [필요한 콘텐츠만lazy loading으로 요청 수 최소화]
Impact
median 페이지 JavaScript 크기 540 KB에서 780 KB로 44% 증가, median 페이지 전체 무게 2.2 MB에 24개 JavaScript 요청 발생. Google Core Web Vitals 기준 website 점수 저하로 검색 순위 하락 및 전환율 손실. 인터넷 전체 탄소 발자국이 연간 약 10억 톤으로 전 세계 항공업계 수준.
Key Takeaway
개발자 경험과 배포 속도를 최적화한 대가로 사용자 브라우저가 메모리와 성능이라는 비용을 지불하고 있으며, 웹 성능 최적화는 선택이 아닌 요구사항이다.
실천 포인트
웹 애플리케이션에서 JavaScript 번들 관리 시 tree shaking과 code splitting을 적용하여 초기 로딩 크기를 줄이고, unmount lifecycle에서 이벤트 리스너와 타이머를 정리하며, feature flag로 사용률 낮은 기능은 동적 임포트로 필요 시에만 로딩하면 불필요한 리소스 점유를 방지할 수 있다.