Ismerd meg a leállás nélküli élesítés előnyeit

Hogyan valósítja meg az Auchan e-commerce élesítéseit a rendelési folyamat zavartalan működése mellett?

Egy többórás vagy akár több napon átívelő élesítésből adódó szolgáltatás kiesés következtében nemcsak a felhasználók nem férnek hozzá az alkalmazáshoz, de az átállás időszaka a fejlesztők számára is túlórákat, akár éjszakai munkát jelenthet. Leállás nélküli élesítéssel azonban elkerülhető az ügyfélkiszolgálás leállása akár egy e-commerce, fintech vagy healthtech megoldás esetében is. Az alábbiakban bemutatjuk, hogyan valósította meg a LogiNet az Auchan Magyarországnál a leállás nélküli élesítéseket, milyen technológiai fejlesztésre, módszertanra volt ehhez szükség. Esettanulmányunkban választ adunk arra a kérdésre is, hogy milyen helyzetekben érdemes leállás nélküli élesítést alkalmazni, mik az előnyei, illetve a jövőben milyen továbbfejlesztési lehetőségekkel számolhatunk.


Mit is nevezünk leállás nélküli élesítésnek?

A kérdés nem triviális. Nevezhetjük azt is leállás nélküli élesítésének, ha az alkalmazás elérhető, a tartalmakat böngészni lehet, de a felhasználói interakciókat korlátozzuk és nevezhetjük azt is annak, ha az élesítés alatt semmilyen funkcióvesztés nem tapasztalható, a felhasználók a folyamatból nem vesznek észre semmit, csak az utolsó pillanatban, amikor új funkciók jelennek meg.

Mindkettőnek lehet létjogosultsága, hiszen technológiailag sokkal egyszerűbb csak tartalmat kiszolgálni – ami adott esetben akár cache-ből is megoldható –, mint user interakciókat kezelni, viszont a második opció üzleti szempontból sokkal vonzóbb. Mi arra törekedtünk, hogy olyan megoldást találjunk, amivel a felhasználók sem funkcióvesztést, sem a felhasználói élmény csökkenését nem tapasztalják.


Miért vált szükségessé a leállás nélküli élesítés az Auchannál?

Az Auchan Magyarország e-kereskedelmi ökoszisztémáját a LogiNet folyamatosan fejleszti. Az elmúlt egy-másfél évben átlagosan másfél havonta élesedett egy nagyobb csomag, ami minden alkalommal a webshop éjszakai vagy akár hétvégi leállását okozta a karbantartás miatt.

A fejlesztések a közös kódbázis révén a lengyelországi Auchan Polandot is érintették, a lengyel partner pedig több esetben másik időpontot választott az élesítéshez, így előfordult, hogy háromhetente történt leállás. A művelet során nemcsak LogiNet, hanem Auchan oldali HR erőforrásokra is szükség volt, ami pénzügyi és humánerőforrás oldalról is egyre nagyobb terhet jelentett a vállalatnak.

„A fejlesztések folyamatosan zajlanak a webshopon, és a nagyobb release-k helyett – amelyek során 3-4 hónap munkáját élesítettük – át szerettünk volna térni a kisebb csomagokkal történő gyakoribb élesítésekre. Gyorsabban kívántunk ugyanis reagálni a piaci igények változására, az újításainkkal előbb megjelenni a versenytársainknál. Ám mivel több rendszer integrációjáról van szó, többszereplős a folyamat – beleértve a lengyel Auchant is -, lassan ott tartottunk, hogy minden héten élesedett valamilyen fejlesztés, hol nálunk, hol a lengyeleknél” - fogalmazott Czeglédi Miklós, az Auchan Magyarország és Auchan Poland Chief Digital Officere.


A HR erőforrások mellett egy másik kedvezőtlen hatással is szembesülnie kellett az Auchannak: a karbantartás ugyanis vásárlói szempontból még akkor is negatív, ha éjszaka történik az élesítés, hiszen szolgáltatáskiesést, a cég számára pedig forgalomkiesést jelent.

