Mi az a Middleware? Definíció és példa felhasználási esetekre

A middleware a webfejlesztésben általánosan használt kifejezés. A szövegkörnyezettől függően sok mindent jelenthet, ami kissé zavarossá teszi a kifejezést.

Ebben a cikkben a fogalom meghatározásával kezdjük, majd folytatjuk a vita tárgyát a különböző felhasználási esetekről.

A cikk elolvasása után jobban részt vehet társaival folytatott műszaki és építészeti beszélgetésekben. Ön képes lesz arra is, hogy biztonságos és megbízható API-kat és adatfolyamokat tervezzen.

A Middleware meghatározása

A middleware olyan szoftver, amely két alkalmazás vagy szolgáltatás között közvetítőként működik, megkönnyítve azok kommunikációját.

Úgy gondolhat rá, mint egy proxy, amely adatgyűjtőként, fordítóként vagy egyszerűen csak a kérelmeket továbbító proxy-ként működhet.

Közönséges esetek a köztes szoftverekhez

1) Fordító

Számos adatcsere-formátum létezik, például JSON, XML és Protobuf. Annak ellenére, hogy manapság leginkább a JSON-t használjuk, mindegyiknek megvan a maga használati esete.

Például a Protobuffer-ekről ismert, hogy jobban teljesítenek, mint a JSON, de nem olvashatók emberben. Tehát előfordulhat, hogy Protobuffereket használ belső szolgáltatásokhoz, és akkor használhatja a JSON-ot, ha az API-felhasználó böngésző.

Megtekintheti a Protobuffers-ről szóló cikkemet is, ha többet szeretne megtudni róluk.

Tegyük fel, hogy szükségünk van erre a két szolgáltatásra, amelyek különböző protokollokat beszélnek, hogy kommunikáljanak egymással.

Hozhatunk létre egy köztes szoftvert, amely adatkonvertáló könyvtárat használ, és a kéréseket olyan formátumra fordítja, amelyet a fogadó szolgáltatás érthet.

2) Adatok felhalmozása-másolása

A Microservice architektúra egy népszerű építészeti minta, amelyet gyakran alkalmaznak a modern alkalmazásokban.

Ha még nem ismeri a mikroszolgáltatások architektúráját, az alapvetően azt jelenti, hogy az alkalmazás sok kicsi alkalmazásból vagy szolgáltatásból áll, amelyek egymástól függetlenek és az interneten keresztül kommunikálva működnek együtt.

Például egy e-kereskedelmi projektben rendelkezhet mikroszolgáltatással a termékek tárolására és visszakeresésére, egy másik mikroszolgáltatására keresésre, és egy másikra a felhasználók hitelesítésére és tárolására. És mindegyiknek megvan a saját adatbázisa.

Most tegyük fel, hogy a keresésünket úgy akarjuk megvalósítani, hogy a felhasználókra és a termékekre egyaránt keressen.

Ha ez egy monolit alkalmazás volt, akkor egyszerűen írhatunk egy lekérdezést az egyes táblák keresésére és az eredmények összekapcsolására. De most az adatbázisunk különböző szervereken fut.

Ennek a problémának több megoldása van, és kettőt fogunk megvizsgálni.

Adatok felhalmozása

Középprogram segítségével mindkét szerverre kéréseket küldhetünk, és megkérhetjük őket, hogy az adatbázisukban keressék meg a keresett szónak megfelelő felhasználói neveket és termékeket.

Ezután mindkét szerverről gyűjthetjük az eredményeket, és visszaadhatjuk azokat az ügyfélnek. Ne feledje, hogy a kérések száma lineárisan növekszik a kiszolgálók számának növekedésével (és ezeket az adatokat is össze kell egyesítenünk).

Adatok másolása

Ismétlődő adatokat tárolhatunk keresési szerverünkön, így közvetlenül kereshet rájuk, ahelyett, hogy termék- és felhasználói kiszolgálóktól kérne. Ez a memória szempontjából kevésbé hatékony, de sokkal gyorsabb - és a sebesség kritikus a keresési szolgáltatások szempontjából.

Ha a szükséges táblázatok Termék és Felhasználó, akkor ezeket a táblákat létrehozhatjuk keresési szerverünkön is. Ezután, amikor új felhasználót mentünk a felhasználói adatbázisunkba, egy példányt is mentünk a keresőkiszolgálóra.

