스레드 iOS 앱 성능 측정 방법 (출처: Meta 엔지니어링 블로그)
-
스레드 iOS 앱 성능 기준의 대전제는 최고의 사용자 경험을 제공하는 것. 이를 위해 앱이 빠르고 뛰어나야 하며 다음과 같은 성능 측정 지표를 선정하여 사용 중.
-
%FIRE (Frustrating Image-Render Experience): 짜증스러운 이미지 렌더링 경험의 비율. 화면에 이미지가 떠야할 때 1초 이상 걸리거나 사용자가 기다리지 못하고 떠난 경우를 느린 로드로 간주하고 이 비율이 전체 이미지 중 15% 이상이면 문제가 심각하다고 판단.
-
TTNC (Time-To-Network Content): 앱이 시작된 후 피드를 로드하는데 걸리는 시간. 사용자가 로딩 화면이나 스피너를 너무 오래 봐야 한다면 앱을 닫아버림. 이를 개선하기 위해 스레드 앱의 크기를 줄이는 작업을 하여 현재 인스타그램 대비 1/4 수준. 개발시 앱 크기가 커지려고 하면 경고가 뜨도록 함.
-
cPSR(Creation-Publish Success Rate): 사용자가 텍스트, 사진, 동영상을 게시하려고 할 때 성공률. 특히 사진과 동영상은 업로드 시간이 길고 데이터 사용량이 많아 실패 가능성이 높고 앱을 백그라운드로 전환하면 업로드가 중단될 수도 있음. 이를 해결하기 위해 다양한 전략이 도입.
-
초안(Drafts) 저장: 업로드가 실패하더라도 게시물을 잃지 않도록. 도입 후 게시 관련 사용자 불만 보고 26% 감소. 업로드 하려다가 게시물을 잃으면 사용자는 큰 좌절감을 느낌.
-
Optimistic 텍스트 게시(Blazing fast text posts): 게시 요청을 백엔드가 모두 처리하고 응답을 주도록 했으나 이제 백엔드가 게시 요청을 받는 즉시 게시되었다는 토스트를 띄움. 이후 처리에 실패하면 콜백을 받도록. 일단 요청이 수신되면 성공 가능성이 매우 높기에.
- 탐색 지연 시간 (Navigation latency): 앱 시작 후 사용자가 특정 화면으로 이동할 때 콘텐츠가 렌더링되는 데 걸리는 시간을 측정.
-
프로필, 활동 피드 등 특정 화면으로 이동할 때 의도적으로 지원 시간을 추가하여 사용자의 반응을 보는 경계 테스트를 수행했음. 결과적으로 iOS 사용자는 지연 시간에 민감하며 길어질수록 게시물도 덜 읽고, 덜 게시하며, 앱과의 상호작용이 줄어듦.
-
SLATE라는 탐색 지연 시간을 자동으로 측정하는 툴을 개발하여 사용 중. 개발자가 성능 마커를 설정하지 않아도 공통 컴포넌트를 사용하는 한 자동으로 데이터를 수집하여 성능을 분석함.
-
GraphQL을 사용. 네트워크 데이터 전송량을 줄이는 데 효과적이며 새로운 기능 개발을 단순화. 팔로워 목록 화면에서 GraphQL과 REST를 테스트한 결과 유사한 성능을 보임. 이 역시 SLATE로 검증함.
- 앞으로 스레드 서비스에 새로운 기능들을 추가하면서도 이런 성능 지표들을 지속적으로 모니터링하여 사용자 경험이 저하되지 않도록 할 것임.