Az említett okok miatt az Auchan részéről felmerült az igény, hogy nappal, munkaidőben történjenek az élesítések, de szolgáltatáskiesés nélkül: tehát az alkalmazás minden funkciója 100%-osan működjön, a vásárlók pedig lehetőleg semmit ne vegyenek észre az egészből.


Milyen kihívások voltak a módszertan kialakítása során?

A leállás nélküli élesítés kivitelezéséhez az alkalmazásnak rendelkeznie kell olyan infrastruktúrával, ami lehetővé teszi a felhasználók több helyről történő kiszolgálását, valamint irányíthatónak kell lennie, hogy a felhasználókat épp melyik környezetből szolgálja ki.

Nagy kihívást jelent, hogy úgy módosítsuk az alkalmazást kiszolgáló adatbázist, hogy ez ne okozzon szolgáltatás kiesést vagy adatvesztést. Mindezt úgy, hogy közben performancia vesztés se következzen be, a felhasználói élmény ne csökkenjen, ne legyen – legalábbis érezhetően – lassabb az alkalmazás használata és úgy általában ne vegyen észre semmit az egészből a termékek böngészése, kosárba helyezése, vagy épp rendelés leadása közben.

Az is lényeges, hogy senki sem szeretné, ha egyszer csak azt tapasztalja, hogy újra be kell jelentkeznie, vagy eltűnne az összeállított kosarának egy része, ezért azt a kihívást is meg kell oldani, hogy a felhasználók ne veszítsenek munkamenetet. 

Újabb kihívást jelenthet az integrált rendszerekkel való kommunikáció megoldása, megoldást kell találni arra az esetre, ha egy fejlesztés során nem csak a mi oldalunkon, de partnereinknél is történik változás, ami hatással van az általunk üzemeltetett shop működésére. 

A leállás nélküli élesítés gyakorlati megvalósításának technológiai háttere

  • A hálózati forgalom elosztása

Az infrastruktúra a LogiNet számára adott volt. A kiszolgálás több szerverről történik: load balancer (hálózati terhelés-, illetve forgalomelosztó) használatával könnyedén beállítható, hogy a rendelkezésre álló szerverek közül melyekről történjen a kiszolgálás, melyek futtassák a felhasználók által épp használt applikációt.

  • Az adatbázis frissítése

Az adatbázis már bonyolultabb kérdés: folyamatos kiszolgálás mellett kell frissíteni az adatbázissémát, mindezt úgy, hogy közben ne történjen adatvesztés vagy performancia romlás. Ehhez már a fejlesztések tervezésénél figyelembe kell venni az élesítés folyamatát, az adatbázis-módosításokat pedig úgy kell végrehajtani, hogy azok első körben kompatibilisek legyenek az előző verzióval. Például egy mező törlését csak akkor hajthatjuk végre, ha már minden felhasználó az applikáció olyan verzióját használja, aminek nincs szüksége arra a mezőre.

  • Folyamatos kiszolgálás biztosítása

