Firebase Performance — що це таке, інструмент моніторингу та метрики

Автор: IT Sectr Опубліковано: 2026-05-30 Час читання: 10 хв

Firebase Performance Monitoring — це безкоштовний інструмент від Google для відстеження продуктивності мобільних застосунків у реальному часі. Сервіс автоматично збирає метрики часу запуску, швидкості рендерингу екранів і тривалості HTTP-запитів, не вимагаючи написання коду для базових сценаріїв. За даними Google Firebase, 2025, SDK автоматично трасує до 90% мережевих запитів без додаткового налаштування. Інструмент доступний для Android, iOS та веб-застосунків у рамках екосистеми Firebase.

Головне

  • Firebase Performance — безкоштовний моніторинг продуктивності в реальному часі для мобільних застосунків.
  • Автоматичне трасування збирає метрики запуску, екранів та мережевих запитів без написання коду.
  • Користувацькі траси дозволяють відстежувати будь-які бізнес-сценарії — від оформлення замовлення до завантаження зображень.
  • Метрики HTTP включають час відповіді, розмір корисного навантаження та код статусу для кожного запиту.
  • Консоль Firebase надає зведення за пристроями, версіями ОС та регіонами з фільтрацією за процентилями.

Що таке 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 використовується більш ніж у 2 мільйонах застосунків по всьому світу. Середній час виявлення проблеми продуктивності за допомогою 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 користувачів відкривають екран за 200 мс, а один — за 20 секунд, середнє буде ~400 мс, що виглядає прийнятно. P99 покаже 20 секунд — реальну проблему. Firebase відображає процентилі на часовій шкалі, що дозволяє відстежувати регресії з точністю до години.

Як працює Firebase Performance Monitoring

Firebase Performance SDK впроваджується в застосунок через стандартну інтеграцію: додавання залежності в Gradle (Android) або через CocoaPods (iOS). Після ініціалізації Firebase в коді SDK автоматично запускає збір метрик без додаткової конфігурації. Важливий принцип роботи — lazy collection: SDK не надсилає дані негайно, а накопичує їх і передає пачками при сприятливих умовах мережі.

Для iOS SDK використовує NSURLProtocol для перехоплення HTTP-запитів, для Android — OkHttp Interceptor. Якщо застосунок не використовує OkHttp, SDK автоматично обгортає HttpURLConnection. Перехоплені запити збагачуються метаданими: Content-Type, статус відповіді, розмір у байтах, тривалість. Всі дані передаються через HTTPS на сервер Firebase з шифруванням TLS 1.3.

Одна з ключових вимог Firebase Performance — бути останнім плагіном у списку Gradle-плагінів. Якщо порядок порушено, SDK може перехоплювати не всі запити або неправильно вимірювати час старту. Firebase рекомендує розміщувати плагін у кінець блоку plugins, після 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-запити). Screen trace для Android вимірює час між викликом Activity.onCreate та завершенням рендерингу першого кадру. Для iOS вимірюється час між viewDidLoad та viewDidAppear. Firebase автоматично створює трасу для кожного екрана, використовуючи ім'я класу Activity або ViewController.

App start trace ділиться на два типи: холодний старт (застосунок запускається з нуля, процес не існував) і теплий старт (застосунок відновлюється з фонового стану). Холодний старт — найкритичніший показник, оскільки він включає ініціалізацію всіх SDK, завантаження DEX-файлів та створення першої Activity. Firebase вимірює холодний старт від моменту старту процесу до повного рендерингу першого екрана. За рекомендаціями Google, холодний старт не повинен перевищувати 500 мс для P50 та 2 секунд для P99.

Network request trace автоматично фіксує кожен HTTP-запит з метаданими: URL, метод, код відповіді, розмір відповіді, швидкість передачі. У консолі Firebase Performance можна фільтрувати запити за URL-патерном — наприклад, показати всі запити до /api/v2/orders. Для кожного патерну відображаються процентилі часу відповіді та частота помилок 4xx/5xx. Це дозволяє швидко виявити деградацію конкретного API без налаштування окремих оповіщень.

Метрики екранів у деталях

Для екранів Firebase Performance додатково обчислює метрику «frozen frames» — кадри, які рендерилися довше 700 мс. Такі заморозки UI сприймаються користувачем як «застосунок завис». Якщо на екрані більше 1% frozen frames, Firebase позначає метрику як проблемну. Для Android SDK додатково збирає метрику slow renders — кадри довше 16 мс (пропуск 60 FPS). Поєднання screen trace та frozen frames дає повну картину як про час завантаження, так і про плавність анімацій.

Користувацькі траси для бізнес-сценаріїв

Користувацькі траси дозволяють вимірювати тривалість будь-якого користувацького сценарію: оформлення замовлення, завантаження зображення в хмару, синхронізація даних. Розробник явно вказує початок і кінець траси в коді та задає ім'я сценарію. На відміну від автоматичних трас, користувацькі траси дають повний контроль над тим, що вимірюється, і дозволяють додавати атрибути для фільтрації.

Кожна користувацька траса може містити атрибути — пари ключ-значення, які додаються як метадані. Атрибути допомагають сегментувати дані: наприклад, можна відстежувати час оформлення замовлення окремо для «promo_user» та «regular_user». Firebase Performance підтримує до 5 атрибутів на трасу та до 100 унікальних значень атрибута. Атрибути індексуються та доступні для фільтрації в консолі Firebase.

