051.2 Lecke 1
Tanúsítvány: |
Open Source Essentials |
---|---|
Verzió: |
1.0 |
Témakör: |
051 Szoftver alapismeretek |
Fejezet: |
051.2 Szoftverarchitektúra |
Lecke: |
1/1 |
Bevezetés
Modern világunkban mindenütt jelen van az internet, akárcsak a mobil- és webalapú alkalmazások. Ezeket az eszközöket a világ lakosságának nagy része zökkenőmentesen használja; és ezek működtetnek mindent az azonnali üzenetküldéstől kezdve az olyan összetettebb tevékenységekig, mint a nagyvállalatok bányászati berendezéseinek beszerzése.
Mindezen látszólag egyszerű felületek és online szolgáltatások mögött egy olyan architektúra — együttműködő szoftverrészek elrendezése — áll, amelyet gyakran természetesnek veszünk. Egy kicsit ismernünk kell ezt az architektúrát ahhoz, hogy megértsük, hogyan illeszkedik egymáshoz az internet összes darabja, és hogyan tud a szoftver valódi értéket nyújtani a felhasználóknak.
Ebben a leckében megnézzük a webes alkalmazások, azaz a szerveralapú szoftverrendszerek mögött álló szoftverarchitektúrákat, és azt, hogyan használják őket olyan rendszerekben, amelyeket szinte mindenki ismer.
Szerverek és kliensek
Ha online rendszereket használunk, minden valószínűség szerint találkoztunk már olyan üzenettel, mint a Példa képernyő, amely válaszadás közben jelenik meg.
Lépjünk egy kicsit hátrébb, és nézzük meg a kontextust, amelyben ezt az üzenetet látjuk. Tegyük fel, hogy a bankszámlánkhoz próbálunk hozzáférni a bank weboldalán keresztül. Amikor a laptopunkon megpróbálunk belépni a bank weboldalára, egy olyan típusú szoftvert (azaz alkalmazást) használunk, amelyet webböngészőnek nevezünk, például a Google Chrome-ot vagy a Firefoxot. Ebben az esetben a számítógépünkön lévő böngésző kérést küld egy másik számítógépnek, amely otthont ad a webhelynek. Ezt a fajta számítógépet nevezzük szervernek. Kifejezetten arra tervezték, hogy a nap 24 órájában, a világ minden tájáról érkező új kéréseket kiszolgálja.
A szerver tehát egy számítógép, olyan, mint amit mi is használunk, amikor videojátékokkal játszunk vagy programozunk. Van azonban egy fő különbség: a szerver általában minden erőforrását a rajta futó szoftveralkalmazásnak adja. Ebben a példában a szoftver egy webes alkalmazás, egy számítógépes program, amely a szerveren fut.
A Példa képernyő, amely válaszadás közben jelenik meg esetében a szerver kapott egy kérést egy böngészőtől, és a szerveren futó alkalmazás végrehajtja a kapott műveletet. Ez a művelet lehet egy adatbázis lekérdezése a felhasználó banki adatairól, vagy egy másik szerverrel való kommunikáció egy speciális kedvezmény igazolása érdekében a felhasználó következő hiteléhez.
Ebben a példában a gépeden futó böngészőt kliensalkalmazásnak, vagy egyszerűen csak kliensnek nevezzük. A kliens lép kapcsolatba a távoli szerverrel.
A kliens és a szerver közötti hálózati kommunikáció történhet egy vállalati hálózaton belül, vagy az interneten keresztül az egész világon. A kliens-szerver interakció közös jellemzője, hogy egy szerver több klienssel is több kapcsolatot létesíthet. Gondoljunk csak az előző példára: egy szerveren elhelyezett bank weboldala percenként több ezer kérést fogadhat több helyről, amelyek mindegyikében egy-egy felhasználó próbál hozzáférni a személyes bankszámlájához.
Nem minden eset történik úgy, mint amikor egy böngésző interakcióba lép egy szerverrel, amely szinte az összes feldolgozást elvégzi. Bizonyos esetekben a kliens lehet a feldolgozás elsődleges példánya; ezt a koncepciót fat client-nek (vagy thick client — vastagkliens) nevezik, ahol a kliens tárolja és dolgozza fel a feladatok többségét ahelyett, hogy a szerver erőforrásaira támaszkodna. Ezzel szemben a banki példánkban a böngésző egy thin client (vékonykliens), amely a szerverre támaszkodik a számítások elvégzésében és az információk hálózaton keresztüli visszaküldésében.
A vastagkliensre példa lehet egy videojáték asztali alkalmazása, ahol az adattárolás és feldolgozás nagy része helyben történik; a számítógép GPU-ját, RAM-ját, CPU-ját és lemezterületét használva az információk feldolgozásához. Egy ilyen alkalmazás ritkán támaszkodik külső szerverre, különösen, ha a játékot offline játsszák.
Mindkét megközelítésnek vannak előnyei és hátrányai: a vastagkliens esetén a hálózat instabilitása kevésbé jelent problémát, mint a távoli szerverre támaszkodó vékonykliens esetében, de a szoftverfrissítések megvalósítása nehezebb lehet, és a vastagkliens több számítógépes erőforrást igényel. Egy vékonykliens esetében az alacsonyabb költségek nagy előnyt jelenthetnek. Bármelyik klienstípus esetén problémát jelenthet a személyes adatok átadása egy harmadik féltől származó alkalmazásnak.
Webalkalmazások
A webalkalmazás olyan szoftver, amely egy szerveren fut, feldolgozza a felhasználói interakciókat, és amellyel a vastag- vagy vékonykliensek számítógépes hálózaton keresztül lépnek kapcsolatba. Nem minden weboldal tekinthető webes alkalmazásnak: az egyszerű, interaktivitás nélküli statikus weboldalak nem minősülnek webalkalmazásnak, mivel a szerver nem futtat alkalmazást a kliens által kért műveletek feldolgozására.
Sok webes alkalmazás két csoportba sorolható: a single page application (SPA — egyoldalas alkalmazás) és a multi-page application (MPA — többoldalas alkalmazás). Az SPA esetén egy oldal van, ahol minden adatcsere és betöltés anélkül történik, hogy a felhasználót át kellene irányítani egy másik lapra az alkalmazáson belül. Az MPA az SPA-val ellentétben több oldallal rendelkezik. Egy adatváltozás vagy ugyanazt az oldalt frissíti, amelyről a művelet származik, vagy átirányítja a felhasználót egy másik lapra.
Vegyük az előző példát, amikor egy felhasználó az internetbank oldalán szeretné ellenőrizni a legutóbbi számlaforgalmát. Képzeljük el, hogy egy tranzakció a weboldal betöltése után történik. Ha a banki webalkalmazás egy SPA, akkor az új tranzakció automatikusan megjelenik ugyanazon az oldalon, anélkül, hogy a felhasználót új oldalra irányítaná át. Ha a felhasználó ellenőrzi a hiteleit, az új információ szintén ugyanazon az oldalon jelenik meg, így nem kell a felhasználót új weboldalra átirányítani. Az oldal módosítása a felhasználó átirányítása nélkül teszi zökkenőmentessé a navigációt.
Egy MPA esetében, amikor a felhasználó megnyitja a hitelekkel kapcsolatos oldalt, a szervernek át kell irányítania a felhasználót egy új helyre, ami egy másik oldalt jelent.
Az SPA webalkalmazás híres példája a Google Mail (Gmail). Ez nem irányítja át a felhasználót teljesen új oldalra, amikor például a felhasználó a spam mappát szeretné megjeleníteni; az alkalmazás csupán frissíti a kijelzőnek azt a részét, amely az összes spam üzenetet mutatja, és ugyanazon az oldalon marad.
Híres MPA alkalmazás például az Amazon.com, az e-kereskedelmi óriás, ahol minden egyes termék egy külön weboldalon található.
Az MPA egyik előnye a SPA-val szemben, hogy a webes analitika sokkal könnyebben gyűjthető és mérhető. Ez kulcsfontosságú ahhoz, hogy a fejlesztők optimalizálni tudják az internetes keresési eredményeket.
Általában egy webes alkalmazás két különálló részre oszlik: frontend és backend. A frontend a nézeti (view) réteg, ahol a felhasználó a böngészővel interakcióba lép az oldal elemeinek használatával, kattintással, kiválasztással vagy gépeléssel. Ez az a rész, ahol a szervertől érkező adatok fogadásra, formázásra kerülnek és a böngészőn keresztül megjelennek a felhasználónak.
A backend általában a webes alkalmazás nagyobb része. Ez tartalmazza az üzleti logikát, a kommunikációs kezelőket, az adatfeldolgozás nagy részét és az adattárolást. Az adattárolás egy külön adatbáziskezelő rendszert használ, amely a backendhez kapcsolódik.
A frontend és a backend kommunikál egymással. Az adatkéréseket a frontend továbbítja a backendnek, a backend által visszaküldött adatokat pedig a frontend fogadja, formázza és megjeleníti a felhasználónak.
Egyszerű példánkban, amikor a felhasználó bankszámlájának legutóbbi tranzakcióját keressük, a műveletet az alkalmazás frontendje értelmezi, amely a felhasználó asztali gépén lévő böngészőben fut. Ezt a kérést ezután az interneten keresztül elküldi az alkalmazás backendjéhez, amely ellenőrzi, hogy a felhasználó jogosult-e a művelet végrehajtására, lekérdezi az adatokat, és visszaküldi a tranzakciók listáját a böngészőben betöltött frontendnek. A böngésző ezután formázza és megjeleníti az adatokat.
Alkalmazásprogramozási interfész (API)
Egyetlen szoftver sem hasznos, ha nem tud a belső és külső komponensekkel kommunikálni. Hogyan kommunikálhat tehát a kliens a webes alkalmazással? Hogyan tud a frontend adatokat küldeni a backendnek?
A szoftveralkalmazások egymással az alapvető internetes kommunikációs protokollokon keresztül futó alkalmazásprogramozási interfészen (Application Programming Interface — API) keresztül kommunikálnak. A protokollok olyan szabványok és szabályok, amelyeket azért dolgoztak ki, hogy két vagy több alkalmazás parancsokat és adatokat cseréljen egymással.
Az API fő előnye, hogy az alkalmazás különböző részeit szétválasztja, miközben lehetővé teszi számukra, hogy együttműködjenek az adatok feldolgozásában. Az API-k az adatáramlást is központosítják előre meghatározott csatornákon, és olyan átjáróként működnek, amelyek biztosítják, hogy mindenki ugyanazt az utat használja a be- és kilépéshez. A webes alkalmazásokban az API-k létfontosságúak az alkalmazás funkcionalitása szempontjából, mivel lehetővé teszik a felhasználói interakciót, a feldolgozott információk átadását, az adattárolás iránti kérelmeket és sok más feladat végrehajtását. Egy API segítségével a kliens például olyan műveleteket kérvényezhet, amelyek a szerveren kerülnek végrehajtásra.
Térjünk vissza a banki webes alkalmazás példájához. Egy webes alkalmazáson keresztül történő bejelentkezéshez a felhasználó általában bizonyos szövegmezőkbe beírja az adatokat, például a felhasználónevet és a jelszót, majd rákattint a “Bejelentkezés” gombra. A böngésző lekérdezi ezeket az információkat, és meghív egy backend API-t. A távoli kiszolgálón futó webes alkalmazás megkapja a felhasználói adatokat, validálja a felhasználót, ellenőrzi a felhasználó hozzáférési jogát, és végül visszaküldi a választ a böngészőnek. Ahhoz, hogy a felhasználó kommunikálni tudjon a szerverrel, a kliens és a szerver számára is kötelező az adatok oda-vissza küldése. Ezt teszik lehetővé az API-k.
Vegyük észre, hogy a bank webes alkalmazása nem tesz közzé más érzékeny információkat; csak azokat a mezőket jeleníti meg a felhasználónak, amelyek a kívánt interakcióhoz engedélyezettek és szükségesek — a többi el van rejtve a felhasználó elől.
Az API-k közötti kommunikáció nagyon különböző kialakításokon és protokollokon alapulhat. Messze a leggyakrabban használt protokoll a webes alkalmazásokban a hypertext transfer protocol (HTTP). A Hypertext más szövegekre mutató hivatkozásokkal ellátott szöveg, a HTML weboldalak linkjeinek alapkoncepciója. A hiperhivatkozások képezik tehát a weboldalak felépítésének és böngészőkben való megjelenítésének alapját.
A HTTP-t kliens-szerver alkalmazásokhoz tervezték, ahol az erőforrásokat egy szervertől kérik, majd a HTTP protokoll által definiált, előre meghatározott struktúra segítségével a hálózaton keresztül visszaküldik a kliensnek.
Egy strukturált webes alkalmazás esetében a szoftvermérnökök az alkalmazást különálló részekből vagy modulokból tervezik. Ez a felelősség szétválasztása lehetővé teszi a feladatok és felelősségi körök egyértelmű meghatározását, ami gyorsabb fejlesztést és jobb karbantartást eredményez.
Vegyünk példaként egy olyan alkalmazást, amely két belső modullal rendelkezik: az egyik az üzleti logikát valósítja meg, a másik pedig egy harmadik féltől származó integrációra támaszkodik. Ez a harmadik fél egy külső vállalat, amely az API-ját valamilyen konkrét céllal — például időjárás-előrejelzés — bocsátja rendelkezésre. Ha az időjárás-szerver nem működik, lehetetlen az időjárási adatokhoz hozzájutni, márpedig ha ezek az adatok kulcsfontosságúak a végső feldolgozott kimenet szempontjából, akkor a hiányuk átmenetileg fejfájást okozhat a felhasználónak, ha nincs alternatív adatforrás.
Most képzeljük el, hogy ezt a third-party szolgáltatót lecserélik, és az új szolgáltató másképp kezeli ugyanazt az API-t. A modulok szétválasztása azt jelenti, hogy a fejlesztőknek csak az egyik modult kell frissíteniük. A másik modulban lévő üzleti logikához egyáltalán nem kell hozzányúlni, vagy csak minimális frissítést igényel.
A világos folyamatstruktúrák szükségessége az API-k kialakítását is befolyásolja, hogy azok használata könnyebbé váljon. A representational state transfer (REST) koncepció egy architekturális stílus, amely egy sor irányelvet tartalmaz az adatokhoz való hozzáférés megtervezésére és megvalósítására egy alkalmazásban.
Hat REST-elv létezik. Az egyszerűség kedvéért csak hármat fogunk ismertetni, amelyek a lecke szempontjából a legfontosabbak:
- Kliens-szerver szétválasztása (decoupling)
-
A kliensnek csak az erőforrás URI-ját kell ismernie, amelyen keresztül a szerverrel való kommunikáció történik. Ez az elv nagyobb rugalmasságot tesz lehetővé. Például, ha az alkalmazás backend oldala átdolgozásra kerül, vagy ha a backend adatbázisában jelentős architektúrális változás történik, a frontendet nem kell ezzel együtt frissíteni. Egyszerűen továbbra is ugyanazokat a HTTP-kéréseket küldi a backendnek.
- Állapotnélküliség (statelessness)
-
Minden új kérés független az előzőektől. Nem véletlen, hogy a HTTP protokollt széles körben használják a REST elveket követő alkalmazásokhoz, mivel a HTTP nem ismeri a korábbi HTTP-kéréseket; minden új kérés esetén minden szükséges információt el kell küldeni a kérés helyes feldolgozásához. Az ezt az elvet megvalósító webes alkalmazás például nem tudja, hogy a kliens be van-e jelentkezve (authenticated). Ezért a kliensnek minden egyes HTTP-kérelemhez el kell küldenie egy hitelesítési tokent. A szerver ezt a tokent tudja használni annak ellenőrzésére, hogy a kérést blokkolni vagy feldolgozni kell-e.
Ennek az elvnek az egyik fő előnye a könnyebb skálázás, mivel a szerver több millió kérést tud feldolgozni a felhasználói adatok ellenőrzése nélkül.
- Többrétegű architektúra (layered architecture)
-
Az alkalmazás több rétegből áll, és minden rétegnek saját logikája és célja lehet, például a biztonság vagy az adatgyűjtés. A kliens soha nem tudhatja, hogy hány réteg létezik, vagy azt, hogy közvetlenül egy adott réteggel kommunikál-e az alkalmazáson belül.
A REST alapelveket követő API-kat RESTful-nak nevezik, és a modern weben számos webes alkalmazás követi a REST designt. Bár egy RESTful API-nak nem kell ezeket az elveket a HTTP protokoll segítségével megvalósítania, a REST-modell robusztussága, egyszerűsége és a világhálós környezetben való elterjedtsége miatt szinte általánosan használják.
Architektúra típusok
Több tucatnyi architekturális stílus és szabvány létezik, amelyek megpróbálják megszervezni a webes alkalmazások struktúráját. Mint a számítógépes világban szinte mindig, itt sincs “győztes”, csak vannak az egyes modelleknek előnyei és hátrányai. Fontos paradigma az úgynevezett mikroszolgáltatás-architektúra (microservice architecture), amely a régebbi monolitikus architektúra alternatívájaként jött létre.
A mikroszolgáltatás-architektúra olyan szoftvermodell, amely több, egymástól függő szolgáltatásból áll, amelyek együtt alkotják a végső alkalmazást. Ennek az architektúrának a célja a kódbázis decentralizálása: A szoftver több rétegét több kisebb alkalmazásra bontják a jobb karbantarthatóság érdekében (Mikrszolgáltatás-architektúra).
Ezzel szemben a monolitikus architektúra az alkalmazás összes szolgáltatását és erőforrását egyetlen alkalmazásban tartalmazza (Monolitikus architektúra).
A képeken látható, hogy a mikroszolgáltatási modell decentralizált, és az alkalmazás több szolgáltatásra támaszkodik, amelyek mindegyike saját adatbázissal, kódbázissal és még szerver erőforrásokkal is rendelkezik. Ahogy a név is jelzi, minden egyes mikroszolgáltatásnak kisebbnek kell lennie, mint monolitikus megfelelőjének, amely az összes szolgáltatásért felelősséget vállal.
A monolitikus alkalmazás minden erőforrását egyetlen egységbe foglalja. Az összes üzleti logika, adat és kódbázis egyetlen hatalmas blokkban van központosítva, ezért is hívják “monolitnak”.
A felhasználók nehezen veszik észre, hogy egy webes alkalmazás monolitikus vagy mikroszolgáltatásos modellben fut-e; a választásnak átláthatónak kell lennie. A banki alkalmazásunk például lehet monolit, ahol a fizetésekre, tranzakciókra, kölcsönökre stb. vonatkozó összes üzleti logika ugyanabban a kódbázisban található, amely egy vagy több szerveren fut. Másrészt, ha a banki alkalmazás mikroszolgáltatási stílust használ, akkor valószínűleg van egy mikroszolgáltatás a fizetések feldolgozására, és egy másik mikroszolgáltatás csak a hitelek kiadására. Ez utóbbi mikroszolgáltatás egy másik mikroszolgáltatást hív, hogy elemezze annak valószínűségét, hogy a kérelmező nem fog fizetni. Az alkalmazásnak több ezer kisebb szolgáltatása lehet.
A monolitikus megközelítés több karbantartási költséget igényel, ha az alkalmazás nagyobbra nő, különösen, ha több csapat (team) kódol ugyanabban a kódbázisban. Tekintettel a központosított szoftverforrásokra, nagy a valószínűsége, hogy az egyik team olyasmit változtat, ami tönkreteszi az alkalmazás másik team által fejlesztett részét. Ez igazi fejfájást okozhat a nagyobb csapatoknak, különösen, ha sok csapatról van szó.
A mikroszolgáltatások ebből a szempontból sokkal rugalmasabbak, mivel minden egyes szolgáltatást csak egy csapat kezel — persze egy csapat egynél több szolgáltatást is kezelhet. A kódmódosítások könnyen elvégezhetők, és a versengő erőforrások nem jelentenek igazi problémát. Mivel minden egyes szolgáltatás összekapcsolódik, bármely hibapont negatív hatással lehet az egész alkalmazásra. Továbbá, mivel több adatbázis-példány, szerver és külső API kommunikál egymással, az egész alkalmazás ellenálló képessége csak annyira jó, mint a leggyengébb mikroszolgáltatásé.
A monolitikus megközelítés egyik előnye, hogy egyetlen központi adatforrással rendelkezik, ami megkönnyíti az adatok duplikálásának elkerülését. A megközelítés csökkenti a felhőerőforrások felhasználását is, mivel egy nagyobb szerver kevesebb számítógépes erőforrást igényel, mint több decentralizált szerver. Egy nagyjából azonos méretű mikroszolgáltatásos alkalmazás nagyobb terhet ró a felhőre.
Gyakorló feladatok
-
Mik a legfőbb különbségek egy vastag- és egy vékonykliens között?
-
Helyes-e az a feltételezés, hogy minden weboldal egy webalkalmazás?
-
Mi az a REST modell?
-
Mi az előnyben részesített modell a nagy és modern webes alkalmazások fejlesztésére több fejlesztőcsapat esetén? Miért?
-
Mi a leggyakrabban használt protokoll a webes alkalmazások közötti adatcserére?
-
Nevezzük meg a többoldalas alkalmazások két hátrányát az egyoldalas alkalmazásokkal szemben!
-
Írjuk le a monolitikus rendszer egy előnyét a mikroszolgáltatási rendszerrel szemben, valamint a mikroszolgáltatási rendszer egy előnyét a monolitikus rendszerrel szemben!
Gondolkodtató feladatok
-
2021-ben landolt a NASA Perseverance Rover a Marson, amelynek egyik célja annak megállapítása, hogy létezett-e valaha élet a bolygón. Bár a rover itt a Földön távolról irányítható, a legtöbb helyzetben önmagát is képes irányítani. Miért jó ötlet egy ilyen járművet vastagkliensként projektálni?
-
Gondoljunk egy modern, önvezető személyautóra, amely adatcsere céljából csatlakozik egy külső szerverhez. Vastag- vagy vékonykliens legyen?
Összefoglalás
Ez a lecke a webes alkalmazások szoftverarchitektúrájának alapfogalmait ismertette. A lecke elmagyarázta azt, hogy hogyan strukturálják és szervezik őket általában, valamint a főbb különbségeket a monolitikus és a mikroszolgáltatásos modellek között. Kitértünk a szerverek és kliensek fogalmára, valamint a webalkalmazások kliensek és más szoftverprogramok közötti kommunikációjának alapjaira.
Válaszok a gyakorló feladatokra
-
Mik a legfőbb különbségek egy vastag- és egy vékonykliens között?
A vastagkliensnek nincs szüksége állandó kapcsolatra egy távoli szerverrel, amely kritikus információkat ad vissza a futó kliensnek. A vékonykliens nagymértékben támaszkodik a külső forrás által feldolgozott információkra. További különbség, hogy a vastagkliens felelős az adatfeldolgozás nagy részéért, így több számítási erőforrást igényel, mint a vékony megfelelője.
-
Helyes-e az a feltételezés, hogy minden weboldal egy webalkalmazás?
Nem. Vannak olyan weboldalak, amelyek nem szoftveralkalmazások. Egy webalkalmazás kölcsönhatásba lép a felhasználóval, aki valós időben adhat meg adatokat és használhat webes funkciókat. Az olyan egyszerű weboldalak, mint például egy közösségi esemény hirdetése, amely úgy működik, mint egy banner, nem webalkalmazások. Ezeket a nem interaktív weboldalakat könnyebb karbantartani, és tárolásukhoz és megjelenítésükhöz apró számítási erőforrásokra van szükség. Egy webalkalmazás sokkal több számítási erőforrást, robusztusabb szervereket és a felhasználókat kezelő funkciókat igényel, például korlátozott hozzáférést és állandó adattárolást.
-
Mi az a REST modell?
A REST-modell egy szoftverarchitektúra-modell, amely az alkalmazások számára fejlesztési útmutatót nyújt a jobb használhatóság, áttekinthetőség és karbantarthatóság érdekében. A REST-irányelvek egyik alapelve a többrétegű architektúra, amelyet elsősorban a kohézió és a különböző API-k belső összetevőinek függőségének csökkentése érdekében használnak.
-
Mi az előnyben részesített modell a nagy és modern webes alkalmazások fejlesztésére több fejlesztőcsapat esetén? Miért?
A mikroszolgáltatásos szoftvermodell olyan rugalmas keretet biztosít, amelyben a csapatok ugyanazon a szoftveralkalmazáson dolgoznak együtt, így könnyebb párhuzamosságot biztosít két vagy több csapat számára, amelyek egy nagy webes alkalmazást tartanak fenn. Mivel a keretrendszer decentralizált, minden csapat frissíthet egy adott üzleti területet anélkül, hogy más komponenseket kellene frissítenie.
-
Mi a leggyakrabban használt protokoll a webes alkalmazások közötti adatcserére?
A HTTP a leggyakrabban használt protokoll szerverek és kliensek közötti adatcsere esetén.
-
Nevezzük meg a többoldalas alkalmazások két hátrányát az egyoldalas alkalmazásokkal szemben!
Egy többoldalas alkalmazás ahelyett, hogy csak a megváltozott elemeket frissítené, a felhasználó által kezdeményezett műveletek hatására a weboldal összes elemét újratölti. Ez a megvalósítás azonban a teljesítmény rovására megy. Az MPA másik hátránya a nehézkesebb felhasználói interaktivitás, mivel az egyes oldalbetöltések kevésbé felhasználóbarátak. Ezzel szemben SPA esetén a vizuális hatás folyamatos lehet.
-
Írjuk le a monolitikus rendszer egy előnyét a mikroszolgáltatási rendszerrel szemben, valamint a mikroszolgáltatási rendszer egy előnyét a monolitikus rendszerrel szemben!
Egy monolitikus rendszer megkönnyítheti az adatkezelést, mivel az adatok egyetlen nagy adatbázisban találhatók, ahelyett, hogy több adatbázisban lennének szétszórva. Egy mikroszolgáltatásos alkalmazás viszont javíthatja a kódfejlesztést és a karbantartást; több csapat dolgozhat különböző üzleti logikákon anélkül, hogy akadályozná a többi csapat munkáját.
Válaszok a gondolkodtató feladatokra
-
2021-ben landolt a NASA Perseverance Rover a Marson, amelynek egyik célja annak megállapítása, hogy létezett-e valaha élet a bolygón. Bár a rover itt a Földön távolról irányítható, a legtöbb helyzetben önmagát is képes irányítani. Miért jó ötlet egy ilyen járművet vastagkliensként projektálni?
Az idő, amíg egy kommunikációs jelet a Földről elküldenek és a Marson fogadnak, a bolygók helyzetétől függően változó lehet, de akár húsz percig is eltarthat. Így egy mozgásban lévő, távoli rover irányítása és ellenőrzése lehetetlen, különösen a váratlan helyzetekben. Ideális esetben a rovernek a legtöbb helyzetben saját magát kell irányítania. Ezt a mesterséges intelligencia (AI) fejlesztésével (gépi tanulás) érik el, így a rover egyre függetlenebbé válik a manuális parancsoktól. Annak érdekében, hogy ez lehetővé váljon és kevésbé támaszkodjon távoli jelekre, a rovert úgy tervezték, hogy saját erőforrásokkal rendelkezzen, és a számítási folyamatok többsége rajta fusson, ami megfelel a vastagkliens definíciójának.
-
Gondoljunk egy modern, önvezető személyautóra, amely adatcsere céljából csatlakozik egy külső szerverhez. Vastag- vagy vékonykliens legyen?
Egy autonóm jármű a nehéz adatfeldolgozást egy külső és megbízható szerverre is átruházhatná, de ez érzékeny lenne azokban az offline időszakokban, amikor a kritikus adatok feldolgozásra van szükség. Ezért elengedhetetlen, hogy az autonóm jármű oldja meg a feladatok többségét — és ehhez egy többszörös redundanciával rendelkező vastagkliensnek kell lennie.