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

httputil.ReverseProxy でもリトライがしたい

httputil.ReverseProxy でもリトライがしたい

TOGASHI Tomoki

May 19, 2022
Tweet

Other Decks in Programming

Transcript

  1. httputil.ReverseProxy でも
    リトライがしたい
    2022/05/19 | golang.tokyo #32
    TOGASHI Tomoki

    View full-size slide

  2. ABOUT ME
    富樫 知基 (TOGASHI Tomoki)
    バックエンドエンジニア @ ARIGATOBANK
    Go, Kubernetes, Google Cloud
    🐈, 🐈‍⬛, ⌨️
    @clomie

    View full-size slide

  3. go-retryabletransport
    https://github.com/toga4/go-retryabletransport

    View full-size slide

  4. リトライする

    http.RoundTripper

    View full-size slide

  5. ライブラリ作成の動機

    View full-size slide

  6. 動機
    たまに起きる接続エラー

    リトライしたい
    httputil.ReverseProxy

    View full-size slide

  7. 動機
    http.RoundTripper で実装が必要
    実装のプラクティスを集約したい
    リトライトリガーの定義
    バックオフ問題
    net/http/httputil.ReverseProxy でリトライしたい

    View full-size slide

  8. 使いかた

    View full-size slide

  9. 使いかた

    View full-size slide

  10. 使いかた
    Backoff 設定

    View full-size slide

  11. 使いかた
    親の Transport

    View full-size slide

  12. 使いかた
    リトライトリガー(エラー)

    View full-size slide

  13. 使いかた
    リトライトリガー(レスポンス)

    View full-size slide

  14. 使いかた

    View full-size slide

  15. Backoff
    インターフェースのみ、実装を提供しない
    代わりに既存の Backoff モジュールのアダプタを提供
    github.com/googleapis/gax-go/v2
    github.com/lestrrat-go/backoff/v2

    View full-size slide

  16. github.com/lestrrat-go/backoff/v2
    指数バックオフ

    View full-size slide

  17. github.com/lestrrat-go/backoff/v2
    定数バックオフ

    View full-size slide

  18. go-retryabletransport
    https://github.com/toga4/go-retryabletransport
    フィードバックお待ちしています

    View full-size slide