Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

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

Podobné prezentace


Prezentace na téma: "Migrace aplikační vrstvy na Windows Azure Michael Juřek Software Architect Microsoft s.r.o."— Transkript prezentace:

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

2 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 ~10ky ms) Krok 3: Pokuste se o migraci aplikační vrstvy (náplň dnešní lekce)

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

4 Aplikační vrstva pohledem vývojáře Azure nabízí hostovaný operační systém Windows Server 2008 SP2 a 2008 R2 SP1 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 IaaS a PaaS

5 Zlatá střední cesta? Čisté IaaS (Amazon) Windows Azure Čisté PaaS (Google) FlexibilitaVysokáStředníNízká Náklady na správu OS AnoNe Izolace aplikacíVysoká Nízká Symetrie mezi cloud a on- premise Ano Ne Jednoduchý upgrade verze NeAno

6 Rozdělení kompetencí My pro vás připravíme operační systém Vy dodáte balíček se „zaZIPovanou“ 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

7 LBLBLBLB LBLBLBLB LBLBLBLB LBLBLBLB Nasazení služby Vaše služba FabricControllerFabricController Web Portal (API) (API) SlužbaSlužbaModelModelSlužbaSlužbaSlužbaSlužba DNSDNS configconfig

8 LBLBLBLB LBLBLBLB LBLBLBLB LBLBLBLB Škálování služeb Vaše služba FabricControllerFabricController Web Portal (API) (API) SlužbaSlužba SlužbaSlužba SlužbaSlužba ModelModel SlužbaSlužba SlužbaSlužba SlužbaSlužba SlužbaSlužba SlužbaSlužba

9 LBLBLBLB LBLBLBLB LBLBLBLB LBLBLBLB Monitorování & zotavení služeb Vaše služba FabricControllerFabricController Web Portal (API) (API) SlužbaSlužba SlužbaSlužba SlužbaSlužba ModelModel SlužbaSlužba

10 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

11

12

13

14

15

16

17

18

19

20

21

22

23

24 $0.12 $0.24 $0.48 $0.96 1 x 1.6Ghz 2 x 1.6Ghz 4 x 1.6Ghz 8 x 1.6Ghz 1.75 GB memory 3.5 GB memory 7.0 GB memory 14 GB memory 250 GB storage (instance storage) 500 GB storage (instance storage) 1000 GB storage (instance storage) 2000 GB (instance storage ) Cena za instanci 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 $0.02 1 x 1Ghz 0.765 GB memory 20 GB storage (instance storage)

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

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

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

28 Web role a Worker role Web aplikace IIS7.5 Web Sites ASP.NET nebo FastCGI WebForm 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

29 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

30 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, MySQL, … Nastavovat cokoliv v operačním systému Instalovat a registrovat COM/COM+ komponenty I ve web roli můžete využít RoleEntryPoint.Run() a můžete pustit kód na pozadí

31 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

32 Verze operačního systému Operační systém existuje ve dvou rodinách (OS Family) – vybraná vždy pevně Windows Server 2008 SP2, 64 bit Windows Server 2008 R2 SP1, 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 R2 je lépe optimalizován pro virtualizaci (osFamily=“2” v konfiguraci) Používejte automatickou aktualizace verzí

33

34 Konfigurace role Velikost VM – impl. S = 1 CPU (1.7 GHz), 1.7 GB, 250 GB XS = 1 (1GHz)/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í

35 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í RoleEnvironment.CurrentRoleInstance.InstanceEndpoints

36 Kdo smí spravovat prostředí Pomocí LiveID úč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

37 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

38 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

39 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

40 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í: v1  Staging: v2, po přepnutí Produkční: v2  Staging: v1. In-Place Upgrade Provádí vystavení upgradu do živé služby Celá služba nebo jedna role Manuálně nebo automaticky napříč doménami

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

42 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 RoleEnvironment.IsAvailable RoleEnvironment.IsEmulated

43 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

44 Programový model Role Fabric hledá třídu odvozenou z RoleEntryPoint Web role volitelně Worker role povinně Metoda OnStart() 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 OnStop() 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 Nesmí se ukončit, jinak se role recykluje

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

46 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 (executionContext="elevated" pro ) 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 (enableNativeCodeExecution ="false" pro )

47 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

48 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

49 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ě OnStart() 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 RoleInstanceDiagnosticManager

50

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

52 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 ServiceConfiguration.cscfg – instanční data

53

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

55 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

56 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ě RoleEntryPoint Role se vrátí z metody RoleEntryPoint.Run() Operace ve třídě RoleEntryPoint vyžadují administrativní oprávnění, která nejsou povolena Špatný DiagnosticsConnectionString Např. nastavení na lokální Storage Emulator

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

58 Další informace Windows Azure http://www.windowsazure.com Azure Platform Training Course http://msdn.microsoft.com/en-us/gg271268 Vybraná praktická cvičení v češtině http://msdn.microsoft.com/cs-cz/dd727769.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-finanancniho- rizika-a-zdarma.aspx http://blogs.msdn.com/b/vyvojari/archive/2011/12/22/ aktivace-azure-vyhod-v-msdn-predplatnem.aspx

59 Úplným závěrem Windows Azure je běžný operační systém Windows Server 2008 (R2) 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

60 © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, 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.


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

Podobné prezentace


Reklamy Google