5. Надежность платежей: «Как решалась проблема идемпотентности в gRPC?»
Цель интервьюера: Платежи — самая опасная область для дублей (Double Spending).
Возможный вопрос:
«Запрос на оплату ушел через gRPC, но упал по таймауту (DEADLINE_EXCEEDED). Списались ли деньги — неизвестно. Что делает модуль оплаты?»
Как ответить:
«В финансовом транзакционном контексте любой повторный запрос обязателен с Idempotency Key:
1. В метаданных gRPC-запроса (metadata=((‘x-idempotency-key’, key_uuid),)) мы всегда передавали уникальный ключ транзакции.
2. При получении DEADLINE_EXCEEDED клиент мог безопасно делать Retry с тем же ключом.
3. Сервис эквайринга проверял наличие этого ключа в своей БД / Redis и либо возвращал статус уже проведенной транзакции, либо обрабатывал ее впервые.»