programturizmus.hu: egy 19 éves portál újjáépítése Kubernetes mikroszolgáltatásokra
A programturizmus.hu Magyarország egyik legnagyobb turisztikai portálja, amely az elsők között jelenik meg a hazai programokra, turisztikai és kulturális kérdésekre vonatkozó keresésekre. A 19 éve indult portált mi építettük újra: a működését a meglévő oldal és adatbázis alapján írtuk le, majd erre építettünk egy Kubernetesen futó, mikroszolgáltatás-alapú platformot. Az átállás során kiemelt szempont volt a SEO helyezések megtartása, és a keresőhelyezések nem estek vissza.
A projekt számokban
- Több millió soros, kb. 100 táblából álló adatbázis
- Közel 20 000 program a rendszerben
- Nagyjából 200 GB fájl átköltöztetése
- 3-4 hónap specifikáció, majd 2024 augusztusától fejlesztés, 2025 áprilisi élesítéssel
- Összesen 10 hónap a fejlesztés kezdetétől az élesítést követő optimalizálási körök végéig (2025 május)
- Közel 12 órás átállás, amiből kb. 2 órán át nem volt elérhető az oldal
A kiindulás
A portál PHP-ra és MySQL-re épült, régi verziókkal, redundancia nélkül. Egyetlen nagy, monolitikus alkalmazás szolgált ki mindent. Az oldal általános betöltése lassú volt: egy-egy program megnyitására akár 6-8 másodpercet is kellett várni.
- Lassú betöltés: a programoldalak akár 6-8 másodperc alatt jelentek csak meg
- Monolitikus felépítés: egyetlen, nehezen módosítható egységben élt minden funkció
- Régi technológiák: a fejlesztés ezért lassan haladt
- Redundancia hiánya: a rendszer nem volt hibatűrő
Az együttműködés egy új dizájnnal indult: az ügyvezető ezzel keresett meg minket. A régi technológiák és az összetett monolit miatt azonban a fejlesztés lassan haladt, ezért kezdtünk el arról egyeztetni, hogy átvesszük a portált, és újradolgozzuk a teljes rendszert.
Miért gondoltuk újra teljesen a felépítést?
Az ügyvezetővel egyeztetve abban maradtunk, hogy a weboldalon látható funkciók alapján dolgozzuk ki a specifikációt. A 19 év alatt felépített kódbázis és a portál akkori lassú betöltése indokolta, hogy ne foltozzuk a meglévő rendszert, hanem a felépítést teljesen újragondoljuk. Az új rendszer ezért nem a régi kód átírása, hanem a portál működésének újraépítése lett.
Feltárás: a működésből indultunk
2024 tavaszán, az ügyvezetővel szoros együttműködésben indult az igényfelmérés és a specifikáció. A felhasználói oldal alapján írtuk le, hogyan működik a portál, milyen folyamatok vannak benne, és hogyan kellene működniük. Az adatbázis felépítésére csak annyiban volt szükségünk, hogy a benne tárolt adatokat a feltárt működéshez illesszük.
A megrendelések és a számlázás részleteit az ezzel foglalkozó szerkesztőségi kollégákkal egyeztettük. A specifikáció elkészítése 3-4 hónapig tartott, az eredménye egy részletes szöveges dokumentáció lett, amely az új rendszer terve.
Az új architektúra
A specifikáció alapján a portált kisebb, önálló szolgáltatásokra bontottuk, domain-driven szemlélettel, az üzleti funkciók mentén. Így a szolgáltatások egymástól függetlenül fejleszthetők és telepíthetők, és Kubernetes környezetben futnak. A fejlesztés 2024 augusztusában indult.
Modern JavaScript technológiákra építettünk: a felületen Next.js, a legtöbb szolgáltatásban Node.js fut. Az adatok jellegétől függően SQL és NoSQL adatbázist is használunk. Az oldalak gyors kiszolgálását többrétegű gyorsítótárazás segíti.
Adat- és fájlmigráció, tesztelés
A régi adatbázis kb. 100 táblából állt, több millió sorral és közel 20 000 programmal, a fájlok mérete pedig nagyjából 200 GB volt. Az adatokat az új struktúrának megfelelően alakítottuk át, a statikus fájlokat pedig áthoztuk az új rendszerbe.
Az éles átállás előtt minden elemen, vagyis az adatbázison, a fájlokon és a szolgáltatásokon is próbamigrációt futtattunk egy külön teszt környezetben. Az adatbázist teljes egészében teszteltük, a fájlokból pedig egy részhalmazt vittünk át, hogy a feltöltés működése is ellenőrizhető legyen. Élesítés előtt a szerkesztőség több tagja is tesztelte az új rendszert.
Az átállás
Az éles átállás közel 12 órás folyamat volt. Ennek egy része előkészítés, egy része ellenőrzés, maga a portál pedig kb. 2 órán át nem volt elérhető.
A SEO helyezések megtartása
A portál az elsők között jelenik meg a magyarországi programokkal, turisztikai és kulturális kérdésekkel kapcsolatos keresőszavakra, ezért a helyezések megtartása az átállás egyik legfontosabb szempontja volt. A cél az volt, hogy a SEO-t ne bántsuk.
- Megtartottuk az URL-felépítést, a metaadatokat, a strukturált adatokat és a tartalmat.
- Külső SEO partnert vontunk be a fejlesztés mellé.
- Folyamatosan monitoroztuk a készülő portál és az akkori élő oldal SEO felépítését crawl-összehasonlítással, hogy ne legyenek kritikus eltérések.
- Az átállás után a Search Console-ban követtük a helyezéseket.
Az eredmény: a SEO stabil maradt, a helyezések nem estek vissza.
Eredmények
- A keresőhelyezések az átállás után is stabilak maradtak.
- Az élesítést (2025 április) további optimalizálási körök követték, egészen 2025 májusáig.
- A Google Core Web Vitals mérései szerint jelenleg mindhárom mutató (LCP, INP, CLS) a zöld zónában van, mobilon is.
- A szolgáltatások egymástól függetlenül fejleszthetők, így a portál könnyebben bővíthető.
Egy évvel később: infrastruktúra-költöztetés
Az eredeti tárhely infrastruktúrája nem bizonyult elég stabilnak: a fizikai szerverek meghibásodása miatt több kiesés is volt. Ezért az egész infrastruktúrát, vagyis a webportált, az e-mailt és a fájltárhelyet is egy új szolgáltatóhoz költöztettük.
A teljes költöztetés kb. 8 órát vett igénybe, a tényleges szolgáltatáskiesés pedig kb. 2 óra volt. Az időpontot éjszakára ütemeztük, hogy a látogatókat a lehető legkevésbé érintse.
Mit érdemes ebből tudni, ha hasonló rendszerük van?
- A rendszer a működésének részletes leírásából is újraépíthető, ha ezt alaposan és az érintettekkel közösen készítjük el.
- A SEO a projekt követelménye, nem utólagos feladat: az átállás előtt mérni és összehasonlítani kell.
- A próbamigrációk csökkentik az éles átállás kockázatát.
Ha részletesebben érdekli, hogyan közelítjük meg a régi rendszerek megújítását, olvassa el a Legacy rendszer felújítás szolgáltatásunk bemutatóját.
Kulcstechnológiák
- Kubernetes: a szolgáltatások futtatása és skálázása
- Mikroszolgáltatások: domain-driven felbontás az üzleti funkciók mentén
- Next.js és Node.js: modern JavaScript alapú felület és szolgáltatások
- SQL és NoSQL adatbázisok: az adatok típusától függően
- Többrétegű gyorsítótárazás: gyors oldalkiszolgálás
Hasonló kihívás előtt áll?
Írja le röviden a rendszerét, és őszintén megmondjuk, hogy illik-e hozzá a megközelítésünk.