SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

GitOpsで実現する継続的デリバリー

一歩先の継続的デリバリー「プログレッシブデリバリー」とは? 概要と実現のためのソリューションの紹介

GitOpsで実現する継続的デリバリー 第2回

分析のポイント(1)最適なメトリクスの選択

 分析のプロセスは、メトリクスの種類を選択するところから始まります。このプロセスは非常に大切です。普段のモニタリングで使用している全てのメトリクスを使えば良いのでしょうか?

 メトリクス数が少なければ問題ないかもしれませんが、多すぎるとデプロイの度に偽陽性が生じ、デプロイプロセスから円滑さが失われることになるでしょう。

 では、どのようなメトリクスをカナリア評価に使うべきなのでしょうか。最初に選択するメトリクスは、実際にエンドユーザーに見える問題を示すものであるべきです。

 あなたのチームがSLI(Service Level Indicator)を明確に定めているのであれば、それを計測するためのメトリクスを真っ先に採用するべきです。迷ったら、『Site Reliability Engineering』で定義されている「The Four Golden Signals」のうちの以下の3つを選択することをおすすめします。

  1. Latency:レスポンスを返すまでにかかる時間
  2. Errors:失敗したリクエストの割合
  3. Saturation:システムが処理できないリクエストを抱えている度合い

 焦りは禁物です。優れたメトリクス選択のために、段階的にクエリを追加していくことをおすすめします。

分析のポイント(2)最適な閾値の選択

 メトリクスを選択したら、今度は閾値をどのように決めるかを考える必要があります。

 どんなに良いメトリクス選択をしても、デプロイを失敗させる基準の設定を誤るとたちまち偽陽性や偽陰性が生じてしまいます。

 継続的デリバリーをSaaSとして提供しているHarness社は、既存ソリューションを面白い観点で2つに分けています。どのように閾値を決定するかという観点でStatic RulesとDynamic Dataという表現をしており、これが説明の上で役立つので本記事でも拝借します。

 Static Rulesとは、システムオーナー自身が閾値を静的に定義する方法です。

 例えばシステムオーナーが失敗条件を「HTTPエラーレートが1%未満」と定義した場合、条件を変えない限り全てのデプロイをそのルールに従って分析します。これは非常にシンプルな手法であるため、分析自体を容易にコントロールできます。

 プログレッシブデリバリーを始めて間もない時期は、Static Rulesに基づいた分析で十分であると思います。メトリクスの種類も少ないでしょうし、SLIに基づいた適切な閾値設定がされていれば、限りなく理想的な分析が行えるでしょう。

 ただ、アプリケーションは時間の経過とともに進化します。静的に閾値を定義するという柔軟性に欠けた方法では、いずれ閾値自体の設定に疲弊してしまうことにもなりかねません。そういったケースでは、Dynamic Dataに基づいた閾値の決定が有効です。これは、CDシステム側で動的にデータを取得しながら閾値を判断していく手法です。

 それぞれの特徴をまとめると次のようになります。

Static Rules

メリット
  • シンプルで、トラブルシュートが容易
  • 自由度が高い
デメリット
  • アプリケーションの状態は常に変わっていくのでスケールしない場合がある

Dynamic Data

メリット
  • 最適な閾値を模索するコストが減る
  • アプリケーションの状態に応じてスケール可能
デメリット
  • メトリクスの分析処理がブラックボックス化され、内部動作が分かりづらい

 次からは、プログレッシブデリバリーを行うための既存ソリューションを、Static RulesとDynamic Dataに分けて紹介していきます。

次のページ
Static Rulesで閾値を決定するソリューション

この記事は参考になりましたか?

GitOpsで実現する継続的デリバリー連載記事一覧

もっと読む

この記事の著者

中尾 涼(株式会社サイバーエージェント)(ナカオ リョウ)

 2020年に新卒でサイバーエージェントに入社。オープンソースの継続的デリバリシステム、PipeCDの開発に従事。 GitHub: nakabonne

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/14476 2021/07/21 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー