Migrace aplikan vrstvy na Windows Azure Michael Juek

  • Slides: 60
Download presentation
Migrace aplikační vrstvy na Windows Azure Michael Juřek Software Architect Microsoft s. r. o.

Migrace aplikační vrstvy na Windows Azure Michael Juřek Software Architect Microsoft s. r. o.

Doporučený postup Krok 1: Pokuste se zmigrovat databázovou vrstvu jako první Krok 2: Zkuste

Doporučený postup Krok 1: Pokuste se zmigrovat databázovou vrstvu jako první Krok 2: Zkuste provozovat lokální aplikační vrstvu oproti databázi SQL Azure V ideálním případě pouze jiný connect string V cloudu musíte povolit firewall pro vaši IP adresu Lokálně musíte mít zajištěný odchozí TCP port 1433 Dočasně očekávejte pomalejší odezvu (latence ~10 ky ms) Krok 3: Pokuste se o migraci aplikační vrstvy (náplň dnešní lekce)

Agenda Základní principy Detaily služby Windows Azure Tipy pro migraci Závěrem

Agenda Základní principy Detaily služby Windows Azure Tipy pro migraci Závěrem

Aplikační vrstva pohledem vývojáře Azure nabízí hostovaný operační systém Windows Server 2008 SP 2

Aplikační vrstva pohledem vývojáře Azure nabízí hostovaný operační systém Windows Server 2008 SP 2 a 2008 R 2 SP 1 Prakticky cokoliv, co běží na Windows Serveru lze spustit na Windows Azure: ASP. NET, ASP, PHP, Java, Ruby, …, nativní kód Libovolný web server běžící na Windows (IIS předinstalován ve web roli) Něco mezi Iaa. S a Paa. S

Zlatá střední cesta? Čisté Iaa. S (Amazon) Windows Azure Čisté Paa. S (Google) Flexibilita

Zlatá střední cesta? Čisté Iaa. S (Amazon) Windows Azure Čisté Paa. S (Google) Flexibilita Vysoká Střední Nízká Náklady na správu OS Ano Ne Ne Izolace aplikací Vysoká Nízká Symetrie mezi cloud a onpremise Ano Ne Jednoduchý upgrade verze Ne Ano

Rozdělení kompetencí My pro vás připravíme operační systém Vy dodáte balíček se „za. ZIPovanou“

Rozdělení kompetencí My pro vás připravíme operační systém Vy dodáte balíček se „za. ZIPovanou“ aplikací My balíček nasadíme do OS a spustíme aplikaci My aktualizujeme a spravujeme virtuální počítač Vaše aplikace nemá administrativní práva k OS Pokud chcete, tak může mít, ale není to z hlediska bezpečnosti doporučená praxe Vy můžete OS modifikovat, ale na vlastní riziko My můžeme kdykoliv vytvořit nový virtuál

Nasazení služby Vaše služba Služba Model D N S L B Web Portal (API)

Nasazení služby Vaše služba Služba Model D N S L B Web Portal (API) config DNS Fabric Controller L B

Škálování služeb Vaše služba Služba D N S Služba L B Služba Web Portal

Škálování služeb Vaše služba Služba D N S Služba L B Služba Web Portal (API) Model Fabric Controller L B

Monitorování & zotavení služeb Vaše služba D N S Služba L B Web Portal

Monitorování & zotavení služeb Vaše služba D N S Služba L B Web Portal (API) Model Služba ! Fabric Controller Služba L B

Nástroje pro vývoj Windows Azure SDK Knihovny, příklady WA Storage Emulator, WA Compute Emulator

Nástroje pro vývoj Windows Azure SDK Knihovny, příklady WA Storage Emulator, WA Compute Emulator Cmd tooly: CSPack, CSRun, DSInit, CSUpload* Windows Azure Tools for Visual Studio VS 2010, Visual Web Developer 2010 Funkce Šablony projektů Konfigurace aplikací Storage & Service explorer Ladění aplikací Nasazení aplikace Konfigurace RDP

Cena za instanci X-Small Medium Large X-Large 1 x 1 Ghz 1 x 1.

