Was ist Windows Azure?
Transcription
Was ist Windows Azure?
Portierung von ASP.NET Anwendungen nach Windows Azure - Lessons learned (Level 200) Sven Kästner CONET Solutions GmbH [email protected] http://www.conet.de/ Agenda 1. Windows Azure im Überblick Was ist die Windows Azure Plattform? 2. Cloud-Computing aus Entwicklersicht Was ist das Besondere an Cloud-Anwendungen? 3. Vorstellung des Portierungsprojekts Um welches Projekt geht es? 4. Top 5 lessons learned Worauf sollten Entwickler bei der Portierung achten? 5. Diskussion & Fragen 1. Windows Azure im Überblick Was ist die Windows Azure Plattform? Was ist Windows Azure? Management Portal Compute Storage Windows Azure Compute Windows Azure Storage Networking Windows Azure Connect AppFabric Service Bus Content Delivery Network (CDN) SQL Azure Identity AppFabric Integration AppFabric Access Control AppFabric Caching Performance Enterprise Level Infrastructure Windows Azure Quelle: http://msdn.microsoft.com/en-us/library/dd179367.aspx SQL Azure Windows Azure AppFabric …und der Compute Emulator (DevFabric)? Visual Studio Tools Windows Azure SDK Compute Storage Networking Compute Emulator Storage Emulator AppFabric Host Infrastructure Windows Azure Windows Azure AppFabric Visual Studio Azure Add-in Windows Azure Compute Web role Für Web Anwendungen und Services (ASP.NET, WCF, FastCGI) Basiert auf IIS 7 hosted web core / Full IIS Für Hintergrundprozesse Worker role Für komplexe Installationsszenarien VM role Zurzeit noch im Beta-Stadium Für jede Rolle können unterschiedlich viele Instanzen mit unterschiedlichen Leistungscharakteristika angefordert werden. Demo Windows Azure Storage Zur Ablage strukturierter Daten Table storage Besteht aus Entitäten mit Eigenschaften Zur Ablage großer Dateien Blob storage Queue storage Azure drive Mit Unterstützung für CDNs Zum zuverlässigen Nachrichtenaustausch (typischerweise zwischen Rollen) Spezieller Blob-Speicher zum Mounten von NTFS VHD-Volumes SQL Azure Was funktioniert schon jetzt? Tabelle, Views, Indizes, Gespeicherte Prozeduren und Funktionen, Transaktionen, Zugriff über TDS Was folgt bald? Reporting Services (CTP), Synchronisierung (CTP) …und was funktioniert nicht? Replikation, Filestreams, Volltextsuche, benutzerdefinierte Typen, verteilte Transaktionen Was stört? • Kein DMO • Datenbankgröße Demo 2. Cloud-Computing aus Entwicklersicht Was ist das Besondere an Cloud-Anwendungen? Besonderheiten von Cloud-Anwendungen Architektur Throttling Scale up / out Billing Multi-tenancy Security Provisioning Versionierung Metering Rechtliches Multi-tenancy… aber wie? • Vorteile: Implementierung und Deployment • Nachteile: Versionierung, Abrechnung, Customizing und Scaling Business layer Storage layer Trennung der Mieter Eine Anwendung für alle Mieter Ein(e) Datenbank/ Storage account für alle Mieter, Schlüsselattribut in Tabellen Ein(e) Datenbank/ Storage account pro Mieter Pro Mieter eine Anwendung Ein(e) Datenbank/ Storage account für alle Mieter, Schlüsselattribut in Tabellen Ein(e) Datenbank-/ Storage account pro Mieter 3. Vorstellung des Portierungsprojekts Um welches Projekt geht es? Portierungsprojekt „Ressourcenplanung“ Bereichsinterne Ressourcenplanung mit Outlookartiger Darstellung der Einsätze Klassische ASP.NET WebForms-Anwendung ergänzt durch Steuerelemente von drei Drittanbietern (SyncFusion, Infragistics, Annpoint) Datenhaltung in SQL Server Benutzerauthentifizierung über Windows Authentication Stammdatenverwaltung mittels ASP.NET Dynamic Data Physische Verteilung On Premise Windows Azure Client Client Intranet Internet / Firewall / Load balancer Web Server (Windows Server 2008) Web Role (OS Family 2) Domain Controller (Windows Server 2008) Database Server (SQL Server 2005) Azure Tables SQL Azure Zielsetzungen Primär: • Erfahrungsaufbau • Lizenzgeschäft / Umsatzsteigerung Sekundär: • Beratungsgeschäft • Produktentwicklung Vorgehensweise (1/2) Entwicklungsumgebung einrichten • Windows Azure SDK installieren • Windows Azure Tools für Visual Studio 2010 installieren Windows Azure einrichten • • • • Service account einrichten Storage account einrichten SQL Azure einrichten Zertifikate erzeugen und registrieren Vorgehensweise (2/2) Datenbank migrieren • SQL Azure Datenbank für Anwendung erzeugen • On premise Datenbank migrieren (mittels Wizard) • Session state Datenbank erzeugen Quellcode anpassen Connection String für Datenbank anpassen Session state mode ändern Authentication mode ändern Azure Diagnostics aktivieren Azure Cloud Service-Projekt hinzufügen und neue Web role anlegen • Notwendige Referenzen hinzufügen • • • • • Organistorische Probleme Überzeugungsarbeit beim Einkauf / Controlling (Standardfrage: „Wie viel kostet uns das pro Monat?“) Bestellung des Azure-Kontos auf Rechnung Entwicklungsteam unterscheidet sich von Migrationsteam „Sicheres“ Firmennetzwerk Technische Probleme Stammdatenverwaltung mittels Dynamic Data Eigener JavaScript-Code für UI-Effekte Verwendung des Application Caches zur Zwischenspeicherung von Stammdaten „In proc“ Session state Impersonation für Datenbankzugriff Abhängigkeiten im Code / Vermischung von UI und Logic Fehlerbehandlung und Tracing unvollständig Fehlende Unit tests, kaum Dokumentation Azure-bezogene Probleme Benutzerauthentifizierung über Windows Authentifizierung Verweise auf x86-Assemblies und Assemblies im Global Assembly Cache (GAC) PageMethod-Aufrufe via jQuery Multi-tenancy auf Tabellenebene IIS nutzt standardmäßig Integrated Mode für Application Pools Was hat gut funktioniert? Anpassung der Solution für Windows Azure Deployment der Anwendung Migration der SQL Server Datenbank nach SQL Azure (Einsatz der Drittanbieter-Steuerelemente) Geplante Erweiterungen Umstellung der Authentifizierung auf Windows Identity Foundation und Windows Azure Connect Integration von Billing und Metering Hardening 4. Top 5 lessons learned Auf was sollten Entwickler bei der Portierung achten? Platz 5 – Multi-tenancy (alles separat) Ein Service pro Mieter ermöglicht leichteres • Metering • Billing • Throttling • Versioning Ein(e) SQL Azure Datenbank / Storage account pro Mieter ermöglicht leichteres • Metering • Billing • Provisioning Platz 4 – Dediziertes Testsystem Deployment geht schneller • vollständiges Windows Azure Deployment benötigt zwischen 10-20 min • Web Deploy* benötigt 5-10 sec Flexibleres Debugging Tracing, remote debugging etc. Fehlende DLLs fallen schneller auf *) neu ab Windows Azure SDK 1.4.1 Refresh Platz 3 – Alles kostet Geld Traffic Storage Transactions (auch Tracing und ggf. Session-Daten) Platz 2 – DevFabric != Windows Azure OS • Windows Server 2008 x64 SP1 o. R2 • Locale ist en-US IIS • IIS 7 hosted web core / Full IIS • Application pool läuft im Integrated mode SQL Azure • Development storage ist nicht SQL Azure • Collation ist SQL_LATIN1_GENERAL_CP1_CI_AS Anwendung z.B. keine Referenzen aus GAC (CopyLocal = True) Platz 1 – Programmierstil Modulare Architektur • Abhängigkeiten z.B. durch DI injizieren • Klare Trennung von Verantwortlichkeiten • Verzicht auf hart-kodierte Objekterzeugung mit new Fehlerbehandlung und Tracing (client- und serverseitig) Unit tests und Continuous Integration Standards und Dokumentation • Namensgebung • Projektstruktur Einsatz erprobter Frameworks Fragen? http://www.cloudporn.com/ Sven Kästner CONET Solutions GmbH [email protected] http://www.conet.de/ Vielen Dank!!! (auch für euer Feedback)