advanced

Распределённый трейсинг

Следуйте за запросом через frontend, gateway, сервис, БД и worker, чтобы найти границы latency и сбоев.

Распределённый трейсинг следует за одной логической операцией через процессы: browser → API → БД → очередь → worker → сторонний HTTP. Показывает, где копится latency и какая зависимость владеет сбоем.

					[browser]──►[api]──►[postgres]
                └──►[payment-api]
                └──►[queue]──►[worker]
				

Sampling балансирует стоимость и покрытие: всегда трейсить ошибки и медленные пути; сэмплировать happy path. Трейсы полезны при общих ID с логами и exemplars метрик.

На интервью: critical path checkout, head-based vs tail-based sampling и трейсинг async после HTTP-ответа.

Типовые ошибки: контекст рвётся на очереди; только frontend; spans слишком мелкие (каждая функция) или грубые (один span на сервис).

Компромисс — overhead хранения и instrumentation против времени понимания cross-service инцидентов.

Чеклист:

  • Propagation контекста на HTTP и messaging.
  • Spans на границах зависимостей.
  • Связь traces с логами через trace ID.
  • Sampling осознанный, не 100% везде.