powered by TechFeed
表示モード
Deep Dive

AIエージェントはマイクロサービスの失敗を繰り返している — 「静かな品質劣化」と3週間の障害調査が示す運用の死角

11月9日、O'Reillyが「Why AI Agents Are Repeating 2019's Microservices Mistake」と題した記事を公開した。この記事では、AIエージェントのマルチエージェント設計がかつてのマイクロサービス分解と同じ運用上の失敗パターンを踏んでいるという考察について詳しく紹介されている。以下に、その内容を紹介する。

11月9日、O'Reillyが「Why AI Agents Are Repeating 2019's Microservices Mistake」と題した記事を公開した。この記事では、AIエージェントのマルチエージェント設計がかつてのマイクロサービス分解と同じ運用上の失敗パターンを踏んでいるという考察について詳しく紹介されている。以下に、その内容を紹介する。


「静かな品質劣化」という見えない障害

記事の著者は、ワークフローを3つのエージェントに分割した設計判断を振り返りながら、この問題を具体的なインシデントで説明している。

構成はシンプルだった。第1エージェントがドキュメント群を受け取り、第2エージェント(サマライザー)に渡す。サマライザーは「シグナルが低い」と判断したフィールドを出力から省いた。第3エージェントはそのフィールドなしで推論し、自信満々な推薦を返した。レイテンシは正常、エラーレートもフラット、各エージェントは設計通りに動作していた。それでも、出力の品質は徐々に低下していた。

問題が発覚したのは品質レビューで、レビュアーの「何かおかしい」という直感がきっかけだった。自動監視では何も検知できなかった。原因の特定に約3週間を要した。


マイクロサービスの「二日酔い」が再来している

2019年前後、多くのチームがマイクロサービスの複雑さに追いつけなくなった。数百のサービスを走らせながらトレーシングもコントラクトバージョニングも不十分で、問題はインシデントではなく「リリースが遅くなる」という形で表面化した。複雑さがサービス間の"隙間"に移動しただけで、消えたわけではなかった。

AIエージェントはこの周期をさらに速く回している。マイクロサービスはリポジトリとデプロイパイプラインを要したが、エージェントは「午後一つとプロンプト」で立ち上がる。作成コストが下がった結果、プロダクトチームは誰にも確認せずエージェントを作り、誰も全体像を把握できなくなる。

NeurIPS 2025で発表された研究MASTでは、7つの主要マルチエージェントフレームワークにわたる1,600件以上の実行トレースを分析し、14種類の再発する障害パターンを分類している。その大半は、モデル自体ではなく仕様の曖昧さとエージェント間の協調に起因している。


3つの固有リスク

インベントリの欠如:Kubernetesのマニフェストにはサービス一覧が残るが、エージェントはワークフローツールや週末の個人自動化の中に生まれ、記録が残らない。コンプライアンス審査で「どの自動システムがこの判断に触れたか」を問われたときに初めて実態がわかる。

信頼度の連鎖増幅:分散システムはHTTP 500で大きく失敗する。エージェントは流暢に静かに失敗する。上流エージェントが「もっともらしいが誤った」サマリを出力すると、下流エージェントはそれを正しい前提として推論し、根拠のない自信を積み重ねる。ユーザーに届く時点で、元の証拠が支持しない確信度で結果が提示される。

コスト構造の非対称性:マイクロサービスのリトライループはCPUを消費し午前3時にアラートを鳴らす。エージェントのループはターンごとに実際のコストが発生し、飽和するような症状が出ない。障害はインフラのアラートではなくビリングサイクル末の数字として現れ、PMがその説明をする羽目になる。


マイクロサービスから転用できる解決策

著者は「マルチエージェント設計が悪い」と主張しているわけではない。運用プラクティスがアーキテクチャと同時に進化しないことが問題だ、というのが論旨である。

レジストリ:最も安くて最初に省略されるもの。マイクロサービス時代のサービスカタログと同様に、各エージェントのオーナーとスコープ、そして呼び出しを許可されているもののリストを記録する。

分散トレーシング:OpenTelemetryのGenAI Semantic Conventionsを使えば、エージェントの実行をスパンツリーとして可視化できる。冒頭のインシデントでこれが実装されていれば、サマライザーのスパンとレコメンダーのスパンが同一トレースに並び、フィールドの欠落は「3週間の調査」ではなく「差分の確認」で済んだはずだ。

コントラクトテスト:プロンプトの変更はスキーマdiffも型チェックも発生させない。マイクロサービスのコントラクトテストの規律を転用し、下流エージェントが依存する出力要件を定義し、プロンプト変更前に評価を通過させる。Google A2Aインフラに行動コントラクトモデリングを適用したSEMAPでは、MASTスコアで関数レベルのコーディングタスクの障害が最大約70%減少したと報告されている。

ツールアクセスのポリシー化:エージェントが広範なツールアクセスを得るのは「我々が作ったから」という理由であってはならない。許可範囲はモデルが「話し合って回避できない」ポリシーレイヤーで管理すべきで、丁寧にお願いするだけのシステムプロンプトではない。


設計承認前に問う4つの質問

著者は設計レビューで以下を必ず確認するという。

  1. 一つのリクエストを通して追跡し、各エージェントの判断を再構成できるか? できないなら、デバッグ不可能なものを作っている。
  2. 上流エージェントが誤ったとき何が起きるか? 「次のエージェントが普通に処理を続ける」が答えなら、障害モードを設計したのではなく、障害を放置している。
  3. このエージェントのオーナーは誰で、ツールアクセスはどこで強制されているか? システムプロンプトは強制ではない。
  4. 今の10倍の量でコストはいくらになり、数字がおかしくなったとき何が止めるか? 誰も自発的には答えないので、早めに問う。

マイクロサービスへの移行を最もうまく乗り切ったチームは、トレーシングとコントラクトテストを最初から組み込んでいた。同じ教訓を今度は最初から適用できる立場にある。40エージェントを走らせてから「どれが顧客データに触れたか」を問われるよりも、スプリント1〜2本分の投資でその問いに答えられる状態を作る方が合理的だ。

詳細はWhy AI Agents Are Repeating 2019's Microservices Mistakeを参照していただきたい。