Tworzenie architektury rozwiązania przy użyciu platformy Azure

Ukończone

Utworzenie architektury aplikacji wymaga zrozumienia zakresu wymagań funkcjonalnych i niefunkcjonalnych, a następnie sparowania tych wymagań z narzędziami, technologiami i usługami, które mogą spełniać te wymagania.

W scenariuszu przechwytywania magistrali istnieje kilka głównych wymagań:

  • Witryna internetowa do monitorowania lokalizacji magistrali w czasie rzeczywistym
  • Powiadomienia, gdy magistrala jest zamknięta
  • Automatyczne wdrażanie i skalowanie

Przyjrzyjmy się bliżej temu scenariuszowi i sposobom tworzenia architektury rozwiązania przy użyciu różnych usług platformy Azure.

Pobieranie danych magistrali czasu rzeczywistego

Wiele miast zapewnia dane transportu publicznego za pośrednictwem ogólnej specyfikacji źródła danych tranzytowych (GTFS), która obsługuje również źródło danych w czasie rzeczywistym o nazwie GTFS w czasie rzeczywistym Reference v2 (GTFS-RT). Kanał informacyjny składa się z dokumentu JSON, który wygląda podobnie do następującego przykładu (z kanału informacyjnego King County Metro ):

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

Wiedząc, że taki kanał jest dostępny, musisz dalej dowiedzieć się, jak być powiadomiony, gdy autobus jest wystarczająco blisko ciebie, aby wiedzieć, aby rozpocząć chodzenie do dworca autobusowego, aby złapać autobus na czas. Aby to zrobić, możemy utworzyć geofencing kilka przystanków autobusowych przed naszą docelową stacją. Dzięki temu możesz otrzymywać powiadomienia, gdy autobus wchodzi do geofencingu lub wychodzi z niego. Jeśli możesz otrzymać powiadomienie w takim przypadku, nawet nie musisz sprawdzać na mapie, w której znajduje się magistrala. Po otrzymaniu powiadomienia będziesz wiedzieć, że nadszedł czas, aby odejść.

Tworzenie architektury rozwiązania za pomocą usług platformy Azure

Na podstawie scenariusza i idealnego rozwiązania poniżej przedstawiono możliwą architekturę:

Diagram of the Catch the bus microservices architecture.

Architektura korzysta z kilku różnych usług, aby zminimalizować ilość kodu potrzebnego do zapisania i wykorzystać najbardziej możliwe korzyści ze skalowalności i infrastruktury zapewniane przez platformę Azure.

Dobrze znany tekst (WKT) to język znaczników zwykłego tekstu do reprezentowania lokalizacji geometrii wektorów na mapie. WKT to standard Open Geospatial Consortium (OGC), który służy do reprezentowania danych przestrzennych w formacie tekstowym. Większość systemów zgodnych ze standardem OGC obsługuje dobrze znany tekst.

W tym miejscu zapoznasz się z omówieniem, które składniki rozwiązania są wybrane i dlaczego. Następnie w tym module skoncentrujesz się na usłudze bazy danych.

Przechowywanie i przetwarzanie danych za pomocą usługi Azure SQL Database

Usługa Azure SQL Database doskonale nadaje się do tego scenariusza. Wyjaśnijmy, dlaczego.

Usługa Azure SQL Database ma natywną obsługę kodu JSON, która pomaga zmniejszyć ilość kodu potrzebnego do manipulowania danymi wysyłanymi i odbieranymi z bazą danych. To również sprawia, że rozwiązanie jest bardziej elastyczne i łatwe do poprawy dzięki elastycznemu charakterowi JSON. Gwarantuje to również, że można wydajnie przekazywać tablice danych do usługi Azure SQL, optymalizować rundy i zmniejszyć opóźnienie.

Usługa Azure SQL zapewnia również pełną obsługę geoprzestrzenną, co jest świetną funkcją, ponieważ manipulowanie danymi geoprzestrzennym nie jest najłatwiejszym zadaniem. Dzięki w pełni funkcjonalnego aparatu geoprzestrzennego w bazie danych można uniknąć złożoności integracji z bibliotekami zewnętrznymi. Nie musisz również przenosić danych, aby ustalić, na przykład, czy magistrala znajduje się w zdefiniowanym geofencence. Ponieważ usługa Azure SQL jest zgodna ze standardami Open Geospatial Consortium, łatwo jest zintegrować dane przechowywane w usłudze Azure SQL z bibliotekami wizualizacji, takimi jak OpenLayers.

Wyżej wymienione funkcje są oparte na solidnych fundamentach modelu relacyjnego, ewoluowały przez lata poprawy, aby spełnić wymagania nowoczesnych aplikacji. Usługa Azure SQL Database jest skalowalna do 100 TB w warstwie Hiperskala, co oznacza, że można jej używać w przypadku aplikacji intensywnie korzystających z magazynu (na przykład dużych baz danych). Usługa Azure SQL Database jest również opłacalna w przypadku korzystania z warstwy bezserwerowej, która obsługuje skalowanie automatyczne i wstrzymywanie i wznawianie. Usługa Azure SQL obsługuje również indeksy magazynu kolumn na potrzeby szybkich zapytań analitycznych, modeli grafów w celu uproszczenia złożonego zarządzania relacjami obiektów oraz state-of-the-art optymalizator zapytań, który stale się poprawia i może obsługiwać nawet najbardziej wymagające obciążenie, jak ten wymagany przez dzisiejsze ogromne gry online dla wielu graczy.

