우수사례

Datadog은 ProfilingManager를 통해 수백만 개의 심층적인 성능 통계를 제공합니다.

읽는 데 4분 소요

성능 회귀는 재현하기가 매우 어려워 모바일 개발자에게 큰 병목 현상이 됩니다. ANR 비율과 같은 신호는 프로덕션에서 어떤 문제가 발생하는지 나타내지만, 성능 문제를 야기한 특정 코드 줄을 정확히 찾아내려면 이전에는 철저한 수동 재현이나 추측에 기반한 시행착오 실험이 필요했습니다.

Datadog는 Google과 협력하여 Android 15 이상 기기에서 사용할 수 있는 ProfilingManager API를 실사용자 모니터링(RUM) 및 지속적 프로파일링 플랫폼에 통합하여 이러한 불편을 완화했습니다. 이 통합은 디버깅 워크플로를 변환하여 개발자가 표면 수준의 증상을 넘어 성능 병목 현상의 이유를 감지할 수 있도록 지원합니다.

Datadog은 이 시스템 수준 API를 활용하여 2026년 6월 Datadog 내부 데이터에 따라 전 세계에서 매주 수백만 개의 프로덕션 프로필을 처리합니다. 엔지니어링팀에 실제 성능에 대한 새로운 수준의 가시성을 제공하면서도 프로덕션 규모 성능 모니터링을 위한 낮은 런타임 오버헤드를 유지합니다.

ProfilingManager의 영향

ProfilingManager는 Android 15에서 도입된 시스템 서비스로, 앱이 프로덕션 환경에서 직접 호출 스택 샘플, 필드 트레이스, 메모리 힙 덤프와 같은 실적 데이터를 프로그래매틱 방식으로 수집할 수 있도록 지원합니다. 이 기능을 사용하면 엔지니어링 패러다임이 사후 대응적인 수동 재현에서 선제적인 현장 분석으로 전환됩니다.

AANDDM_DataDog_Quote_01.png

예를 들어 Google 커뮤니케이션 앱은 필드 추적을 사용하여 최신 고성능 하드웨어에서 콜드 스타트 시간이 더 느린 이유를 조사했습니다. 엔지니어는 필드에서 수집한 트레이스를 살펴보고 다양한 기기 유형의 트레이스를 비교하여 숨겨진 일정 문제를 발견했습니다. 앱 시작 중에 백그라운드 텍스트 음성 변환 서비스가 불필요하게 사전 워밍되고 있었습니다. 트레이스에 따르면 이 백그라운드 프로세스가 기기의 성능이 가장 높은 빅 CPU 코어를 독점하여 앱의 기본 스레드가 예열이 발생하는 동안 절전 모드로 전환되었습니다.

Android 코드 수준 공개 상태 문제 해결

ProfilingManager가 구현되기 전에는 Datadog의 실제 사용자 모니터링 (RUM)이 사용자 여정을 평가하기 위해 높은 수준의 애플리케이션 상태와 세션 수준 원격 분석에 중점을 두었습니다. 엔지니어링팀은 초기 표시 시간, ANR 비율, CPU 부하, 고정된 프레임과 같은 Android 성능 신호를 모니터링할 수 있습니다. 이러한 통계는 네트워크 지연 시간, 터치 이벤트, 기본 스레드 멈춤과 같은 세부적인 상호작용으로 확장되었습니다. 하지만 이 데이터는 필드에서 어떤 성능 병목 현상이 발생하는지 효과적으로 보여주지만 이러한 실패의 근본 원인을 파악할 수 있는 명확한 방법은 제공하지 않습니다.

AANDDM_DataDog_Quote_02.png

