KapacitĂĄskezelĂ©s szezoncsĂșcsra â 200 foglalĂĄs/nap Ă©s 99,7% uptime
Az utazĂĄsi iroda szoftvere nem egyenletesen terhelt. Egy magyar iroda Ă©ves grafikonjĂĄn a következĆ minta lĂĄtszik: mĂĄrciustĂłl mĂĄjusig + szeptembertĆl oktĂłberig napi ~200 foglalĂĄs, a többi 8 hĂłnapban napi ~20. Ez a 10x-es lengĂ©s a rendszer architektĂșrĂĄjĂĄnak valĂłs prĂłbĂĄja.
A szezoncsĂșcs anatĂłmiĂĄja
2026 ĂĄprilisâmĂĄjusi adatok a Travelium teljes ĂŒgyfĂ©lbĂĄzisĂĄn:
- 6 hĂ©t csĂșcs (mĂĄrcius 21 â mĂĄjus 6)
- 14 800 foglalĂĄs ezen idĆszakban
- napi ĂĄtlag: 215 foglalĂĄs, csĂșcsnap 312
- csĂșcsĂłra: 17:00â19:00 (a lĂĄtogatĂłk munka utĂĄn intĂ©znek)
- rendszer uptime: 99,7% (kb. 30 percnyi cumulatĂv leĂĄllĂĄs az idĆszakra)
- lecsengĂ©s: mĂĄjus 7-tĆl napi ~25 foglalĂĄs
A 8x ugrĂĄst kĂ©t perc alatt nem lehet skĂĄlĂĄzni. Tudatos felkĂ©szĂtĂ©st igĂ©nyel.
BeszĂĄllĂtĂłi API rate limiting
A legnagyobb veszĂ©ly nem a sajĂĄt rendszerĂŒnk â hanem a beszĂĄllĂtĂłkĂ©. Amadeus alapvetĆ limitje 30 hĂvĂĄs/mĂĄsodperc/iroda. Ha tĂșllĂ©pjĂŒk, 5 percre tiltanak. Egy csĂșcsĂłra alatt ez 1500 elveszett keresĂ©st jelent.
A megoldĂĄs a Travelium oldalĂĄn: per-beszĂĄllĂtĂł, per-iroda token bucket. Minden beszĂĄllĂtĂł kap egy konfigurĂĄlt limit-et (Amadeus: 25 hĂv/s, Sabre: 40, direkt szĂĄllodai API-k vĂĄltozĂł). A bucket Redis-ben Ă©l, atomikus INCR + TTL workflow-val.
Ha egy iroda tĂșllĂ©pnĂ© a sajĂĄt limit-et, a kĂ©rĂ©s 429-cel visszakerĂŒl a UI-ra, az ĂŒgynök egy diszkrĂ©t toast-ĂŒzenetet lĂĄt: âEgyidejƱ keresĂ©sek magas terhelĂ©se, prĂłbĂĄlja Ășjra 3 mĂĄsodperc mĂșlva.â Egy ĂŒgynökre nĂ©zve Ă©vente ĂĄtlag 4-szer fordul elĆ â elviselhetĆ.
BullMQ-håttér prioritåssal
A hĂĄttĂ©rmunkĂĄk (voucher generĂĄlĂĄs, szĂĄmla kiĂĄllĂtĂĄs, email kĂŒldĂ©s, beszĂĄllĂtĂł ĂĄllapot-szinkron) BullMQ + Redis queueban futnak, hĂĄrom prioritĂĄsi sĂĄvval:
highâ ĂŒgyfĂ©l-blokkolĂł dolog: fizetĂ©s visszaigazolĂĄsa, voucher generĂĄlĂĄs. CĂ©l: < 5 mp.normalâ hĂĄttĂ©r: review-email kĂŒldĂ©se, statisztika-aggregĂĄlĂĄs. CĂ©l: < 5 perc.lowâ opcionĂĄlis: havi riport generĂĄlĂĄs, partner-szinkron. CĂ©l: < 60 perc.
CsĂșcsidĆben a queue mĂ©lysĂ©ge a normal sĂĄvban tipikusan 800â1200 között mozog, de a high mindig 0 közelĂ©ben marad. A 99,7% uptime nem a hardver â a queue-prioritĂĄs eredmĂ©nye.
Pre-warming cache
A nĂ©pszerƱ csomagok keresĆ-cache-Ă©t a szezon elĆtt 4 hĂ©ttel elkezdjĂŒk elĆmelegĂteni. A cache-warmer cronjob ĂłrĂĄnkĂ©nt vĂ©gigfut a top 200 desztinĂĄciĂł + dĂĄtum kombinĂĄciĂłn, Ă©s elĆre lekĂ©r mindent a beszĂĄllĂtĂłktĂłl.
Ez a tehet ĂĄr: szezoncsĂșcsban az ĂĄtlagos âkeresĂ©s-vĂĄlaszâ idĆ 2,1 mĂĄsodperc (warm cache hit), nem 5,5 mĂĄsodperc (cold lookup). A kĂŒlönbsĂ©g a lĂĄtogatĂł oldalĂĄn Ă©rzĂ©kelhetĆ â kevesebb tĂŒrelmetlen bounce.
A 2026 ĂĄprilisi crunch
Ăs az igazi vizsga. Ăprilis 8., egy keddi nap, 17:42-kor 312 pĂĄrhuzamos keresĂ©s. A rendszer-metriĂĄk:
- API vĂĄlaszidĆ p95: 2,8 mp (cĂ©l: < 3 mp â )
- DB connection pool hasznĂĄlat: 78% (max: 100, â )
- Redis memĂłria: 4,1 GB / 8 GB allokĂĄlt (â )
- BeszĂĄllĂtĂłi 429-ek: 8 (Amadeus, 30 mĂĄsodpercen belĂŒl recovered, â )
- Sikertelen foglalĂĄs: 0 (â )
Ez az Ăłra termelte a hĂłnap legnagyobb forgalmĂĄt egy 14 fĆs magyar iroda szĂĄmĂĄra: 41 sikeres foglalĂĄs, 11,2 milliĂł Ft GMV. Egyetlen ĂŒgyfĂ©l sem lĂĄtott ârendszerĂŒnk ĂĄtmenetileg tĂșlterheltâ hibĂĄt.
Lesson
A szezoncsĂșcs nem hardver-vĂĄsĂĄrlĂĄs. Token-bucket alapĂș rate limiting, BullMQ-prioritĂĄs, cache-elĆmelegĂtĂ©s Ă©s per-pillanat metrika-figyelĂ©s egyĂŒttesen adja a 8x-es lengĂ©s elviselĂ©sĂ©hez szĂŒksĂ©ges architektĂșrĂĄt. A 99,7% uptime egy 14 fĆs iroda mögött ugyanaz, mint egy nagy OTA-Ă© â csak kĂ©t nagysĂĄgrenddel olcsĂłbb mĂ©rnöki munkĂĄbĂłl.