Digitális infrastruktúra referencia – MagyarországRólunk
FőoldalHálózatokFelhőalapúHibridSzempontokTervezésKapcsolat
Teljesítmény

Skálázhatóság és teljesítmény

A skálázható infrastruktúra képes a szervezet növekedésével arányosan bővülni anélkül, hogy a teljesítmény vagy a megbízhatóság romlik. Ez a cikk a főbb elveket és megközelítéseket ismerteti.

Szerverfarm infrastruktúra

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.

A weboldalon megjelent cikkek nyilvánosan elérhető információkat, iparági kutatásokat és oktatási anyagokat foglalnak össze.

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:

  1. Jelenlegi kihasználtsági adatok gyűjtése (CPU, memória, tároló, hálózat)
  2. Trendanalízis és növekedési előrejelzés
  3. Csúcsterhelési forgatókönyvek szimulációja
  4. Kapacitási küszöbök definiálása (pl. 70%-os CPU-kihasználtságnál bővítés indul)
  5. 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.