0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

非同期マイクロサービスにおけるプラットフォーム基盤で大事なこと

Last updated at Posted at 2025-10-24

前置き

以下の記事でも書きましたが、独立したエンドツーエンドパイプラインを採用するということは、従来の「デプロイ前のE2Eテスト」を放棄することを意味します。

その代わりに、CI/CDパイプラインはサービスメッシュとオブザーバビリティを組み込み、
デプロイ後の本番環境での検証を自動化する、より高度な責務を担うことになります。

なぜ従来のE2Eテストが破綻するのか

サービスが非同期で疎結合になり、パイプラインが独立すると、従来のE2Eテスト(Staging環境で全サービスを起動してテストする)は以下の理由で破綻します。

環境構築の不可能性

100のサービスを、すべて特定のバージョンで同期させてStaging環境にデプロイするのは、現実的に不可能です。

非同期の壁

Service Aがイベントを発行した後、Service Bが処理を終えるまで「何秒待つ」というテストは、本質的に不安定(Flaky)です。

独立性の侵害

Pipe-APipe-Bの起動を待つ時点で、パイプラインには時間的結合が発生しており、パイプラインの「独立性」が失われ、ファンインパイプラインに逆戻りしてしまいます。

新しいパラダイム:CI/CDが本番環境を「観測」する

この問題を解決するため、パイプラインの責務は

「デプロイしたら終わり」から「デプロイし、その影響を観測し、安全を保証する」

へと進化します。

ここでCI/CD、サービスメッシュ、オブザーバビリティが連携します。

1. CI/CDパイプラインの役割(オーケストレーター)

パイプラインは、Service A (v1.1)のデプロイを指示します。

2. サービスメッシュの役割(アクチュエーター)

CI/CDの指示を受け、サービスメッシュ(Istio, Linkerdなど)がプログレッシブ・デリバリーを実行します。

事例

Service Aへの本番トラフィックのうち、1%だけを新しいv1.1に流し、残りの99%は安定版のv1.0に流し続ける」(カナリアリリース)。

3. オブザーバビリティの役割(センサー)

サービスメッシュは、すべての通信のメトリクス(レイテンシー、成功率など)をオブザーバビリティ・プラットフォーム(Prometheus, Datadogなど)に送信します。

「サービス間をまたぐレイテンシー」を監視するメカニズム

パイプラインはデプロイ後、監視(Observe) フェーズに入ります。

ステップA (CI/CD)

1%のカナリアデプロイ後、5分間待機する。

ステップB (CI/CD)

オブザーバビリティ・プラットフォームに対し、v1.1を経由したユースケース」 のメトリクスを問い合わせる。

CI/CDが投げるクエリ (適応度関数)

・「Service A (v1.1)を経由したサービス間をまたぐユースケース(例: /checkout)のP99レイテンシーは、v1.0と比較して悪化していないか?」

・「Service A (v1.1)のエラーレートは、v1.0と比較して増加していないか?」

ステップC (CI/CD):

もし適応度関数が成功したら (例: レイテンシーもエラーも問題なし)

パイプラインはサービスメッシュに「トラフィックを100% v1.1に流せ」と指示します(プロモート)。

もし適応度関数が失敗したら (例: レイテンシーが急増)

パイプラインはサービスメッシュに「v1.1へのトラフィックを0%に戻せ」と指示します(自動ロールバック)。

まとめ

非同期・独立E2Eパイプラインの世界では、

サービスメッシュが「安全なデプロイの“実行部隊”」

となり、

オブザーバビリティが「デプロイの影響を測る“目”」

となります。

そして

CI/CDパイプラインは、それらを制御する「脳」

として機能し、「デプロイ後の本番環境での観測」こそを、最も重要な「E2Eテスト」 として実行します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?