- 개인 서버에서 Nextcloud를 최적화해도 반응이 느린 원인은 과도한 자바스크립트 로딩 구조
- 초기 페이지 로드 시 15~20MB의 자바스크립트가 다운로드되며, 압축 후에도 4~5MB 수준으로 여전히 과중
-
core-common.js(4.71MB), NotificationsApp.chunk.mjs(1.06MB), Calendar 앱 5.94MB, Files 앱 18.8MB, Notes 앱 20.91MB 등 각 앱별 스크립트 용량이 매우 큼
- 이러한 구조로 인해 iPhone 13 mini에서도 Tasks 앱 실행에 5~10초 지연 발생
- 일부 기능은 Vikunja(1.5MB JS) , Immich 등으로 대체했지만, Nextcloud의 통합 기능성 때문에 완전한 대체는 어려운 상황
Nextcloud의 성능 저하 원인
- Nextcloud는 파일, 캘린더, 연락처, 노트, 할 일, 사진 등 다양한 기능을 통합 제공하지만, 사용 체감 속도가 느림
- 하드웨어 성능이 충분한 환경에서도 반응이 느리게 나타남
- 개발자 도구 분석 결과, 지연의 주된 원인은 자바스크립트의 과도한 양
- 초기 페이지 로드 시 15~20MB의 자바스크립트가 다운로드됨
- 압축 전송 후에도 4~5MB 수준으로, 일반 웹앱 기준(1MB)보다 매우 큼
- 브라우저 캐시가 존재하더라도, 매 방문 시 대량의 코드 실행이 필요해 로딩 지연 발생
주요 자바스크립트 번들 크기
-
core-common.js : 4.71MB로, 여러 앱에서 공통 기능 제공
-
NotificationsApp.chunk.mjs : 1.06MB
-
Calendar 앱: 기본 달력 보기만으로 5.94MB 필요
- 느린 네트워크 환경에서는 30초 이상 로딩 지연 발생
-
Files 앱: EditorOutline(1.77MB), previewUtils(1.17MB), index(1.09MB), emoji-picker(0.9MB) 등 다수의 스크립트 포함
- 전체 18.8MB로, 실제 환경에서 1분 이상 로딩 대기 발생
-
Notes 앱: notes-main.js만 4.36MB이며, 전체 20.91MB 수준
사용자 경험에 미치는 영향
-
Tasks 앱 실행 시에도 5~10초 지연 발생
- 예: 매장에서 쇼핑 목록을 열 때 즉시 표시되지 않음
- 기능 대비 번들 크기 비율이 비정상적으로 높아, 기능성과 성능의 불균형 발생
- Nextcloud의 구조상 공통 라이브러리와 도구가 많아, 통합 경험 제공의 대가로 성능 저하 발생
대안 서비스 활용
- 일부 기능은 Vikunja(할 일 관리, 1.5MB JS)와 Immich(사진 관리)로 분리 운영
- Vikunja는 완벽하지 않지만, JS 용량이 작아 체감 속도 우수
- 그러나 Nextcloud의 통합성과 편의성 덕분에 완전한 대체는 어려움
결론 및 인식 변화
- Nextcloud의 현재 구조에는 정당한 이유나 인력 부족 등의 현실적 제약이 있을 수 있음
- 그럼에도 불구하고, 사용자 경험과 접근성 저하는 명확한 문제로 지적됨
- 웹 성능 전문가 Alex Russell의 글을 통해 웹 성능의 중요성과 개발팀의 성능·접근성 관리 부주의 문제를 인식하게 되었음
- 웹앱 개발 시 퍼포먼스 불평등(performance inequality) 문제를 고려해야 함