이 문제를 해결하기 위해 Datadog는 성능에 미치는 영향이 최소화된 상태로 프로덕션 환경의 기기에서 Android 트레이스를 직접 캡처할 수 있는 프로파일링 엔진이 필요했습니다. Android 디버그 API를 사용하여 자체 추적 프로세서를 작성하는 등 대체 접근 방식을 평가한 후 팀은 ProfilingManager가 평가한 프로파일링 옵션 중 가장 성능이 우수하고 샘플링 결정 오버헤드를 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 트리거를 포함하도록 모니터링 가능성을 확장할 계획이 이미 있습니다.
  • 사전 추적 스냅샷: 시스템 수준 Perfetto 서비스 (추적됨)와 직접 인터페이스하여 ProfilingManager는 예측할 수 없는 문제를 포착하도록 설계된 사전 백그라운드 녹화 모델을 활용합니다. 이를 통해 개발자는 성능 이상으로 이어지는 이벤트를 정확하게 시각화하여 수동 계측을 통해 얻을 수 있는 수준을 초과하는 통계를 얻을 수 있습니다.
  • 대규모 병목 현상 감지: Datadog는 Datadog의 글로벌 고객 기반 전반에서 원격 분석을 종합하여 고유한 하드웨어 구성과 가변 네트워크 환경에서만 발생하는 회귀를 발견할 수 있습니다.
  • 시스템 적용 리소스 안정성: API는 샘플링 추적 수집을 활용하여 성능 및 사용자 경험 영향이 눈에 띄지 않도록 합니다.
  • 온디바이스 데이터 제어: ProfilingManager는 프로필이 앱에 제공되기 전에 온디바이스의 다른 프로세스에서 관련 없는 정보를 필터링합니다. 이렇게 하면 파일 크기가 최소화되고 앱의 프로세스와 관련된 데이터만 제공됩니다.

수백만 개의 주간 프로필을 처리하여 실제 앱 최적화

datadog-profiling-blogpost-final.png
ProfilingManager로 구동되는 스택 샘플링을 사용한 Datadog의 초기 표시 시간 측정 예

전역 모니터링 SDK에 시스템 수준 프로파일링 API를 통합하려면 인프라 문제를 해결해야 했습니다. ProfilingManager는 매우 상세한 성능 트레이스를 생성하므로 Datadog 엔지니어링팀은 서버 측에서 대규모로 이러한 프로필을 파싱하고 분석할 수 있는 파이프라인을 빌드해야 했습니다. 프로필 수집 외에도 Datadog는 샘플링 빈도와 애플리케이션에 관한 의미 있는 통계를 생성할 만큼 충분한 데이터를 수집하는 것의 균형을 맞추는 것이 중요하다고 강조합니다. Datadog는 ProfilingManager의 기본 제공 비율 제한을 중요한 안정성 보호 장치로 사용하여 과도한 원격 분석 요청으로 인해 사용자 기기에 과부하가 걸리지 않도록 방지합니다. 

이 팀은 몇 달 동안 Datadog의 자체 네이티브 Android 애플리케이션과 여러 초기 도입자의 애플리케이션을 프로파일링하여 빠르고 오류 없는 출시 환경을 보장하고 성능 감지 알고리즘을 개선하기 위해 수백만 개의 프로필을 수집했습니다. 현재 프로덕션 통합은 다양한 Android 기기에서 원활하게 확장됩니다. 

결론

Android의 ProfilingManager API를 통합함으로써 Datadog는 고객을 위해 백엔드 시스템과 모바일 클라이언트 애플리케이션 간의 가시성 격차를 성공적으로 해소했습니다. Datadog는 기기 오버헤드가 미미한 수백만 개의 프로필을 매주 처리하여 Android 개발자에게 복잡한 성능 버그를 즉시 진단하는 데 필요한 코드 수준의 통계를 제공하므로 개발자가 더 원활한 애플리케이션을 빌드하고 Play 스토어에서 앱의 성능 신호를 개선할 수 있습니다. 성능 관측 가능성 프레임워크에 ProfilingManager API를 직접 적용하려면 문서를 참고하세요.

향후 Datadog는 Android 프로파일링 데이터를 코딩 에이전트가 성능 병목 현상을 자율적으로 해결하는 데 사용하는 기본 입력으로 만들어 감지와 해결 간의 피드백 루프를 닫는 것을 목표로 합니다. Datadog은 개발자가 Android 프로파일링에 광범위하게 액세스할 수 있도록 노력하고 있습니다.

ProfilingManager로 구동되는 Datadog 실제 사용자 모니터링 기능을 시작하려면 Datadog 모바일 실제 사용자 모니터링을 참고하세요.

계속 읽기