Megoldás létrehozása az Azure használatával

Befejeződött

Az alkalmazásarchitektúra létrehozásához ismernie kell a funkcionális és nem funkcionális követelmények szélességét, majd ezeket a követelményeket olyan eszközökkel, technológiákkal és szolgáltatásokkal párosítva, amelyek képesek megfelelni ezeknek a követelményeknek.

A buszos fogási forgatókönyvben van néhány fő követelmény:

  • A valós idejű buszhelyek monitorozására szolgáló webhely
  • Értesítések, ha egy busz a közelben van
  • Automatizált üzembe helyezés és skálázás

Vizsgáljuk meg részletesebben ezt a forgatókönyvet, és azt, hogyan hozhat létre megoldásokat különböző Azure-szolgáltatások használatával.

Valós idejű buszadatok lekérése

Számos város biztosítja a tömegközlekedési adatokat a General Transit Feed Specification (GTFS) segítségével, amely támogatja a GTFS valós idejű referencia v2 (GTFS-RT) nevű valós idejű hírcsatornát is. A hírcsatorna egy JSON-dokumentumból áll, amely a következő mintához hasonlóan néz ki (a King County metrócsatornából):

{
      "id": "1618418866_4318",
      "vehicle": {
        "trip": {
          "trip_id": "49195161",
          "direction_id": 0,
          "route_id": "100001",
          "start_date": "20210414",
          "schedule_relationship": "SCHEDULED"
        },
        "vehicle": {
          "id": "4318",
          "label": "4318"
        },
        "position": {
          "latitude": 47.64524,
          "longitude": -122.370171
        },
        "current_stop_sequence": 228,
        "stop_id": "2010",
        "current_status": "IN_TRANSIT_TO",
        "timestamp": 1618418841
      }
    },

Tudva, hogy egy ilyen hírcsatorna elérhető, a következő lépésben ki kell derítenie, hogyan kell értesíteni, ha egy busz elég közel van Hozzád, így tudod, hogy elkezdj járni a buszállomásra, hogy időben elkapd a buszt. Ehhez létrehozhatunk egy geofence-t néhány buszmegálló előtt a tervezett állomásunk előtt. Így értesítést kaphat, ha a busz be- vagy kilép a földrajzi helyről. Ha értesítést kaphat, amikor ez történik, akkor nem is kell folyamatosan ellenőriznie a térképen, ahol a busz van. Amikor megkapja az értesítést, tudni fogja, hogy itt az ideje, hogy távozzon.

Megoldás létrehozása Azure-szolgáltatásokkal

A forgatókönyv és az ideális megoldás alapján íme egy lehetséges architektúra:

Diagram of the Catch the bus microservices architecture.

Az architektúra számos különböző szolgáltatást használ az íráshoz szükséges kód mennyiségének minimalizálása, valamint az Azure által nyújtott méretezhetőség és infrastruktúra előnyeinek lehető legnagyobb kihasználása érdekében.

A jól ismert szöveg (WKT) egy egyszerű szöveges korrektúranyelv, amely vektorgeometriai helyeket jelöl a térképen. A WKT egy nyílt térinformatikai konzorcium (OGC) szabvány, amely szöveges formátumban ábrázolja a térbeli adatokat. A legtöbb OGC-kompatibilis rendszer támogatja a jól ismert szöveget.

Itt áttekintést kaphat arról, hogy mely megoldásösszetevők vannak kiválasztva, és hogy miért. Ebben a modulban az adatbázis-szolgáltatásra fog összpontosítani.

Adatok tárolása és feldolgozása az Azure SQL Database-lel

Az Azure SQL Database kiválóan alkalmas erre a forgatókönyvre. Értsük meg, miért.

Az Azure SQL Database natív JSON-támogatással rendelkezik, amely segít csökkenteni az adatbázissal küldött és fogadott adatok kezeléséhez szükséges kód mennyiségét. A JSON rugalmas jellegének köszönhetően a megoldás agilisabbá és könnyebben fejleszthető. Emellett biztosítja, hogy hatékonyan továbbíthassa az adattömböket az Azure SQL-nek, optimalizálja a kerek utakat, és csökkentse a késést.

Az Azure SQL teljes körű térinformatikai támogatást is biztosít, ami nagyszerű funkció, mivel a térinformatikai adatok manipulálása nem a legegyszerűbb feladat. Ha egy teljes körű térinformatikai motort használ az adatbázisban, elkerülheti a külső kódtárakkal való integráció összetettségét. Nem kell adatokat mozgatnia, például azt, hogy egy busz egy meghatározott földrajzi területen belül van-e. Mivel az Azure SQL megfelel az Open Geospatial Consortium szabványainak, könnyen integrálható az Azure SQL-ben tárolt adatok vizualizációs kódtárakkal, például az OpenLayers szolgáltatással.

A fent említett funkciók a relációs modell kőszilárd alapjaira épülnek, és több éves fejlesztéssel fejlődtek ki, hogy megfeleljenek a modern alkalmazások követelményeinek. Az Azure SQL Database 100 TB-ig skálázható a rugalmas skálázási szinttel, ami azt jelenti, hogy tárigényes alkalmazásokhoz (például nagyméretű adatbázisokhoz) használható. Az Azure SQL Database költséghatékony a kiszolgáló nélküli szint használatakor is, amely támogatja az automatikus skálázást és a szüneteltetést és a folytatást. Az Azure SQL támogatja az oszlopcentrikus indexeket a gyors elemzési lekérdezésekhez, a gráfmodelleket az összetett objektumkapcsolatok felügyeletének egyszerűsítéséhez, valamint egy korszerű lekérdezésoptimalizálót, amely folyamatosan fejlődik, és képes kezelni még a legigényesebb számítási feladatokat is, mint a mai hatalmas többszereplős online játék.

