Návrh řešení pomocí Azure

Dokončeno

Vytvoření aplikační architektury vyžaduje, abyste porozuměli šířce funkčních a nefunkčních požadavků a pak tyto požadavky spárujte s nástroji, technologiemi a službami, které tyto požadavky můžou řešit.

Ve scénáři sběrnice existuje několik hlavních požadavků:

  • Web pro monitorování míst sběrnice v reálném čase
  • Oznámení, když je sběrnice blízko
  • Automatizované nasazení a škálování

Pojďme se podrobněji podívat na tento scénář a na to, jak můžete navrhovat řešení pomocí různých služeb Azure.

Načtení dat sběrnice v reálném čase

Mnoho měst poskytuje data veřejné dopravy prostřednictvím specifikace obecného tranzitního kanálu (GTFS), který také podporuje informační kanál v reálném čase s názvem GTFS v reálném čase Reference v2 (GTFS-RT). Informační kanál se skládá z dokumentu JSON, který vypadá jako v následujícím příkladu (z informačního kanálu metra King County):

{
      "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
      }
    },

Když víte, že takový informační kanál je k dispozici, musíte dále zjistit, jak být upozorněni, když je autobus dostatečně blízko vás, abyste věděli, že začít chodit na autobusovou stanici a zachytit autobus včas. Abychom to mohli udělat, můžeme vytvořit geofence několik autobusových zastávek před naším zamýšleným nádražím. Tímto způsobem můžete být upozorněni, když autobus vstupuje nebo ukončuje geofence. Pokud v takovém případě můžete dostat oznámení, nemusíte ani kontrolovat mapu, kde je autobus. Když dostanete oznámení, budete vědět, že je čas odejít.

Návrh řešení pomocí služeb Azure

Na základě scénáře a ideálního řešení je zde možná architektura:

Diagram architektury zachycení mikroslužeb sběrnice

Architektura využívá několik různých služeb k minimalizaci množství kódu, který potřebujete k zápisu, a k co největší výhodám škálovatelnosti a infrastruktury, které Azure poskytuje.

Dobře známý text (WKT) je jazyk formátu prostého textu pro reprezentaci umístění vektorové geometrie na mapě. WKT je standard OGC (Open Geospatial Consortium), který se používá k reprezentaci prostorových dat v textovém formátu. Většina systémů kompatibilních s OGC podporuje dobře známý text.

Tady získáte přehled o tom, které komponenty řešení jsou vybrané a proč. V tomto modulu se pak zaměříte na databázovou službu.

Ukládání a zpracování dat pomocí Azure SQL Database

Azure SQL Database je pro tento scénář vhodný. Pojďme si uvědomit proč.

Azure SQL Database má nativní podporu JSON, která pomáhá snížit množství kódu potřebného k manipulaci s daty odeslanými a přijatými s databází. Díky flexibilní povaze JSON je také řešení agilnější a snadno se vylepšuje. Zajišťuje také efektivní předávání polí dat do Azure SQL, optimalizaci doby odezvy a snížení latence.

Azure SQL také poskytuje úplnou geoprostorovou podporu, což je skvělá funkce, protože manipulace s geoprostorovým datem není nejjednodušší úlohou. Díky plně funkčnímu geoprostorovém modulu v databázi se můžete vyhnout složitosti integrace s externími knihovnami. Nemusíte také přesouvat data, abyste zjistili, například jestli je sběrnice v rámci definované geografické zóny. Vzhledem k tomu, že Azure SQL dodržuje standardy Open Geospatial Consortium, je snadné integrovat data uložená v Azure SQL s knihovnami vizualizací, jako je OpenLayers.

Výše uvedené funkce jsou založeny na pevných základech relačního modelu, které se vyvinuly v průběhu let zlepšování, aby splňovaly požadavky moderních aplikací. Azure SQL Database je škálovatelný až 100 TB s úrovní Hyperscale, což znamená, že ji můžete použít pro aplikace náročné na úložiště (například velké databáze). Azure SQL Database je také nákladově efektivní, když používáte bezserverovou úroveň, která podporuje automatické škálování a pozastavení a obnovení. Azure SQL také podporuje indexy columnstore pro bleskové rychlé analytické dotazy, modely grafů, které zjednodušují komplexní správu vztahů objektů, a nejmodernější optimalizátor dotazů, který se neustále vylepšuje a dokáže zvládnout i ty nejnáročnější úlohy, jako je ten, který vyžaduje dnešní masivní online hry pro více hráčů.