Többféle megoldással is elérhető, hogy a kiszolgálás az adatbázis szintjén is folyamatos legyen. A LogiNet két módszert vizsgált meg részletesebben: a gh-ost (GitHub's Online Schema-migration Tool for MySQL) és a pt-online-schema-change (Percona Toolkit) eszközöket. A kettő közül végül az utóbbit választotta, mivel ezáltal nem kellett változtatni a már meglévő Galera Clusteren, a két rendszer ugyanis jól együttműködik egymással.

A pt-online-schema-change lehetővé teszi, hogy az adatbázisséma módosítása ne zárolja a módosítás alatt álló táblákat, ezáltal biztosítani lehet a folyamatos kiszolgálást. Mindezt úgy éri el az eszköz, hogy másolatot készít, majd triggereket helyez el a módosítani kívánt táblákon, amik így minden bennük tárolt adatváltozást automatikusan átvezetnek a másolatokba. A változtatások végeztével a szoftver egyszerűen átnevezi az új táblákat.

  • A munkamenetek megőrzése

A munkamenetek tárolása Redisben történik, egy erre és gyorsítótárazásra kialakított Redis Sentinel kiszolgálón. (A Redis nyílt forráskódú adatbázis, gyorsítótár.)

Alkalmazása – függetlenül attól, hogy új vagy régi kódot futtató szerverről van szó – lehetővé teszi, hogy a régi kódon futó rendszerbe bejelentkezett felhasználó által összeállított kosár érvényes legyen az újon is mindaddig, amíg az új kód értelmezni tudja a munkamenetbe mentett struktúrát és adatokat. A fejlesztés során arra kell figyelni, hogy ez a kompatibilitás megmaradjon.

Ahhoz, hogy a gyorsítótárazás kompatibilitását ne kelljen minden itt tárolt struktúra esetén fenntartani, és ez ne jelentsen extra feladatot a fejlesztés során, a LogiNet az adatokat – amelyek nem szükségesek, hogy megosztva maradjanak a két verzió között – egymástól elkülönített Redis adatbázisokban tárolja.


Hogyan történik a leállás nélküli élesítés az Auchan e-commerce rendszerében?

A fejlesztés átfutásának ideje közel 2 hónapig tartott az Auchan esetében. A gyakorlatban az élesítési folyamatra egy kidolgozott élesítési/visszaállítási forgatókönyvet használ a LogiNet:

  1. Első lépésben, bármilyen felmerülő problémára felkészülve, friss biztonsági másolatot készít az adatbázisról. Erre a biztonsági mentésre csak szélsőséges körülmények között lehet szükség, amire mindeddig nem volt példa. A normál visszaállítási folyamatnak egyébként nem része a backup használata.
     
  2. Következő lépésben a LogiNet leválasztja azokat a szervereket a load balancer alól, amelyeken elkezdi az új kód kihelyezését. Ez egy automatizált munkafolyamat, amelyet GitLab CI használatával valósítanak meg.
     
  3. Ezt több olyan opcionális lépés követheti, amelyek lehetővé teszik, hogy éles környezetben, de az éles adatbázis használata nélkül (egy azzal megegyező, párhuzamosan üzemeltetett adatbázison) az egész folyamatot az Auchan is tesztelhesse.
     
  4. Az új kód telepítése – és az opcionális tesztek – után a LogiNet elvégzi az adatbázis-módosításokat az éles szerveren a pt-online-schema-change eszközzel.
     
  5. Ezt követően az Auchannak lehetősége van további teszteket végezni, majd dönthet arról, hogy a módosítások megfelelők-e, így azok kikerülhetnek-e a felhasználók elé, vagy sem.
     
  6. Ha nem, akkor a LogiNet egyszerűen visszavonja az adatbázis-migrációkat és visszahelyezheti a korábbi verziót a kódból is.
     
  7. Ha az Auchan mindent rendben talál, azaz jóváhagyja az új verziót, akkor lehet megcserélni a felhasználókat kiszolgáló szervereket a load balancer alatt.
     
  8. Az élesítés lényegi része itt véget is ér, de a LogiNet számára még maradt feladat: a még régi kódot tartalmazó szervereket is frissíti, majd visszarakja azokat is a load balancer alá. A már nem használt gyorsítótár-adatokat pedig törli.

Mióta alkalmazzák ezt a módszert az Auchan esetében?

Az első olyan fejlesztési csomag, amelyet leállás nélkül élesítettek, 2022 júliusában került ki a rendszerbe. Azóta minden olyan esetben, ahol technológiailag megoldható volt, a LogiNet alkalmazta ezt módszertant.

A módszertan sikeres alkalmazásához szükség volt a LogiNet és az Auchan teljes körű együttműködésére: a projektben a LogiNet fejlesztői mellett az Auchan teljes fejlesztői csapata is részt vett.

“Amióta átálltunk a leállás nélküli élesítésre jóval nyugodtabban történik ez, és arra tudunk fókuszálni, hogy mit lehetne még jobban csinálni, a közben előforduló problémákat is hatékonyabban tudjuk megoldani” – számolt be az eddigi tapasztalatokról Czeglédi Miklós.

Mik a leállás nélküli élesítés előnyei?

  • Az üzletmenet és ügyfélkiszolgálás leállásának elkerülésére bármilyen szektorban igény lehet, e-commerce vállalatok esetében éppúgy, mint fintech vagy healthtech startupoknál.
     
  • A módszertan forgatókönyve eltérő típusú fejlesztési csomagokra adaptálható.
     
  • Elkerülhetőek az éjszakai, hétvégi rendszerleállások, nem jelent többlet terhet a vállalatra nézve munkaerő szempontból sem. Ezzel a módszertannal akár többnapos élesítést is lehet csinálni, úgy, hogy abból a felhasználók ne vegyenek észre semmit.
     
  • Olyan biztonsági megoldásokra épül, amelyekkel elkerülhetők az adatvesztések.

Mire érdemes figyelni a leállás nélküli élesítés során?

  • A leállás nélküli élesítés időzítésénél fontos szempont, hogy az ne az alkalmazás legforgalmasabb időszakában történjen, így elkerülhető, hogy teljesítménycsökkenést vagy fennakadást okozzon a felhasználók zavartalan kiszolgálásában.
     
  • Igaz, hogy a felhasználókat a módszertan alkalmazása során kevesebb szerver szolgálja ki, ám mivel az ügyfél által használt infrastruktúra felhasználó csúcsokra van tervezve egy átlagos nap amúgy sem 100%-os kihasználtsággal üzemelnek, így bármilyen lassulásra, fennakadásra kevés az esély.

    Az élesítés folyamata ugyanakkor jól szabályozható! A LogiNet befolyásolni tudja, hogy a rendszer milyen ütemben hajtsa végre a műveleteket. A megfelelő kontrollálhatóság segít elkerülni a teljesítményt befolyásoló problémákat, a kiszolgálás lelassulását. (Az Auchan esetében a LogiNet mérte a performancia alakulását a leállás nélküli élesítések során, és nem tapasztalt semmilyen lassulást.)
     
  • Egy fejlesztés során előfordulhat, hogy egy időben több integrált rendszer is frissül. Ezek az integrációk lehetnek olyan jellegűek, amik a társrendszer együttműködése nélkül nem teszik lehetővé a leállás nélküli élesítés módszerének alkalmazását.

    Amennyiben az integráció a felhasználó felé nem valós idejű, akkor a módszer alkalmazható akkor is, ha a társrendszer is frissül. Az ilyen típusú kommunikációk háttérfolyamatként történnek, ezeket a folyamatokat fel lehet függeszteni és végrehajtásukat újraindítani, amikor minden érintett rendszer frissítve van. Ezáltal is szélesíthető a módszer felhasználhatóságának köre.
     
  • Az ügyfél számára a módszertan alkalmazása során plusz költséget jelenthet, hogy az élesítés folyamatába további szervereket kell bevonni, amelyek kiadással járnak.

Jövőbeni tervek, továbbfejleszthetőség iránya

A LogiNet a módszertan továbbfejlesztését tervezi, amelynek a célja a manuális lépések számának csökkentése, az automatizáció növelése. Ezáltal lehetővé válik, hogy könnyebben és szélesebb körben lehessen alkalmazni a leállás nélküli élesítést.

Emellett olyan biztonsági beállítások kerülnek a rendszerbe, amelyek az emberi hibák kiküszöbölésére szolgálnak, segítik a folyamatos felügyeletet (monitoring), azonnal riasztanak, ha bármilyen probléma történne a folyamat során.

Hogyan segítheti cégedet a leállás nélküli élesítés? Miért lehet számodra is fontos, hogy egy-egy verziófrissítés ne a rendszer teljes leállása során élesedjen? Kérj a LogiNet szakembereitől megvalósíthatósági tanulmányt, megmutatjuk, milyen előnyök származhatnak a módszertan alkalmazásából!