Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 최적화 - 성능 모니터링 시스템 구축 사례 XCMetrics (스포티파이, XCMetrics 오픈소스) 본문

최적화하기

[iOS - swift] 최적화 - 성능 모니터링 시스템 구축 사례 XCMetrics (스포티파이, XCMetrics 오픈소스)

jake-kim 2025. 10. 22. 01:06

XCMetrics 오픈소스

XCMetrics를 통해 성능 관련 내용들을 시각화

  • 오픈소스
    • github: https://github.com/spotify/XCMetrics
    • 스포티파이가 만든 오픈소스이며, 성능에 관해 실시간으로 모니터링 할 수 있는 시스템
    • xcactivitylog 형식으로 저장된 Xcode 및 xcodebuild 로그를 파싱할 수 있는 도구인 XCLogParser를 기반으로 구축
    • Spotify iOS 앱에서 약 100만 개의 빌드와 100억 개 이상의 단계를 수집했고, 이를 통해 프로젝트 구조 및 아키텍처와 관련하여 중요하고 정보에 기반한 결정을 내릴 수 있음
  • 이점
    • xcactivitylog 파일에서 데이터를 추출하여 빌드 시간, 경고, 오류 및 기타 메타데이터를 원하는 방식으로 볼 수 있음
      • 정렬, 검색이 가능하여, 어떤 부분이 빌드 시간이 오래걸리고 언제부터 문제가 있었는지 파악이 가능

xcmetrics 콘솔

XCMetrics의 원리

  • Xcode는 테스트, 프로덕션 환경 모두 xcodebuild는 xcactivitylog라는 로그 파일을 생성함
  • xcactivitylog라는 로그 파일을 보면, 경고, 오류, 빌드 시간 등 유용한 성능에 관한 정보를 얻을 수 있음

XCMetrics 구조

  • 백엔드쪽은 Swift로 작성되어있고, multipart request를 통해 메타데이터를 첨부
  • 데이터베이스는 ProgresSQL이 사용되어 있으며, 데이터가 날짜별로 분기되어있음

https://engineering.atspotify.com/2021/1/introducing-xcmetrics-our-all-in-one-tool-for-tracking-xcode-build-metrics

스포티파이와 XCMetrics

  • 스포티파이는 아래 사진과 같이 코드베이스와 상태를 모니터링하기 위해 매일 사용되는 데이터 파이프라인과 대시보드가 존재
    • XCMetrics를 통해 로그를 파악하면서 프로젝트 구조에 대해서 많은 개선을 시도함
    • 빌드 숫자, 코드 커버리지, 통계, 용량, warnings, errors 등 파악에 용이

* 참고

- https://github.com/spotify/XCMetrics

- https://engineering.atspotify.com/2021/1/introducing-xcmetrics-our-all-in-one-tool-for-tracking-xcode-build-metrics

Comments