Cena za instanci X-Small Medium Large X-Large 1 x 1 Ghz 1 x 1. 6 Ghz 2 x 1. 6 Ghz 4 x 1. 6 Ghz 8 x 1. 6 Ghz 0. 765 GB memory 1. 75 GB memory 3. 5 GB memory 7. 0 GB memory 14 GB memory 20 GB storage (instance storage) 250 GB storage (instance storage) 500 GB storage (instance storage) 1000 GB storage (instance storage) 2000 GB (instance storage) $0. 24 $0. 48 $0. 96 $0. 02 $0. 12 Měří se doba, po kterou je instance nasazena (nemusí běžet !!!) Bez ohledu na CPU, RAM nebo IO zátěž Počítají se přenesená data ven z datového centra (HTTP/S, TCP) – $0. 12 za 1 GB

Agenda Základní principy Detaily služby Windows Azure Tipy pro migraci Závěrem

Agenda Základní principy Detaily služby Windows Azure Tipy pro migraci Závěrem

Architektura „velké“ aplikace Cíl: MASIVNÍ ŠKÁLOVATELNOST Škáluje „out” – nikoli „up“ – replikováním worker

Architektura „velké“ aplikace Cíl: MASIVNÍ ŠKÁLOVATELNOST Škáluje „out” – nikoli „up“ – replikováním worker instancí podle potřeby. Instance dvou typů: Web Role & Worker Role Windows Azure aplikace se mohou skládat z web role instancí, worker role instancí nebo kombinací obou. Umožňuje škálovat uživatelské a výpočetní aktivity nezávisle. Každá instance běží ve svém vlastním VM, replikovaném podle potřeby.

Výběr správného typu role

Výběr správného typu role

Web role a Worker role Web aplikace IIS 7. 5 Web Sites ASP. NET

Web role a Worker role Web aplikace IIS 7. 5 Web Sites ASP. NET nebo Fast. CGI Web. Form a MVC Web Services (WCF) Nestavové servery Definuje jeden endpoint na protokolu HTTP/HTTPS Podobné Windows službě Zpracování úloh na pozadí Spuštění libovolného web serveru (Java) Výpočty Typicky komunikují přes Azure storage queue Mohou otevřít 5 portů pro HTTP/S nebo TCP

VM role VM Role nabízí vyšší úroveň flexibility a zjednodušuje běh existujících aplikací ve

VM role VM Role nabízí vyšší úroveň flexibility a zjednodušuje běh existujících aplikací ve Windows Azure… … výměnou za výrazně pracnější nasazení a správu Nasazení nové verze, správa oprav, … VM role je bezstavová, stav virtuálu není zálohován Obnova do stavu s uploadovaným VHD souborem Stále v Beta verzi Dostupnost finální verze neohlášena Na jaře 2012 se očekávají větší změny funkce

Téměř vše lze provést též s Web/Worker rolemi Nástroje: Úlohy spouštěné při startu Běh

Téměř vše lze provést též s Web/Worker rolemi Nástroje: Úlohy spouštěné při startu Běh úloh nebo celé role s právy administrátora Připojení na vzdálenou plochu Namátkou lze: Aktivovat ASP, přidat nebo povolit libovolný modul IIS Spustili Ruby, Python, PHP, … Spouštět nativní kód Nainstalovat a využívat Expression 4 Encoder, Tomcat, My. SQL, … Nastavovat cokoliv v operačním systému Instalovat a registrovat COM/COM+ komponenty I ve web roli můžete využít Role. Entry. Point. Run() a můžete pustit kód na pozadí

Proč vůbec VM roli použít? Reálně – použijete ji velmi zřídka Existují pouze 3

Proč vůbec VM roli použít? Reálně – použijete ji velmi zřídka Existují pouze 3 dobré důvody: 1. Nutnost instalace aplikací, která trvá velmi dlouho 2. Nutnost instalace aplikací, která je náchylná k chybám 3. Nutnost instalace aplikací, která vyžaduje interakci uživatele Pokud ani jeden případ nenastal, použijte vždy web nebo worker roli

Verze operačního systému Operační systém existuje ve dvou rodinách (OS Family) – vybraná vždy

Verze operačního systému Operační systém existuje ve dvou rodinách (OS Family) – vybraná vždy pevně Windows Server 2008 SP 2, 64 bit Windows Server 2008 R 2 SP 1, 64 bit Každá edice má několik verzí (OS Version) Opravy, . NET Framework, . . . Vybrána manuálně nebo automatický update na nejnovější (*) Doporučení: • Windows Server 2008 R 2 je lépe optimalizován pro virtualizaci (os. Family=“ 2” v konfiguraci) • Používejte automatickou aktualizace verzí

Konfigurace role Velikost VM – impl. S = 1 CPU (1. 7 GHz), 1.

