2021 年の State of DevOps アンケートに回答して、ソフトウェア オペレーションの未来を形作り、ご自分の意見を伝えましょう。

データ ストレージと取得サービス

このページで説明する Google Cloud データサービスには、リクエストに対するレスポンスとしてデータを保存、提供するサービスが含まれます。こうしたサービスの SLI は、リクエスト レスポンス サービスの SLI と似ており、主に可用性とレイテンシに重点を置いています。なお、特にデータベース クエリのレスポンス時間を測定する場合、たいていレイテンシは、取得されるデータ量の要因となります。また、アプリケーションのワークロードによって変化する可能性があります。

リクエスト ベースの可用性 SLI を表現するには、TimeSeriesRatio 構造体を使用し、リクエスト全体に対する「良い」リクエストの比率を設定します。「良い」または「有効」という好ましい判定に至るために利用可能なラベルを使用して指標をフィルタする方法を定めます。

リクエスト ベースのレイテンシ SLI を表現するには、DistributionCut 構造体を使用します。

Cloud Storage

Cloud Storage は、全世界で利用可能な耐久性に優れた Google Cloud のオブジェクト ストアです。Cloud Storage は、サービスまたはユースケースに適したコストと取得モデルを決定できる複数のストレージ クラスで利用できます。

詳細については次のリンク先をご覧ください。

可用性 SLI

Cloud Storage は、gcs_bucket モニタリング対象リソースタイプと api/request_count 指標タイプを使用して、Cloud Monitoring に指標データを書き込みます。response_code 指標ラベルを使用して「良い」リクエストをカウントすることで、データをフィルタできます。method 指標ラベルを使用して、特定の API メソッド(ReadObject など)の可用性を測定することもできます。

Cloud Storage バケットからオブジェクトを読み取るためにリクエスト ベースの可用性 SLI を表現するには、次の例に示すように、リクエスト全体に対する「良い」リクエストの比率(TimeSeriesRatio)を使用します。

"serviceLevelIndicator": {
  "requestBased": {
    "goodTotalRatio": {
      "totalServiceFilter":
        "metric.type=\"storage.googleapis.com/api/request_count\"
         resource.type=\"gcs_bucket\"
         metric.label.\"method\"=\"ReadObject\"
         resource.label.\"bucket_name\"=\"my_bucket\"",
      "goodServiceFilter":
        "metric.type=\"storage.googleapis.com/api/request_count\"
         resource.type=\"gcs_bucket\"
         metric.label.\"method\"=\"ReadObject\"
         resource.label.\"bucket_name\"=\"my_bucket\"
         metric.label.\"response_code\"=\"OK\"",
    }
  }
}

レイテンシ SLI

Cloud Storage では、レイテンシ指標は提供されません。レイテンシが懸念される場合は、クライアントでそのデータを収集するために、サービスをインストルメント化することをご検討ください。

Cloud Bigtable

Cloud Bigtable は、大規模な分析ワークロードと運用ワークロードに対応できる、フルマネージドのスケーラブルな NoSQL データベース サービスです。Bigtable は、非常に多くのデータを Key-Value ストアに格納する場合に最適です。Bigtable は、低レイテンシで読み書きのスループットが高いため、大量のデータに迅速にアクセスできます。

詳細については次のリンク先をご覧ください。

可用性 SLI

Bigtable は、bigtable_table モニタリング対象リソースタイプと次の指標タイプを使用して、Cloud Monitoring に指標データを書き込みます。

Cloud Storage バケットからオブジェクトを読み取るためにリクエスト ベースの可用性 SLI を表現するには、次の例に示すように、リクエスト全体に対する「悪い」リクエストの比率(TimeSeriesRatio)を使用します。

次の例に示すように、この 2 つの指標を使用して、リクエスト全体に対する失敗したリクエストについて、TimeSeriesRatio 構造体を作成することでリクエスト ベースの可用性 SLI を表現できます。

"serviceLevelIndicator": {
  "requestBased": {
    "goodTotalRatio": {
      "totalServiceFilter":
        "metric.type=\"bigtable.googleapis.com/server/request_count\"
         resource.type=\"bigtable_table\"
         resource.label.\"table\"=\"my_table\"
         resource.label.\"cluster\"=\"my_cluster\"",
      "badServiceFilter":
        "metric.type=\"bigtable.googleapis.com/server/error_count\"
         resource.type=\"bigtable_table\"
         resource.label.\"table\"=\"my_table\"
         resource.label.\"cluster\"=\"my_cluster\"",
    }
  }
}

レイテンシ SLI

レイテンシを測定するために、Bigtable では、bigtable_table モニタリング対象リソースタイプと server/latencies 指標タイプを使用して Cloud Monitoring に指標データを書き込みます。method 指標ラベルを使用してデータをフィルタし、特定のメソッドのレイテンシを測定できます。

