- 2017년 이후 대역폭 증가는 일반 사이트의 전송 크기 증가를 어느 정도 앞질렀지만, 웹 앱의 CPU 요구량은 저가형 기기 성능보다 빠르게 커져 빠른 인터넷에서도 웹 접근성이 나빠짐
1Gbps연결에서도Tecno Spark 8C는 Discourse 포럼에서 브라우저 크래시가 발생하고,Itel P32에서는 Discourse, Reddit, Shopify, Substack, Wix, Mastodon, Bluesky 같은 사이트가 FAIL 또는 사실상 사용 불가 상태가 됨- 측정은
M3 Max,M1 Pro, Chrome10xCPU 스로틀링,Tecno Spark 8C,Itel P32에서LCP*와 메인 스레드 CPU 시간을 비교했으며, PageSpeed Insights 점수는 실제 체감 속도와 상관이 약했음 - MyBB, phpBB, 구형 WordPress, HN, danluu.com처럼 단순하거나 오래된 사이트는 저가형 모바일에서도 비교적 잘 동작한 반면, Discourse, Medium, Reddit, Substack처럼 동적 로딩이 많은 사이트는 스크롤·검색·탭 지연이 두드러짐
- Nigeria, India, Latin America 같은 지역의 저가형 기기 사용자는 실제 웹 사용자이며, iOS와 빠른 인터넷만 기준으로 웹을 만들면 부유하지 않은 사용자와 낮은 사양의 데스크톱 사용자까지 배제됨
대역폭보다 CPU가 병목이 된 웹
- 2017년에는 느린 연결에서 웹 블로트가 사용성을 크게 해쳤고, 이후 고급 연결의 대역폭은 Nielsen 기준 연
50%수준으로 빠르게 늘어남 - 느린 인터넷을 쓰는 사용자는 여전히 많고 현대 웹 상당수는 느린 연결에서 쓰기 어렵지만, 일반 사이트에서는 대역폭 증가가 전송 크기 증가를 어느 정도 앞섬
- 반대로 웹 앱의 CPU 성능 요구는 대역폭만큼 빠르게 개선되지 않아, 좋은 인터넷 연결을 갖고도 저사양 기기에서는 웹 사용이 어려워짐
- Discourse 기반 “현대적” 포럼은
Tecno Spark 8C에서 브라우저 크래시를 일으키기도 하며, 크래시 사이의 반응성도8 MHz 286과1200 baud모뎀으로 BBS를 쓰는 것보다 나쁘게 측정됨 - Discourse에서 메시지 제목을 불러오는 압축 페이로드는
2.6 MB로, 과거 대비 전송량이1000x늘어난 수준이지만1Gbps연결에서는 상대적으로 가벼움 - CPU 측면에서는
8-core (2 1.6 GHz Cortex-A75 / 6 1.6 GHz Cortex-A55)를 가진Tecno Spark 8C도 Discourse를 감당하지 못하며, 해당 CPU는286보다 대략100000x빠른 수준임
측정 대상과 지표
- 테스트 기기는
M3 Max Macbook (14-core),M1 Pro Macbook (8-core), Chrome DevTools에서10x스로틀링한M3 Max,Tecno Spark 8C,Itel P32 - 네트워크는 기기에 유리하도록
1Gbps인터넷과 부하 시 지연시간이 낮게 벤치마크된 WiFi 라우터를 사용함 - 비교 대상은 블로그·마이크로블로그, 포럼, 소규모 비즈니스용 플랫폼을 포함함
- 블로그·마이크로블로그: danluu.com, Substack, Medium, Ghost, Hugo, Tumblr, Mastodon, Twitter, Threads, Bluesky, Patreon
- 포럼: Discourse, Reddit, Quora, vBulletin, XenForo, phpBB, MyBB
- 소규모 비즈니스 플랫폼: Wix, Squarespace, Shopify, WordPress
- 주요 지표는 전송 압축 크기(
wire), 압축 해제 크기(raw),LCP*, 메인 스레드 CPU 시간 LCP*는 Chrome이 측정한 Largest Contentful Paint가 아니라, 큰 화면 갱신이 사용자에게 쓸모없는 경우 실제 유용한 콘텐츠가 보이는 시점을 기준으로 삼음- CPU 시간은 Core Web Vital은 아니지만, 느린 기기에서 사용자가 체감하는 사용성과 강하게 맞물리는 단순 지표로 사용됨
표에서 드러난 사용성 격차
- danluu.com과 HN은 모든 테스트 기기에서 빠르게 동작함
- danluu.com은
6kB wire / 18kB raw,Tecno Spark 8C에서0.4s LCP* / 0.3s CPU - HN은
11kB wire / 50kB raw,Tecno Spark 8C에서0.5s LCP* / 0.5s CPU
- danluu.com은
- 오래된 PHP 기반 포럼은 현대적 포럼보다 느린 기기에서 훨씬 나았음
- MyBB는
Tecno Spark 8C에서0.8s LCP* / 0.8s CPU - phpBB는
1.7s LCP* / 1.5s CPU - vBulletin은
4.4s LCP* / 4.8s CPU - Discourse는
15s LCP* / 26s CPU이고Itel P32에서는FAIL
- MyBB는
- 블로그 플랫폼에서도 오래된 WordPress 테마는 Medium과 Substack보다 저사양 기기에서 훨씬 빠름
- WordPress(old)는
Tecno Spark 8C에서0.7s LCP* / 1.7s CPU - Medium은
2.8s LCP* / 33s CPU - Substack은
14s LCP* / 14s CPU
- WordPress(old)는
- 여러 현대 사이트는
Itel P32에서 실패하거나 사실상 사용할 수 없었음- XenForo, Mastodon, Bluesky, Wix, Substack, Shopify, Discourse, Reddit은
FAIL - Threads는
28s LCP* / 66s CPU, Twitter는24s LCP* / 43s CPU, Medium은3.2s LCP* / 63s CPU
- XenForo, Mastodon, Bluesky, Wix, Substack, Shopify, Discourse, Reddit은
10s+ CPU를 쓰는 페이지는 로드 후에도 나쁜 경험을 만듦- 스크롤이 몇 FPS까지 떨어지고, 탭 지연이 길어 사용자가 탭이 등록됐는지 알기 어려움
- 다시 탭하면 첫 번째 탭이 뒤늦게 등록된 뒤 두 번째 탭이 엉뚱한 동작을 일으킬 수 있음
실제 기기와 CPU 스로틀링의 차이
- Chrome DevTools의 CPU 스로틀링은 편리하지만, 실제 느린 기기의 결과를 일관되게 근사하지 못함
M3/10과Tecno Spark 8C비교에서는 사이트별 차이가 크게 달랐음- danluu.com과 Ghost는 어느 정도 근사했음
- Medium, Substack, Twitter는
Tecno Spark 8C의 CPU 시간이 약3x느렸음 - Reddit과 Discourse는 약
4x느렸음 - Shopify는
Tecno Spark 8C가M3/10보다 한 자릿수 이상 빠른 결과를 보임
- 느린 페이지는 기기가 느려질수록 초선형적으로 더 느려지는 경우가 있고, 한 페이지의 느림이 다른 페이지의 느림을 잘 예측하지 못함
- Discourse, Medium, Reddit은
M3와M1에서는 CPU를 많이 쓰지 않는 것처럼 보이지만,Tecno Spark 8C에서는 가장 느린 축에 들어감 - Reddit은 아무 상호작용 없이 기다려도
~90% CPU를 사용해 CPU가∞로 표시됨
오래된 사이트와 단순한 페이지의 강점
- 오래된 사이트는 대체로 최신 사이트보다 빨랐고, 10~20년간 시각적으로 크게 바뀌지 않은 사이트가 가장 빠른 축에 속함
- MyBB는 Discourse보다
M3에서3.6x / 5x,Tecno Spark 8C에서19x / 33x빠름 - WordPress(old)는 Medium보다
M3 Max에서17.5x / 10x,Tecno Spark 8C에서4x / 19x빠르게 측정됨 - Ghost는 Medium보다 1년 뒤 출시된 현대적 플랫폼이지만, 오래된 플랫폼과 경쟁 가능한 성능을 보이는 예외임
- NodeBB도 부록 테스트에서 현대적 포럼 중 예외에 가까움
M1에서0.3s / 0.4sTecno Spark 8C에서3.4s / 7.2s- Discourse보다 훨씬 빠르고, 로드 후 스크롤과 탭도 기본적으로 동작함
동적 로딩과 지표 최적화의 함정
- Discourse, Reddit, Substack처럼 페이지 일부를 먼저 로드하고 나머지를 동적으로 불러오는 사이트는 표의 점수보다 실제 사용성이 더 나쁨
- 느린 기기에서는 스크롤 거리를 예측하기 어렵고, 너무 멀리 스크롤하면 추가 로딩이 트리거되어 페이지가 멈출 수 있음
- 스크롤한 과거 내용을 제거하는 페이지는 느린 기기에서 사실상 사용할 수 없음
- 동적 로딩 페이지는 브라우저의 빠른
Ctrl/Command+F검색을 그대로 쓰기 어렵고 자체 검색을 구현해야 함- Google Docs 검색은 최근 몇 달 또는 1년가량 문서 로드 직후 바로 쓰기 어려울 만큼 늦게 로드됨
- Discourse 검색은 느린 기기나 아주 빠르지 않은 기기에서 잘 동작한 적이 없음
- 이론적으로는 초기 CPU 작업이 이후 상호작용을 빠르게 만들 수 있지만, 테스트한 페이지들은 초기 로드, 후속 로드, 로드 후 상호작용 모두 느렸음
LCP 게임화
LCP는 원래 사용자가 페이지의 주요 콘텐츠가 보이는 시점을 가늠하는 지표지만, Chrome 측정은 화면의 큰 페인트가 언제 발생했는지에 가까움- 일부 사이트는 사용자에게 도움이 되지 않는 큰 로딩 화면을 빨리 표시해
LCP를 낮추고, 이후 실제 콘텐츠가LCP로 잡히지 않게 작은 갱신으로 나눔 - Discourse는 Discourse Splash를 공개적으로 도입했고, 느린 로드에서 큰 스플래시 화면으로
LCP를 크게 줄였다고 안내함 - Discourse의 공식 답변은 실제 콘텐츠 배너가 스플래시보다 크면
LCP에 불리해진다는 취지였음 - 유용한 콘텐츠 기준
LCP*와 Chrome 측정LCP의 차이가 큰 사례는 Wix와 Discourse였음- Wix는
M3에서6x,M1에서12x,Tecno Spark 8C에서3x - Discourse는
M3에서10x,M1에서12x,Tecno Spark 8C에서4x
- Wix는
성능 최적화가 사업에 미치는 영향
- 대규모 회사에서 사이트와 앱 성능 개선은 A/B 테스트로 측정될 만큼 큰 금전적 가치가 있었음
- 장기 홀드백에서도 성능 개선은 성장과 유지율에 비교적 큰 영향을 주는 개입으로 나타남
- Twitter에서 사용자 관측 p99 지연시간은 India와 여러 African countries뿐 아니라 United States에서도 약
60s였음 - 각 국가에는 느린 기기나 연결을 가진 사용자가 충분히 많아, 한계 요인은 인구 전체의 평균 기기·연결 분포보다 사용자 인내심에 가까웠음
- 느린 기기에서
60s를50s로 줄이는 개선은 고급 기기 사용자에게도5s를4.5s로 줄이는 식의 영향을 줄 수 있고, 매출·성장·유지율에도 영향을 줌
저사양 기기를 고려한 설계
- 느린 기기나 낮은 대역폭·불안정한 연결에서는 많은 콘텐츠를 한 번에 정적 페이지로 로드하는 경험이 대체로 가장 좋음
- 이미지에 적절한
width,height,alt속성이 있으면 도움이 되지만, progressive JPEG는 특별히 큰 도움이 되지 않았음 - 빠른 연결이 있는 느린 기기에서는 가벼운 정적 페이지가 잘 동작하고, 성능을 고려한 가벼운 동적 페이지도 동작 가능함
- 무거운 페이지에서 스크롤 시 추가 로딩과 검색 가로채기는 사용 가능한 상호작용 모델을 망가뜨림
- Substack은 iPhone 8에서 글의
LCP가 빠를 수 있지만, 헤더 아래로 스크롤하려면 다음 페이지 로딩을6s기다리고 이후에도1s~2s를 기다려야 하는 사례가 있음 - 반대 사례로 큰 plain HTML 페이지는 저사양 기기에서도 비교적 잘 동작함
https://danluu.com/diseconomies-scale/는0.1 MB wire / 0.4 MB rawhttps://danluu.com/threads-faq/는0.4 MB wire / 1.1 MB raw1.1 MB텍스트 한 페이지는 느린 기기에서 대부분의 현대 사이트보다 더 잘 동작함
- Zig standard library documentation은 소스 코드를 처음에 모두 가져오고 로컬에서 렌더링하지만,
Tecno Spark 8C에서4.7sCPU 사용 후 비교적 반응성을 유지함
저소득 사용자와 접근성
Tecno Spark 8C는 Nigeria에서USD 50-60, India에서USD 100-110정도에 구할 수 있지만, 해당 지역 중위 가구소득 대비 비율은 미국의 현세대 iPhone보다 훨씬 큼- 세계 기준에서
Tecno Spark 8C는 최저가 기기에 가깝지 않고,Itel P32도 실제 사용되는 최저사양 기기보다는 높은 축에 있음 - Alex Russell에 따르면 iOS 점유율은 India에서
7%, Latin America에서6%임 - Windows 텔레메트리 기준으로 대부분의 노트북·데스크톱 사용자는 최신 iPhone보다 느릴 가능성이 높은 저사양 기기를 쓰는 것으로 나타남
- 교정 대상자에게 지급되는 “lifeline” phone에는 iPhone 6 또는 iPhone 8도 있지만,
Itel P32보다 낮은 기기도 많고 데이터 한도가 작아 소진 후에는 구직·복지 양식 작성이나 Maps 사용이 어려워질 수 있음 - 모바일 앱은 좋은 연결이 있을 때 미리 내려받을 수 있지만, 웹 앱은 접속할 때마다 수 MB의 압축 JavaScript를 받아야 하면 제한된 연결에서 사용할 수 없음
실험 조건과 한계
- 각 사이트는 가능한 “가장 기본” 경험을 찾는 방식으로 측정됨
- WordPress는 현재 기본 테마
twentytwentyfour데모를 사용함 - Shopify는 테마 목록에서 처음 보인 테마를 사용함
- Discourse, vBulletin, XenForo, phpBB, MyBB는 공식 포럼으로 검색된 페이지를 사용함
- WordPress는 현재 기본 테마
- 이 작업은 하루 안에 데이터 수집과 분석을 하는 짧은 프로젝트로 진행되어, 가장 흔한 테마나 실제 사용자 커스터마이징 분포까지 반영하지는 않음
- 노트북은 약
60%배터리, 전원 미연결,20°C방에서 열평형 상태에 가깝게 둔 뒤 테스트함 - 모바일은 약
100%충전 상태에서 전원 연결, 다른 앱과 탭 없이 테스트함 - 실제 사용자는 같은 기기에서도 더 많은 앱과 백그라운드 작업 때문에 대부분 더 나쁜 성능을 볼 가능성이 높음
- 크기는 모바일에서 측정되어 모바일과 데스크톱이 다른 자산을 받을 경우 모바일 자산 크기를 반영함
CPU는 메인 스레드 CPU 시간으로 측정했으며, 다른 스레드 시간은 기록했지만 지표에는 사용하지 않음
사이트별 주목 사례
- Wix는
Tecno Spark 8C에서 스크롤이 제대로 안정되지 않고,Itel P32에서는 비결정적으로 실패함 - Patreon은 초기 로드 숫자보다 스크롤 성능이 나빠, 오래된 글을 찾기 어려워 별도 Patreon 글 색인을 유지할 정도로 불편함
- Discourse는
LCP가 강하게 게임화되어 있고,M3 Max의1Gbps연결에서도 Chrome 측정LCP는115ms였지만 실제 콘텐츠는1.1s에 로드됨 - Bluesky는
Itel P32에서 빈 화면을 표시함 - Shopify의 첫 번째 실제 사용 사례 두 개는 테스트한 데모 페이지보다 둘 다 훨씬 느렸음
- Tumblr은
Itel P32에서 JavaScript 오류가 나지만, 그 덕분에 페이지가 더 빨리 로드되고 스크롤·링크 클릭은 동작했음 - MyBB는 모바일 버전을 제공하지 않아 Google에는 불리할 수 있지만, 느린 모바일에서는 스크롤과 탭이 실제로 잘 동작함
- Woo Commerce는 초기 로드 성능만으로 Shopify와 비교하기 어렵고, 장바구니·체크아웃 같은 실제 흐름까지 포함한 별도 비교가 필요해 표에서 제외됨