GH GambleHub

リリース戦略:青緑色とカナリア

(セクション: 技術とインフラ)

概要

ブルーグリーンは、最も単純なロールバックで2つのフルスタック(ブルー/グリーン)を即座に切り替えます。カナリアは、SLOゲート(レイテンシー、エラー率、ビジネスメトリック)の制御下で、新しいバージョンへのトラフィックのシェアを徐々に増加させています。iGamingの場合、これは安定したp99と品質を維持しながら、トーナメントやプロモーションのピーク時にダウンタイムなしでリリースする方法です。

1)いつ選ぶべきか

ブルーグリーン-高速リリース、最小限の複雑さ、「ダブル」クラスタ/リソース予算が必要です。複雑な状態移行なしでAPI/フロントに適しています。
カナリア-高リスクのリリース(新しいフロー、重要な変更)、トラフィックの1-5%による劣化を「キャッチ」することができます。テレメトリーと自動ゲートが必要です。

2)建築の原則

1.L7レベルのルーティング:balancer/Ingress/service-mesh(重み付けされたトラフィックモジュール、クッキー/フラグルーティング)。
2.孤立した依存関係:構成、phicheflags、 secrets、 caches-リビジョン用に別々に。
3.データ互換性:転送互換(expand→migrate→contract)データベースの移行。
4.観測可能性:メトリック/ログ/トラック内の個々のラベル/バージョンラベル。
5.オートゲート:p95/p99の比較、エラー率、ビジネスKPI;自動ロールバック。

3)青緑: 基本的なパターン

ストリーミング

1.[緑](青のコピー)を展開→キャッシュ/接続をウォームアップします。
2.健康/喫煙テストを実行します。
3.トラフィック(DNS/LB/Ingress)をグリーンに切り替えます。
4.Blueはウィンドウの最後までフォールバックとして「暖かい」状態に保ちます。

例: 入力レベルスイッチング(アイデア)

yaml
Annotated/Backend Option - In Prod, it is usually controlled by the spec operator/rollout:
rules:
- host: api. example. com http:
paths:
- path: /
backend:
service:
name: api-green # used to be api-blue port:
number: 80

長所/短所

シンプルなロールバック(返される青)。
予測可能なリリース時間。
リソースの重複が必要です。
カナリア測定なしの「ビッグバン」のリスク。

4)カナリア: 段階的な組み立て

ストリーミング

1.シャドウトラフィック(オプション)→実際のトラフィックの1%→5%→25%→50%→100%。
2.各段階で-SLO/ビジネスメトリックによるゲート。
3.劣化中-診断成果物の自動ロールバックと保存。

例: Argoロールアウト(スニペット)

yaml apiVersion: argoproj. io/v1alpha1 kind: Rollout metadata: { name: payments-api }
spec:
strategy:
canary:
canaryService: payments-canary stableService: payments-stable steps:
- setWeight: 5
- pause: { duration: 5m }
- analysis:
templates:
- templateName: slo-latency
- setWeight: 25
- pause: { duration: 10m }
- analysis:
templates:
- templateName: error-rate
- setWeight: 50
- pause: { duration: 20m }
- setWeight: 100

例: フラガー+イスティオ/NGINX(アイデア)

yaml apiVersion: flagger. app/v1beta1 kind: Canary metadata: { name: games-api }
spec:
targetRef:
apiVersion: apps/v1 kind: Deployment name: games-api service:
port: 80 analysis:
interval: 1m threshold: 5 metrics:
- name: request-success-rate thresholdRange: { min: 99 }
- name: request-duration thresholdRange: { max: 300 }
webhooks:
- name: smoke url: http://tester/smoke

5)ウォームアップとコンディション管理

キャッシュ/ソース:Redis/HTTP キャッシュ/CDNをウォームアップし、データベース/PSPへのウォームプール接続を準備します。
ML/LLM/モデル:ロード重み/インデックス/埋め込み、KVキャッシュ、「ウォームアップ」の主な要求。
ファイル/アーティファクト:静的コンテンツ、テンプレート、コンフィギュレーション-ローカルボリューム/サイドカーに事前に送信します。
Ficheflags:オーディエンス/セグメントの1-5%でロールアウト、緊急キルの機会。

6)データベース: 「展開→移行→契約」戦略

1.展開:nullable/new columns/indexesを追加し、両方のバージョンをサポートします。
2.Migrate:コードは新しいスキームを使用します。古いパスは有効なままです。
3.Contract:フル解除後、古いフィールド/インデックスを削除します。

ログで、スキーマとクライアントバージョンを修正します。すべての変更はidempotentです。
重い移行の場合-バックグラウンドジャブ、スロットリング、「世界を止める」ウィンドウが合意されています。

7)観測可能性およびゲート(SLO/SLA)