リクエスト ベースのレイテンシ SLI を表現するには、DistributionCut 構造体を使用します。

次の SLO の例では、1 時間のローリング期間で、my_cluster クラスタの my_table テーブルに対する全リクエストの 99% が、合計レイテンシ 0~100 ミリ秒に収まることを想定しています。

{
  "serviceLevelIndicator": {
    "requestBased": {
      "distributionCut": {
        "distributionFilter":
          "metric.type=\"bigtable.googleapis.com/server/latencies\"
           resource.type=\"bigtable_table\"
           resource.label.\"table\"=\"my_table\"
           resource.label.\"cluster\"=\"my_cluster\"",
        "range": {
          "min": 0,
          "max": 100
        }
      }
    }
  },
  "goal": 0.99,
  "rollingPeriod": "86400s",
  "displayName": "98% requests under 100 ms"
}

Cloud Spanner

Cloud Spanner はフルマネージドのリレーショナル データベース サービスであり、グローバルなスケールでのトランザクション整合性、スキーマ、SQL(拡張機能を含む ANSI 2011)、高可用性のための自動的な同期レプリケーションを提供します。

詳細については次のリンク先をご覧ください。

可用性 SLI

Spanner は、spanner_instance モニタリング対象リソースタイプと query_count 指標タイプを使用して、Cloud Monitoring に指標データを書き込みます。status 指標ラベルを使用してデータをフィルタし、データベース クエリの成功と失敗をカウントできます。

リクエスト ベースの可用性 SLI を表現するには、次の例に示すように、リクエスト全体に対する「良い」リクエストについて、TimeSeriesRatio 構造体を作成します。

"serviceLevelIndicator": {
  "requestBased": {
    "goodTotalRatio": {
      "totalServiceFilter":
        "metric.type=\"spanner.googleapis.com/query_count\"
         resource.type=\"spanner_instance\"
         metric.label.\"database\"=\"my_database\"",
      "goodServiceFilter":
        "metric.type=\"spanner.googleapis.com/query_count\"
         resource.type=\"spanner_instance\"
         metric.label.\"database\"=\"my_database\"
         metric.label.\"status\"=\"ok\"",
    }
  }
}

レイテンシ SLI

レイテンシを測定するために、Spanner では、spanner_instance モニタリング対象リソースタイプと api/request_latencies 指標タイプを使用して Cloud Monitoring に指標データを書き込みます。method 指標ラベルを使用してデータをフィルタし、特定のメソッドのレイテンシを測定できます。データには、クエリだけでなく他の Spanner API 呼び出しのレイテンシも含まれます。

リクエスト ベースのレイテンシ SLI を表現するには、DistributionCut 構造体を使用します。次の SLO の例では、1 時間のローリング期間で、my_database データベースに対する全 API リクエストの 99% が、合計レイテンシ 0~100 ミリ秒に収まることを想定しています。

{
  "serviceLevelIndicator": {
    "requestBased": {
      "distributionCut": {
        "distributionFilter":
          "metric.type=\"spanner.googleapis.com/api/request_latencies\"
           resource.type=\"spanner_instance\"
           metric.label.\"database\"=\"my_database\"",
        "range": {
          "min": 0,
          "max": 100
        }
      }
    }
  },
  "goal": 0.99,
  "rollingPeriod": "86400s",
  "displayName": "98% requests under 100 ms"
}

データストア

Datastore は、アプリケーション向けのスケーラビリティが高い NoSQL データベースです。シャーディングとレプリケーションを自動的に処理し、アプリケーションの負荷に合わせて自動的にスケールする、可用性と耐久性に優れたデータベースを提供します。

詳細については次のリンク先をご覧ください。

可用性 SLI

Spanner は、datastore_request モニタリング対象リソースタイプと api/request_count 指標タイプを使用して、Cloud Monitoring に指標データを書き込みます。response_code 指標ラベルを使用してデータをフィルタし、API 呼び出しの成功と失敗をカウントするか、api_method 指標ラベルを使用してドキュメントの読み取りなどを測定します。

リクエスト ベースの可用性 SLI を表現するには、次の例に示すように、リクエスト全体に対する成功したリクエストについて、TimeSeriesRatio 構造体を作成します。

"serviceLevelIndicator": {
  "requestBased": {
    "goodTotalRatio": {
      "totalServiceFilter":
        "metric.type=\"datastore.googleapis.com/api/request_count\"
         resource.type=\"datastore_request\"",
      "goodServiceFilter":
        "metric.type=\"datastore.googleapis.com/api/request_count\"
         resource.type=\"datastore_request\"
         metric.label.\"response_code\"=\"success\"",
    }
  }
}

レイテンシ SLI

Datastore は現在、レイテンシ指標を提供していません。利用可能な指標については、datastore.googleapis.com 指標タイプをご覧ください。