Azure Event Grid

Jednou z novinek nedávno uvedených do Microsoft Azure je služba Event Grid. Jejím úkolem je zajistit zprostředkování předávání krátkých zpráv (událostí) v prostředí internetu. Příkladem takové událostí, kterou máme zájem předat dále, může být například vytvoření nové objednávky v e-shopu.

Technicky Event Grid funguje jako zprostředkovatel komunikace v rámci principu Publisher-Subscriber. Výhodou tohoto řešení je především fakt, že publisher nemusí znát své subsribery, prostě zprávu pošle na Event Grid. K předávání zpráv ve tvaru strukturované datové věty JSON je využíván protokol HTTP. Stejně jako u ostatních služeb Microsoft Azure, je i Event Grid účtován v režimu pay-as-you-go podle počtu zpracovávaných operací. Služba zároveň nabízí přehledný výpis využívání až na úroveň jednotlivých událostí.

 

Konfigurace Event Gridu

Službu Event Grid lze využívat ve dvou základních scénářích. Prvním scénářem je distribuce událostí související se stavem a využíváním ostatních služeb v rámci vašeho předplatného na Microsoft Azure. Prostřednictvím služby Azure Logic App Designer tak lze jednoduše naklikat aplikaci, která například při přidání nového uživatele do předplatného vygeneruje e-mail s podrobnostmi a zašle jej do schránky vlastníka. Konkrétně lze ukázku vidět v tomto videu od času 5:15 https://azure.microsoft.com/en-us/blog/introducing-azure-event-grid-an-event-service-for-modern-applications/.

 

Druhým možným scénářem je zprostředkování komunikace aplikací mimo Microsoft Azure prostřednictvím ručně vytvořené instance služby Event Grid. Instanci lze vytvořit prostřednictvím skriptu nebo webového portálu Microsoft Azure. Základní jednotkou je zde v obou případech Event Grid Topic, který představuje logický uzel propojení konkrétních publisherů a subscriberů. Po vytvoření Event Grid Topic jsou vygenerovány klíčové atributy Topic Endpoint a Access Keys. Jedná se o URL adresu pro zasílání událostí ze strany publisherů a klíče pro autentizaci jednotlivých HTTP requestů.

 

V rámci záložky Overview lze pak definovat pro daný Topic jednotlivé subscribery. Nejběžnějším scénářem je tzv. Webhook, tedy jakési navěšení nezávislé webové aplikace (subscribera) do průběhu logického procesu. Součástí definice subscribera je URL endpointu pro přeposílání zpráv, konfigurace typu událostí, které se na tohoto subscribera budou přeposílat, a případné upřesnění filtru obsahu pomocí zadání prefix/sufix. Ve všech třech případech se jedná se o textově definovaný parametr. Aby bylo možné začít definovanému subscriberovi data, je nutné nejdříve ověřit, že má zájem o přijímaní našich událostí. Jedná se tak vlastně o prevenci DDOS útoků, ke kterým by byla jinak služba Event Grid snadno zneužitelná. Autentizace probíhá formou vložení krátkého kódu do aplikace, přičemž tento kód pouze přepošle zpět hodnotu z testovacího volání daného endpointu. Pokud hodnota dorazí zpět, Event Grid začne tohoto subscribera považovat za autentizovaného. Podrobně je tato autentizace předvedena v tomto videu https://www.youtube.com/watch?v=6IJKLsx_evw v čase od 10:45.

 

Event Grid vs. Event Hub

Přestože obě služby jsou zaměřeny primárně rozesílání zpráv o událostech, rozdíl mezi službami Event Grid a Event Hub spočívá především v jejich použití. Event Grid slouží k přeposílání jednotlivých událostí ve formě zpráv o velikosti v jednotkách kilobyte na definované subscribery a tudíž umožňuje těmto subsriberům na zaslané události reagovat prakticky v reálném čase. Event Hub je koncipován jako služba pro práci s většími objemy dat při nízké latenci. Na rozdíl od Event Gridu, jehož používání vychází levněji, je Event Grid využíván pro přijímání a ukládání konkrétních dat, a ne pouze pro publikování událostí. Event Hub slouží například pro účely telemetrie nebo logování a následnému přeposílání informací o těchto datech službám, které se zabývají jejich zpracováním.

Filip Štorek, MSWare s.r.o.