Teljesítmény hatékonysága
Tegyük fel, hogy a szervezet egyik legutóbbi termékbejelentkezéséről hírt ad ki. A hírcsatorna hozzáadott nyilvánossága nagy mennyiségű forgalmat hoz létre a webhelyére. Képes a webhely kezelni ezt a forgalmat? Képes-e a webhelye a többletterhelésre anélkül, hogy lassú vagy nem válaszolóvá válná?
Ebben a leckében a kiemelkedő alkalmazásteljesítmény biztosításának néhány alapelvét tekintjük át. Különösen azokat a skálázási és optimalizálási alapelveket, amelyek a teljesítményhatékonyság pillérét alkotják.
Mi a teljesítményhatékonyság?
A teljesítményhatékonyság megfelel az alkalmazás rendelkezésre álló erőforrásainak és a kapott igényeknek. A teljesítményhatékonyság magában foglalja az erőforrások méretezését, a lehetséges szűk keresztmetszetek azonosítását és optimalizálását, valamint az alkalmazáskód csúcsteljesítményre történő optimalizálását.
Vizsgáljunk meg néhány mintát és eljárást, amelyek az alkalmazás skálázhatóságát és teljesítményét növelhetik.
Vertikális és horizontális felskálázás
A számítási erőforrások két irányban skálázhatók:
A vertikális felskálázás során több erőforrást adunk hozzá egyetlen példányhoz. Más néven függőleges skálázás.
A horizontális felskálázás során több példányt adunk hozzá. Más néven vízszintes skálázás.
A vertikális felskálázás azzal foglalkozik, hogy több erőforrást, például processzort vagy memóriát adjon hozzá egyetlen példányhoz. Ez a példány lehet egy virtuális gép vagy egy PaaS-szolgáltatás.
Ha a példányhoz több kapacitást ad hozzá, azzal megnöveli az alkalmazás számára elérhető erőforrások mértékét, de ennek vannak bizonyos korlátai. A virtuális gépek annak a gazdagépnek a kapacitására korlátozódnak, amelyen futnak, és maguk a gazdagépek fizikai korlátozásokkal rendelkeznek. Egy példány vertikális felskálázása végül beleütközhet ezekbe a korlátokba. Ezek miatt a további erőforrások egyetlen példányhoz történő hozzáadása korlátozott lehetőség.
A horizontális felskálázás azzal foglalkozik, hogy több példányt adjon hozzá egy szolgáltatáshoz. Ezek lehetnek virtuális gépek vagy PaaS-szolgáltatások. Ahelyett, hogy egyetlen példányt további kapacitás hozzáadása által tennénk erősebbé, a példányok teljes számának növelésével teszünk szert további kapacitásra.
A horizontális felskálázás előnye, hogy elméletben végtelen mértékben végezhető, amennyiben egyre több gépet tud hozzáadni az architektúrához. A horizontális felskálázás megkövetel bizonyos terheléselosztást. Például egy terheléselosztó, amely a kérelmeket az elérhető kiszolgálók között osztja el, vagy egy szolgáltatásfelderítési mechanizmus, amellyel azonosíthatja azokat az aktív kiszolgálókat, amelyeknek a kéréseket küldeni szeretné.
Mindkét esetben lehet csökkenteni az erőforrásokat, és így költségoptimalizálást lehet elérni.
Az automatikus skálázás az a folyamat, amely dinamikusan lefoglalja az erőforrásokat a teljesítményre vonatkozó követelményeknek megfelelően. Az elvégzendő feladatok mennyiségének növekedésével az alkalmazásoknak további erőforrásokra lehet szükségük ahhoz, hogy fenn tudják tartani a kívánt teljesítményszinteket és megfeleljenek a szolgáltatásiszint-szerződésekben (SLA) leírtaknak. Mivel a keresleti tartalékok és a hozzáadott erőforrások már nem szükségesek, a költségek minimalizálása érdekében felszabadíthatók.
Az automatikus skálázás kihasználja a felhőben futtatott környezetek rugalmasságát, ugyanakkor csökkenti a kezelési terheket. Ezzel a megoldással kevésbé van szükség olyan operátorra, aki folyamatosan monitorozza a rendszer teljesítményét, és döntéseket hoz az erőforrások hozzáadásáról vagy eltávolításáról.
A hálózati teljesítmény optimalizálása
A teljesítmény optimalizálásakor a hálózati és tárolási teljesítményt kell megvizsgálnia, hogy a szintek elfogadható korlátokon belül legyenek. A teljesítményszintek hatással lehet az alkalmazás válaszidejére. Az architektúra megfelelő hálózatkezelési és tárolási technológiáinak kiválasztásával gondoskodhat arról, hogy a lehető legjobb élményt nyújtsa a felhasználók számára.
A szolgáltatások közötti üzenetkezelő réteg alkalmazása előnyös hatással lehet a teljesítményre és a méretezhetőségre. Az üzenetkezelő réteg egy puffert hoz létre, így a kérések hiba nélkül áramolhatnak még akkor is, ha a fogadó alkalmazás nem tud velük lépést tartani. Mivel az alkalmazás a kérelmeken keresztül működik, a rendszer a beérkezés sorrendjében válaszolja meg őket.
A tárolási teljesítmény optimalizálása
Számos nagyobb léptékű megoldásban az adatok egymástól függetlenül felügyelhető és elérhető partíciókba osztva tárolhatók. A particionálási stratégiát gondosan kell megválasztani az előnyök maximalizálása és a negatív hatások minimalizálása érdekében. A particionálás segíthet javítani a skálázhatóságot, csökkenteni a versengést és optimalizálni a teljesítményt.
A teljesítmény javítására gyorsítótárazást használhat az architektúrában. A gyorsítótárazás egy olyan mechanizmus, amely tárolja a gyakran használt adatokat vagy eszközöket (weboldalakat, képeket) a gyorsabb beolvasás érdekében. A gyorsítótárazást az alkalmazás különböző rétegeiben használható. Használhat gyorsítótárazást az alkalmazás kiszolgálói és az adatbázis között, így csökkentve az adatok beolvasási idejét.
A felhasználók és a webkiszolgálók közötti gyorsítótárazást úgy is használhatja, hogy a statikus tartalmat közelebb helyezi a felhasználókhoz. Ez a gyorsítótárazás csökkenti a weblapok felhasználókhoz való visszaküldésének idejét. Emellett másodlagos hatással van az adatbázisból vagy a webkiszolgálókról érkező kérések kiszervezésére, ami növeli az egyéb kérések teljesítményét.
A teljesítmény szűk keresztmetszeteinek felderítése az alkalmazásban
A felhőben futó elosztott alkalmazások és szolgáltatások összetett szoftverek, amelyek számos mozgó részből tevődnek össze. Éles környezetben fontos nyomon követni, hogy a felhasználók hogyan használják a rendszert. Fontos az erőforrás-kihasználtság nyomon követése is, és általában a rendszer állapotának és teljesítményének monitorozása. Ezt az információt diagnosztikai segédletként használhatja fel a problémák észleléséhez és javításához. Ugyanennek az információnak a felhasználása segíthet a hibalehetőségek feltárásában, és azok bekövetkezésének megelőzésében is.
A teljesítményoptimalizálás magában foglalja annak megértését, hogy maguk az alkalmazások hogyan teljesítenek. A hibák, a rosszul teljesítő kód és a függő rendszerek szűk keresztmetszetei mind feltárhatók egy alkalmazásteljesítmény-kezelő eszközzel. Gyakran előfordulhat, hogy ezek a problémák rejtettek vagy elhomályosulnak a felhasználók, fejlesztők és rendszergazdák számára, de kedvezőtlen hatással lehetnek az alkalmazás általános teljesítményére.
Nézze át az alkalmazás minden rétegét, valamint azonosítsa be és javítsa ki a teljesítmény szűk keresztmetszeteit. Ilyen szűk keresztmetszet lehet a rossz memóriakezelés az alkalmazásban, vagy akár az adatbázis-indexek hozzáadásának folyamata. Ez lehet egy ismétlődő folyamat része is, ugyanis amikor megoldást talál egy szűk keresztmetszetre, felfedezhet egy másikat, amelyről addig nem volt tudomása.
A teljesítményfigyelés alapos megközelítésével meghatározhatja, hogy milyen minták és eljárások használhatók az architektúrában.