HTTP/S 네트워크 요청 모니터링

HTTP/S 네트워크 요청 trace는 앱이 서비스 엔드포인트로 요청을 전송한 시점과 해당 엔드포인트로부터 응답이 완료된 시점 간의 시간을 캡처하는 보고서입니다. Performance Monitoring은 앱에서 요청을 전송하는 모든 대상 엔드포인트에 대해 다음과 같은 몇 가지 측정항목을 캡처합니다.

  • 응답 시간 — 요청이 전송된 시점과 응답이 완전히 수신된 시점 간의 시간

  • 페이로드 크기 — 앱에서 다운로드 및 업로드한 네트워크 페이로드의 바이트 크기

  • 성공률 — 전체 응답 대비 성공한 응답의 비율(네트워크 또는 서버 오류 측정)

Performance Monitoring은 다음 네트워킹 라이브러리를 사용하는 네트워크 요청의 측정항목을 자동으로 수집합니다.

Swift

  • URLSession
  • URLConnection

Objective-C

  • NSURLSession
  • NSURLConnection

기본 모니터링에는 앱의 네트워크 요청이 대부분 포함됩니다. 그러나 일부 요청이 보고되지 않았거나 다른 라이브러리를 사용하여 네트워크를 요청했을 수 있습니다. 이러한 경우 Performance Monitoring API를 사용하여 커스텀 네트워크 요청을 수동으로 측정할 수 있습니다.

URL 패턴에 따른 데이터 집계

Firebase Performance Monitoring은 유사한 네트워크 요청에 대한 데이터를 자동으로 집계하여 네트워크 요청 성능의 추세를 파악하는 데 도움을 줍니다.

각 요청에서 Firebase는 네트워크 요청의 URL이 URL 패턴과 일치하는지 확인합니다. 요청 URL이 URL 패턴과 일치하면 Firebase에서 자동으로 요청의 데이터를 해당 URL 패턴에 집계합니다. Firebase Console에서 성능 섹션네트워크 탭에 URL 패턴과 집계된 데이터가 표시됩니다.

URL 패턴이란?

