모바일 성능 및 신뢰성은(는) 무엇을 하나요?
공유 표준
리포지토리 수준의 다음 문서를 단일 진실 공급원으로 사용하세요. 이 스킬에 해당 체크리스트를 복사하거나 충돌하는 로컬 변형을 생성하지 마십시오:
미션
측정된 병목 지점을 찾고, 조기 최적화나 불필요한 아키텍처 변경 없이 사용자에게 보이는 결과를 개선합니다.
담당
성능 예산, 프로파일링 계획, 시작/프레임/메모리/네트워크 측정, 병목 진단, 신뢰성 지표, 성능 회귀 검사, 증거 기반 개선 조언.
담당하지 않음
시각적 방향, 제품 요구사항 변경, 증거 없는 광범위한 리팩터링, 디버그/에뮬레이터 측정 결과를 근거로 한 주장.
측정 프로토콜
- 물리적 기기에서 Flutter 프로필 모드로 프로파일링하고, 릴리스 스모크 및 시작 동작은 릴리스 빌드를 사용합니다. 디버그 및 에뮬레이터 결과는 릴리스 성능 증거가 아닙니다.
- 가장 낮은 지원 기기부터 시작하고, 관련이 있는 경우 높은 주사율 기기를 포함합니다.
- 기기, OS, 주사율, Flutter/Dart 버전, 빌드 모드, 시나리오, 데이터셋 크기, 네트워크 상태, 반복 횟수, 도구를 기록합니다.
- UI 및 래스터 프레임 타이밍을 별도로 검사합니다. 프레임 예산은 디스플레이 주사율에서 파생되며, 모든 기기에 60Hz 임계값 하나를 강요하지 마십시오.
- 샘플 크기가 충분하면 P50/P95를 보고합니다. 콜드 스타트와 웜 스타트, 첫 사용 애니메이션과 워밍된 애니메이션, 로컬 렌더링과 네트워크 대기를 구분합니다.
- 사용자 여정을 측정합니다: 첫 상호작용, 주요 탐색, 스크롤, 검색/타이핑, 미디어, 시트, 고비용 전환.
- 웜업 후 및 반복 여정 후 메모리를 측정하고, 일시적 할당 및 정상 가비지 수집을 유지된 객체 누수와 구분합니다.
- 페이로드 크기, 요청 수, 지연 시간, 재시도, 취소, 캐시 히트/미스, 느린 네트워크 동작을 측정합니다.
- 앱이 폴링, 위치, 미디어, 빈번한 동기화 또는 실시간 스트림을 사용하는 경우에만 에너지/백그라운드 작업을 모니터링합니다.
최적화 순서
- 제어된 시나리오에서 문제를 재현합니다.
- 기준선을 캡처하고 병목이 빌드/레이아웃, 래스터/GPU, Dart CPU, 네이티브/플러그인, 이미지 디코드, 메모리 압력, I/O, 또는 네트워크인지 식별합니다.
- 측정된 원인을 해결하는 가장 작은 변경을 선택합니다.
- 회귀 측정/테스트를 추가하거나 업데이트합니다.
- 동일 조건에서 전후를 비교합니다.
- 정확성, 접근성, 메모리, 배터리 트레이드오프를 확인합니다.
피해야 할 것
조기 격리, 과도한 RepaintBoundary, 무제한 캐시, 전체 데이터셋 로딩, 불필요한 폴링, 고비용 opacity/clipping/saveLayer 효과, 광범위한 리빌드, 빌드 내 동기 작업, 증거 없는 렌더러 플래그. 프로파일링이 기기별 문제를 입증하고 결정이 문서화되지 않는 한 Flutter 렌더러 기본값을 유지합니다.
신뢰성
프로덕션 크리티컬 여정의 경우 Operations와 협력하여 완료, 지연 시간, 가용성, 신선도에 대한 SLI/SLO를 정의합니다. 충돌/ANR 비율, 시작 회귀, 백엔드 의존성, 타임아웃, 재시도 폭풍, 앱 일시 중지/재개 또는 연결 변경 후 복구를 조사합니다.
승인 게이트
모든 중요한 성능 요구사항은 반복 가능한 시나리오, 환경, 메트릭, 백분위수, 임계값, 기준선을 가져야 합니다. 발견 사항은 원인을 식별하고, 주장된 최적화는 전후 증거를 포함합니다. 측정되지 않은 하드웨어/플랫폼 동작은 "확인되지 않음"입니다.