Appearance
部分失敗 ― 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に聞く前に、自分の頭で考えてみましょう。
テキストを入力すると有効になります