Konfigurace role Velikost VM – impl. S = 1 CPU (1. 7 GHz), 1. 7 GB, 250 GB XS = 1 (1 GHz)/0. 768/20, M = 2/3. 5/500, L = 4/7/1000, XL = 8/14/2000 Connection strings Speciální nastavení pro Storage Emulator Počet instancí služeb Rodina a verze OS Implicitně – Windows Server 2008, poslední verze, automatický update Lokální souborový systém Definuje alokovanou kapacitu z lokálního FS Endpoints 5 na jednu roli = Web role (HTTP/S), Worker role (HTTP/S, TCP) Interní / Externí

Síť, porty, firewall, … Role má neomezenou komunikaci směrem ven Dovnitř jsou na firewallu

Síť, porty, firewall, … Role má neomezenou komunikaci směrem ven Dovnitř jsou na firewallu OS povoleny dovolena pouze TCP a HTTP(S) komunikace na porty vyznačené jako tzv. endpoints Interní – dostupné pouze z počítačů dané služby Externí – přístupné též přes vnější firewall na externí load-balancované IP adrese Spuštění vlastní služby: Pokud je hostovaná v IIS, není třeba řešit Pokud ji hostujete sami, nezbytné informace získáte pomocí Role. Environment. Current. Role. Instance. Endpoints

Kdo smí spravovat prostředí Pomocí Live. ID účtu: Vlastník subskripce Uživatelé určení vlastníkem subskripce

Kdo smí spravovat prostředí Pomocí Live. ID účtu: Vlastník subskripce Uživatelé určení vlastníkem subskripce Pomocí certifikátu: Prostřednictvím HTTP/REST API pro správu Kód nebo člověk mající přístup k certifikátu (včetně privátního klíče), který vlastník subskripce zaregistroval pro správu účtu Pro účely vývoje plně automatický proces vygenerování a instalace certifikátů (součást nástrojů pro VS 2010) Pro produkční prostředí je nutné správě certifikátů věnovat adekvátní pozornost

Vytvoření aplikace Tvořena dvěma soubory: Zabalené soubory aplikace (. cspkg) Konfigurace (. cscfg) Vytvoření

Vytvoření aplikace Tvořena dvěma soubory: Zabalené soubory aplikace (. cspkg) Konfigurace (. cscfg) Vytvoření ve VS, Eclipse, z příkazové řádky Volitelně lze uložit do Azure Storage Dočasně pro účely nasazení nebo trvale pro archivaci nasazených verzí Pomocí MMC, Powershellu, nástrojů třetích stran

Nasazení aplikace Prostřednictvím portálu Soubory na lokálním disku nebo předem uložené v Azure Storage

Nasazení aplikace Prostřednictvím portálu Soubory na lokálním disku nebo předem uložené v Azure Storage Prostřednictvím nástrojů Nutné vlastnit oprávněný certifikát Balíček musí být v Azure Storage (nástroje zpravidla dělají samy) Vhodné využít storage jako archiv nasazených verzí Visual Studio, Eclipse, MMC, nástroje třetích stran Powershell cmdlety pro replikovatelný skript

Rychlé úpravy aplikace Několikaminutové nasazení lze obejít: Vhodné pouze pro vývojové prostředí Vhodné pouze

Rychlé úpravy aplikace Několikaminutové nasazení lze obejít: Vhodné pouze pro vývojové prostředí Vhodné pouze pokud je v každé roli jedna instance Veškeré provedené změny nejsou trvalé a při vytváření nového virtuálu jsou přepsány, proto by vždy mělo následovat řádné nasazení Možné způsoby: Remote Desktop – připojení, editace v Notepadu S novou verzí VS nástrojů velmi snadné na nastavení Využití Web Deploy pro webovou roli http: //blogs. msdn. com/b/vyvojari/archive/2011/04/19/nasazen-237 nov-233 -verze-do-windows-azure-pod-15 -sekund. aspx

Upgrade aplikace Dva způsoby: VIP Swap a In-Place Upgrade VIP Swap: Používá Staging a

Upgrade aplikace Dva způsoby: VIP Swap a In-Place Upgrade VIP Swap: Používá Staging a Production prostředí Umožňuje rychlé přepnutí prostředí Produkční: v 1 Staging: v 2, po přepnutí Produkční: v 2 Staging: v 1. In-Place Upgrade Provádí vystavení upgradu do živé služby Celá služba nebo jedna role Manuálně nebo automaticky napříč doménami

Agenda Základní principy Detaily služby Windows Azure Tipy pro migraci Závěrem