Az Azure SQL-ben az Azure Blob Storage-fiókban tárolt statikus adatok – például a GTFS szabvány által biztosított útvonalinformációk – is könnyen elérhetők. Az Azure SQL függvényével OPENROWSET adatokat importálhatunk egy szövegfájlból anélkül, hogy másik szolgáltatásra van szükség. Ez lehetővé teszi a megoldás összetettségének minimalizálását.

Ezen okokból az Azure SQL Database kiválóan alkalmas az olyan alkalmazásokhoz, mint a buszfelfogó alkalmazás, ahol JSON- és térinformatikai adatokkal foglalkozik, de ki szeretné használni a motorba beépített adathozzáférési és eljárási képességeket is. A kiszolgáló nélküli Azure SQL Database kiváló lehetőség az automatikus skálázási követelmények teljesítésére, így az alkalmazás napközben is kezelheti az elfoglaltságokat, amikor többen próbálják elkapni a buszt. Az Azure SQL Database támogatja a folyamatos integrációt és a folyamatos teljesítést/folyamatos üzembe helyezést (CI/CD) olyan technológiákat, mint az Azure DevOps és a GitHub Actions, amelyek leegyszerűsítik az üzembe helyezés automatizálását.

API-szolgáltatás létrehozása az Azure Functions használatával

Szüksége van egy API-ra a GTFS-hírcsatorna eléréséhez és használatához, a felhasználó értesítéséhez, ha egy busz geofence-t adott meg, és adatokat kell szolgáltatnia egy webalkalmazásnak. Egyszerűsége és kiszolgáló nélküli architektúrája miatt az Azure Functionst választotta a választott szolgáltatásnak. Az Azure Functions egy nagyszerű szolgáltatás, mert kiszolgáló nélküli jellege automatikusan a szükségesre skálázódik, így szinte minden infrastrukturális szempontot az Azure Functionsre hagy. Az Azure Functions különböző nyelvekhez nyújt támogatást, így kiválaszthatja az előnyben részesített vagy a legmegfelelőbbet ahhoz a feladathoz, amelyen dolgozik, és amely egy tiszta mikroszolgáltatás-megközelítést követ.

Értesítések küldése az Azure Logic Appsszel

Ha értesítést szeretne kapni arról, hogy egy busz a földrajzi területen belül van, és el kell kezdenie a buszpályaudvarra való sétát, az Egyik lehetőség az Azure Logic Apps használata. Az Azure Logic Apps számos összekötővel rendelkezik, így más szolgáltatásokkal is integrálható. Az Azure Logic Apps használatával például SMS-üzenetet küldhet, vagy e-mailt küldhet az Outlook- vagy Gmail-fiókjából. Az Azure Logic Appsben az a nagyszerű, hogy ez egy alacsony kódszámú/kód nélküli platform, így az értesítési szolgáltatás beállítása a busz elfogására egyszerű, és mindössze néhány egérművelettel elvégezhető.

A webalkalmazás üzemeltetése az Azure Static Web Apps használatával

A térkép georedenseit és buszpozícióit ábrázoló térinformatikai adatok megjelenítéséhez statikus HTML-oldalt hozhat létre a jól ismert jQuery- és OpenLayers-kódtárak használatával. A statikus lapnak le kell kérnie az adatokat egy kiszolgálóoldali REST API-ból, amelyet egy másik Azure-függvény biztosít. Mivel a vizualizációs oldal működéséhez mind az ügyfélre, mind a háttérrendszerre szükség van, kihasználhatja az Azure Static Web Apps előnyeit. Az Azure Static Web Apps megkönnyíti a megoldás fejlesztését és üzembe helyezését, mivel egyesíti az Azure Web Apps és az Azure Functions képességeit, valamint a beépített GitHub Actions-integrációval is rendelkezik.

Az üzembe helyezés automatizálása a GitHub Actions használatával

Mint láthatta, a teljes megoldás több mozgó részből áll: a háttérszolgáltatásból, amely adatokat kér le a valós idejű hírcsatornából; az adatok tárolására, feldolgozására és kiszolgálására szolgáló adatbázis; és az előtérbeli vizualizációs megoldás, amely statikus HTML-fájlból és REST API-végpontból áll. A GitHub Actionsen keresztül ci-/CD-folyamat használatával automatizálhatja az összes elem üzembe helyezését a GitHubon és a Visual Studio Code-on keresztül, amikor módosításokat véglegesít. Az adatbázis-módosítások az Azure Functions és az Azure Static Web Apps módosításaival együtt teljesen automatizált és vezénylő módon lesznek üzembe helyezve.

Tudásteszt

1.

Ebben a forgatókönyvben melyik adatbázis-szolgáltatást kell használni a valós idejű buszadatok tárolására, feldolgozására és kiszolgálására?

2.

Ebben a forgatókönyvben az IoT-adatok tranzitjárművektől való fogadásához használt gyakori nyílt szabványos fájlformátum a következő:

3.

Az Azure SQL Database melyik szolgáltatásszintje vagy szolgáltatása támogatna egy 12 TB-os adatbázist igénylő forgatókönyvet?