adatbázis-építés

Az adatbázis és a webes felület fejlesztési elvei több szempont alapján határozható meg. A webes technológiák világa egy nagyon gyorsan fejlődő terület, de ez a fejlődés egyáltalán nem lineáris és nem feltétlenül mutat egy irányba. Egy-egy pillanatnyilag népszerű technológia később zsákutcának bizonyulhat, támogatása és fejlesztése évekkel később lehetetlenné válhat. A régóta létező, konzervatív rendszerek ugyanakkor – a visszamenőleges kompatibilitás érdekében – 10–15 éves kódbázissal rendelkeznek, ezért nem biztosítják a legkorszerűbb megoldásokat. Olyan megoldásokat kell választani, amelyek biztosítják a korszerű funkciókat, de kellően elterjedtek ahhoz, hogy hosszútávú támogatottságuk biztosított legyen. Fejlesztési koncepciónk ezért moduláris, pontosan meghatározott – modulok közötti – kapcsolódási pontokkal dolgozik. Ennek köszönhetően az egyes alrendszerek egymástól függetlenül fejleszthetők, szükség esetén cserélhetők. Emellett számos funkcióra nyílt forráskódú, illetve publikusan elérhető, széles körben elterjedt rendszereket használhatók.

A relációs adatbázis lehetővé teszi, hogy összetett adatstruktúrákat jól dokumentáltan, skálázható értékekkel, szabványos módon tároljunk, az ehhez tartozó korszerű, jól bővíthető adminisztrációs felület pedig kezeli a többnyelvű tartalmakat, a különböző adminisztrációs jogköröket és biztosítja külső rendszerek és szolgáltatások elérést. Biztosítja továbbá a csoportos műveleteket, az adatbázis részei közötti kapcsolatot kifejező relációk kezelését, valamint fejlett widgetek használatát.

Célkitűzéseink a tervezés során

Architektúra


Korszerű, skálázható felépítés

  • A keretrendszer számos fejlett, általános célú backend funkciót kínál: felhasználói azonosítás és jogkörök kezelése, adatsablonok (fülekkel, widgetekkel, fejlett relációkezeléssel), listák (szűréssel és hierarchikus rendezéssel), többnyelvű tartalom, médiakezelő-felület, fejlett plugin architektúra, nagy teljesítményű külső technológiák támogatása (Amazon S3, Redis stb).

  • Erre az alaprendszerre épített saját modulok, amelyek lehetővé teszik a kulturális adatok rugalmas kezelését és tárolását (csoportos műveletek, offline munkafolyamat terepmunkához, geolokáció stb). 

  • A rendszer jelenleg audio, videó, fotó anyagok, szegmensek és archívumok, taxonómia, személyek kezelésére alkalmas, és rugalmasan bővíthető egyéb adattípusokkal. 

  • A GraphQL segítségével az adatok a felhasználók számára (weblap, alkalmazás, külső rendszer stb.) szabvány szerint, automatikusan dokumentálva, széles körben támogatott technológia alkalmazásával érhető el.

  • A GraphQL tetszőleges számú forrásból képes adatokat összegyűjteni, így a REST API-hoz képest nagyobb teljesítményt, jobb skálázhatóságot nyerünk. 

  • Mivel a backend és a frontend is csak a GraphQL réteggel van kapcsolatban, egymástól függetlenül fejleszthetőek és üzemeltethetőek.

A frontend réteg egy önálló Javascript alkalmazás, amely minden adatot kizárólag a GraphQL-től kap. Ennek a legnagyobb előnye, hogy az adatbázis és backend a publikus felülettól teljesen függetlenül fejleszthető, cserélhető. Az adatbázis egyes nézeteihez, részhalmazaihoz külön frontend felületek is készíthetőek, igény szerint akár az alapszerkezettől eltérő navigációs vagy keresési rendszerrel.

Üzemeltetés


Robusztus környezet

A moduláris felépítésnek köszönhetően a rendszer teljesítménye jól tervezhető, mert bármelyik eleme (frontend, API, backend, adatbázisok) egyszerűen önálló tárhelyre helyezhető  (szerver, VPS, docker konténer, felhő, stb) és a többi elemtől függetlenül skálázható, így akár hibatűrő, auto scaling-auto healing infrastruktúra is kialakítható.

A moduláris rendszer biztonságosabb, mivel nem szükséges minden elemet egy szerveren futtatni, ahol a sok szolgáltatás miatt nehezebb a biztonsági frissítés, így nagyobb a támadás kockázata.