Pár lehetőségünk van: először hívhatjuk a keresőkiszolgáló mentési metódusait a Felhasználói és Termékkiszolgálók mentési módszereiből az adatok másolásához. Vagy létrehozhatunk egy köztes szoftvert a mentéshez, amely a következőket fogja tenni:

  • Amikor mentési kérelem érkezik, hívja meg a Termék / Felhasználó szerver mentését és a Keresési szerver mentését.
  • Ha az első mentés sikertelen, akkor ne hívja a másikat (ezzel az adatbázisok következetesek maradnak).

Nézzük meg a tervdiagramokat köztes szoftver nélkül. Először így néz ki anélkül, hogy:

Csúnyán néz ki, igaz? Valóban, csúnya, és bonyolultabbá és szorosabban összekapcsolja a kódot.

Itt van ugyanaz a megoldás egy köztes szoftverrel:

Ebben a forgatókönyvben az ügyféloldal csak felhívja a köztes szoftvert, hogy mentse a terméket vagy a felhasználót, és a többi kezeli.

Nincs kód az adatok másolásához a termék- vagy a felhasználói kiszolgálókon vagy az ügyféloldalon. A Middleware gondoskodik ezekről a dolgokról.

3) API biztonság

Bármely elülső ügyféloldali kód esetében megtekinthetjük a kimenő kéréseket, akár a böngésző konzolján, akár egy proxy segítségével.

Beszéltünk egy felhasználói szerverről, amely gondoskodik a bejelentkezésről és a regisztrációról. Ha kezelői kódunk közvetlenül elküldi a kéréseket az adott kiszolgálónak, akkor a hitelesítési szerverünk címe ki lesz téve. Miután megtanulta a háttérprogramunk IP-címét, a támadók eszközök segítségével megkereshetik a végpontjainkat, és kiszolgálókon kereshetnek sérülékenységeket.

Közepes szoftvert használhatunk proxyként a hitelesítési szerver URL-jének elrejtésére. Kezelőfelületünk kommunikál a köztes szoftverrel, és továbbítja a kérést a hitelesítési szervernek, és visszaadja a választ.

Ez a megközelítés azt is lehetővé teszi, hogy blokkoljunk minden kérést a hitelesítési szerverünkhöz, kivéve a köztes szoftverünk URL-jéből érkező kéréseket. Ez sokkal biztonságosabbá teszi hitelesítési szerverünket.

Ez korábban nem volt lehetséges, mert a kezelőfelületünk kommunikált a hitelesítési szerverrel. Mivel a kezelőfelület az ügyfél számítógépét jelenti, nem tudtunk IP-szűrőt alkalmazni.

4) Nyilvános API-k bemutatása

Az előző részben megtudtuk, hogy a köztes eszközökkel korlátozható az API-hoz való hozzáférés.

Most nézzük meg az egyenlet másik oldalát: Mi van, ha korlátozott hozzáférést akarunk biztosítani az API-hoz? Talán egy szoftver szoftvermérnöke vagyunk, és a bank hackathont tervez. Hozzáférést kellene biztosítanunk az API-hoz, igaz?

De mivel bank vagyunk, természetesen nem tudunk hozzáférést biztosítani a teljes API-hoz, és nem engedhetünk meg minden műveletet. Ez azt jelenti, hogy meg kell találnunk a korlátozott hozzáférés biztosításának módját.

Erre a célra megvalósíthatunk egy köztes szoftvert, amely csak a végpontok egy részét tárja fel, és a kéréseket átirányítja a tényleges API-ra. Ezután megadjuk ezt az API-t a fejlesztőknek a hackathonon.

Következtetés

Ebben a bejegyzésben azzal kezdtük, hogy meghatározzuk, mi is a köztes szoftver, és megpróbáltuk kategorizálni a köztes eszközök webes fejlesztési eseteit.

Ne feledje, hogy ez nem a felhasználási esetek teljes listája, de remélem, hogy hasznos volt Önnek.

Köszönöm, hogy elolvasta. Ha tetszett a cikk, meghívlak, nézd meg a blogomat. Feliratkozhat a levelezőlistámra is, hogy értesítést kapjon, amikor új bejegyzést teszek közzé :)