Díky Azure SQL je také snadný přístup ke statickým datům, jako jsou informace o trasách poskytované standardem GTFS, které je možné ukládat do účtu Služby Blob Storage. Funkci v Azure SQL můžeme použít OPENROWSET k importu dat z textového souboru bez nutnosti další služby. To nám umožňuje minimalizovat složitost řešení.

Z těchto důvodů je Azure SQL Database skvělou vhod pro aplikace, jako je aplikace pro sběrnice, ve které pracujete s JSON a geoprostorovými daty, ale také chcete využívat možnosti přístupu k datům a procedur integrovaných do modulu. Bezserverová služba Azure SQL Database je skvělou volbou pro splnění požadavku na automatické škálování, která aplikaci umožňuje zpracovávat zaneprázdněné časy během dne, když se sběrnice snaží zachytit více lidí. Azure SQL Database také podporuje technologie kontinuální integrace a průběžného doručování a průběžného nasazování (CI/CD), jako jsou Azure DevOps a GitHub Actions, což zjednodušuje automatizaci nasazení.

Vytvoření služby API pomocí Azure Functions

K přístupu k informačnímu kanálu GTFS a jeho využívání potřebujete rozhraní API, aby uživatele informovalo, jestli sběrnice vstoupila do geografické zóny, a obsluhovala data do webové aplikace. Jako službu, kterou si zvolíte, jste vybrali službu Azure Functions z důvodu jednoduchosti a bezserverové architektury. Azure Functions je skvělá služba, protože její bezserverová povaha se automaticky škáluje podle toho, co potřebujete, a téměř všechny aspekty infrastruktury ve službě Azure Functions. Azure Functions poskytuje podporu pro různé jazyky, takže si můžete vybrat upřednostňovanou nebo nejvhodnější pro úlohu, na které pracujete, což se řídí čistě přístupem k mikroslužbám.

Odesílání oznámení pomocí Azure Logic Apps

Pokud chcete dostat oznámení, že autobus je v rámci geografické zóny a potřebujete začít chodit na autobusovou stanici, jednou z možností v Azure je použití Azure Logic Apps. Azure Logic Apps má velký počet konektorů, abyste se mohli integrovat s dalšími službami. Azure Logic Apps můžete například použít k odeslání zprávy SMS nebo odeslání e-mailu z účtu Outlook nebo Gmail. Co je skvělé pro Azure Logic Apps, je to, že se jedná o platformu s minimem kódu nebo bez kódu, takže nastavení služby oznámení pro zachycení sběrnice je snadné a můžete to udělat jen několika akcemi myši.

Hostování webové aplikace pomocí Azure Static Web Apps

Pokud chcete vizualizovat geoprostorová data, která představují geofence a umístění sběrnice na mapě, můžete vytvořit statickou stránku HTML pomocí dobře známých knihoven jQuery a OpenLayers. Statická stránka bude muset načíst data z rozhraní REST API na straně serveru, které poskytne jiná funkce Azure Functions. Vzhledem k tomu, že klient i back-endové části jsou potřeba k tomu, aby stránka vizualizace fungovala, můžete využít azure Static Web Apps. Azure Static Web Apps usnadňuje vývoj a nasazení řešení, protože kombinuje funkce Azure Web Apps a Azure Functions a má integraci s integrovanými funkcemi GitHub Actions.

Automatizace nasazení pomocí GitHub Actions

Jak jste viděli, kompletní řešení se skládá z několika pohyblivých částí: back-endová služba pro vyžádání dat z informačního kanálu v reálném čase; databáze pro ukládání, zpracování a obsluhu dat; a řešení vizualizace front-endu, které se skládá ze statického souboru HTML a koncového bodu rozhraní REST API. Pomocí kanálu CI/CD prostřednictvím GitHub Actions automatizujete nasazení všech částí prostřednictvím GitHubu a editoru Visual Studio Code při každém potvrzení změn. Změny databáze, pokud existují, společně se změnami Azure Functions a Azure Static Web Apps, se nasadí plně automatizovaným a orchestrovaným způsobem.

Kontrola znalostí

1.

Která databázová služba by se v tomto scénáři měla použít k ukládání, zpracování a obsluhování dat sběrnice v reálném čase?

2.

Běžný otevřený standardní formát souborů, který použijeme pro příjem dat IoT z tranzitních vozidel v tomto scénáři:

3.

Která úroveň služby nebo funkce ve službě Azure SQL Database by podporovala scénář, kdy se vyžaduje databáze o 12 TB?