Přeskočit na obsah
_CORE
AI & Agentic Systems Core Informační Systémy Cloud & Platform Engineering Data Platforma & Integrace Security & Compliance QA, Testing & Observability IoT, Automatizace & Robotika Mobile & Digital Banky & Finance Pojišťovnictví Veřejná správa Obrana & Bezpečnost Zdravotnictví Energetika & Utility Telco & Média Průmysl & Výroba Logistika & E-commerce Retail & Loyalty
Reference Technologie Blog Know-how
Nástroje O nás Spolupráce Kariéra
Pojďme to probrat

Věrnostní platforma — multi-partner systém

Přední český věrnostní program

2M+
Členů
15 000+
Partnerů
10M+
Transakcí/měsíc
25 000+
POS integrací

platforma je největší multi-partner věrnostní program v České republice. Na rozdíl od firemních věrnostních programů, kde sbíráte body pouze u jednoho obchodníka, platforma propojuje přes 15 000 partnerských provozoven do jednoho ekosystému — od velkých retailových řetězců přes benzínové stanice až po lokální restaurace a e-shopy. Více než 2 miliony členů sbírají body za běžné nákupy a směňují je za odměny, slevy nebo zážitky.

Naším úkolem bylo kompletně přebudovat technologickou platformu platforma — nahradit stárnoucí PHP monolit moderním systémem schopným zpracovávat desítky milionů transakcí měsíčně, integrovat 25 000+ POS terminálů a poskytnout partnerům nástroje pro správu kampaní a analytiku.

Výzva

Legacy PHP monolit

Původní platforma platforma byla klasický PHP monolit vybudovaný před více než deseti lety. Systém plnil svou funkci, ale postupně narážel na vážné limity:

  • Výkonnost — zpracování bodových transakcí v peak hodinách způsobovalo viditelné zpomalení celého systému. Bodový zůstatek se někdy aktualizoval s minutovým zpožděním
  • Technologický dluh — roky postupného vývoje vytvořily složitý, obtížně udržovatelný codebase. Přidání nové funkce trvalo týdny, protože vyžadovalo pochopení a úpravu provázaných částí kódu
  • Škálovatelnost — vertikální škálování naráželo na limity a horizontální škálování monolitu bylo prakticky nemožné
  • Integrace — každý partner vyžadoval custom integraci. Neexistovalo standardizované API, což znamenalo, že onboarding nového partnera trval 4-6 týdnů

25 000+ POS terminálů

Věrnostní program žije a padá s integrací na POS (Point of Sale) terminálech. Když zákazník zaplatí u pokladny, POS terminál musí v reálném čase:

  1. Identifikovat člena (kartou, telefonním číslem nebo aplikací)
  2. Ověřit členství a načíst bodový zůstatek
  3. Vypočítat body za nákup podle aktuálních pravidel partnera
  4. Připsat body na účet
  5. Volitelně uplatnit bodovou slevu

Celý proces musí proběhnout do 2 sekund — zákazník stojí u pokladny a čeká. Při 25 000+ terminálech to v peak hodinách znamená tisíce simultánních požadavků. A POS terminály jsou heterogenní prostředí — desítky různých výrobců, verzí firmware a komunikačních protokolů.

Komplexní kampáňový systém

Partneři platforma nechtějí jen jednoduché „1 bod za 10 Kč”. Požadují sofistikované kampaně:

  • Časově omezené akce — „dvojnásobné body tento víkend”
  • Segmentované nabídky — „5× body pro členy, kteří nenakoupili 30+ dní”
  • Cross-partner kampaně — „nakupte u partnera A i B a získejte bonus”
  • Gamifikace — „splňte 5 nákupů za měsíc a získejte 500 bonus bodů”
  • Tier systém — různé úrovně členství s progresivními výhodami

Kampaňová pravidla se kombinují, překrývají a vzájemně ovlivňují. Engine musí v reálném čase vyhodnotit desítky pravidel pro každou transakci a rozhodnout o správném počtu bodů — bez chyb a s plnou auditovatelností.

Datová migrace

Migrace z PHP monolitu na novou platformu zahrnovala přesun:

  • 2M+ uživatelských účtů s kompletní historií
  • 150M+ historických transakcí
  • 15 000+ partnerských profilů s konfiguracemi
  • Kampaňová pravidla a šablony
  • Integrace s externími systémy (platební brány, e-mail marketing, SMS gateway)