Agenda Základní principy Detaily služby Windows Azure Tipy pro migraci Závěrem

Aplikace pro cloud i on-premises Nevytvářejte dvě báze kódu, postačí jediná Rozdílné části lze

Aplikace pro cloud i on-premises Nevytvářejte dvě báze kódu, postačí jediná Rozdílné části lze řešit dvěma způsoby: Podmíněná kompilace: #if Cloud Kod-pro-cloud #else Kod-pro-on-premises #endif Detekce za běhu aplikace: Nutno referencovat knihovny Azure SDK Role. Environment. Is. Available Role. Environment. Is. Emulated

Rozdíly cloud vs. emulátor Emulátor umožňuje připojit debugger Emulátor umí běžet ve 32 i

Rozdíly cloud vs. emulátor Emulátor umožňuje připojit debugger Emulátor umí běžet ve 32 i 64 bitech, cloud je 64 -bit Aplikace běžící v emulátoru mají přístup k lokálnímu GAC, Registry, konfiguraci OS a dalším komponentám lokálního systému stejné jako přihlášený uživatel, v cloudu závisí na nastavení účtu pro běh aplikace Výstup z logu v emulátoru jde do okna konzole i do logu Azure Diagnostics V emulátoru nelze za běhu měnit počet instancí rolí Emulátor nesimuluje chování load balanceru

Programový model Role Fabric hledá třídu odvozenou z Role. Entry. Point Web role volitelně

Programový model Role Fabric hledá třídu odvozenou z Role. Entry. Point Web role volitelně Worker role povinně Metoda On. Start() Volána po spuštění, umožňuje provést inicializační úkony Reportuje Busy status k load balanceru dokud nevrátíme true Metoda On. Stop() Volána, když se role ukončuje - úklid Metoda Run() – u worker i web role Je zde hlavní logika – zde lze dělat cokoli, typicky nekonečný cyklus u worker role, u web role je možné použít např. pro spuštění periodických úloh

Instalace a nastavení prerekvizit V metodě On. Start() role: Běží při každém restartu aplikace

Instalace a nastavení prerekvizit V metodě On. Start() role: Běží při každém restartu aplikace Definice prostřednictvím kódu Může běžet jako administrátor (execution. Context="elevated" pro <Runtime>) Použití tzv. startup task Běží při každém restartu OS Definice v konfiguraci role Může běžet jako administrátor (execution. Context="elevated" pro <Task>) http: //blog. smarx. com/posts/introduction-to-windows-azure-startup-tasks Pozor na správný task. Type

Co kód smí a nesmí dělat? V závislosti na uživatelském účtu: Standardně práva běžného

Co kód smí a nesmí dělat? V závislosti na uživatelském účtu: Standardně práva běžného uživatele Možno zvýšit na úroveň administrátora (execution. Context="elevated" pro <Runtime>) Nedoporučuje se, neboť v případě bezpečnostní chyby v aplikaci dává útočníkovi větší možnosti eskalace útoku V závislosti na nastavené úrovni důvěry Standardně plná práva k provádění veškerého kódu (souborový systém, registry, nativní kód, …) Omezení operací. NET FX, žádný nativní kód (enable. Native. Code. Execution ="false" pro <Role>)

Diagnostika v Azure Standardní mechanismy Windows Performance counters, Event log, IIS logs, failed request

Diagnostika v Azure Standardní mechanismy Windows Performance counters, Event log, IIS logs, failed request logs, třída Trace, crash dump, … ALE: Virtuální počítač může být kdykoliv nahrazen, což vede ke ztrátě těchto informací Virtuální počítače jsou skryty za firewallem Řešení: Uvnitř role běží diagnostický monitor, který informace ukládá do Azure Storage (BLOBy a tabulky) Volitelně – management pack pro SC Operations Manager pro přenos z Azure Storage do datového skladu SCOM http: //www. microsoft. com/download/en/details. aspx? id=11324

Diagnostický monitor Sběr dat specifikovaných v nastavení Ukládání do lokálního souborového systému Přenos do

Diagnostický monitor Sběr dat specifikovaných v nastavení Ukládání do lokálního souborového systému Přenos do Azure Storage na vyžádání anebo s definovanou časovou periodou

Nastavení diagnostického monitoru Tři součásti: 1. Jaká data sbírat 2. S jakou frekvencí je

