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

入門リトライ

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for ryuichi1208 ryuichi1208
March 07, 2025
7.9k

 入門リトライ

Avatar for ryuichi1208

ryuichi1208

March 07, 2025
Tweet

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技術⼊⾨ / 技術評論社 • マイクロサービスパターン / インプレス 参考書籍