Filip Herudek

Vývojářský blog Filipa Herudka



Podle kategorie

Azure functions – “serverless architecture”

Filip Herudek       19. 3. 2017       Azure       1719 zobrazení

Microsoft neustále rozšiřuje nabídku služeb své cloudové platformy Azure. Jednou z mladších jsou Functions. Pokud se podíváte na produktovou stránku Functions, uvidíte v jednom nadpisu “Zpracování událostí s architekturou kódu bez serveru”. To neznamená, že vaše funkce neběží na serverech, samozřejmě běží v datacentrech Microsoftu. Pod pojmem “"architekturou kódu bez serveru” se skrývá to, že Functions jsou relativně malé bloky kódu, které jsou izolované.

Functions můžou být spouštěné periodicky na základě Timer Triggeru (zadávaný v cron formátu), události v jiné službě na Azure (Event Hub, Queue Storage, Service Bus), Http requestu nebo manuálně.

Functions podporují celou řadu jazyků: JavaScript, C#, F#, Python, PHP, Bash, Batch a PowerShell

K čemu je to dobré?

Jeden z modelových příkladů je vytvoření obrázků v různých velikostech pro různé náhledy na základě uložení originálního obrázku do Blob storage. Velmi běžné je provádění různých operací na základě časovače. V jednom z našich projektů voláme každých 5 minut Machine Learning API, které nám vrací hodnoty a ty následně nastavujeme do IoT zařízení. Dalším příkladem z praxe je automatické zamykání časových výkazů. Každý den večer se spouští funkce, která volá API našeho docházkového systému a zamyká záznamy z předchozího dne.

Jak na to?

Na adrese https://functions.azure.com stačí kliknout na tlačítko “Vyzkoušejte zdarma” a spustí se průvodce, který vám umožní vytvořit funkci rychle pomocí některé z předpřipravených funkcí.

image

Po výběru scénáře, jazyka a vytvoření funkce budete vyzvání k přihlášení se k účtu. Pro výchozí nastavení se vytvoří následující funkce otevřená v online editoru:

image

V záložce develop je k dispozici online editor, v jeho horní části se nachází tlačítka “Save” a “Save and run”. V pravém vyjížděcím menu je k dispozici správa souborů, kdy můžete přidat, smazat nebo nahrát vlastní soubor. Pro C# mají soubory příponu .csx, výchozí se jmenuje run.csx. Druhým souborem je function.json, kde jsou uloženy informace o nastavení. Další položka pravého menu je Test, která umožňuje testovat aktuální kód v případě, že přijímáte Http requesty. Poslední položka je správa klíčů.

using System;
public static void Run(TimerInfo myTimer, TraceWriter log)
{
    log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
}

Vstupním bodem je statická metoda Run, která má dva parametry. TimerInfo, jak je z názvu patrné, obsahuje informace o čase, kdy byla funkce spuštěná. TraceWriter slouží pro logování, které je vidět v záložce monitor.

Pod záložkou integrate hlavního menu se skrývají možnosti nastavení triggerů, inputu a outputu funkce. V záložce manage je možné zapnout/vypnout funkci, smazat a nebo opět spravovat klíče.

Monitor okno může vypadat například následovně:

image

Nyní můžete psát funkce dle své potřeby, spouštět a monitorovat. V případě, že chcete použít nějaký nuget package, k tomu slouží direktiva r#, pro načtení dalších .csx souborů direktiva #load

#r "Newtonsoft.Json"
#load "Common.csx" 
using System;
using System.Text;
using Newtonsoft.Json;

Závěr

Azure Functions jsou ideálním nástrojem pro drobnější operace, které chcete provádět na základě vnějších podmětů nebo časového spínače. Nastínili jsme si možné scénáře, ukázali jak vytvořit základní funkci a popsali webového prostředí pro functions. Příště si ukážeme scénáře, kdy funkce reaguje na změnu v blob storage nebo jak volat funkci pomocí Http requestu.

 

hodnocení článku

0       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

Příspěvky zaslané pod tento článek se neobjeví hned, ale až po schválení administrátorem.

                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

Příspěvky zaslané pod tento článek se neobjeví hned, ale až po schválení administrátorem.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback