Lecture #10 - Serverless Computing and Asynchronous Messaging in Microsoft Azure
Přednáška proběhne na fakultě s možností se připojit přes Microsoft Teams.
Prezentace
Další studijní materiály
Pokud Vás téma zaujalo, tak doporučuji zhlédnout ještě následující přednášky:
Domácí úkol #2 - Varianta A
Nasazení webové aplikace do PaaS cloudových služeb
Cílem druhého domácího úkolu bude procvičení nasazení vlastní webové aplikace a jejího úložiště do PaaS cloudových služeb.
1. Nasazení úložiště v režimu PaaS (5 bodů)
Zvolte si pro nasazení webovou aplikaci, která ukládá data v relační databázi (Azure SQL Databse, Postgre SQL, MySQL, MariaDB) nebo NoSQL databázi (CosmosDB, MongoDB, Azure Table Storage). V prvním kroku nasaďte toto úložiště do Microsoft Azure ideálně v takovém režimu, abyste za něj platili co nejméně nebo bylo plně serverless (účtováno dle zpracovaných požadavků, nikoliv za čas, kdy máte rezervovaný výkon). Nebudete vytvářet žádný virtuální server a instalovat si do něj vlastní relační databázový engine, ale využijete některé z možností PaaS cloudových služeb, kdy je úložiště nasazeno a spravováno cloudovým poskytovatelem včetně vysoké dostupnosti a vy se pouze na založené úložiště připojíte z vaší aplikace.
2. Nasazení webové aplikace do PaaS prostředí (7,5 bodů)
Po úspěšném založení úložiště Vaší aplikace si vyzkoušíte nasadit samotnou webovou aplikaci do webového hostingu, který bude spravovaný cloudovým poskytovatelem v režimu PaaS, tedy nebudete do virtuálního serveru instalovat vlastní web server, ale využijete některou z nabízených služeb, jako je třeba Azure App Service nebo Azure Container Apps. Hosting nakonfigurujte s ohledem na minimální provozní náklady (Free hosting plán Azure App Service by měl být dostačující - nebudete řešit komunikaci přes privátní síť, to je asi jediné omezení; u Azure Container Apps zvolte malý počet jader a škálování až na 0).
Vyberte si webovou aplikaci, kterou budete nasazovat do cloudového prostředí. Může se jednat o jakýkoliv hobby projekt či projekt z jiných předmětů nebo klidně jednoduchou webovou aplikaci komunikující s databází, kterou legálně seženete jako sample na webu či GitHubu. Technologický stack může být cokoliv, co jste schopni provozovat v Azure (díky kontejnerům prakticky cokoliv).
Pokud byste narazili na nepřekovanatelou překážku v provozu Vaší aplikace ve službě Azure App Service, potom máte jedinou možnost a tou je kontejnerizace aplikace, což Vám rozšíří možnosti jazyků a technologií na provoz vaší webové aplikace. Pro případný hosting kontejneru s vaší aplikací zvolte některou z PaaS cloudových služeb na provoz kontejnerů (Azure Kubernetes Service bych volil jako poslední možnost).
Uveďte webovou aplikaci do provozuschopného stavu, aby byla dostupná z internetu na své DNS adrese poskytnuté cloudovým poskytovatelem.
3. Efektivní hosting statického obsahu webu (5 bodů)
Jak jste mohli vidět na přednášce, tak aplikační výkon PaaS webhostingu nepatří mezi nejlevnější a nechceme jím plýtvat na hosting statických souborů. Zařiďte proto, aby statický obsah (obrázky, CSS, JS) byl hostován v Azure Blob Storage, případně včetně Azure CDN. Pokud aplikace umožňuje nahrávat vlastní soubory, tak pro jejich uložení a distribuci využijte Azure Blob Storage. Pokud má být přístup k těmto souborům zabezpečen přihlášením aplikace, tak implementujte valet tactic (viz. přednáška), kdy budou soubory uloženy v privátním kontejneru Azure Blob Storage a budete pro přístup k nim generovat po ověření uživatele vaší aplikací pouze SAS tokeny. Do dokumentace přiložte detaily impementace, jak jste případně tuto taktiku implementovali.
4. Automatizace nasazení webové aplikace (5 bodů)
Implementujte CI/CD pipeline (Azure DevOps, Gihub Actions), která po úpravě aplikace projevede její automatické nasazení do hostingového prostředí.
Odevzdejte buď krátký komentovaný videozáznam obrazovky, kde ukážete definici CI/CD pipeline a demonstrujete její běh při commitu upravené verze aplikace nebo tuto CI/CD pipeline popište do PDF včetně screeshotů demonstrujících její funkčnost a to následně odevzdejte.
Bonus + Challenge: Jde to i bez tajemství (5 bodů)
Bezpečnost je nedílnou součástí cloudových aplikací a jeden z první bezpečnosti je ochrana tajemství uložených ve vaší aplikaci a nejlepší ochrana takových tajemství je nemít žádná. Proto máte jako bonus možnost si vyzkoušet zařídit, aby connection stringy vaší aplikace neobsahovaly žádná tajemství a pro ověření přístupu webové aplikace proti databázi i úložišti jste využili servisní identitu v Entra ID, pod kterou běží webová aplikace. Dobře ši ověřte, že zvolený technolgický stack toto plně podporuje, ať neztrácíte čas s úpravami aplikace.
Odevzdání
Vytvořte PDF dokument, kam ve formě vhodně zvolených screenshotů zdokumentujte stav Vašeho prostředí v Microsoft Azure, abyste prokázali splnění jednotlivých částí úkolu. Dokument prosím vhodně rozdělte na jednotlivé části, abych viděl, co jste splnili a co ne. Vložte i odkaz na běžící webovou aplikaci. Pokud by náhodou webová aplikace začínala přihlašovací obrazovkou, tak odevzdejte prosím přihlašovací údaje k testovacímu účtu.
Nasdílejte Resource Group s nasazenou aplikací vyučujícímu (účet 255653@muni.cz) přes Access Control (IAM) tak, aby vyučující mohl pouze číst zdroje v dané Resource Group.
PDF s řešením odevzdejte do připravené odevzdávárny. Protože je nedílnou součástí cvičení i správně nastavit bezplatný/serverless plán, tak budu úkoly opravovat průběžně, jak je budete odevzdávat. Pokud úkol neopravím do týdne, prosím připomeňte se mi na Teams. Deadline je ideálně zkouška 3. 6., abych Vám mohl k tomu datu uzavřít hodnocení.
Domácí úkol #2 - Varianta B
Datová analýza v cloudu
Cílem druhého domácího úkolu bude procvičit si možnosti analýzy dat v Microsoft Azure. Úkoly budou oproti první variantě mírně jednodušší, ale protože jsme těmto tématům nevěnovali dost prostoru na přednáškách, tak budou vyžadovat více samostudia.
1. Vytvoření úložiště pro analýzu dat a nahrání ukázkových dat (5 bodů)
Identifikujte vhodný data set, který budeme moci použít ke splnění následujících úkolů. Pracovat můžete s rýznými dostupnými open daty (řada českých měst a úřadů poskytuje velmi zajímavá open data v různých formátech). Pokud se budete chtít pustit i do posledního úkolu s aplikací strojového učení, tak vybírejte dataset i s ohledem na to, aby byl pro tyto účely vhodný.
Vybraný dataset/datasety uložte v originální podobě do úložiště vhodného pro následné zpracování dat v Microsoft Azure - Azure Data Lake Storage nebo Microsoft Fabric Lakehouse (https://learn.microsoft.com/en-us/fabric/data-engineering/lakehouse-overview). Pro tyto potřeby si založte dle dokumentace bezplatný Microsoft Fabric Trial (asi budete muset využít soukromý Microsoft Account, abyste nebyli vázáni na univerzitní tenant, kde nemusí být povolen).
2. Transformace, čištění a uložení dat do datového skladu (7,5 bodů)
Připravte si výpočetní prostředí, které Vám umožní analyzovat a transformovat uložená data. Přími v Microsoft Azure se bude jednat o Azure Synapse Analytics a jejich Notebooks, můžete využívat Azure Data Factory pro spouštění ETL/ELT procesů. Alternativně bych Vám doporučil si zjednodušit život a využít dostupného Microsoft Fabric Trial účtu, kdy máte jistotu, se jen tak nevyčerpáte dostupný kredit na Vaší Azure Subscription.
Seznamte se s načtenými daty v rámci vámi zvoleného datasetu (Data Exploration, zkontrolujte, jaké data jste načetli, ověřte případně rozsahy hodnot ve sloupcích apod. - bylo ukázáno na přednášce o Microsoft Fabric).
Protože bude pravděpodobně načtený dataset v denormalizované podobě, tak je Vašim úkolem vytvořit relační datový sklad, kam uložíte daný dataset vhodně strukturovaný do podoby tabulek dimenzí a tabulek faktů.
Datový sklad můžete založit jako Azure SQL Database a tam definovat jednotlivé tabulky, v případně Microsoft Fabricu doporučuji tabulky datového skladu založit v rámci Microsoft Fabric Datawarehouse (https://learn.microsoft.com/en-us/fabric/data-warehouse/data-warehousing).
Implementujte Pipeline, která načte zdrojová data, transformuje je a zapíše je vhodně do tabulek datového skladu. Pro orchestraci použijte buď Azure Data Factory nebo Data Factory v Microsoft Fabric (https://learn.microsoft.com/en-us/fabric/data-factory/data-factory-overview). Samotná transformace může být řešena s pomocí Dataflows, Notebooks v Pythonu nebo SQL kódu (Fabric nabízí SQL Endpointy nad Lakehouse).
3. Prezentace dat (7,5 bodů)
Implementujte vhodné užitečné vizualizace nad ukázkovým daty. Pro implementaci vizualizací můžete použít Microsoft Power BI, které je přímo dostupné v Microsoft Fabric a nebo Notebooks a pro vizualizace dat využít knihovny v Pythonu.
4. Trénink a použití Machine Learning modelu (7,5 bodů)
Navrhněte vhodný ML model, který vytrénujete nad ukázkovými daty a následně demonstrujete jeho schopnosti. Vzhledem ke svému studijnímu oboru byste měli mít násobně větší znalosti ML, než vyučující, tak experimentujte s daty a vytvořte něco zajímavého. Pro trénink a běh modelu můžete využít přímo prostředí Notebooks nebo také Azure Machine Learning a případně Azure Machine Learning Studio (https://ml.azure.com/). Microsoft Fabric má toto prostředí integrováno do sebe (https://learn.microsoft.com/en-us/fabric/data-science/data-science-overview).
Vytvořte PDF dokument, kam ve formě vhodně zvolených screenshotů zdokumentujte stav Vašeho prostředí v Microsoft Azure/Microsoft Fabric, abyste prokázali splnění jednotlivých částí úkolu. Dokument prosím vhodně rozdělte na jednotlivé části, abych viděl, co jste splnili a co ne.
PDF s řešením odevzdejte do připravené odevzdávárny. Úkoly budu opravovat průběžně, jak je budete odevzdávat. Pokud úkol neopravím do týdne, prosím připomeňte se mi na Teams. Deadline je ideálně zkouška 3. 6., abych Vám mohl k tomu datu uzavřít hodnocení.