Upgrade to Pro — share decks privately, control downloads, hide ads and more …

入門リトライ

ryuichi1208
March 07, 2025
6.9k

 入門リトライ

ryuichi1208

March 07, 2025
Tweet

More Decks by ryuichi1208

Transcript

  1. • 渡部⿓⼀ • 株式会社IVRy SRE • X: @ryuichi_1208 • SRE

    NEXT Co-Chair • 札幌は4回⽬ • 障害対応‧EOL対応 ⾃⼰紹介
  2. • サーバ側の操作がRDBとのやり取りだけならBEGIN ~ COMMITで括る ◦ トランザクションが失敗した場合リトライ • 外部のAPIとかDBを2つ使うとか普通にあるのでRDBのようには⾏かない ◦ RDSに書いてDynamoDBにも書いて〜みたいなやつ

    ◦ 分散トランザクション...?? ▪ XA, 2PC, Paxos, Raft • ロールバックを考慮すると操作単位で冪等性を担保しておく トランザクションでなんとかなる...のか?
  3. • アーキテクチャの最適化 ◦ インターネット越しのAPI通信はネットワーク遅延や不安定さが原因でリト ライが増えがち ◦ インターネットを通さないようにする、キャッシュ、フォールバック • SLI/SLOの⾒直し ◦

    ユーザー体験を考慮し、「リトライしても成功しない可能性が⾼い場合は、 最初のエラーで諦める」設計 ◦ 機能⾃体を縮退してユーザーには最低限レスポンスを返す ▪ 重要でない操作は再試⾏してスループットに影響を与えるよりも、フェ イルファストする SLO: p99.99で500msのサービスでリトライは?
  4. • インフラ層でリトライやトラフィック管理を⼀元化する ◦ Envoy や Nginx などのプロキシ • アプリケーションはGatewayに対してHTTPリクエストを投げておくだけでイン フラ層でリトライ制御を実装してくれる

    • リトライ制御だけでなくCircuit Breakerとしても働く ◦ 障害発⽣時にリトライを⼀定時間停⽌し、過負荷状態を防ぐ 役割 • リトライが発⽣したかの監視もやりやすかったりする ◦ 特定の時間に⼤量にリトライが発⽣していたなどを後から追える API Gateway / Service Proxy
  5. • SRE サイトリライアビリティエンジニアリング / オライリージャパン • マイクロサービスアーキテクチャ 第2版 / オライリージャパン

    • 実⽤ Go⾔語 / オライリージャパン • UNIXネットワークプログラミング Vol.1 第2版 / ピアソン‧エデュケーション • TCP技術⼊⾨ / 技術評論社 • マイクロサービスパターン / インプレス 参考書籍