Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
Kamil Dworak
Kamil Dworak
Agenda
o projekcie
koncepcja WebJobs
kolejny krok Azure Functions
podsumowanie
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
Kamil Dworak
O projekcie
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
System Samodzielnego Wykrywania Awarii na Sieci Wodociągowej.
Kamil Dworak
Integracja z mapami
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
Kamil Dworak
Monitorowanie parametrów
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
Kamil Dworak
Samodzielne wykrywanie awarii
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
Kamil Dworak
Dane historyczne
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
Kamil Dworak
Pomiar wody
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
Strefahydrauliczna
Przetwarzanie w chmurze
Kamil Dworak
Parametry sieci wodociągowejParametr W liczbachDługość sieci wodociągowej 2 037 kmLiczba przyłączy 41 000Liczba zasuw 65 000Średnice rurociągów 80 - 1200 DNLiczba hydrantów 15 500Liczba wodomierzy głównych 47 000
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
Kamil Dworak
Architektura
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
Kamil Dworak
WebJobs praca w tle
wspólna maszyna wirtualna
niezależne od użytkownika
przetwarzanie równoległe
start na żądanie
harmonogram zadań
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
Kamil Dworak
Kalkulacje danych pomiarowych
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
Kamil Dworak
Kudu
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
Kamil Dworak
WebJob kalkulacjivar queueStorage = require('queueStorage');var flowmeterPeriodicParametersCalculator =
require('./flowmeterPeriodicParametersCalculator');
const QUEUE_NAME = process.env.APP_NAME + 'flowmeter-measure-queue';
const CHECK_QUEUE_TIMEOUT = 5000;
// ...
scheduleNewMessageHandling();
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
Funkcja obsługująca nową wiadomość
Moduły kolejki oraz kalkulacji parametrów
Kamil Dworak
WebJob kalkulacji
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
function scheduleNewMessageHandling() { setTimeout(() => { queueStorage.getMessages(QUEUE_NAME, {numOfMessages: 1, visibilityTimeout: 600}) .map(message => { // ... }).catch(err => console.error('Error during calculations: ' + err)) .then(scheduleNewMessageHandling); }, CHECK_QUEUE_TIMEOUT);}// ...
Obsługa błędu
Pobranie wiadomości z kolejki
Kamil Dworak
WebJob kalkulacji// ....map(message => { var parsedMessage = JSON.parse(message.messagetext); if (parsedMessage.periodic) { return flowmeterPeriodicParametersCalculator .calculatePeriodicParametersForFlowmeter(parsedMessage) .then(() => queueStorage .removeMessage(QUEUE_NAME, message)); }});
// ...
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
Przetwarzanie i kalkulacja parametrów
Kamil Dworak
WebJobs
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
dostępne w ramach
App Service Plan
działają bez interwencji
użytkownika
ściśle powiązane
z aplikacją
manualne skalowanie
problemy z logowaniem
maszyna wirtualna zawsze
musi być dostępna
możliwe obciążenie aplikacji
Kamil Dworak
Azure Functions
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
następca WebJobs
oparte na zdarzeniach
brak serwera
automatyczne skalowanie
Kamil Dworak
Architektura bezserwerowa
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
podział zasobów
odizolowanie od aplikacji
równoległość
Kamil Dworak
Narzędzia
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
Kamil Dworak
Azure Functions
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure
automatyczne skalowanie
model bezserwerowy
nowe narzędzia
szablony funkcji
dodatkowe koszty
dodatkowa implementacja
wynikająca z odizolowania
od aplikacji
Kamil Dworak
Podsumowanie
napięty harmonogram zmusza nas do WebJobów
model bezserwerowy wymusza duplikację kodu
Azure Function pociąga za sobą dodatkowe opłaty
w przyszłości Azure Functions zostaną wdrożone
Przetwarzanie danych pomiarowych w tle z wykorzystaniem Azure