성능 회귀는 재현하기가 매우 어려워 모바일 개발자에게 큰 장애물이 됩니다. ANR 비율과 같은 신호는 프로덕션에서 어떤 문제가 발생하는지 나타내지만, 성능 문제를 야기한 특정 코드 줄을 정확히 찾아내려면 과거에는 철저한 수동 재현이나 추측에 기반한 시행착오 실험이 필요했습니다.
Datadog는 Google과 협력하여 Android 15 이상 기기에서 사용할 수 있는 ProfilingManager API를 실사용자 모니터링(RUM) 및 지속적 프로파일링 플랫폼에 통합하여 이러한 불편을 완화했습니다. 이 통합은 디버깅 워크플로를 변환하여 개발자가 표면 수준의 증상을 넘어 성능 병목 현상의 이유를 감지할 수 있도록 지원합니다.
Datadog은 이 시스템 수준 API를 활용하여 2026년 6월 Datadog 내부 데이터에 따라 전 세계에서 매주 수백만 개의 프로덕션 프로필을 처리합니다. 엔지니어링팀에 실제 성능에 대한 새로운 수준의 가시성을 제공하면서도 프로덕션 규모 성능 모니터링을 위한 낮은 런타임 오버헤드를 유지합니다.
ProfilingManager의 영향
ProfilingManager는 Android 15에서 도입된 시스템 서비스로, 앱이 프로덕션 환경에서 직접 호출 스택 샘플, 필드 트레이스, 메모리 힙 덤프와 같은 실적 데이터를 프로그래매틱 방식으로 수집할 수 있도록 지원합니다. 이 기능을 통해 엔지니어링 패러다임이 사후 대응적인 수동 재현에서 선제적인 현장 분석으로 전환됩니다.
예를 들어 Google 커뮤니케이션 앱은 필드 추적을 사용하여 최신 고성능 하드웨어에서 콜드 스타트 시간이 더 느린 이유를 조사했습니다. 엔지니어는 필드에서 수집한 트레이스를 살펴보고 다양한 기기 유형의 트레이스를 비교하여 숨겨진 일정 관리 문제를 발견했습니다. 앱 시작 중에 백그라운드 텍스트 음성 변환 서비스가 불필요하게 사전 워밍되고 있었습니다. 트레이스에 따르면 이 백그라운드 프로세스가 기기의 성능이 가장 높은 빅 CPU 코어를 독점하여 앱의 기본 스레드가 사전 로드가 발생하는 동안 절전 모드로 전환되었습니다.
Android 코드 수준 가시성 문제 해결
ProfilingManager가 구현되기 전에는 Datadog의 실제 사용자 모니터링 (RUM)이 사용자 여정을 평가하기 위해 높은 수준의 애플리케이션 상태와 세션 수준 원격 분석에 중점을 두었습니다. 엔지니어링팀은 초기 표시 시간, ANR 비율, CPU 부하, 고정된 프레임과 같은 Android 성능 신호를 모니터링할 수 있습니다. 이러한 통계는 네트워크 지연 시간, 터치 이벤트, 기본 스레드 정지와 같은 세부적인 상호작용으로 확장되었습니다. 하지만 이 데이터는 필드에서 발생하는 성능 병목 현상을 효과적으로 강조했지만 이러한 실패의 근본 원인을 파악할 수 있는 명확한 경로는 제공하지 않았습니다.
이 문제를 해결하기 위해 Datadog는 성능에 미치는 영향이 최소화된 상태로 프로덕션의 기기에서 직접 Android 트레이스를 캡처할 수 있는 프로파일링 엔진이 필요했습니다. Android 디버그 API를 사용하여 자체 트레이스 프로세서를 작성하는 등 대체 접근 방식을 평가한 후 팀은 평가한 프로파일링 옵션 중 가장 성능이 우수하고 샘플링 결정 오버헤드를 OS로 오프로드하는 ProfilingManager를 선택했습니다.
ProfilingManager는 CPU 트레이스, 호출 스택 샘플링, Java 힙 덤프 및 네이티브 힙 프로필을 통한 메모리 분석 등 다양한 수집 방법을 지원합니다. 이를 통해 개발자는 프로덕션 빌드를 프로파일링하고, 트레이스 파일을 외부 저장소에 업로드하고, Perfetto 트레이스 분석기 UI에서 검토할 수 있습니다. SaaS 제공업체인 Datadog는 SDK를 통해 수집된 이러한 프로필을 업로드, 시각화, 분석하여 애플리케이션 상태에 대한 통합된 뷰를 제공합니다.
ProfilingManager는 통합 관측 가능성 API 내에서 충실도가 높은 원격 분석을 중앙 집중화하여 Datadog와 그 클라이언트가 다음과 같은 주요 기술적 이점을 통해 복잡한 Android 성능 회귀를 사전 예방적으로 모니터링, 조사, 수정할 수 있도록 지원합니다.
- 세부 세션 진단: ProfilingManager는 직접 OS 수준 추적 데이터를 제공하여 디버그 가능성을 향상하고 시스템 서비스로 맞춤 로깅의 일반적인 가시성 및 정렬 문제를 극복합니다. 자세히 알아보려면 개발자가 Datadog에서 이러한 트레이스를 다운로드하여 Perfetto UI와 같은 시각화 도구에서 자세히 조사할 수 있습니다.
- 자동 원격 분석 트리거: Datadog은 기본 시스템 이벤트를 활용하여 주요 최적화 지점에서 트레이스 녹화를 시작하므로 맞춤 수집 로직을 빌드할 필요가 없습니다. 초기 출시에서는 APP_FULLY_DRAWN 신호에 중점을 두지만 ANR, OOM, COLD_START 트리거를 포함하도록 모니터링 가능성을 확장할 계획이 이미 있습니다.
- 사전 트레이스 스냅샷: ProfilingManager는 시스템 수준 Perfetto 서비스 (추적됨)와 직접 인터페이스하여 예측할 수 없는 문제를 포착하도록 설계된 사전 백그라운드 녹화 모델을 활용합니다. 이를 통해 개발자는 성능 이상으로 이어지는 이벤트를 정확하게 시각화하여 수동 계측을 통해 가능한 수준을 초과하는 통계를 얻을 수 있습니다.
- 대규모 병목 현상 감지: Datadog는 Datadog의 전 세계 고객 기반에서 원격 분석을 종합하여 고유한 하드웨어 구성과 가변 네트워크 환경에서만 발생하는 회귀를 발견할 수 있습니다.
- 시스템 적용 리소스 안정성: API는 샘플링 추적 수집을 활용하여 성능 및 사용자 환경 영향이 눈에 띄지 않도록 합니다.
- 온디바이스 데이터 제어: ProfilingManager는 프로필이 앱에 제공되기 전에 온디바이스의 다른 프로세스에서 관련 없는 정보를 필터링합니다. 이렇게 하면 파일 크기가 최소화되고 앱의 프로세스와 관련된 데이터만 제공됩니다.
실제 앱을 최적화하기 위해 매주 수백만 개의 프로필 처리
전역 모니터링 SDK에 시스템 수준 프로파일링 API를 통합하려면 인프라 문제를 해결해야 했습니다. ProfilingManager는 매우 상세한 성능 트레이스를 생성하므로 Datadog 엔지니어링팀은 서버 측에서 대규모로 이러한 프로필을 파싱하고 분석할 수 있는 파이프라인을 빌드해야 했습니다. Datadog는 프로필 수집 외에도 샘플링 빈도와 애플리케이션에 관한 의미 있는 통계를 생성할 수 있을 만큼 충분한 데이터를 수집하는 것의 균형을 맞추는 것이 중요하다고 강조합니다. Datadog는 ProfilingManager의 내장 비율 제한을 중요한 안정성 보호 장치로 사용하여 과도한 원격 분석 요청으로 인해 사용자 기기가 과부하되지 않도록 방지합니다.
이 팀은 몇 달 동안 Datadog의 자체 네이티브 Android 애플리케이션과 여러 초기 도입자의 애플리케이션을 프로파일링하여 빠르고 오류 없는 출시 환경을 보장하고 성능 감지 알고리즘을 개선하기 위해 수백만 개의 프로필을 수집했습니다. 현재 프로덕션 통합은 다양한 Android 기기에서 원활하게 확장됩니다.
결론
Datadog는 Android의 ProfilingManager API를 통합하여 고객을 위해 백엔드 시스템과 모바일 클라이언트 애플리케이션 간의 가시성 격차를 성공적으로 해소했습니다. Datadog는 기기 오버헤드가 미미한 수백만 개의 프로필을 매주 처리하여 Android 개발자에게 복잡한 성능 버그를 즉시 진단하는 데 필요한 코드 수준의 통계를 제공하므로 개발자가 더 원활한 애플리케이션을 빌드하고 Play 스토어에서 앱의 성능 신호를 개선할 수 있습니다. ProfilingManager API를 성능 모니터링 가능성 프레임워크에 직접 적용하려면 문서를 참고하세요.
향후 Datadog는 Android 프로파일링 데이터를 코딩 에이전트가 성능 병목 현상을 자율적으로 해결할 수 있는 최상위 입력으로 만들어 감지 및 해결 간의 피드백 루프를 닫는 것을 목표로 합니다. Datadog는 개발자가 Android 프로파일링에 광범위하게 액세스할 수 있도록 노력하고 있습니다.
ProfilingManager에서 제공하는 Datadog 실제 사용자 모니터링 기능을 시작하려면 Datadog 모바일 실제 사용자 모니터링을 참고하세요.
-
우수사례Karrot은 사용자가 인증된 다른 사용자와 상품을 구매, 판매, 교환할 수 있는 세부 지역의 커뮤니티 중심 P2P 마켓 앱입니다. 2015년 대한민국에서 출시된 이후 이 플랫폼은 전 세계 시장으로 확장되어 4,300만 명이 넘는 등록 사용자를 확보했습니다.
Thomas Ezan, Tracy Agyemang • 2분 읽음 -
우수사례대부분의 Android 앱이 Kotlin을 기본 언어로 채택하면서 kotlinx.coroutines는 비동기 프로그래밍의 사실상 표준이 되었습니다. 이 라이브러리는 Kotlin에 네이티브인 동시 흐름을 관리하는 잘 설계되고 구조화된 방법을 제공합니다.
Jonathan Starup, Andrei Shikov • 전문 길이: 7분 -
방법앱 성능은 흔히 원활한 UI와 빠른 시작 시간과 동일시되지만, 메모리는 이러한 눈에 보이는 측정항목이 구축되는 조용한 기반 역할을 합니다. 기기 메모리가 그 어느 때보다 중요해지는 변화가 일어나고 있다는 것은 공공연한 사실입니다.
Android 개발 관련 최신 정보를 이메일로 받아 보세요.