핀터레스트(Pinterest), 안드로이드(Android) 앱 성능 측정 자동화 시스템 구축
핀터레스트(Pinterest)는 사용자 체감 지연 시간(User Perceived Latency) 측정을 위해 맞춤형 측정 로직(Customized Measurement Logic)을 각 UI 표면에 적용해야 하는 문제에 직면함
Base UI 클래스(Base UI Class)에 Visually Complete 로직을 통합하여 모든 UI 표면의 지연 시간을 자동 측정하는 시스템 구축
PerfImageView, PerfTextView, PerfVideoView 등 공통 미디어 뷰 인터페이스(Common Media View Interfaces)를 정의하고, View Tree 순회(View Tree Traversal)를 통해 렌더링 상태를 판단
안드로이드(Android)에서 성공적으로 도입 후 iOS 및 웹 플랫폼으로 확장하여 전반적인 성능 가시성(Performance Visibility) 확보 및 개선을 유도
사용자 체감 지연 시간(User Perceived Latency) 측정의 어려움
본문에 따르면 사용자 체감 지연 시간(User Perceived Latency)은 각 UI 표면(Surface)마다 Visually Complete의 정의가 달라, 맞춤형 측정 로직(Customized Measurement Logic) 구현이 불가피했다.
문제점: 새로운 UI 표면(Surface)이 추가될 때마다 엔지니어(Engineer)들은 별도의 측정 로직을 구현해야 했고, 이는 개발 생산성 저하(Reduced Development Productivity)로 이어짐
해결책: Base UI 클래스(Base UI Class)에 Visually Complete 로직을 통합하여, 모든 UI 표면에서 일관된 성능 측정 가능
결과: 새로운 기능 개발 시에도 별도의 측정 로직 구현 없이 자동으로 성능 지표(Performance Metrics) 확보 가능
뷰 트리(View Tree) 순회를 통한 렌더링 상태 판단
핀터레스트(Pinterest)는 뷰 트리(View Tree)를 순회하며 PerfImageView, PerfTextView, PerfVideoView 등 공통 미디어 뷰 인터페이스(Common Media View Interfaces)의 렌더링 상태를 판단한다.
PerfImageView, PerfTextView, PerfVideoView: isDrawn(), isVideoLoadStarted() 등 렌더링 상태를 보고하는 메서드(Method) 포함
RootView: BaseSurface 레벨에서 RootView에 접근하여 가시적인 뷰(Visible View)들을 순회
판단 기준: 모든 PerfImageView, PerfTextView 인스턴스가 그려졌는지, PerfVideoView의 비디오 로드가 시작되었는지 여부
이러한 방식을 통해 각 UI 표면의 Visually Complete 시점(Visually Complete Point)을 정확하게 파악하고, 사용자 체감 지연 시간(User Perceived Latency)을 측정한다.
안드로이드(Android) 플랫폼에서의 실제 적용 사례
본 시스템은 안드로이드(Android) 플랫폼에서 60개 이상의 UI 표면(Surface)에 적용되어 실시간 사용자 체감 지연 시간(User Perceived Latency)을 시각화하고 있다.
효과: 단기적으로 사용되는 기능(예: 크리스마스 랜딩 페이지)의 지연 시간(Latency) 측정 가능
장점: 모든 UI 표면의 성능을 동일한 기준으로 비교 분석 가능
결과: 제품 개발팀(Product Team)의 긍정적인 반응을 얻었으며, 각 표면의 성능 개선을 유도
이러한 성공적인 사례를 바탕으로 iOS 및 웹 플랫폼으로 확장하여, 전반적인 성능 관리(Overall Performance Management)를 강화했다.
성능 측정 자동화 시스템의 확장성
핀터레스트(Pinterest)는 안드로이드(Android)에서 성공적인 시스템 구축 후, iOS 및 웹 플랫폼으로의 확장을 통해 다양한 환경에서의 성능 측정(Performance Measurement)을 지원한다.
iOS: 안드로이드(Android)와 유사한 방식으로 성능 측정 자동화 시스템(Performance Measurement Automation System) 구축
웹: 웹 환경에 맞는 측정 방식 도입
기대 효과: 모든 플랫폼에서 일관된 성능 지표(Performance Metrics)를 확보하고, 개발 생산성(Development Productivity) 향상 및 사용자 경험(User Experience) 개선
결과적으로, 핀터레스트(Pinterest)는 성능 측정 자동화를 통해 지속적인 성능 개선(Continuous Performance Improvement)을 추구한다.