데이터 처리 서비스

이 페이지에서 설명하는 Google Cloud 데이터 서비스에는 제공된 데이터를 처리하고 이 요청에 대한 응답으로 또는 연속으로 처리 결과를 출력하는 서비스가 포함됩니다. 가용성 및 지연 시간을 이러한 서비스의 기본 SLI로 사용하는 대신 더 적합한 선택은 다음과 같습니다.

  • 수정: 파이프라인에서 발생하여 처리 중인 오류 수를 측정합니다.
  • 새로고침: 데이터가 얼마나 빨리 처리되는지를 측정합니다.

SRE 관점에서의 데이터 파이프라인에 대한 자세한 내용은 사이트 안정성 엔지니어링 통합문서데이터 처리 파이프라인을 참조하세요.

TimeSeriesRatio 구조를 사용하여 요청 기반 수정 SLI를 표현하여 처리된 모든 항목에 대한 처리 중인 문제가 있었던 항목의 비율을 설정합니다. 사용 가능한 라벨을 사용하여 측정항목을 필터링하는 방법을 결정해 '문제' 및 '유효' 총계에 대해 원하는 결정을 내립니다.

DistributionCut 구조를 사용하여 요청 기반 새로고침 SLI를 표현합니다.

Dataflow

Dataflow는 지연 시간, 처리 시간, 비용을 최소화하는 완전 관리형 스트리밍 분석 서비스입니다. Dataflow를 사용하여 데이터를 스트림으로 처리하거나 Apache Beam SDK를 사용하여 일괄 처리할 수 있습니다.

자세한 내용은 다음을 참조하세요.

수정 SLI

Dataflow는 dataflow_job 모니터링 리소스 유형과 지금까지 PCollection에 추가된 요소 수를 계산하는 job/element_count 측정항목 유형을 사용하여 측정항목 데이터를 Cloud Monitoring에 기록합니다. job_name 리소스 라벨 전체를 합산하면 작업에서 처리할 요소 수를 확인할 수 있습니다.

별개로 logging.googleapis.com/log_entry_count 측정항목 유형을 dataflow_job 모니터링 리소스 유형과 함께 사용하여 특정 작업별로, severity 측정항목 라벨 사용별로 로깅된 오류 수를 계산할 수 있습니다.

다음 예시와 같이 이러한 측정항목을 사용하여 요청 기반 수정 SLI를 오류의 비율로 표현하고 TimeSeriesRatio 구조를 사용하여 처리된 모든 요소를 표현할 수 있습니다.

"serviceLevelIndicator": {
  "requestBased": {
    "goodTotalRatio": {
      "totalServiceFilter":
        "metric.type=\"dataflow.googleapis.com/job/element_count\"
         resource.type=\"dataflow_job\"
         resource.label.\"job_name\"=\"my_job\"",
      "badServiceFilter":
        "metric.type=\"logging.googleapis.com/log_entry_count\"
         resource.type=\"dataflow_job\"
         resource.label.\"job_name\"=\"my_job\"
         metric.label.\"severity\"=\"error\"",
    }
  }
}

새로고침 SLI

또한 Dataflow는 dataflow_job 모니터링 리소스 유형과 데이터 항목이 처리되거나 처리를 대기 중인 현재 최대 기간을 측정하는 job/per_stage_system_lag 측정항목 유형을 사용하여 측정항목 데이터를 Cloud Monitoring에 기록합니다.

DistributionCut 구조를 사용하여 이 측정항목을 사용하는 새로고침 SLI를 표현할 수 있습니다.

다음 예시 SLO에서는 1시간 동안 가장 오래된 데이터 요소 99%가 100초 이내로 처리된다고 예상합니다.

{
  "serviceLevelIndicator": {
    "requestBased": {
      "distributionCut": {
        "distributionFilter":
          "metric.type=\"dataflow.googleapis.com/job/per_stage_system_lag\"
           resource.type=\"dataflow_job\"
           resource.label.\"job_name\"=\"my_job\"",
        "range": {
          "min": 0,
          "max": 100
        }
      }
    }
  },
  "goal": 0.99,
  "rollingPeriod": "86400s",
  "displayName": "99% data elements processed under 100 s"
}

WindowsBasedSli 구조를 사용하여 새로고침 SLI를 표현할 수도 있습니다.

다음 예시 SLO에서는 1일 동안 5분 기간 99%에서 100초 이상 처리된 요소가 없음(0)을 보여준다고 예상합니다.

