Argo Rollouts と Datadog を活用した Progressive Delivery 実践

はじめに

アソビュー Advent Calendar 2025 の 10日目(裏面)です。

こんにちは。アソビューで SRE をしている上島です。
現在、Argo Rollouts と Datadog を活用した Progressive Delivery の導入に向けて日々検証を進めています。

アソビューでは、サービス基盤を Kubernetes(Amazon EKS)上に構築しており、CD には Argo CD、運用オーケストレーションには Argo Workflows を採用しています。 Progressive Delivery を実現する手段としては、カナリアリリースをサポートする Argo Rollouts を採用しました。 既に活用している Argo CD や Argo Workflows と同じ Argo エコシステムに属しているため、運用面での親和性が高い点も採用理由の1つです。

Progressive Delivery を実現するためには、新バージョンの状態を正確に把握・分析できていることが重要です。
本記事では、その判定に活用している Datadog のカスタムメトリクスと Monitor を中心にご紹介します。

背景

アソビューでは、購入や着券といったミッションクリティカルな機能のリリースにおいては、長らくリリース可能な時間帯を制限する運用を続けてきました。

その結果、以下のような課題が生じていました。

  • リリースサイクルが遅くなる
  • 複数チームのリリースが特定時間帯に集中し、コミュニケーションコストが増加する
  • リリース直前にコンフリクトが発生するリスクが高まる

要件

これらの課題を解消し、安全性と俊敏性を両立したリリース運用を実現するために求められる要件を整理しました。

機能要件

  • 新バージョンのみを対象とした異常検知を実行できること
  • 異常検知結果に基づき、リリース段階を自動制御できること
  • クリティカルなエンドポイントの小さな異常も検知可能なこと

非機能要件

  • リリース状況が可視化され、関係者が容易に把握できること
  • 異常発生時に影響範囲を迅速に切り分けられること
  • プロダクトチームが自律的に運用しやすい仕組みであること

Progressive Delivery とは

Progressive Delivery は、継続的デリバリーを安全に、独自のペースで、独自の条件で実行するために必要な制御を提供します。

参考


一般的な Progressive Delivery の考えに基づきつつ、次の2点を重視しています。

独自のペース

現行バージョンは Stable を維持したまま、新バージョンのみを Canary にリリースし、影響範囲を限定した状態で検証します。問題なければ、そのまま Canary を Stable へ昇格させます。

独自条件

Canary の状態を正確に把握・分析するために Datadog カスタムメトリクスを発行し、Stable と分離して監視します。昇格可否や自動ロールバックは、このメトリクスを基に判定します。

技術要素

次の 4 つを組み合わせて Progressive Delivery を実現しています。

  1. Canary メトリクスの取得
  2. Datadog Monitor による正常性評価
  3. AnalysisTemplate による昇格・ロールバック制御
  4. Argo Rollouts の通知機能による可視化

1. Canary メトリクスの取得

Datadog 標準メトリクスでは Stable / Canary が合算されてしまうため、Canary の状態が埋もれてしまいます。 そのため Pod Label(例:version=canary)を基に Canary 専用のカスタムメトリクス を発行し、新バージョンのみのを正確に把握・分析できるようにしています。

参考:カスタムメトリクス

2. Datadog Monitor による正常性評価

Canary のカスタムメトリクスを対象に、Datadog Monitor による評価を行っています。 対象サービスのすべてのエンドポイントを評価 することで、全体としては目立たない局所的な異常も検出できるようにしています。

過去インシデントの傾向を踏まえ、「リクエスト数」と「エラーレート」のしきい値を設定し、両者が同時に超過した場合にのみ Alert となるようにすることで、実際に影響が懸念される状態を確実に検出できるようにしています。

1つのエンドポイントがしきい値を超過している

1つのエンドポイントもしきい値を超過していない

リクエスト数・エラーレートともにしきい値を超過しているエンドポイントがない

参考:複合条件モニター

3. AnalysisTemplate による昇格・ロールバック制御

Argo Rollouts の AnalysisTemplate が Datadog 複合条件モニターの状態を参照し、その結果に応じてアクションを実行します。

  • OK(問題なし) -> Stable に昇格
  • Alert(異常検知) -> 自動ロールバック

以下は、AnalysisTemplate を使用した analysis の定義例です。

apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata:
  name: args-example
spec:
  args:
  - name: DD_API_KEY
    valueFrom:
      secretKeyRef:
        name: datadog-api-key
        key: DD_API_KEY
  - name: DD_APP_KEY
    valueFrom:
      secretKeyRef:
        name: datadog-app-key
        key: DD_APP_KEY
  metrics:
  - name: webmetric
    successCondition: result == 'OK'
    provider:
      web:
        url: < datadog monitor api endpoint >
        headers:
        - key: DD-API-KEY
          value: '{{ args.DD_API_KEY }}'
        - key: DD-APPLICATION-KEY
          value: '{{ args.DD_APP_KEY }}'
        jsonPath: '{.overall_state}'

参考:Overview - Argo Rollouts - Kubernetes Progressive Delivery Controller

4. Argo Rollouts の通知機能による可視化

リリース状態を Slack へ通知し、現在のステップや Analysis 結果をリアルタイムに把握できるようにしています。 また、Slack 通知内に Argo Rollouts の UI Dashboard や Datadog Monitor のリンクを併記することで、異常発生時の迅速な状況把握を可能にしています。

成功通知(失敗通知では、その後の対応を促す文言を含めています)

参考:Slack - Argo Rollouts - Kubernetes Progressive Delivery Controller

ネクストアクション

Progressive Delivery の運用をより安心して行えるよう、以下の強化を進めていきます。

  • ダッシュボード整備による可視化向上
  • イレギュラー発生時の対応フローの策定
  • Datadog Bits AI SRE を活用した一次調査の効率化 ...etc

参考:

おわり

今回の取り組みにより、新バージョンの状態を正確に把握・分析できるようになり、Progressive Delivery の基盤を構築できました。 一方で、ネクストアクションに挙げたような運用面での強化も必要です。 引き続き、プロダクトのリリースサイクルの向上に向けて、取り組みを進めていきます。

アソビュー株式会社では新しいメンバーを随時募集しています! SRE チームに少しでも興味のある方は、ぜひお気軽にカジュアル面談にお越しください!!

speakerdeck.com

www.asoview.com