Nastavení diagnostického monitoru Tři součásti: 1. Jaká data sbírat 2. S jakou frekvencí je sbírat (např. performance countery) 3. Jak často je přenášet do Azure Storage Metody nastavení: Programově – v metodě On. Start() role Deklarativní spuštění pomocí konfiguračního souboru a poté vzdálené nastavení konfigurace na vyžádání přes HTTP/REST API pomocí třídy Role. Instance. Diagnostic. Manager

ASP. NET a Session Jedna instance role: Použijte standardní uložení v paměti instance (In.

ASP. NET a Session Jedna instance role: Použijte standardní uložení v paměti instance (In. Proc) Více instancí role ve farmě: Nelze použít In. Proc režim (data by se ve farmě nesdílela) Není k dispozici vhodný server pro režim State. Server SQL Azure nepodporuje standardní režim SQLServer Lze použít Custom režim a ASP. NET Universal Providers Lze využít Custom režim a Windows Azure Cache

Konfigurace Standardní konfigurace v. NET frameworku Soubory web. config/app. config plně podporovány Nepoužívejte je

Konfigurace Standardní konfigurace v. NET frameworku Soubory web. config/app. config plně podporovány Nepoužívejte je pro hodnoty, které je nutné měnit za běhu – změny vyžadují nasazení nové verze Konfigurace služeb Serviceconfiguration. csdef – model služby Service. Configuration. cscfg – instanční data

Změna konfigurace služby za běhu Pomocí XML souboru služby Podporován pouze jednoduchý typ nastavení

Změna konfigurace služby za běhu Pomocí XML souboru služby Podporován pouze jednoduchý typ nastavení jméno/hodnota v sekci <Configuration. Settings> Přístup pomocí Role. Environment. Get. Configuration. Setting. Value() Aplikace může na změny reagovat: Předplacení události Role. Environment. Changing a/nebo Role. Environment. Changed Může rozhodnout, zda požaduje restart své role anebo zpracovat konfigurační změnu za běhu (bez restartu role)

Používání souborového systému Aplikace jej velmi často používají, ať již otevřeně anebo skrytě (např.

Používání souborového systému Aplikace jej velmi často používají, ať již otevřeně anebo skrytě (např. komponenty třetích stran) Častý zdroj nečekaných obtíží Řešení nebývá složité Téma bude podrobně probráno ve třetí lekci

Proč se role v cloudu restartuje? Chybějící referencované knihovny: Typicky pro knihovny v GAC,

Proč se role v cloudu restartuje? Chybějící referencované knihovny: Typicky pro knihovny v GAC, které nejsou součástí. NET frameworku (např. ASP. NET MVC) Dnes již dobře kontrolováno nástroji ve VS Postačí nastavit referenci na Copy Local = true Knihovny zkompilované pouze pro 32 -bit platformu Nezpracovaná výjimka ve třídě Role. Entry. Point Role se vrátí z metody Role. Entry. Point. Run() Operace ve třídě Role. Entry. Point vyžadují administrativní oprávnění, která nejsou povolena Špatný Diagnostics. Connection. String Např. nastavení na lokální Storage Emulator

Agenda Základní principy Detaily služby Windows Azure Tipy pro migraci Závěrem

Agenda Základní principy Detaily služby Windows Azure Tipy pro migraci Závěrem

Další informace Windows Azure http: //www. windowsazure. com Azure Platform Training Course http: //msdn.

Další informace Windows Azure http: //www. windowsazure. com Azure Platform Training Course http: //msdn. microsoft. com/en-us/gg 271268 Vybraná praktická cvičení v češtině http: //msdn. microsoft. com/cs-cz/dd 727769. aspx Vyzkoušejte si Azure ZDARMA a BEZ RIZIKA http: //blogs. msdn. com/b/vyvojari/archive/2011/12/16/ ucet-na-windows-azure-nyni-zcela-bez-finanancnihorizika-a-zdarma. aspx http: //blogs. msdn. com/b/vyvojari/archive/2011/12/22/ aktivace-azure-vyhod-v-msdn-predplatnem. aspx

Úplným závěrem Windows Azure je běžný operační systém Windows Server 2008 (R 2) Prakticky

Úplným závěrem Windows Azure je běžný operační systém Windows Server 2008 (R 2) Prakticky cokoliv lze převést Nutno respektovat specifika spravovaného operačního systému Nastavení práv k souborovému systému, zabezpečení, diagnostika, monitorování, … Migrace je zpravidla relativně snadná s předvídatelnými obtížemi Velká výhoda – testování a zkoušení je snadné a levné Platba za hodiny virtuálu, zahrnuto v MSDN subskripcích

© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows Vista and other product names

© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U. S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.