Dzięki usłudze Azure SQL można również łatwo uzyskać dostęp do danych statycznych , takich jak informacje o trasie udostępniane przez standard GTFS, które mogą być przechowywane na koncie usługi Azure Blob Storage. Możemy użyć OPENROWSET funkcji w usłudze Azure SQL, aby zaimportować dane z pliku tekstowego bez konieczności korzystania z innej usługi. Pozwala to zminimalizować złożoność rozwiązania.

Z tych powodów usługa Azure SQL Database jest doskonałym rozwiązaniem dla aplikacji, takich jak aplikacja do przechwytywania magistrali, w której masz do czynienia z danymi JSON i danymi geoprzestrzennymi, ale także chcesz korzystać z funkcji dostępu do danych i procedur wbudowanych w aparat. Usługa Azure SQL Database bezserwerowa to świetna opcja, która spełnia wymagania dotyczące skalowania automatycznego, umożliwiając aplikacji obsługę zajętości w ciągu dnia, gdy więcej osób próbuje złapać autobus. Usługa Azure SQL Database obsługuje również technologie ciągłej integracji i ciągłego dostarczania/ciągłego wdrażania (CI/CD), takie jak Azure DevOps i GitHub Actions, które upraszczają automatyzację wdrażania.

Tworzenie usługi interfejsu API za pomocą usługi Azure Functions

Potrzebujesz interfejsu API, aby uzyskać dostęp do źródła danych GTFS i korzystać z niego, aby powiadomić użytkownika, jeśli magistrala wprowadziła geofencing i obsługiwać dane w aplikacji internetowej. Wybrano usługę Azure Functions jako wybraną usługę ze względu na prostotę i architekturę bezserwerową. Usługa Azure Functions to świetna usługa, ponieważ jej bezserwerowe autoskalowanie do potrzebnych elementów, pozostawiając prawie wszystkie aspekty infrastrukturalne do usługi Azure Functions. Usługa Azure Functions zapewnia obsługę różnych języków, dzięki czemu możesz wybrać preferowaną lub najbardziej odpowiednią dla zadania, w którym pracujesz, co jest zgodne z czystym podejściem mikrousług.

Wysyłanie powiadomień za pomocą usługi Azure Logic Apps

Aby uzyskać powiadomienie, że autobus znajduje się w obrębie geofencingu i musisz zacząć chodzić do dworca autobusowego, jedną z opcji na platformie Azure jest użycie usługi Azure Logic Apps. Usługa Azure Logic Apps ma dużą liczbę łączników, dzięki czemu można je zintegrować z innymi usługami. Na przykład możesz użyć usługi Azure Logic Apps, aby wysłać wiadomość SMS lub wysłać wiadomość e-mail z konta programu Outlook lub Gmail. Co jest doskonałe w usłudze Azure Logic Apps, jest to, że jest to platforma kodu o niskim kodzie/braku kodu, dlatego skonfigurowanie usługi powiadomień na potrzeby przechwytywania magistrali jest łatwe i można to zrobić za pomocą zaledwie kilku akcji myszy.

Hostowanie aplikacji internetowej za pomocą usługi Azure Static Web Apps

Aby wizualizować dane geoprzestrzenne, które reprezentują geofencingi i pozycje magistrali na mapie, można utworzyć statyczną stronę HTML przy użyciu dobrze znanych bibliotek jQuery i OpenLayers. Strona statyczna będzie musiała pobrać dane z interfejsu API REST po stronie serwera, który udostępni inna funkcja platformy Azure. Ponieważ zarówno klient, jak i części zaplecza są potrzebne do działania strony wizualizacji, możesz skorzystać z usługi Azure Static Web Apps. Usługa Azure Static Web Apps ułatwia opracowywanie i wdrażanie rozwiązania, ponieważ łączy funkcje usług Azure Web Apps i Azure Functions, a także integrację z wbudowanymi funkcjami GitHub Actions.

Automatyzowanie wdrażania za pomocą funkcji GitHub Actions

Jak już wiesz, kompletne rozwiązanie składa się z kilku ruchomych części: usługi zaplecza do ściągania danych z kanału informacyjnego w czasie rzeczywistym; baza danych do przechowywania, przetwarzania i obsługi danych; i rozwiązanie do wizualizacji frontonu, które składa się z statycznego pliku HTML i punktu końcowego interfejsu API REST. Korzystając z potoku ciągłej integracji/ciągłego wdrażania za pośrednictwem funkcji GitHub Actions, za każdym razem, gdy zatwierdzisz zmiany, zautomatyzujesz wdrażanie wszystkich elementów za pośrednictwem usług GitHub i Visual Studio Code. Zmiany bazy danych, jeśli istnieją, wraz ze zmianami usługi Azure Functions i Azure Static Web Apps, zostaną wdrożone w sposób w pełni zautomatyzowany i zorganizowany.

Test wiedzy

1.

W tym scenariuszu, która usługa bazy danych powinna być używana do przechowywania, przetwarzania i obsługi danych magistrali czasu rzeczywistego?

2.

Typowy standardowy format pliku używany do odbierania danych IoT z pojazdów tranzytowych w tym scenariuszu jest następujący:

3.

Która warstwa usługi lub funkcja w usłudze Azure SQL Database będzie obsługiwać scenariusz, w którym wymagana jest baza danych o pojemności 12 TB?