SREメトリクス:p50/p95/p99、エラーレート、彩度(CPU/GPU/IO)、キュー深さ、コールドスタート時間。
ビジネス指標:支払いコンバージョン、入札成功、引き出し時間(TTW)、プロモーション応答。
コンテンツ品質/LLM: トークン/s、応答長、毒性、RAGスコア。
ゲート:しきい値を超えたり「、便利なメトリック」が落ちたりすると自動プロモーション/ロールバックされます。

「ポリシー」(擬似)の例:

gate:
p95_latency_ms <= 250 error_rate %  <= 1. 0 payment_conv  >= baseline - 0. 3%
action:
promote      rollback

8) CI/CDとのリリースオーケストレーションと統合

GitOps:バージョン/重量の変更-マニフェストリポジトリへのPRを介して。
交通が始まる前に煙/e2eを自動点検します。
リリース計画:カナリアステップスケジュール、責任、ChatOpsチャンネル、ロールバックウィンドウ。
アーティファクトのアーカイブ:ルーティングコンフィギュレーション、ダッシュボードスナップショット、メトリック比較ログ。

9)複数の地域および端

注文:最初に「最小クリティカル」領域/ROR、次にメイン領域。
レイテンシーベースのルーティング:ローカルSLOを監視します。トラフィックを混ぜないで。
DR-vision:地域Aの青は地域Bの緑のためのDRサイトであるかもしれません。

10)安全性とコンプライアンスリリース

署名されたルックス/チャート、SBOM;入場ポリシーの署名をチェックします。
秘密:外部マネージャーのみ;Blue/Greenの独立したバージョン。
PII/regionality:外国の地域を経由してPIIからのトラフィックを流用しないでください。比較するときにログをマスクします。
監査:誰が昇進しました、どのゲートが働いていました、どこでロールバック。

11)構成例

NGINX: Cookie/Headerによるカナリアブランチ(アイデア)

nginx map $http_x_canary $canary {
default 0;
"1"   1;
}

upstream api_stable { server stable:80; }
upstream api_canary { server canary:80; }

server {
location / {
if ($canary) { proxy_pass http://api_canary; }
proxy_pass http://api_stable;
}
}

フィーチャーフラッグ「フラクショナルロールアウト」(擬似)

yaml feature: new_checkout rollout:
percentage: 5 criteria:
country: ["TR", "BR", "MX"]
cohort: "new-users"
kill_switch: true

12) Runbooks(典型的なシナリオ)

カナリアのp99の成長:プロモーションを停止する→バッチ/タイムアウトを増やす、フラグを介して重い機能をオフにする→ポッドの一部を再起動する。
支払の変換ドロップ:PSPルート/機能を比較し、シャドウロギングを有効にし、ロールバックを安定させます。
データベース移行の問題点:書き込み用のトラフィックのフリーズ、読み取り専用モードの有効化、スキーマのロールバック(可能であれば)、緊急修正ジャブ。
PIIインシデント:カナリア版、秘密の取り消し、報告と監査を遮断します。

13)実装チェックリスト

1.ポリシーを定義する: 青緑色、カナリア;「重要」と考えられています."

2.重み付けルーティング(Ingress/mesh/router)を構成します。
3.SLO閾値ゲートと自動ロールバックをキャプチャします。
4.データベースのexpand→migrate→contractを実装します。移行テスト。
5.キャッシュ/モデルとウォームプール接続のウォームアップを有効にします。
6.GitOpsを入力し、すべてのリリースアクションをログに記録します。
7.メトリクスの比較を可視化します(カナリvs安定)。
8.ゲームデーを過ごす:ゲートロールバック/失敗/データベースの問題をシミュレートします。
9.ランブックとキルスイッチを文書化します。
10.マルチリージョンのリリースを同時に計画することはできません。

14)アンチパターン

ゲートとテレメトリーのないカナリア放出→劣化の遅れ検出。
DBスキーマのブレンド:コードアンワインドへの破壊的な移行。
1つの共有キャッシュ/キューで、BlueとGreenを分離→相互影響なしで使用できます。
検証なしで低TTLのDNSスイッチング-「フラッピング」トラフィック。
両方のリビジョンに共通のSecrets/configs→複雑なロールバック。
影/煙のない食品へのトラフィックは、大きなバンリスクです。
クイックシャットダウンのためのキルスイッチ/フィーチャーフラグはありません。

概要

Blue-greenは、即時で簡単なスイッチング、カナリア管理リスク、および早期の問題検出を提供します。iGamingでは、両方のパターンが組み合わされています:「シャープ」変化のカナリア+ダウンタイムのない基本的なメカニズムとして青緑色。SLOゲート、GitOps、ウォームアップ、データベースの互換性と依存関係の分離を追加します。リリースは予測可能で、ロールバックは高速で、ピーク時でもp99とビジネスメトリックは安定しています。

Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

Telegram
@Gamble_GC
統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。