Payments Infrastructure
Відмовостійкий Платіжний Шлюз
Проектування мікросервісу для обробки транзакцій під високим навантаженням. Фокус на Ідемпотентності, ACID транзакціях та Нульовій втраті даних.
99.99%
Uptime Design
0%
Double Spending
REST
Архітектура
01 Виклик (Проблема)
Чому це було складно?
Бізнесу необхідно було інтегрувати нового провайдера (Stripe/Adyen) для виходу на глобальні ринки. Стара система обробляла платежі синхронно за принципом "fire-and-forget", що призводило до критичних проблем:
-
Ризик подвійних списань Через таймаути мережі клієнти повторювали запити, і гроші списувалися двічі за одне замовлення.
-
Неузгодженість даних База даних показувала "Pending", а Банк — "Success". Був відсутній механізм звірки.
02 Рішення та Артефакти
1. Логіка Ідемпотентності (Sequence)
Request Deduplication Logic
SVG
Логіка: Перед обробкою API перевіряє Redis на наявність Idempotency-Key. Якщо ключ існує (заблокований), повертається кешований результат, запобігаючи повторному виклику Банку.
2. Модель Даних (ERD)
3. Специфікація OpenAPI
openapi.yaml
paths: /v1/payments: post: summary: Initiate a secure transaction parameters: - in: header name: Idempotency-Key # Critical for safety required: true schema: type: string format: uuid requestBody: content: application/json: schema: type: object required: [amount, currency, token] properties: amount: type: integer example: 5000 # in cents currency: type: string example: "USD" responses: '201': description: Transaction Created '409': description: Conflict (Idempotency Key used)
Технології та Стандарти
REST API
Redis (Locking)
PostgreSQL
PCI DSS Scope