Использование Tower для написания расширяемых HTTP клиентов
Тезисы

В Т-Банке к микросервисам предъявляются жёсткие требования по отказоустойчивости и наблюдаемости. Если просто взять Reqwest и начать общаться между сервисами — очень быстро приходит боль:

  • "А что делать, если один из сервисов прилёг?"
  • "Как добавлять retry?"
  • "А если retry его уложит окончательно?"
  • "А где логи, где метрики, где трейсинг?"
  • "Блин, там ещё какие-то заголовки пробрасывать надо"
  • "Ой, а мы забыли про авторизацию"

После нескольких таких итераций возникло понимание, что Tower — это лучшее решение для всех этих проблем.


В докладе я расскажу о том, как он устроен и как с его помощью добавлять к Reqwest любые навороты типа retry, rate limiter, distributed tracing, circuit breaker, headers propagation и т.д. И главное — как сделать это всё переиспользуемым.

В Т-Банке к микросервисам предъявляются жёсткие требования по отказоустойчивости и наблюдаемости. Если просто взять Reqwest и начать общаться между сервисами — очень быстро приходит боль:

  • "А что делать, если один из сервисов прилёг?"
  • "Как добавлять retry?"
  • "А если retry его уложит окончательно?"
  • "А где логи, где метрики, где трейсинг?"
  • "Блин, там ещё какие-то заголовки пробрасывать надо"
  • "Ой, а мы забыли про авторизацию"

После нескольких таких итераций возникло понимание, что Tower — это лучшее решение для всех этих проблем.


В докладе я расскажу о том, как он устроен и как с его помощью добавлять к Reqwest любые навороты типа retry, rate limiter, distributed tracing, circuit breaker, headers propagation и т.д. И главное — как сделать это всё переиспользуемым.

Информация о спикере
Алексей Сидоров
Ведущий разработчик, Т-Банк
Все доклады