Megoldás létrehozása az Azure használatával
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:
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.