Tartalom
Skálázhatóság fogalma
A skálázhatóság az infrastruktúra azon tulajdonsága, hogy a terhelés növekedésével arányosan növekszik a teljesítőképessége is, ideálisan lineáris vagy szupra-lineáris teljesítménynövekedéssel. Az ideáltól való eltérés az ún. skálázási korlátok (scaling limits) megjelenése jelzi – ezek a tervezési fázisban azonosítandók.
A skálázhatóság és a rugalmasság (elasticity) rokon fogalmak, de nem azonosak. A rugalmasság az automatikus igény szerinti kapacitás-módosítást jelenti – beleértve a csökkentést is. A skálázhatóság csak a kapacitás-növelési képességre fókuszál.
Vertikális és horizontális skálázás
A vertikális skálázás (scale up) a meglévő erőforrások bővítését jelenti: több CPU-mag, nagyobb RAM, gyorsabb tároló. Hatékony, de fizikai korlátokba ütközik, és a bővítés során rövid leállást okozhat.
A horizontális skálázás (scale out) új, azonos kapacitású egységek (szerver-példányok, konténerek) hozzáadásával valósul meg. Ez a megközelítés elméletileg korlátlanul bővíthető, és a modern elosztott architektúrák alapja.
A horizontális skálázás előfeltételei:
- Állapot nélküli (stateless) alkalmazásréteg, vagy a munkamenet-állapot külső tárolóban kezelve
- Terhelés-elosztó (load balancer) a bejövő forgalom szétosztásához
- Egységes konfigurációkezelés (pl. konfigurációs menedzsment eszközök vagy infrastruktúra-kódként kezelt konfiguráció)
Kapacitástervezés
A kapacitástervezés célja biztosítani, hogy az infrastruktúra a várható terhelési forgatókönyvekre kellő erőforrással rendelkezzen. A tervezési folyamat lépései:
- Jelenlegi kihasználtsági adatok gyűjtése (CPU, memória, tároló, hálózat)
- Trendanalízis és növekedési előrejelzés
- Csúcsterhelési forgatókönyvek szimulációja
- Kapacitási küszöbök definiálása (pl. 70%-os CPU-kihasználtságnál bővítés indul)
- Bővítési döntési folyamat meghatározása
Az automatikus skálázás (autoscaling) esetén ezeket a küszöböket és bővítési szabályokat a platform automatikusan végrehajtja, emberi beavatkozás nélkül.
Teljesítmény-monitorozás
A teljesítmény-monitorozás célja a valós idejű rálátás az infrastruktúra állapotára, a korai problémaazonosítás és a kapacitástervezés alátámasztása.
Kulcs-teljesítmény-mutatók (KPI) infrastruktúra szinten:
- CPU-kihasználtság (processzor-terhelés)
- Memória-kihasználtság és lapcsere (swap)
- Tároló I/O késleltetés és áteresztőképesség
- Hálózati sávszélesség-kihasználtság és csomagveszteség
- Alkalmazás válaszidő (p50, p95, p99 percentilisek)
- Hibaarány és rendelkezésre állási mutató
A riasztási küszöbök meghatározása figyelembe veszi az alkalmazás kritikusságát és a rendelkezésre állási követelményeket. A riasztásoknak akcióképeseknek kell lenniük – kerülni kell a zajt okozó, nem releváns riasztásokat.
Terhelés-elosztás
A terhelés-elosztó (load balancer) a bejövő kéréseket egyenletesen osztja el a rendelkezésre álló szerver-példányok között. Főbb algoritmusok:
- Round robin: a kérések sorban kerülnek az egyes példányokra
- Legkevésbé terhelt: a kérés ahhoz a példányhoz kerül, amelyik éppen a legkevesebbet dolgozik
- IP hash: az ügyfél IP-je alapján mindig ugyanarra a példányra kerül a kérés
- Súlyozott elosztás: különböző kapacitású példányok eltérő arányban kapnak kéréseket
A terhelés-elosztó egyben egészségügyi ellenőrzőként (health check) is működik, automatikusan kizárva a nem reagáló példányokat a forgalomból.
Bottleneck azonosítás
A szűk keresztmetszet (bottleneck) az az infrastruktúra-komponens, amely a teljes rendszer teljesítményét korlátozza. A bottleneck felismerése profilozással és terhelési tesztekkel lehetséges.
Tipikus bottleneck-típusok:
- Adatbázis lekérdezési teljesítmény (index hiánya, lassú join-ok)
- Hálózati sávszélesség az adatközpont és a végfelhasználók között
- Tároló IOPS korlátok (különösen tranzakciós rendszereknél)
- Alkalmazáskód hatékonysági problémák (szinkron blokkolások, memóriaszivárgás)
A bottleneck optimalizálása után az új szűk keresztmetszet máshol jelenik meg – ez a folyamatos teljesítmény-optimalizáció természete.