【りとらい】

リトライ とは?

💡 失敗しても諦めない、もう一回の精神
📌 このページのポイント
リトライ(再試行)の仕組み クライアント サーバー 1回目のリクエスト ✗ エラー応答 ⏱ 待機(間隔をあける) 2回目のリクエスト ✗ エラー応答 3回目のリクエスト ✓ 成功!
リトライのイメージ
ひよこ ひよこ

APIを呼び出したらたまにエラーになるんだけど、もう一回やると成功するんだよね。毎回手動でやり直すの面倒だなあ。

ペンギン先生 ペンギン先生

それはリトライの出番だね。一時的なエラーに対して自動で再試行する仕組みだよ。ネットワークの一瞬の不調なんかは、少し待ってからもう一度リクエストすれば成功することが多いんだ。

ひよこ ひよこ

じゃあ、失敗したらすぐにもう一回リクエストすればいいの?

ペンギン先生 ペンギン先生

すぐに連続で送ると、サーバーがさらに苦しくなるよ。指数バックオフといって、1秒、2秒、4秒…と待ち時間を倍々に増やしていくのが定番のやり方だね。

ひよこ ひよこ

なるほど!でも何回もリトライし続けたら永遠に終わらなくない?

ペンギン先生 ペンギン先生

だから最大リトライ回数を決めておくのが大事なんだ。たとえば3回までリトライして、それでもダメならエラーとして処理する。サーキットブレーカーと組み合わせれば、障害が広がるのも防げるよ。

ひよこ ひよこ

サーキットブレーカーってリトライとどう違うの?

ペンギン先生 ペンギン先生

リトライは「失敗したら再試行する」だけど、サーキットブレーカーは「失敗が多すぎたら一定時間リクエスト自体を止める」仕組みだよ。電気のブレーカーが過電流で落ちるのと同じ発想。障害のあるサービスに無駄なリクエストを送り続けるのを防いで、システム全体が連鎖的に壊れるのを食い止めるんだ。

ひよこ ひよこ

リトライって何でも再試行していいの?

ペンギン先生 ペンギン先生

いい質問だね。リトライしていいのは「一時的なエラー」だけだよ。ネットワークタイムアウトや503(Service Unavailable)は再試行する価値がある。でも400(Bad Request)や401(Unauthorized)を何度リトライしても結果は変わらない。HTTPステータスコードを見て「リトライ可能かどうか」を判断するのが大事なんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
リトライは、一時的なエラーに対して自動で再試行する仕組みです。指数バックオフで待ち時間を調整し、最大回数を設定することが重要です。闇雲にリトライするのではなく、サーキットブレーカーフォールバックと組み合わせて使いましょう。
📖 おまけ:英語の意味
「Retry」 = 再試行する
💬 re(再び)+ try(試す)が語源。IT分野では失敗した処理を自動的にやり直す仕組みを指す
← 用語集にもどる