Какая минимальная единица в tracing

«Какая минимальная единица в tracing» — вопрос из категории Архитектура, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Golang минимальная единица в tracing — это span. Span представляет собой отдельную операцию или этап выполнения программы, включая метаданные (время начала, завершения, теги, логи).

Пример создания span с использованием go.opentelemetry.io/otel/trace:

ctx, span := tracer.Start(ctx, "operation-name")
defer span.End()
// выполнение операции
span.AddEvent("event-description")
span.SetAttributes(attribute.String("key", "value"))

Spans могут быть вложенными, образуя trace — цепочку связанных операций. Например, HTTP-запрос может включать spans для БД, кэша и внешних вызовов.