Skip to content

部分失敗 ― 30人目で失敗。残り70人は?

📖この章のキーワード
用語意味なぜ重要か
部分失敗全体の一部だけが失敗し、残りは成功する状態全か無かではない現実的な障害
障害局所化失敗の影響を一部に限定する設計チャンク分割の核心
再送失敗した分だけを再度実行すること部分失敗を前提とした運用

Phase 1: 観察

100 人にメッセージを送る 2 つの設計:

php
// 設計 A: 1ループで全員
foreach ($friends as $friend) {
    $line->pushMessage($friend->friend_id, $message);
    // 30人目で例外 → ループ中断 → 残り70人に送信されない
}
php
// 設計 B: チャンク分割(LIBOT の設計)
$chunks = array_chunk($friendIds, 10);
foreach ($chunks as $chunk) {
    SendReferralBatch::dispatch($broadcast, $chunk);
}
// 10人ずつ10個のJobに分かれる
// Job 3 が失敗しても、他の9個のJobは正常に完了

Phase 2: 判断

AI禁止ゾーン

100 人に送信中、30 人目で LINE API がエラーを返しました。

  • 設計 A で 残り 70 人 はどうなりますか?
  • 設計 B で 3 番目のチャンク(21-30 人目) はどうなりますか?
  • 部分失敗を許容する設計で 必要な機能 は何ですか?

AIに聞く前に、自分の頭で考えてみましょう。

テキストを入力すると有効になります