Elemzések
Amikor a skálázás nem a megoldás
Rövid megbízás, amelyben a feltételezett megoldás a horizontális skálázás volt – a valódi probléma azonban máshol rejlett.
Egy friss megbízás ismerős helyzettel indult: több felhasználó egyszerre érte el az alkalmazást, ezért a csapat horizontális skálázást feltételezett. Ez volt a feltételezett irány. Független tanácsadóként abban segítettünk, hogyan léphetnek tovább anélkül, hogy újabb teljesítménykockázatot vállalnának. A szervezet nevét nem közöljük.
01
A feltételezett irány
A csapat a horizontális skálázást tekintette a következő logikus lépésnek. A rendszert skálázott környezetben még nem üzemeltették, és az alaparchitektúrát sem ellenőrizték ilyen terhelésre. Teljesítménymérnöki szempontból ez visszatérő aggály: egy nem kellően megértett rendszer skálázása inkább felerősíti a problémákat, mint megoldja őket.
Az első javaslat ezért egyszerű volt. Ne a horizontális skálázással kezdjenek. Ha egyáltalán kell skálázni, a vertikális skálázás általában a biztonságosabb és kontrolláltabb lépés – különösen akkor, ha a rendszer viselkedése még nincs teljesen megértve. A megbízás lényege azonban még nem is ez volt, hanem annak megértése, hogyan viselkedik a rendszer már mérsékelt terhelés mellett is.
02
Amit valójában találtunk
Egy rövid, célzott egyeztetés és az első elemzés után kiderült, hogy a probléma nem a párhuzamosságban vagy az infrastruktúra kapacitásában rejlik. A rendszer már alacsony terhelésen is teljesítményproblémát mutatott. A PostgreSQL-adatbázisban szűk keresztmetszetek voltak, a lekérdezések viselkedését nem értették kellően, az éles observability pedig gyakorlatilag hiányzott – a csapatnak csak részleges naplózás állt rendelkezésére. Ilyen korlátozott láthatóság mellett nem volt világos képük arról, mi történik a rendszer belsejében.
A közelebbi vizsgálat során kiderült, hogy a kiváltó ok az adatelérésben rejlik, nem a párhuzamos felhasználók számában. Több lekérdezés nem volt jól megírva, az indexeket nem használták ki megfelelően, és egyes adatbázis-interakciók egyszerűen nem voltak hatékonyak. Egyszerű eszközök segítettek megérteni a lekérdezések végrehajtását és viselkedését, így viszonylag kis erőfeszítéssel azonosíthatók lettek a problémás SQL-minták és a szűk keresztmetszetek. A probléma nem a méretezésben rejlett, hanem a nem hatékony működésben és a láthatóság hiányában.
03
A skálázástól a megértésig
A skálázási stratégiák vitatása helyett a rendszer viselkedésének megértésére tereltük az egyeztetést. Azonnali betekintést adó gyakorlati következő lépések közé tartozott az alapvető tracing és az adatbázisszintű láthatóság bevezetése, a PostgreSQL-ből közvetlenül kinyerhető teljesítményinformáció, valamint a későbbi tesztelési lehetőségek, például a kontrollált benchmarkolás (pl. pgbench segítségével) megbeszélése. Hamar kiderült, hogy lekérdezésszintű mélyebb elemzésre van szükség, mielőtt bármilyen infrastruktúra-módosítás indokolt lenne.
Ez a szemléletváltás azért fontos, mert sok csapat bizonyítékok hiányában a kapacitás növeléséhez folyamodik. Néhány alapkérdés – hogyan viselkedik a rendszer terhelés alatt, hol telik el valójában az idő, és mi a valódi szűk keresztmetszet – nélkül a skálázás gyakran drága találgatás.
04
A teljesítmény beépítése korábban
Az egyeztetés természetes módon terelődött az azonnali javításról a hosszabb távú képességek kialakítására. Megbeszéltük, hogyan épülhet be a teljesítménymérnökség korábban és következetesebben a fejlesztési folyamatba: teljesítménnyel kapcsolatos minőségi kapuk, a teljesítmény validálása egyfelhasználós szinten a fejlesztés elején, egyszerű profilozás és elemzés a skálázási döntések előtt, és a teljesítmény közös felelőssége a csapatok között. A cél nem egy bonyolult új folyamat bevezetése volt, hanem az, hogy a jobb döntések korábban szülessenek meg – hogy a következő „skáláznunk kell” vita bizonyítékokból induljon ki, ne feltevésekből.
05
Amit néhány óra megváltoztatott
Az egész megbízás csak néhány órát vett igénybe, a hatása mégis jelentős volt. A csapat elkerülte az idő előtti és potenciálisan költséges skálázást, azonosította a valódi műszaki szűk keresztmetszeteket, jobban megértette a rendszer viselkedését, és világos, megvalósítható következő lépéseket határozott meg.
Az eset egy gyakran visszatérő mintát mutat: sok teljesítményprobléma valójában nem skálázási, hanem megértési probléma. A teljesítménymérnökség nemcsak eszközökről, terhelésről vagy infrastruktúráról szól. Arról is, hogy a rendszer alaposabb megértése révén jobb döntések szülessenek. Sok esetben egy rövid, célzott tanácsadói egyeztetés is elegendő ehhez a megértéshez – és ahhoz, hogy később sokkal nagyobb problémákat előzzön meg.