За даними доповіді Google I/O 2024, команда Spotify використовує користувацькі траси Firebase для моніторингу часу перемикання між треками. Це дозволило скоротити медіанний час перемикання з 400 мс до 120 мс за рахунок виявлення вузького місця в кешуванні аудіобуфера. Ключовим інсайтом стала фільтрація за атрибутом «device_model» — проблема проявлялася тільки на пристроях Samsung з Android 13.

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()
    }
}

Інтеграція Firebase Performance в Android-проєкт

Інтеграція Firebase Performance в Android вимагає трьох кроків: додавання плагіна google-services, підключення BOM (Bill of Materials) Firebase та додавання залежності firebase-perf. Firebase Performance автоматично працює на всіх Activity та фрагментах, якщо вони використовують AppCompatActivity. Для Compose-екранів Firebase рекомендує використовувати користувацькі траси, оскільки автоматична screen trace не підтримує Compose безпосередньо.

Важливий нюанс: Firebase Performance Gradle-плагін модифікує байткод застосунку на етапі компіляції. Плагін додає інструментуючий код у кожну Activity та OkHttp-клієнт. Це може збільшити час збірки на 5-10% та розмір APK на 200-400 КБ. У debug-збірках Firebase Performance автоматично вимикається — це захищає від спотворення метрик при локальній розробці. Для примусового ввімкнення в debug використовується прапорець firebasePerformanceInstrumentationEnabled у маніфесті.

Firebase Performance також підтримує MetricKit для iOS та Perfetto для Android — низькорівневі системні трейсери. MetricKit надає дані про частоту кадрів, споживання CPU та пам'яті на рівні операційної системи. Firebase агрегує ці дані та відображає їх у тій же консолі, де показуються HTTP-траси та screen traces, об'єднуючи системну та прикладну телеметрію в одному інтерфейсі.

HTTP-запити з OkHttp

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 */ }
})

Інтеграція Firebase Performance в iOS-проєкт

Для iOS інтеграція Firebase Performance виконується через CocoaPods або Swift Package Manager. Після встановлення подів FirebasePerformance та FirebaseCore, SDK автоматично починає збір метрик. Для перехоплення HTTP-запитів Firebase Performance iOS використовує NSURLProtocol — системний механізм, що дозволяє перехоплювати всі URL-завантаження в застосунку. SDK реєструє свій підклас NSURLProtocol при старті, і всі запити через URLSession автоматично потрапляють під моніторинг.

Обмеження для iOS: Firebase Performance не підтримує автоматичну screen trace для SwiftUI. Для SwiftUI-застосунків необхідно вручну створювати користувацькі траси, обгортаючи тіло View у блок start/stop. Firebase працює над нативною підтримкою SwiftUI, але на поточний момент SDK автоматично трасує тільки UIView-контролери. Для гібридних застосунків на UIKit + SwiftUI рекомендується створювати екрани на UIKit та вбудовувати SwiftUI через UIHostingController.

Firebase Performance iOS також надає інтеграцію з MetricKit — фреймворком 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 доступний на безкоштовному тарифі Spark з лімітом 500 000 подій на день. Для проєктів з великим обсягом даних використовується тариф Blaze з оплатою по факту: 0,0003 долара за 1000 подій понад ліміт. Для більшості стартапів і середніх проєктів 500 000 подій на день більш ніж достатньо.

Чи впливає SDK на продуктивність застосунку?

Firebase Performance SDK оптимізовано для мінімального впливу. Надсилання даних виконується в фоновому потоці з низьким пріоритетом. За даними тестів Google, вплив SDK на час запуску становить менше 1%. Розмір SDK — близько 300 КБ для Android та 250 КБ для iOS.

Які метрики збираються автоматично?

Автоматично збираються app start (холодний/теплий), screen rendering (час рендерингу кожного екрана), HTTP-запити (час, розмір, статус) та frozen frames. Для Android додатково збирається частота slow renders (>16 мс) та ANR.

Як вимкнути Firebase Performance для debug-збірок?

Firebase Performance автоматично вимикається в debug-режимі. Для примусового контролю використовується прапорець у маніфесті Android: firebasePerformanceInstrumentationEnabled. Для iOS вимкнення виконується через прапорець -FIRPerformanceEnabled NO в аргументах схеми запуску.

Чи можна експортувати дані Firebase Performance?

Так, Firebase Performance підтримує експорт до BigQuery. Після підключення проєкту до BigQuery всі метрики автоматично дублюються в таблиці BigQuery, доступні для SQL-запитів та створення дашбордів у Looker Studio. Експорт налаштовується в розділі Integrations консолі Firebase.

Підсумки

  • Firebase Performance — безкоштовний інструмент моніторингу продуктивності з автоматичним трасуванням екранів та HTTP-запитів.
  • Автоматичні траси охоплюють app start, screen rendering та мережеві запити без жодного рядка коду.
  • Користувацькі траси з атрибутами дозволяють відстежувати будь-які бізнес-сценарії з фільтрацією за пристроєм, версією або статусом користувача.
  • Процентилі P50-P99 дають реальну картину продуктивності на відміну від середніх значень.
  • Інтеграція з Firebase Crashlytics та BigQuery створює єдину екосистему моніторингу якості застосунку.
  • Мінімальний вплив на продуктивність — менше 1% на час запуску, до 400 КБ до розміру застосунку.
  • Рекомендація: використовуйте Firebase Performance на всіх етапах розробки, включаючи production, для раннього виявлення регресій.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також