intermediate
Correlation ID
Прокидывайте идентификаторы запроса или workflow через frontend, API, очередь и worker, чтобы события можно было связать.
Correlation ID (request ID, trace ID или workflow ID) связывает строки логов, exemplars метрик и тикеты поддержки с одним пользовательским путём. Прокидывайте его от edge через API, очереди, workers и callbacks.
// middleware
const requestId = req.headers['x-request-id'] ?? crypto.randomUUID();
res.setHeader('x-request-id', requestId);
req.log = logger.child({ requestId });
// enqueue
await queue.publish({ ...payload, requestId });
| Граница | Механизм | |---------|----------| | HTTP | `x-request-id`, W3C `traceparent` | | Очередь | Атрибуты / headers сообщения | | Frontend | ID из ответа BFF в client error reports |
Генерируйте на trust boundary, если нет; не пересоздавайте mid-flow, если не начинаете новую логическую операцию.
На интервью: где создавать ID, имена headers, async после ответа HTTP и связка Sentry на клиенте с backend-логами.
Типовые ошибки: ID теряется на границе очереди; разные имена headers; ID в логах без индексации.
Компромисс — дисциплина propagation против чуть больших payload и сложности middleware.
Чеклист:
- Создать или принять ID на edge.
- Propagation через sync и async.
- ID в client error reports.
- Индексация correlation-полей в хранилищах логов.