Тестовое задание по вакансии backend-разработчика: спроектировать асинхронный микросервис обработки платежей с гарантированной доставкой событий. Требования: идемпотентность создания платежа, асинхронная обработка через брокер сообщений, webhook-уведомления о результате, обработка сбоев.
Реализовал на FastAPI + PostgreSQL + RabbitMQ: создание платежа с ключом идемпотентности (повторный запрос не создаёт дубликат), паттерн Outbox для атомарной записи события вместе с платежом, фоновый poller публикует события в очередь, consumer обрабатывает платёж и отправляет webhook с retry (экспоненциальная задержка) и Dead Letter Queue. Миграции Alembic, развёртывание через Docker Compose.
Сервис обрабатывает платежи асинхронно без потери событий даже при падении брокера, webhook гарантированно доставляется или уходит в DLQ для ручной разборки. Покрытие тестами. Код: github.com/EryyynIT/async-payment-processing-service