Migrace musela proběhnout s nulovým downtime — program běží nepřetržitě a jakýkoli výpadek by znamenal nefunkční POS terminály u tisíců obchodníků.

Řešení

Modular monolith s DDD

Po důkladné analýze požadavků jsme se rozhodli pro architekturu modular monolith místo microservices. Důvody:

  • Menší operační overhead — platforma tým je střední velikosti a provoz desítek microservices by vyžadoval neúměrnou investici do infrastruktury a DevOps
  • Transakční konzistence — bodové operace vyžadují silnou konzistenci. V monolitu lze využít databázové transakce bez distribuovaných transakcí
  • Snazší refactoring — moduly komunikují přes in-process události a jasně definovaná rozhraní, ale sdílejí deployment unit
  • Evoluce — modular monolith lze v budoucnu rozdělit na microservices extrahováním jednotlivých modulů

Architektura využívá principy Domain-Driven Design (DDD):

  • Member context — správa členů, registrace, profily, tier systém
  • Transaction context — zpracování bodových transakcí, zůstatky, historie
  • Campaign context — kampaňový engine, pravidla, vyhodnocování
  • Partner context — správa partnerů, provozoven, integrace
  • Reward context — katalog odměn, rezervace, fulfillment
  • Analytics context — reporting, dashboardy, data export

Každý bounded context má vlastní doménový model, repository vrstvu a API. Komunikace mezi kontexty probíhá přes domain events — asynchronně tam, kde je to možné, synchronně tam, kde je vyžadována okamžitá konzistence.

Campaign engine

Srdcem systému je campaign engine — flexibilní rule engine pro vyhodnocování bodových pravidel:

Architektura campaign engine:

  1. Rule definition layer — DSL (Domain Specific Language) pro definici kampaňových pravidel. Partneři definují pravidla přes vizuální builder v portálu, systém je kompiluje do optimalizované interní reprezentace
  2. Evaluation pipeline — při příjmu transakce engine načte relevantní pravidla (pre-filtered podle partnera a časového rozsahu), vyhodnotí podmínky a vypočítá body
  3. Conflict resolution — když se na transakci aplikuje více pravidel, resolver rozhodne o prioritě (nejvyšší cashback, first match, kumulativní — konfigurovatelné per partner)
  4. Caching layer — aktivní pravidla jsou cached v Redis s invalidací při změně. Eliminuje opakované databázové dotazy

Campaign engine zpracovává průměrně 400 transakcí za sekundu s mediánovou latencí 15ms pro kompletní vyhodnocení.

Real-time points processing

Zpracování bodových transakcí je implementováno jako pipeline:

  1. Ingestion — příjem transakce z POS terminálu přes REST API
  2. Validation — ověření členství, formátu dat, deduplikace (idempotence key)
  3. Enrichment — obohacení o partnerská metadata, kategorizace nákupu
  4. Campaign evaluation — vyhodnocení pravidel campaign enginem
  5. Points credit — atomický zápis bodů na účet člena (PostgreSQL transaction)
  6. Notification — asynchronní odeslání push notifikace, aktualizace zůstatku v app
  7. Analytics event — publikování události pro analytický pipeline

Celá pipeline běží synchronně do kroku 5 (aby POS terminál dostal odpověď do 2 sekund), kroky 6 a 7 probíhají asynchronně přes Celery task queue.

API gateway pro partnery

Standardizované API drasticky zjednodušilo integraci partnerů:

  • REST API s OpenAPI 3.0 specifikací a interaktivní dokumentací
  • Webhook systém — notifikace o událostech (nový člen, dosažení tier, kampaň expiruje)
  • SDK pro populární POS platformy (Storyous, Dotykačka, K2)
  • Sandbox prostředí — plně funkční testovací prostředí pro integraci
  • Rate limiting a throttling — ochrana systému proti přetížení s fair-use politikou
  • Versioning — API versioning s 12-měsíční deprecation politikou

Onboarding nového partnera se zkrátil z 4-6 týdnů na 3-5 dní — většina partnerů zvládne integraci self-service s pomocí dokumentace a SDK.

Členská aplikace a portál

  • Mobilní aplikace (iOS + Android) — digitální karta, bodový zůstatek, historie, nabídky v okolí, katalog odměn
  • Webový portál — alternativa pro členy preferující desktop
  • Partnerský portál — správa kampaní, provozoven, zaměstnanců, analytika a reporting
  • Admin portál — interní nástroj pro platforma tým — member support, systémová konfigurace, monitoring