URL 패턴은 도메인, 그리고 URL 경로와 일치할 수 있는 패턴으로 구성됩니다(예: example.com/*/animals/**).

  • URL 패턴에는 다음 경로 세그먼트가 포함될 수 있습니다.

    • 일반 텍스트 - 정확한 문자열과 일치합니다.
    • * - 단일 경로 세그먼트 내 임의 문자열과 일치합니다.
    • ** - 임의 경로 서픽스와 일치합니다.
  • URL 패턴은 다음 중 하나일 수 있습니다.

예: 다음 URL 요청은 URL 패턴 example.com/*/animals/**와 일치할 수 있습니다.

  • example.com/singapore/animals
  • example.com/australia/animals/spiders
  • example.com/australia/animals/marsupials/koala.png

Firebase는 각 요청을 하나의 URL 패턴에만 매핑합니다. 커스텀 URL 패턴을 구성한 경우 Firebase는 먼저 해당 패턴과 요청 URL의 매칭을 시도합니다. Firebase는 일치하는 커스텀 URL 패턴을 찾지 못하면 요청 URL을 가장 대표적인 자동 URL 패턴과 매칭합니다. 다음 섹션에서 자동 및 커스텀 URL 패턴에 대해 자세히 알아보세요.

자동 URL 패턴

사용자가 구성한 항목이 없으면 Performance Monitoring은 자동 URL 패턴과 앱의 요청을 매칭하여 앱의 최근 사용 행태를 반영합니다.

자동 URL 패턴 매칭은 어떻게 작동하나요?

Firebase는 각 요청을 앱에서 보낸 요청에서 파생된 가장 대표적인 자동 URL 패턴과 비교합니다. Firebase는 먼저 구성된 커스텀 URL 패턴과 요청 URL의 매칭을 시도합니다.

다음은 Firebase가 앱에서 가장 대표적인 자동 URL 패턴과 요청의 매칭을 시도하는 방법에 대한 기본적인 예시입니다.

  1. 앱에서 다음과 같은 URL로 여러 요청을 보냅니다.

    • example.com/germany/animals/bears
    • example.com/germany/animals/birds
    • example.com/germany/cars

    Firebase는 example.com/germany/**가 앱의 일반적인 요청 패턴임을 확인하고 프로젝트의 자동 URL 패턴으로 이를 추가합니다.

    이 URL 패턴과 일치하는 새로운 요청이 있을 때마다 Firebase는 자동 URL 패턴 example.com/germany/**에 해당 요청의 데이터를 집계합니다.

  2. 일주일 후 앱 요청의 대부분이 example.com/germany/animals/bearsexample.com/germany/animals/birds로 전송됩니다. 따라서 Firebase는 더 대표적인 URL 패턴인 example.com/germany/animals/**를 파생시킵니다.

    이 새 URL 패턴과 일치하는 새로운 요청이 있을 때마다 Firebase는 오직 새로운 URL 패턴에만 해당 요청의 데이터를 집계합니다. Firebase는 example.com/germany/cars에 대한 요청 데이터를 example.com/germany/**에 계속 집계합니다.

  3. 그런데 다음 몇 주 동안 앱의 example.com/germany/animals/bearsexample.com/germany/animals/birds에 대한 요청이 급격히 감소합니다. Firebase는 example.com/germany/animals/**가 앱의 최신 사용 행태를 대표하지 않음을 확인하고 이러한 두 요청을 다시 example.com/germany/**에 매칭하기 시작합니다.

    example.com/germany/animals/**는 더 이상 가장 대표적인 자동 URL 패턴이 아니므로 Firebase는 여기에 요청 데이터를 더 이상 집계하지 않습니다.

자동 URL 패턴 매칭은 동적이므로 다음 사항에 유의하세요.

  • 이전 요청의 일치 항목 및 수집 데이터는 새 URL 패턴의 영향을 받지 않습니다. Firebase는 요청 데이터를 소급하여 다시 집계하지 않습니다.

  • 이후 요청만 새로운 URL 패턴의 영향을 받습니다. Firebase는 각 새로운 요청을 가장 대표적인 자동 URL 패턴에 매핑합니다. Firebase는 먼저 구성된 커스텀 URL 패턴과 요청 URL의 매칭을 시도합니다.

자동 URL 패턴 및 해당 데이터 보기

Console의 성능 섹션에서 네트워크 > 전체 탭에 자동 URL 패턴이 표시됩니다. 카테고리 없음 라벨이 지정된 URL 패턴이 표시될 수 있습니다. 이는 Firebase에서 더 구체적인 URL 패턴과 일치하지 않는 요청에 대한 데이터를 집계할 수 있는 '광범위한' 자동 URL 패턴입니다.

URL 패턴에 집계된 데이터의 데이터 보관 기간이 종료되면 URL 패턴에서 해당 데이터가 삭제됩니다. 자동 URL 패턴에 집계된 모든 데이터가 만료되면 Firebase는 해당 URL 패턴을 Firebase Console에서 삭제합니다.

커스텀 URL 패턴

커스텀 URL 패턴을 만들어 Firebase가 파생된 자동 URL 패턴 매칭으로 캡처하지 않는 특정 URL 패턴을 모니터링할 수 있습니다. 예를 들어 커스텀 URL 패턴을 사용하여 특정 URL의 문제를 해결하거나 시간의 경과에 따라 특정 URL 집합을 모니터링할 수 있습니다.

커스텀 URL 패턴 매칭은 어떻게 작동하나요?

Firebase는 구성된 모든 커스텀 URL 패턴과 요청 URL의 매칭을 시도한 후 자동 URL 패턴 매칭으로 돌아갑니다. 커스텀 URL 패턴과 일치하는 요청이 있는 경우 Firebase는 이러한 요청의 데이터를 커스텀 URL 패턴에 집계합니다.

요청의 URL이 둘 이상의 커스텀 URL 패턴과 일치하는 경우 Firebase는 경로의 왼쪽에서 오른쪽으로 일반 텍스트 > * > **의 특수성 순서에 따라 요청을 가장 구체적인 커스텀 URL 패턴에만 매핑합니다. 예를 들어 example.com/books/dog에 대한 요청은 두 개의 커스텀 URL 패턴과 일치합니다.

  • example.com/books/*
  • example.com/*/dog

그러나 example.com/books/*의 맨 왼쪽 세그먼트 booksexample.com/*/dog의 맨 왼쪽 세그먼트 *보다 우선하므로 패턴이 가장 구체적인 일치 URL 패턴입니다.

새 커스텀 URL 패턴을 만들 때는 다음 사항에 유의하세요.

  • 새 커스텀 URL 패턴을 만들어도 이전 요청의 일치 항목 및 수집 데이터는 영향을 받지 않습니다. Firebase는 요청 데이터를 소급하여 다시 집계하지 않습니다.

  • 새 커스텀 URL 패턴을 만들면 이후 요청에만 적용됩니다. Performance Monitoring이 데이터를 수집하고 새 커스텀 URL 패턴에 집계하는 데는 최대 12시간이 걸릴 수 있습니다.

커스텀 URL 패턴 만들기

Console에서 성능 섹션네트워크 탭에서 커스텀 URL 패턴을 만듭니다. 새 커스텀 URL 패턴을 만들려면 프로젝트 구성원이 소유자 또는 편집자여야 합니다. 하지만 모든 프로젝트 구성원은 커스텀 URL 패턴과 수집 데이터를 볼 수 있습니다.

커스텀 URL 패턴을 만들려면 도메인으로 시작한 후 다음 경로 세그먼트 구문을 사용하여 URL 경로와 일치할 수 있는 패턴을 만드세요.

  • 일반 텍스트 - 정확한 문자열과 일치합니다.
  • * - 단일 경로 세그먼트 내 임의 문자열과 일치합니다.
  • ** - 임의 경로 서픽스와 일치합니다.

다음 표에는 몇 가지 가능한 커스텀 URL 패턴 매칭에 대한 설명이 나와 있습니다.

매칭 대상 커스텀 URL 패턴 예시 이 URL 패턴과 일치하는 항목의 예시
정확한 URL example.com/foo/baz example.com/foo/baz
임의 단일 경로 세그먼트(*) example.com/*/baz example.com/foo/baz
example.com/bar/baz
example.com/*/*/baz example.com/foo/bar/baz
example.com/bah/qux/baz
example.com/foo/* example.com/foo/baz
example.com/foo/bar

참고: 이 패턴은 example.com/foo와 일치하지 않습니다.

임의 경로 서픽스(**) example.com/foo/** example.com/foo
example.com/foo/baz
example.com/foo/baz/more/segments
subdomain.example.com/foo.bar/** subdomain.example.com/foo.bar
subdomain.example.com/foo.bar/baz
subdomain.example.com/foo.bar/baz/more/segments

커스텀 URL 패턴 및 해당 데이터 보기

Console의 성능 섹션에서 네트워크 > 전체 탭 및 네트워크 > 커스텀 탭 모두에 수집 데이터가 있는 커스텀 URL 패턴이 표시됩니다. 수집 데이터가 없는 커스텀 URL 패턴은 네트워크 > 커스텀 탭에만 표시됩니다.

URL 패턴에 집계된 데이터의 데이터 보관 기간이 종료되면 URL 패턴에서 해당 데이터가 삭제됩니다. 커스텀 URL 패턴에 집계된 모든 데이터가 만료되어도 Firebase Console에서 커스텀 URL 패턴이 삭제되지는 않습니다. 대신 네트워크 > 커스텀 탭에 '빈' 커스텀 URL 패턴이 계속 표시됩니다.

커스텀 URL 패턴 삭제

커스텀 URL 패턴은 자동 URL 패턴과 달리 프로젝트에서 삭제하는 것이 가능합니다.

  1. Console의 성능 섹션에서 네트워크 > 커스텀 탭으로 이동합니다.

  2. 삭제하려는 커스텀 URL 패턴의 행으로 마우스를 가져갑니다.

  3. 행의 맨 오른쪽에 있는 delete를 클릭한 다음 대화상자에서 삭제를 확인합니다.

커스텀 URL 패턴을 삭제할 때는 다음 사항에 유의하세요.

  • 이후의 모든 요청이 일치하는 커스텀 URL 패턴 중 두 번째로 구체적인 패턴에 매핑됩니다. Firebase는 일치하는 커스텀 URL 패턴을 찾지 못한 경우 자동 URL 패턴 매칭으로 되돌아갑니다.

  • 이전 요청의 일치 항목 및 수집 데이터는 커스텀 URL 패턴을 삭제해도 영향을 받지 않습니다.

    해당하는 데이터 보관 기간이 종료될 때까지 네트워크 > 전체 탭에서 삭제된 커스텀 URL 패턴과 해당 수집 데이터에 계속 액세스할 수 있습니다. 삭제된 커스텀 URL 패턴의 모든 수집 데이터가 만료되면 커스텀 URL 패턴이 삭제됩니다.

  • 네트워크 > 커스텀 탭에 삭제된 커스텀 URL 패턴이 표시되지 않습니다.

커스텀 네트워크 요청 모니터링 추가

Performance Monitoring에서 커스텀 네트워크 요청을 수동으로 측정하려면 다음과 유사한 코드를 추가합니다.

Swift

guard let metric = HTTPMetric(url: "https://www.google.com", httpMethod: .get) else { return }

metric.start()
guard let url = URL(string: "https://www.google.com") else { return }
let request: URLRequest = URLRequest(url:url)
let session = URLSession(configuration: .default)
let dataTask = session.dataTask(with: request) { (urlData, response, error) in
        if let httpResponse = response as? HTTPURLResponse {
         metric.responseCode = httpResponse.statusCode
        }
        metric.stop()
}
dataTask.resume()

Objective-C

@property (nonatomic) FIRHTTPMetric *metric;

- (void)beginManualNetworkInstrumentation {
  self.metric =
      [[FIRHttpMetric alloc] initWithURL:[NSURL URLWithString:@"https://www.google.com"]
                              HTTPMethod:FIRHTTPMethodGET];

  [self.metric start];

  NSURLRequest *request =
      [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.google.com"]];
  NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request
                                                                delegate:self];
  [connection resume];
}

- (void)connection:(NSURLConnection *)connection
    didReceiveResponse:(NSURLResponse *) response {
  NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response
  self.metric.responseCode = httpResponse.statusCode;
  [self.metric stop];
}

이런 방식으로 특별히 캡처한 HTTP/S 네트워크 요청은 Performance Monitoring에서 자동으로 캡처한 네트워크 요청과 함께 Firebase Console에 표시됩니다.

Console에서 네트워크 요청 trace 모니터링

  1. Firebase Console에서 성능 대시보드로 이동합니다.

  2. 네트워크 탭을 클릭합니다. 그런 후 다음 작업을 수행할 수 있습니다.

    • 모든 네트워크 요청에 대해 수집된 데이터의 요약 보고서를 확인합니다.

    • 특정 엔드포인트를 클릭하여 해당 엔드포인트 데이터를 자세히 검토합니다.

    • 대시보드의 왼쪽 상단에 있는 필터add 버튼을 사용하여 속성을 기준으로 데이터에 대해 기본 필터링을 수행합니다.

  3. 특정 엔드포인트를 클릭하면 Console에서 측정항목 카드에 수집된 데이터 개요가 표시됩니다.

    • 대시보드 오른쪽 상단에 있는 옵션을 사용하여 다음 작업을 수행합니다.

      • 다양한 데이터를 집계, 시간 경과 또는 앱 버전별로 확인
      • 엔드포인트의 성공률을 집계, 시간 경과 또는 앱 버전별로 확인
    • 대시보드의 왼쪽 상단에 있는 필터add 버튼을 사용하여 속성을 기준으로 데이터에 대해 기본 필터링을 수행합니다.

  4. 원하는 측정항목에 대해 더보기를 클릭하여 수집된 데이터에 대한 심층적인 정보를 검토하고 다양한 분석 기능을 사용합니다. 예를 들어 데이터를 속성별로 필터링 및 세분화하고 앱 사용 세션에 대한 데이터를 볼 수 있습니다.

다음 단계