Három rétegű architektúra
A MoonSol és a DigiTie rendszerek architektúrájának felépítése három rétegű, amelyben az alábbi funkcionális rétegeket különböztetjük meg:
Adattárolási réteg
A felhasználói és üzleti adatok tárolása egységes relációs adatbázisban történik, a jelenleg támogatott adatbázis-kezelő alapszoftverek a következők: Oracle 12c vagy PostgreSQL 9.6. A támogatott adatbázis-kezelő alapszoftver komponensek kiválasztásakor az alábbi főbb szempontokat vettük figyelembe:
- legyen platformtól független, azaz az adatbázis-kezelő alapszoftver különböző operációs rendszer környezetekben is működőképes legyen,
- legyen széles körben elterjedt, üzemeltetői és IT audit körökben elfogadott,
- legyen robosztus és jól skálázható,
- adjon lehetőséget a 7*24 órás üzemre, online mentési eljárásokkal, távoli telephelyre történő replikációval.
Az Online Zrt. által alkalmazott fejlesztési technológia lehetővé teszi, hogy az üzleti szoftver alkalmazás átírása nélkül, pusztán a technológia rétegben történő módosításokkal lehetőség nyíljon különböző adatbázis-kezelő platformok támogatására. Ezt kihasználva a technológia fejlesztési irányok között szerepel további adatbázis-kezelők támogatásának jövőbeni megvalósítása is (pl. DB2, MS-SQL).
Üzleti logika réteg
Minden üzleti logika a kiszolgáló oldali alkalmazás-szerver szoftvereken fut. Az üzleti logika réteg felelős a megjelenítési réteg vezérléséért, az adatbeviteli és kimeneti (prezentációs) vezérlőelemek és tartalmak definiálásáért, és azok működésének vezérléséért (pl. ellenőrzések elvégzése). Az üzleti logika réteg és a kliens között egy webszerveren keresztül történik a kommunikáció HTTPS protokolt alkalmazva.
Az üzleti logika réteg működése a megjelenítési réteg felé egységes, független attól, hogy Java Webstart, böngésző vagy mobil alapú kliens kerül alkalmazásra (ld. később).
Elérési / megjelenítési réteg (kliens)
A megjelenítési réteg egy grafikus felhasználói felület, amely a vékonykliens elv alapján került kialakításra. Ez azt jelenti, hogy a kliens alkalmazás nem tárol adatokat a felhasználói munkaállomáson és nem tartalmaz az üzleti logikához kapcsolódóan előre telepített programelemeket. A kliens oldalon kizárólag az adatbeviteli és adatmegjelenítő eljárások, valamint a képernyő elemek kezelése fut.
A rendszerek megjelenítési rétege három különböző technológiai platformon implementálható:
- Java WebStart kliens: a Java kliens program böngészőből, vagy a Windows desktop-ra tett shortcut ikonnal indítható, esetleges frissítési szükségletet Java WebStart technológiával a rendszer automatikusan kezeli.
- Böngészős kliens technológia: a böngészőben futó megjelenítési réteg HTML5, CSS3 és Bootstrap JavaScript technológiákat alkalmazva került kialakításra.
- Mobil kliens technológia: a natív Android/iOS applikációként elérhető kliens Flutter keretrendszerben készül.
Integrációs lehetőségek
Megoldásaink meglévő vagy újonnan bevezetésre kerülő rendszerekkel történő integrációja szinte bármilyen technológiával megvalósítható, íme néhány példa:
Mikroszerviz architektúra
A szoftverünk fejlesztése során kiemelt hangsúlyt fektettünk az API-alapú funkcionalitásra, amely lehetővé teszi a különféle műveletek rugalmas és szabványos elérését, felkészítettük arra, hogy mikroszervíz orientált architektúrában működjön. Az automatikusan generált szolgáltatásleírók segítik az API-k dokumentációját és használhatóságát, így a szolgáltatásaink könnyen illeszthetők meglévő rendszerekhez, szabványos specifikációk alapján. Ezáltal garantált az egyszerű integráció és a skálázhatóság. Igény szerint bármelyik alkalmazásbeli metódust ki tudunk nyitni a külvilág felé, azaz adott metódus képes külső rendszerektől fogadott input adatok alapján eljárásokat futtatni, és képes az eljárások eredményét külső rendszerek felé outputként publikálni - több száz olyan API van jelenleg is, amelyeken keresztül alkalmazásaink külső rendszerekkel kommunikálnak.
A Backend for Frontend (BFF) réteg integrációja a DigiTie platformon belül biztosítja az ügyfélspecifikus, célzott adattovábbítást és a kliensoldali igényeknek megfelelő optimalizált kiszolgálást. Ez a réteg lehetővé teszi az egyedi front-end igények hatékony kezelését, miközben biztosítja a skálázható és moduláris működést.
A rendszer konténerizálhatósága elősegíti az egyszerű telepítést és üzemeltetést a modern felhőalapú környezetekben. Docker vagy más konténertechnológiák használatával a szoftver különböző környezetekben is könnyen bevezethető, miközben biztosítja a stabilitást és a könnyű skálázást.
A mikroszervizek közötti/felé való kommunikáció message broker (például RabbitMQ vagy Kafka) segítségével is megvalósítható, amely aszinkron üzenetküldési lehetőségeket biztosít, támogatva a magas teljesítményű, lazán csatolt komponenseket. Az adatátadás mikro szervizes környezetben történhet direktben a mikroszervizek részére, de elképzelhető olyan megoldás is, hogy az adatokat egy adatpiacba (data mart) publikáljuk, és a mikroszervizek a működésükhöz szükséges információkat onnan vegyék el, de hasonlóan képesek vagyunk mikroszervizes környezetben adatpiacon publikált adatok input adatként történő felhasználására. Emellett a központosított monitoring és naplózási funkciók lehetővé teszik a rendszer állapotának folyamatos felügyeletét és az esetleges problémák gyors azonosítását, ezzel növelve a rendszer megbízhatóságát és biztonságát.