Architektura

Infrastruktura

Systém běží na AWS s následující architekturou:

  • ECS Fargate — kontejnerizovaná aplikace bez nutnosti správy serverů
  • RDS PostgreSQL — managed databáze s Multi-AZ deployment pro high availability
  • ElastiCache Redis — cache vrstva pro session data, kampáňová pravidla a rate limiting
  • Elasticsearch — full-text vyhledávání v katalogu odměn, partnerech a provozovnách + analytika
  • S3 + CloudFront — statické assety, partner loga, dokumenty
  • SQS + Celery — asynchronní task processing (notifikace, reporting, batch operace)

Celá infrastruktura je definována jako kód v Terraform s modulární strukturou. Deployment probíhá přes GitHub Actions s automatickými testy a canary release.

Monitoring a alerting

  • CloudWatch + custom dashboards — systémové metriky a business KPI
  • Sentry — error tracking s automatickou klasifikací a přiřazením
  • PagerDuty — alerting s eskalačními polícy pro on-call tým
  • Synthetic monitoring — simulované POS transakce každou minutu pro ověření end-to-end funkčnosti

Datová migrace

Migrace z legacy PHP systému probíhala ve třech fázích:

Fáze 1: Shadow mode (4 týdny) — nový systém běží paralelně, přijímá kopie transakcí a výsledky porovnává s legacy systémem. Jakákoliv diskrepance se loguje a analyzuje.

Fáze 2: Dual write (2 týdny) — transakce se zapisují do obou systémů. Nový systém je „source of truth” pro nové transakce, legacy slouží jako fallback.

Fáze 3: Cutover (1 den) — přepnutí POS terminálů na nové API endpoint. Legacy systém přepnut do read-only režimu pro historická data.

Celá migrace proběhla bez jediné minuty downtime a bez ztráty transakce.

Výsledky

Business metriky

Po nasazení nové platformy platforma zaznamenal výrazné zlepšení klíčových business metrik:

  • 60% nárůst member engagement — díky personalizovaným nabídkám, push notifikacím a gamifikaci. Aktivní členové (alespoň 1 transakce za měsíc) vzrostli z 35% na 56%
  • 3× rychlejší onboarding partnerů — standardizované API a SDK zkrátily integraci z 4-6 týdnů na 3-5 dní
  • Single API — místo desítek custom integrací jeden standardizovaný endpoint pro všechny partnery
  • 15 000+ partnerů — nárůst z 8 000 na aktuální stav díky snadnějšímu onboardingu
  • NPS score 68 — výrazné zlepšení oproti 41 u legacy platformy

Technické metriky

  • 10M+ transakcí měsíčně — zpracováno bez degradace výkonu
  • < 200ms p99 latence na POS API (cíl byl 2 sekundy)
  • 99.95% uptime — včetně období peak sezón (Vánoce, Black Friday)
  • Zero data loss při migraci 150M+ historických transakcí
  • 75% snížení provozních nákladů — přechod z dedikovaných serverů na AWS managed služby

Strategický dopad

Nová platforma umožnila platforma:

  • Expanzi do nových vertikál — hospitality, fitness, health & beauty
  • Launch nových produktů — platforma Pay (platba body), platforma Experiences (zážitkové odměny)
  • Data monetizaci — anonymizované transakční insighty pro partnery
  • White-label řešení — platforma jako základ pro věrnostní programy dalších značek

Projekt transformoval platforma z legacy věrnostního programu na moderní technologickou platformu schopnou konkurovat na evropském trhu.

Technologie

Projekt je postaven na Python/Django stacku, který poskytuje rychlý vývoj a bohatý ekosystém. PostgreSQL slouží jako primární databáze s robustní podporou transakcí a JSON operací. Redis zajišťuje sub-millisecond cache pro hot data. Elasticsearch pohání fulltextové vyhledávání a analytiku. Celery s Redis brokerem řeší asynchronní úlohy. Celý systém běží v Docker kontejnerech na AWS ECS Fargate, infrastruktura je spravována přes Terraform.

Technologie

PythonDjangoPostgreSQLRedisElasticsearchDockerAWSTerraformCelery

Chcete podobný výsledek?

Řekneme vám, jak na to.

Domluvit schůzku