Firebase Performance — 개요, 모니터링 도구 및 메트릭

저자: IT Sectr 게시일: 2026-05-30 읽는 시간: 10 분

Firebase Performance Monitoring은 모바일 앱의 성능을 실시간으로 추적하는 Google의 무료 도구입니다. 이 서비스는 기본 시나리오에서 코드를 작성할 필요 없이 시작 시간, 화면 렌더링 속도 및 HTTP 요청 시간의 메트릭을 자동으로 수집합니다. Google Firebase, 2025에 따르면 SDK는 추가 구성 없이 네트워크 요청의 최대 90%를 자동으로 추적합니다. 이 도구는 Firebase 에코시스템 내에서 Android, iOS 및 웹 애플리케이션에서 사용할 수 있습니다.

핵심 사항

  • Firebase Performance — 모바일 애플리케이션을 위한 무료 실시간 성능 모니터링.
  • 자동 추적은 코드를 작성하지 않고 시작, 화면 및 네트워크 요청의 메트릭을 수집합니다.
  • 사용자 지정 추적을 사용하면 주문 완료부터 이미지 로딩까지 모든 비즈니스 시나리오를 추적할 수 있습니다.
  • HTTP 메트릭에는 각 요청의 응답 시간, 페이로드 크기 및 상태 코드가 포함됩니다.
  • Firebase 콘솔은 백분위수 필터링을 통해 기기, OS 버전 및 지역별 요약을 제공합니다.

Firebase Performance Monitoring이란?

Firebase Performance Monitoring은 모바일 애플리케이션의 성능 메트릭을 수집하고 표시하는 Google의 클라우드 서비스입니다. 이 서비스는 Firebase 도구 세트의 일부이며 별도 결제가 필요하지 않습니다 — 모니터링은 무료 Spark 등급(일일 500,000 이벤트 제한)과 유료 Blaze 등급에서 사용할 수 있습니다. Firebase Performance는 표준 시나리오(콜드 스크린 시작, 웜 시작, 백그라운드 HTTP 요청)에 대해 자동으로 추적을 생성합니다.

서비스 아키텍처는 traces(추적)와 metrics(메트릭)의 두 가지 데이터 유형을 기반으로 합니다. 추적은 시작과 끝이 있는 시간 간격으로, 그 안에서 실행 시간이 측정됩니다. 메트릭은 숫자 값입니다: 응답 크기, 오류율, 바이트/초 속도. 각 추적에는 여러 메트릭이 포함될 수 있습니다. SDK는 기기에서 데이터를 수집하고 버퍼링한 후 사용자 경험에 영향을 주지 않도록 낮은 지연 시간 우선순위로 백그라운드에서 Firebase로 전송합니다.

Google I/O 2024 보고서에 따르면 Firebase Performance는 전 세계적으로 200만 개 이상의 애플리케이션에서 사용됩니다. 알림이 구성된 경우 Firebase Performance를 사용한 성능 문제 감지 평균 시간은 출시 후 15분입니다. 모니터링이 없으면 유사한 문제는 일반적으로 사용자의 지원팀 불만을 통해 2~3일 이내에 감지됩니다.

Firebase Crashlytics와의 차이점

Crashlytics는 충돌 및 치명적 오류를 추적합니다 — 애플리케이션이 예기치 않게 종료되는 상황입니다. Firebase Performance는 실행 중인 애플리케이션의 성능을 모니터링합니다: 느린 화면, 긴 네트워크 요청, UI 응답 지연. Crashlytics는 "앱이 왜 충돌했는가?"라는 질문에 답하고, Performance는 "앱이 왜 느린가?"라는 질문에 답합니다. 두 서비스는 단일 SDK(Firebase Core)를 통해 통합되며 데이터는 Firebase 콘솔의 인접 섹션에 표시됩니다.

백분위수 메트릭

Firebase Performance는 평균값을 표시하지 않고 백분위수(P50, P75, P90, P95, P99)만 표시합니다. 이는 성능에 매우 중요합니다: 평균 시간은 이상값을 숨깁니다. 99명의 사용자가 200ms에 화면을 열고 한 명이 20초에 열면 평균은 약 400ms로 수용 가능해 보입니다. P99는 20초를 표시합니다 — 이것이 실제 문제입니다. Firebase는 타임라인에 백분위수를 표시하여 시간 단위 정확도로 회귀를 추적할 수 있습니다.

Firebase Performance Monitoring 작동 방식

Firebase Performance SDK는 표준 통합을 통해 애플리케이션에 포함됩니다: Gradle(Android)에 종속성 추가 또는 CocoaPods(iOS)를 통해. 코드에서 Firebase를 초기화한 후 SDK는 추가 구성 없이 자동으로 메트릭 수집을 시작합니다. 중요한 원칙은 지연 수집입니다: SDK는 데이터를 즉시 보내지 않고 축적한 후 네트워크 상태가 양호할 때 배치로 전송합니다.