{
  "displayName": "Dataflow - windowed freshness",
  "serviceLevelIndicator": {
    "windowsBased": {
      "windowPeriod": "300s",
      "metricMeanInRange": {
        "timeSeries":
          "metric.type=\"dataflow.googleapis.com/job/per_stage_system_lag\"
           resource.type=\"dataflow_job\"
           resource.label.\"job_name\"=\"my_job\"",
        "range": {
          "min": "0",
          "max": "100"
        }
      }
    }
  },
  "goal": 0.99,
  "rollingPeriod": "86400s"
}

기간이 '양호'로 간주되려면 측정항목이 평가 기간 중에 언제든지 range에 지정된 임곗값을 초과할 수 없습니다.

Dataproc

Dataproc은 모든 Hadoop이나 Spark 데이터 또는 분석 처리 작업을 지원하도록 자동 확장할 수 있는 완전 관리형의 맞춤형 클러스터를 제공합니다.

자세한 내용은 다음을 참조하세요.

수정 SLI

Dataproc은 cloud_dataproc_cluster 모니터링 리소스 유형과 다음 측정항목 유형을 사용하여 측정항목 데이터를 Cloud Monitoring에 기록합니다.

이러한 측정항목을 사용하면 다음 예시와 같이 요청 기반 수정 SLI를 제출된 모든 작업에 대한 실패한 작업 비율 TimeSeriesRatio로 표현할 수 있습니다.

"serviceLevelIndicator": {
  "requestBased": {
    "goodTotalRatio": {
      "totalServiceFilter":
        "metric.type=\"dataproc.googleapis.com/cluster/job/submitted_count\"
         resource.type=\"cloud_dataproc_cluster\"
         resource.label.\"cluster_name\"=\"my_cluster\"",
      "badServiceFilter":
        "metric.type=\"dataproc.googleapis.com/cluster/job/failed_count\"
         resource.type=\"cloud_dataproc_cluster\"
         resource.label.\"cluster_name\"=\"my_cluster\"",
    }
  }
}

새로고침 SLI

또한 Dataproc은 cloud_dataproc_cluster 모니터링 리소스 유형과 다음 측정항목 유형을 사용하여 측정항목 데이터를 Cloud Monitoring에 기록합니다.

  • cluster/job/duration - 작업이 처리 중 상태로 유지되는 시간을 측정합니다. state 측정항목 라벨의 데이터를 필터링하여 특정 상태에 보낸 시간을 식별할 수 있습니다. 예를 들어 작업이 PENDING 상태에 있는 시간을 측정하는 SLI를 만들어 작업 처리가 시작되기 전의 최대 허용 대기 시간을 설정할 수 있습니다.
  • cluster/job/completion_time - 작업이 cluster/job/completion_time 측정항목에서 유지되는 시간을 측정합니다. 작업 완료가 잘 이해된 측정항목이거나 클러스터의 작업에서 처리되는 데이터 볼륨이 달라지지 않는 경우에 사용하면 처리 시간이 영향을 받습니다.

다음 예시와 같이 DistributionCut 구조를 사용하여 이러한 측정항목을 사용하는 새로고침 SLI를 표현할 수 있습니다.

다음 예시 SLO에서는 cluster/job/duration을 사용하며 'my_cluster'의 작업 중 99%가 24시간 동안 100초 이내로 PENDING 상태에 있을 것으로 예상합니다.

{
  "serviceLevelIndicator": {
    "requestBased": {
      "distributionCut": {
        "distributionFilter":
          "metric.type=\"dataproc.googleapis.com/cluster/job/duration\"
           resource.type=\"cloud_dataproc_cluster\"
           resource.label.\"cluster_name\"=\"my_cluster\"
           metric.label.\"state\"=\"PENDING\"",
        "range": {
          "min": 0,
          "max": 100
        }
      }
    }
  },
  "goal": 0.99,
  "rollingPeriod": "86400s",
  "displayName": "Dataproc pending jobs"
}

다음 예시 SLO에서는 cluster/job/completion_time을 사용하며 'my_cluster'의 작업 중 99%가 24시간 동안 100초 이내에 완료된다고 예상합니다.

{
  "serviceLevelIndicator": {
    "requestBased": {
      "distributionCut": {
        "distributionFilter":
          "metric.type=\"dataproc.googleapis.com/cluster/job/completion_time\"
           resource.type=\"cloud_dataproc_cluster\"
           resource.label.\"cluster_name\"=\"my_cluster\"",
        "range": {
          "min": 0,
          "max": 100
        }
      }
    }
  },
  "goal": 0.99,
  "rollingPeriod": "86400s",
  "displayName": "Dataproc completed jobs"
}