Технології та Інфраструктура → Serverless-підхід і функції
Serverless-підхід і функції
1) Що таке serverless і коли він потрібен
Serverless - модель, де хмара бере на себе управління серверами, масштабування і патчі, а команда пише обробники подій і використовує FaaS (Functions-as-a-Service) і BaaS (managed сервіси: черги, БД, сховища). Ви виграєте в швидкості поставки, платите за фактичне виконання і легко масштабуєте «шипучі» навантаження.
Де це особливо корисно в iGaming/фінтех:- Вебхуки PSP/KYC (багато коротких запитів, непередбачувані піки).
- Антифрод/скоринг (подієві функції, enrichment, feature store).
- Звітність/CDC → DWH (пакетна та стрімінгова обробка).
- Маркетинг/CRM (тригерні події, пуши, купони, сегментація).
- Легкі backend-API і службові завдання (throttling, cron-функції).
- Потрібна постійна низька P99-латентність (суб-10мс) без коливань.
- Довгоживучі з'єднання/протоколи (високочастотний real-time без проксі).
- Великі, stateful обчислення з тривалим CPU/GPU і tight coupling.
2) Архітектурні цеглинки
2. 1 FaaS
Обробники на події: HTTP/API-шлюз, черги, стріми, таймери, об'єктне сховище, БД-тригери.
Тонкий старт/пакетування: шари/образ-функції, прогрів.
2. 2 BaaS та інтеграції
Черги/стрімінг (at-least-once), Pub/Sub для подій домену.
Сховища: об'єктне (сировина/артефакти), KV/кеш, документи/реляційка.
Оркестрація: state machines/step functions, саги і компенсації.
API-шлюз: аутентифікація (OAuth/OIDC/HMAC), ліміти, трансформації.
2. 3 Мережевий контур
Публічний фронт (edge/API-шлюз) + приватні функції в VPC для доступу до БД/секретів/PSP.
Egress-контроль: allow-list до PSP/KYC, фіксовані NAT-IP.
3) Продуктивність: холодний старт, конкурентність, тривалість
Холодний старт: перший запуск контейнера функції після простою.
Мітигуйте: мінімізуйте залежності, використовуйте «прогрів» (periodic invoke), тримайте функції в одній зоні з джерелами, застосовуйте тривалі таймаути обережно.
Конкурентність: задавайте'max _ concurrency'і ліміти на джерело (черги/шлюз), щоб не «залити» PSP/БД.
Тривалість виконання: для довгих завдань - розбивка на кроки + оркестрація (step functions), для важких обчислень - batch/containers.
4) Надійність: ідемпотентність, ретраї, DLQ
Ідемпотентність: 'Idempotency-Key '/дедуплікація на прийомі (ключ + TTL-сховище).
Ретраї: експоненціальний backoff + jitter, ліміти спроб; відокремлюйте бізнес-помилки (4xx) від часових (5xx/timeout).
DLQ (dead-letter queue): для повідомлень, що не пройшли після N спроб; обов'язкова replay-консоль і трасування.
Exactly-once (практично): шаблони outbox/inbox, транзакційний журнал подій.
5) Стан і оркестрація
Без стану у функції, стан - у зовнішніх сховищах.
State machines: кроки платежу/виведення, KYC-workflow, антифрод-перевірки; чітка модель помилок/компенсацій.
Саги: «зарезервувати → підтвердити → компенсувати» при відкаті.
6) Безпека та відповідність
IAM за принципом найменших привілеїв: ролі per-функція, scoping на черзі/бакети/таблиці.
Секрети: менеджер секретів/KMS, ротація, HSM-рівень для ключів.
mTLS/HMAC для вебхуків, підпис тіла, вікно часу ± 5 хв.
Вбудовані WAF/бот-захист на API-шлюзі, rate-limits/quotas.
Сегментація: прод/стейдж, сервісні акаунти, приватні сабсети.
PII/PCI: токенізація PAN, маскування логів, «мінімізація даних».
Аудит: незмінні логи (WORM), трасування викликів, зберігання по регуляториці.
7) Спостережуваність і контроль якості
Метрики: RPS, P50/P95/P99, помилки за кодами, тривалість, холодні старти, конвеєр ретраїв, DLQ size.
Трейсинг (OTel): кореляція'trace _ id'крізь шлюз → функцію → черги → БД/PSP; обов'язкові лейбли'api _ version','region','partner'.
Логи: структуровані, з маскуванням PII.
Алерти за симптомами: burn-rate SLO, ріст ретраїв, хвіст P99.
Синтетика: перевірки з цільових країн (TR/BR/EU), імітація вебхуків.
8) FinOps і вартість
Платіть «за виклики і мілісекунди». Стеження за: частотою запусків, тривалістю, пам'яттю, трафіком.
Профілюйте гарячі шляхи: винесіть важкі залежності в шар/образ, кешуйте з'єднання.
Стримуйте фан-аут (масові паралельні виклики) лімітами і батчингом.
Розпізнавайте «витоки»: нескінченні ретраї, повідомлення в DLQ без обробки.
Плануйте пікові вікна (турніри/івенти) - предиктивний прогрів і квоти.
9) CI/CD і управління версіями
IaC: Terraform/CloudFormation/SAM/CDK - шаблони функцій, черг, прав, шлюзів.
Пакетування: lock-файли залежностей, мінімальний образ/шари.
Тестування: контракт-тести (OpenAPI/gRPC), інтеграційні з локальним рантаймом, тести ідемпотентності.
Деплою: canary/blue-green, feature flags, швидкий rollback.
Версіонування API: '/vN/' або медіатипи; Deprecation/Sunset і сумісність схем подій.
10) Патерни для iGaming/фінтех
Вебхуки платежів/висновків: прийом → валідація підпису → ідемпотентність → публікація події'payout. updated'→ оркестрація оновлень гаманця/звітів.
Антифрод-скоринг: функція-enricher (IP/девайс/гео/історія), асинхронне рішення, таймаути і fallback-стратегії.
KYC/AML пайплайн: паралельні перевірки (документи, санкції, PEP), агрегація результатів, саги для повторних запитів.
Турніри/рейтинги: події раундів → streaming-агрегації → оновлення таблиць лідерів, TTL-кеш на читання.
Звітність регуляторам: CDC → функції трансформації → вітрини в DWH, SLA по свіжості даних.
Маркетинг/CRM: тригери поведінки → купони/пуши, дедуплікація і ліміти на користувача.
11) Приклади фрагментів
11. 1 Ідемпотентний прийом вебхука (псевдокод)
python def handler(event):
assert verify_hmac(event. headers, event. body, secret)
key = f"idemp:{event. headers['Idempotency-Key']}"
if kv. exists(key):
return kv. get (key) # repeat - give the same result result = process (event. body) # public event, state record kv. set(key, result, ttl=86400)
return result
11. 2 Оркестрація виведення коштів (state machine, ідея)
1.'validate _ request'→ 2)'lock _ balance'→ 3)'call _ psp'( з ретраями) →
2.'await _ webhook'( таймаут → компенсація) → 5)'finalize/notify'.
12) Чек-лист впровадження serverless
1. Визначено джерела подій та домовленості за контрактами (схеми/версії).
2. Налаштовані ліміти конкурентності і «дбайливі» ретраї, є DLQ і replay.
3. Включені приватні мережі/VPC, egress-allow-list, фіксовані IP до PSP.
4. IAM за принципом найменших привілеїв, секрети в KMS/Secret Manager.
5. Observability: трасування OTel, дашборди за Р99/помилками/холодними стартами.
6. FinOps: бюджети, алерти на вартість, контроль тривалості/пам'яті.
7. CI/CD: canary/blue-green, автотести контрактів/ідемпотентності.
8. Документація: DevPortal/колекції Postman, приклади payload'ів, Deprecation/Sunset.
13) Анти-патерни
«Товсті» функції з купою залежностей → повільні холодні старти.
Відсутність ідемпотентності та підпису вебхуків → дублікати/шахрайство.
Фан-аут без лімітів → шторму конкуренції, троттлінг у провайдера.
Логіка в таймерах/кронах без трасування/алертів → «тихі» провали SLA.
Змішування прод-секретів в змінних оточення без шифрування.
Контракти подій без Schema Registry і правил сумісності.
14) Підсумок
Serverless - це подієва операційна система хмари: ви фокусуєтеся на бізнес-логіці, а масштабування та інфраструктура - «на вимогу». Поєднайте FaaS + керовані сервіси, додайте ідемпотентність, оркестрацію і спостережуваність, дисциплінуйте вартість - і отримаєте платформу, яка витримує піки, швидко еволюціонує і залишається економною.