iOS의 경우 SDK는 HTTP 요청을 가로채기 위해 NSURLProtocol을 사용하고, Android의 경우 OkHttp Interceptor를 사용합니다. 애플리케이션이 OkHttp를 사용하지 않는 경우 SDK가 자동으로 HttpURLConnection을 래핑합니다. 가로채진 요청에는 Content-Type, 응답 상태, 바이트 크기, 시간 등의 메타데이터가 추가됩니다. 모든 데이터는 TLS 1.3 암호화와 함께 HTTPS를 통해 Firebase 서버로 전송됩니다.

Firebase Performance의 주요 요구 사항 중 하나는 Gradle 플러그인 목록에서 마지막 플러그인이어야 한다는 것입니다. 순서가 위반되면 SDK가 모든 요청을 가로채지 못하거나 시작 시간을 잘못 측정할 수 있습니다. Firebase는 플러그인을 플러그인 블록 끝에, Crashlytics 및 기타 Google Services 플러그인 뒤에 배치할 것을 권장합니다.

groovy
// build.gradle (Module: app) — 올바른 플러그인 순서
plugins {
    id "com.android.application"
    id "org.jetbrains.kotlin.android"
    id "com.google.gms.google-services"
    id "com.google.firebase.crashlytics"
    id "com.google.firebase.firebase-perf"  // 마지막에!
}

dependencies {
    implementation platform("com.google.firebase:firebase-bom:33.0.0")
    implementation "com.google.firebase:firebase-perf"
}

자동 추적: 화면, 시작, 네트워크

Firebase Performance는 세 가지 유형의 자동 추적을 생성합니다: screen trace(화면 렌더링 시간), app start trace(앱 시작 시간), network request trace(HTTP 요청). Android의 screen trace는 Activity.onCreate 호출과 첫 번째 프레임 렌더링 완료 사이의 시간을 측정합니다. iOS의 경우 viewDidLoad와 viewDidAppear 사이의 시간이 측정됩니다. Firebase는 각 화면에 대해 자동으로 추적을 생성하며, Activity 또는 ViewController의 클래스 이름을 사용합니다.

App start trace는 두 가지 유형으로 나뉩니다: 콜드 스타트(앱이 처음부터 시작, 프로세스가 존재하지 않음)와 웜 스타트(앱이 백그라운드 상태에서 복원됨). 콜드 스타트는 모든 SDK 초기화, DEX 파일 로드 및 첫 번째 Activity 생성을 포함하므로 가장 중요한 메트릭입니다. Firebase는 프로세스가 시작된 순간부터 첫 번째 화면이 완전히 렌더링될 때까지를 콜드 스타트로 측정합니다. Google 권장 사항에 따르면 콜드 스타트는 P50에서 500ms, P99에서 2초를 초과하지 않아야 합니다.

Network request trace는 메타데이터(URL, 메서드, 응답 코드, 응답 크기, 전송 속도)와 함께 각 HTTP 요청을 자동으로 기록합니다. Firebase Performance 콘솔에서 URL 패턴으로 요청을 필터링할 수 있습니다 — 예를 들어 /api/v2/orders에 대한 모든 요청을 표시할 수 있습니다. 각 패턴에 대해 응답 시간 백분위수와 4xx/5xx 오류율이 표시됩니다. 이를 통해 개별 알림을 설정하지 않고도 특정 API의 성능 저하를 신속하게 감지할 수 있습니다.

화면 메트릭 상세

화면의 경우 Firebase Performance는 추가로 "frozen frames" 메트릭을 계산합니다 — 렌더링에 700ms 이상 걸린 프레임입니다. 이러한 UI 프리징은 사용자에게 "앱이 멈췄다"로 인식됩니다. 화면에 1% 이상의 frozen frames가 있으면 Firebase는 메트릭을 문제로 표시합니다. Android의 경우 SDK는 추가로 slow renders 메트릭(16ms 초과 프레임, 60FPS 손실)을 수집합니다. Screen trace와 frozen frames의 조합은 로딩 시간과 애니메이션 부드러움 모두에 대한 완전한 그림을 제공합니다.

비즈니스 시나리오를 위한 사용자 지정 추적

사용자 지정 추적을 사용하면 주문하기, 클라우드에 이미지 업로드, 데이터 동기화 등 모든 사용자 시나리오의 시간을 측정할 수 있습니다. 개발자는 코드에서 추적의 시작과 끝을 명시적으로 지정하고 시나리오 이름을 설정합니다. 자동 추적과 달리 사용자 지정 추적은 측정 대상을 완전히 제어할 수 있으며 필터링을 위한 속성을 추가할 수 있습니다.

