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)