각 사용자 지정 추적에는 속성이 포함될 수 있습니다 — 메타데이터로 추가되는 키-값 쌍입니다. 속성은 데이터를 세분화하는 데 도움이 됩니다: 예를 들어 "promo_user"와 "regular_user"에 대해 체크아웃 시간을 별도로 추적할 수 있습니다. Firebase Performance는 추적당 최대 5개의 속성과 최대 100개의 고유 속성 값을 지원합니다. 속성은 인덱싱되며 Firebase 콘솔에서 필터링에 사용할 수 있습니다.

Google I/O 2024 프레젠테이션에 따르면 Spotify 팀은 트랙 전환 시간 모니터링에 Firebase 사용자 지정 추적을 사용합니다. 이를 통해 오디오 버퍼 캐싱의 병목 지점을 식별하여 중간 전환 시간을 400ms에서 120ms로 줄였습니다. 주요 통찰은 "device_model" 속성으로 필터링하여 얻었습니다 — 문제는 Android 13을 사용하는 Samsung 기기에서만 나타났습니다.

kotlin
import com.google.firebase.perf.FirebasePerformance
import com.google.firebase.perf.metrics.Trace

class CheckoutTracker {

    private val firebasePerf = FirebasePerformance.getInstance()

    fun trackCheckoutFlow(userId: String, promoApplied: Boolean) {
        val trace: Trace = firebasePerf.newTrace("checkout_flow")
        trace.putAttribute("promo_user", promoApplied.toString())
        trace.putAttribute("user_tier", "premium")
        trace.start()

        // 체크아웃 시나리오 실행 중
        validateCart()
        processPayment()
        confirmOrder()

        trace.stop()
    }
}

Android 프로젝트에 Firebase Performance 통합

Android에 Firebase Performance를 통합하려면 세 단계가 필요합니다: google-services 플러그인 추가, Firebase BOM(Bill of Materials) 연결, firebase-perf 종속성 추가. Firebase Performance는 AppCompatActivity를 사용하는 경우 모든 Activity 및 프래그먼트에서 자동으로 작동합니다. Compose 화면의 경우 자동 screen trace가 Compose를 직접 지원하지 않으므로 Firebase는 사용자 지정 추적 사용을 권장합니다.

중요한 세부 사항: Firebase Performance Gradle 플러그인은 컴파일 시 애플리케이션의 바이트코드를 수정합니다. 플러그인은 모든 Activity 및 OkHttp 클라이언트에 계측 코드를 추가합니다. 이로 인해 빌드 시간이 5-10% 증가하고 APK 크기가 200-400KB 증가할 수 있습니다. 디버그 빌드에서는 Firebase Performance가 자동으로 비활성화됩니다 — 이는 로컬 개발 중 메트릭 왜곡을 방지합니다. 디버그에서 강제로 활성화하려면 매니페스트에서 firebasePerformanceInstrumentationEnabled 플래그를 사용합니다.

Firebase Performance는 iOS용 MetricKit과 Android용 Perfetto도 지원합니다 — 저수준 시스템 트레이서입니다. MetricKit는 운영 체제 수준에서 프레임 속도, CPU 및 메모리 사용량에 대한 데이터를 제공합니다. Firebase는 이 데이터를 집계하여 HTTP 추적 및 screen traces가 표시되는 동일한 콘솔에 표시하여 시스템 및 애플리케이션 원격 측정을 하나의 인터페이스에 결합합니다.

OkHttp를 사용한 HTTP 요청

kotlin
import okhttp3.OkHttpClient
import com.google.firebase.perf.network.FirebasePerfOkHttpClient

val client = OkHttpClient.Builder()
    .addInterceptor FirebasePerfOkHttpClient
    .build()

val request = Request.Builder()
    .url("https://api.example.com/orders")
    .build()

client.newCall(request).enqueue(object : Callback {
    override fun onFailure(call: Call, e: IOException) { /* handle */ }
    override fun onResponse(call: Call, response: Response) { /* handle */ }
})

iOS 프로젝트에 Firebase Performance 통합

iOS의 경우 Firebase Performance 통합은 CocoaPods 또는 Swift Package Manager를 통해 수행됩니다. FirebasePerformance 및 FirebaseCore 팟을 설치한 후 SDK가 자동으로 메트릭 수집을 시작합니다. HTTP 요청을 가로채기 위해 Firebase Performance iOS는 NSURLProtocol을 사용합니다 — 애플리케이션의 모든 URL 로드를 가로챌 수 있는 시스템 메커니즘입니다. SDK는 시작 시 NSURLProtocol 서브클래스를 등록하며, URLSession을 통한 모든 요청이 자동으로 모니터링됩니다.

iOS 제한 사항: Firebase Performance는 SwiftUI에 대한 자동 screen trace를 지원하지 않습니다. SwiftUI 애플리케이션의 경우 View 본문을 시작/중지 블록으로 감싸서 수동으로 사용자 지정 추적을 만들어야 합니다. Firebase는 기본 SwiftUI 지원을 위해 작업 중이지만 현재 SDK는 UIView 컨트롤러만 자동으로 추적합니다. UIKit + SwiftUI의 하이브리드 애플리케이션의 경우 UIKit에서 화면을 만들고 UIHostingController를 통해 SwiftUI를 임베드하는 것이 좋습니다.

Firebase Performance iOS는 MetricKit과의 통합도 제공합니다 — OS 수준에서 진단 데이터를 수집하는 Apple 프레임워크입니다. MetricKit는 CPU, GPU, 메모리 및 프레임 속도 메트릭이 포함된 일일 보고서를 보냅니다. Firebase Performance는 이러한 보고서를 집계하고 사용자 지정 추적과 함께 콘솔에 표시하여 애플리케이션 및 시스템 수준 모두에서 성능의 완전한 그림을 제공합니다.

swift
import FirebasePerformance

final class ImageUploadService {

    func uploadImage(_ data: Data, to url: URL) async throws {
        guard let trace = Performance.startTrace(name: "image_upload") else { return }
        trace?.setValue("image/jpeg", forAttribute: "content_type")
        trace?.setValue("\(data.count)", forAttribute: "file_size")

        var request = URLRequest(url: url)
        request.httpMethod = "POST"
        request.httpBody = data

        let (_, response) = try await URLSession.shared.data(for: request)
        guard let httpResponse = response as? HTTPURLResponse else { return }
        trace?.setValue("\(httpResponse.statusCode)",
                        forAttribute: "status_code")
        trace?.stop()
    }
}

자주 묻는 질문

Firebase Performance는 무료인가요?

네, Firebase Performance는 일일 500,000 이벤트 제한이 있는 무료 Spark 등급에서 사용할 수 있습니다. 대용량 데이터 프로젝트의 경우 종량제 가격의 Blaze 등급이 사용되며, 제한을 초과하는 1,000개 이벤트당 $0.0003입니다. 대부분의 스타트업 및 중간 규모 프로젝트의 경우 일일 500,000 이벤트로 충분합니다.

SDK가 애플리케이션 성능에 영향을 미치나요?

Firebase Performance SDK는 영향을 최소화하도록 최적화되었습니다. 데이터 전송은 낮은 우선순위의 백그라운드 스레드에서 수행됩니다. Google 테스트에 따르면 SDK가 시작 시간에 미치는 영향은 1% 미만입니다. SDK 크기는 Android 약 300KB, iOS 약 250KB입니다.

어떤 메트릭이 자동으로 수집되나요?

App start(콜드/웜), screen rendering(각 화면의 렌더링 시간), HTTP 요청(시간, 크기, 상태) 및 frozen frames가 자동으로 수집됩니다. Android의 경우 slow renders 빈도(>16ms) 및 ANR도 수집됩니다.

디버그 빌드에서 Firebase Performance를 비활성화하려면 어떻게 하나요?

Firebase Performance는 디버그 모드에서 자동으로 비활성화됩니다. 강제 제어를 위해 Android 매니페스트에서 플래그를 사용합니다: firebasePerformanceInstrumentationEnabled. iOS의 경우 시작 스키마 인수에서 -FIRPerformanceEnabled NO 플래그를 통해 비활성화합니다.

Firebase Performance 데이터를 내보낼 수 있나요?

네, Firebase Performance는 BigQuery로의 내보내기를 지원합니다. 프로젝트를 BigQuery에 연결하면 모든 메트릭이 자동으로 BigQuery 테이블에 복제되어 SQL 쿼리 및 Looker Studio에서 대시보드 생성에 사용할 수 있습니다. 내보내기는 Firebase 콘솔의 Integrations 섹션에서 구성됩니다.

요약

  • Firebase Performance — 화면 및 HTTP 요청의 자동 추적을 갖춘 무료 성능 모니터링 도구.
  • 자동 추적은 코드 한 줄 없이 앱 시작, 화면 렌더링 및 네트워크 요청을 다룹니다.
  • 사용자 지정 추적은 속성을 통해 기기, 버전 또는 사용자 상태별 필터링으로 모든 비즈니스 시나리오를 추적할 수 있습니다.
  • 백분위수 P50-P99는 평균값과 달리 실제 성능 그림을 제공합니다.
  • 통합은 Firebase Crashlytics 및 BigQuery와 함께 통합된 앱 품질 모니터링 에코시스템을 만듭니다.
  • 성능에 미치는 영향 최소화 — 시작 시간에 1% 미만, 앱 크기에 최대 400KB.
  • 권장 사항: 회귀를 조기에 감지하기 위해 프로덕션을 포함한 모든 개발 단계에서 Firebase Performance를 사용하세요.

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기