Rainer Stropek time cockpit / cubido business solutions gmbh Blauer Himmel – Teil 1 Einführung in Windows Azure
Agenda Cloud – ist doch einfach nur Hosting, oder? Die Windows Azure Cloud Hello World – lokale Entwicklungsumgebung Windows Azure einrichten Architektur von Anwendungen in Windows Azure SQL Azure Call to Action!
Flexibel Strom Kühlung Netzwerk Zutritt Hardware Hardware ist spannend Betriebssystem Datenbank Backup Ausfallssicherheit Load Balancing SLAs Daten unter Kontrolle Lizenzen Einnahme- quelle Skalierbarkeit Katastrophen- schutz On-Premise Applikation
Flexibel Hardware ist spannend Betriebssystem Datenbank Backup Ausfallssicherheit Load Balancing SLAs Daten unter Kontrolle Lizenzen Einnahme- quelle Skalierbarkeit Hosted Applikation
Flexibel Backup SLAs Daten unter Kontrolle Einnahme- quelle Cloud Applikation
Arten von Cloud Computing Infrastructure as a Service (IaaS) Mieten einer virtuellen Maschine + grundlegender Services Netzwerk, Hardware, etc. abstrahiert Platform as a Service (PaaS) Mieten von Rechenkapazitäten für auszuführende Anwendungen Sogar die virtuellen Maschinen sind abstrahiert Software as a Service (SaaS) Zugang zu einer fertigen Anwendung mieten
Cloud Computing optimal für jeden? Pro Cloud Starke Schwankungen Last/Ressourcen Zukünftige Kapazität schwer abschätzbar Fehlendes Infrastrukturwissen Warum? Pay-Per-Use Elastizität, dynamische Ressourcen Infrastruktur-Outsourcing Starke Schwankungen Last/Ressourcen Zukünftige Kapazität schwer abschätzbar Fehlendes Infrastrukturwissen Warum? Pay-Per-Use Elastizität, dynamische Ressourcen Infrastruktur-Outsourcing Contra Cloud Strenge Datenschutzbedingungen Geringe Kosten bei Ausfall Hohe Preissensitivität Warum? Daten nicht im eigenen Rechenzentrum Daten eventuell nicht im Land Wenig Kontrolle über Infrastruktur Strenge Datenschutzbedingungen Geringe Kosten bei Ausfall Hohe Preissensitivität Warum? Daten nicht im eigenen Rechenzentrum Daten eventuell nicht im Land Wenig Kontrolle über Infrastruktur Auf keinen Fall zusätzliche Option
Agenda Cloud – ist doch einfach nur Hosting, oder? Die Windows Azure Cloud Hello World – lokale Entwicklungsumgebung Windows Azure einrichten Architektur von Anwendungen in Windows Azure SQL Azure Call to Action!
Windows Azure-Plattform Power Usage Efficiency (PUE): Server/Container Ca Server/Container-Farm Austausch bei ca. 60% Ausfall / Container
Windows Azure – Verfügbarkeit N. Central – US Sub-region W. Europe Sub-region S.E. Asia Sub-region E. Asia Sub-region N. Europe Sub-region S. Central - US Sub-region
Was braucht eine „Cloud-Plattform“? Zugriff auf Ressourcen/Datenquellen (ADO.NET EF, nHibernate, System.IO...) Anwendungslogik, Geschäftslogik UI (Web)UI (AJAX, RIA, Client) Dienste von anderen Anwendungen und Organisationen TCP/TDS Alles Mögliche HTTP/XML (SOAP, REST…) HTTP/HTML HTTP/XML (SOAP, REST…) Stream
Was braucht eine „Cloud-Plattform“? Zugriff auf Ressourcen/Datenquellen (ADO.NET EF, nHibernate, System.IO...) Anwendungslogik, Geschäftslogik UI (Web)UI (AJAX, RIA, Client) Dienste von anderen Anwendungen und Organisationen TCP/TDS Alles Mögliche HTTP/XML (SOAP, REST…) HTTP/HTML HTTP/XML (SOAP, REST…) Stream Storage Rechenleistung (skalierbarer) Store Relationale Datenbank Sichere Integration
Azure – Ihre Entwickler-Maschine Windows Azure Tools für Visual Studio (inkl. SDK) Enthält lokale Simulationsumgebung Developer Fabric, kurz DevFabric Windows 7, Windows Server 2008, Windows Vista mit SP1 installiert IIS 7.x mit ASP.NET, WCF HTTP, CGI Microsoft Visual Studio Visual Studio 2008 mit SP1 Visual Web Developer 2008 Express mit SP1 Visual Studio 2010 SQL Server 2005 Express Edition oder höher
Agenda Cloud – ist doch einfach nur Hosting, oder? Die Windows Azure Cloud Hello World – lokale Entwicklungsumgebung Windows Azure einrichten Architektur von Anwendungen in Windows Azure SQL Azure Call to Action!
demodemo Hello World in der DevFabric
DevFabrik Local Machine Windows Azure Simulation Environment Development Fabric Development Storage
DevStorage einrichten Speicherung in SQL Server Initialisierung mit DSInit Default: SQL Express SQL Server: dsInit /sqlInstance dsInit /sqlInstance.
Unterschied DevFabrik / Azure DevFabrik Debugging möglich Zugriff auf lokale Ressourcen des Computer (z.B. GAC, Filesystem, SQL Server, etc.) Logging im DevFabrik UI sichtbar Azure App läuft nicht als Admin Änderung der Anzahl an Instanzen oder Servicerestart möglich
Cloud Service hinzufügen
Agenda Cloud – ist doch einfach nur Hosting, oder? Die Windows Azure Cloud Hello World – lokale Entwicklungsumgebung Windows Azure einrichten Architektur von Anwendungen in Windows Azure SQL Azure Call to Action!
demodemo Windows Azure Umgebung einrichten
Azure Testen
Windows Azure Management-Portal
Windows Azure Portal
Deploymentprozess
Publish im VS auf Cloudprojekt erstellt Packagefile Configfile Typen von Deployments In-place Upgrade VIP (Virtual IP) Swap Upgrade
Agenda Cloud – ist doch einfach nur Hosting, oder? Die Windows Azure Cloud Hello World – lokale Entwicklungsumgebung Windows Azure einrichten Architektur von Anwendungen in Windows Azure SQL Azure Call to Action!
Windows Azure Roles
Rollen Mind. eine Rolle pro Service Web Role IIS 7, ASP.NET Ein HTTP und/oder ein HTTPS Endpoint (siehe.csdef-Datei) Worker Role Hintergrundverarbeitung Beliebige Anzahl an HTTP, HTTPS und/oder TCP Endpoints
Warum kein „normales“ Dateisystem? Binärdaten in der Cloud
Temporäre Dateien (Code, 1/2)
Temporäre Dateien (Code, 2/2) var tempPath = string.Empty; if (RoleEnvironment.IsAvailable) { tempPath = RoleEnvironment.GetLocalResource( "TemporaryFiles“).RootPath; } Else { tempPath }
Binärdaten in der Cloud Große Binärdaten hierarchisch abgelegt Asynchrone Kommunikation Semistrukturierte Daten hochskalierbar
Blob Access (Code) public class CloudTemplateManager : TemplateManager { public override byte[] GetRegistrationConfirmationTemplate() { var blob = this.GetTemplateContainer().GetBlobReference("Anmeldebestaetigung.docx"); return blob.DownloadByteArray(); } public override void SendRegistration(Stream source, System.Guid registrationId) { var targetFileName = string.Format("Anmeldebestaetigung_{0}.docx", registrationId.ToString()); var blob = this.GetTemplateContainer().GetBlobReference(targetFileName); blob.UploadFromStream(source); } private CloudBlobContainer GetTemplateContainer() { CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) => { configSetter(RoleEnvironment.GetConfigurationSettingValue(configName)); }); var cloudStorageAccount = CloudStorageAccount.FromConfigurationSetting( "BlobStorageConnectionString"); var cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient(); return cloudBlobClient.GetContainerReference("templates"); }
Queue Access (Code) CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) => { configSetter(RoleEnvironment.GetConfigurationSettingValue(configName)); }); var storageAccount = CloudStorageAccount.FromConfigurationSetting("BlobStorageConnectionString"); […] var queueStorage = storageAccount.CreateCloudQueueClient(); var queue = queueStorage.GetQueueReference("registrationqueue"); queue.CreateIfNotExist(); while (true) { var msg = queue.GetMessage(TimeSpan.FromSeconds(10)); if (msg != null) { Trace.WriteLine(msg.AsString); […] queue.DeleteMessage(msg); } else { Trace.WriteLine("No message, waiting..."); Thread.Sleep(1000); }
Aufteilung in Web und Worker Komplexe, lang laufende Prozesse in den Hintergrund verlagern Sollte die Web-Anwendung nicht blockieren Lösung: Worker Role im Hintergrund Bei uns: Generiert und verschickt Dokumente
C1C1 C1C1 C2C2 C2C2 Removing Poison Messages Producers Consumers P2P2 P2P2 P1P1 P1P GetMessage(Q, 30 s) msg 2 1. GetMessage(Q, 30 s) msg Quelle: Microsoft PDC
C1C1 C 1 C2C2 C2C2 Removing Poison Messages Producers Consumers P2P2 P2P2 P1P1 P1P GetMessage(Q, 30 s) msg 2 3. C2 consumed msg 2 4. DeleteMessage(Q, msg 2) 7. GetMessage(Q, 30 s) msg 1 1. GetMessage(Q, 30 s) msg 1 5. C 1 crashed msg1 visible 30 s after Dequeue Quelle: Microsoft PDC
C1C1 C1C1 C2C2 C2C2 Removing Poison Messages Producers Consumers P2P2 P2P2 P1P1 P1P Dequeue(Q, 30 sec) msg 2 3. C2 consumed msg 2 4. Delete(Q, msg 2) 7. Dequeue(Q, 30 sec) msg 1 8. C2 crashed 1. Dequeue(Q, 30 sec) msg 1 5. C 1 crashed 10. C1 restarted 11. Dequeue(Q, 30 sec) msg DequeueCount > Delete (Q, msg1) msg1 visible 30s after Dequeue 9. msg1 visible 30s after Dequeue Quelle: Microsoft PDC
Konfigurationsinformationen
Konfiguration des Service XML Dateien Schema siehe MSDN us/library/dd aspx us/library/dd aspx
Konfigurationdaten lesen (Code) public static HelfenHelfenEventsEntities Create() { var connectionString = string.Empty; if (RoleEnvironment.IsAvailable) { connectionString = RoleEnvironment.GetConfigurationSettingValue( "ConnectionString"); } else { connectionString = ConfigurationManager.ConnectionStrings[ "HelfenHelfenEventsEntities"].ConnectionString; } return new HelfenHelfenEventsEntities(connectionString); }
Agenda Cloud – ist doch einfach nur Hosting, oder? Die Windows Azure Cloud Hello World – lokale Entwicklungsumgebung Windows Azure einrichten Architektur von Anwendungen in Windows Azure SQL Azure Call to Action!
SQL Azure – Datenbank in der Cloud SQL Server-Datenbank in der Cloud Gewohnter Zugriff über Tabular Data Stream Höchst ausfallsicher im Microsoft Datacenter Immer 3 Replika einer DB vorhanden Aber max. Größe 10 GB, Transaktionsdauer < 5 Min.
SQL Azure
Load Balancer Grundlegende Firewallfunktionen Erste Hürde für potentielle Angreifer Ordnet TDS Sitzung einem Gateway-Knoten zu Gateway-Schicht Proxy- und Firewallfunktionen Verstehen TDS Statefull Packet Inspection Umleiten gewisser T-SQL Kommandos (z.B. CREATE DATABASE ) Data Store Spezielle Version von SQL Server 2008
Servermanagement Über das Portal Server Admin-User Firewall Über T-SQL ( master -Datenbank) Firewall sys.firewall_rules, sys.sp_set_firewall_rule, sys.sp_delete_firewall_rule Logins Create/Drop Databases Portal Master DB User DB
SQL Azure Hinweise: Un-supported features: ASP.NET Membership Updated Scripts: Tipp: Mit SQL Management Studio 2008 kein Object Explorer, nur Query Window Mit SQL 2008 R2 CTP auch Object Explorer
Security SQL Authentifizierung Beispiel: Neuer Benutzer über T-SQL -- connect to master with admin create login newUser with password = 'xaz' -- connect to db with admin where user should be granted rights create user newUser from login newUser -- grant rights (here: schema permissions) grant SELECT, INSERT, … ON schema :: to newUser User
Connections Latenzzeiten berücksichtigen Connections können abbrechen Idle Lange Transaktionen „Throttling“ DB Failover Achtung: Seit SP1 neue Rahmenbedingungen Siehe SQL Azure Team Blog
Empfehlungen aus der Praxis Kurze Transaktionen Connection Pooling Connections nicht lange offen halten Reconnect-Logik Z.B. 10 Sekunden warten, erneut probieren Batching Anzahl Statements reduzieren Parametrisierte Queries verwenden Volle Angabe aller Parameter (inkl. Längenangaben) Sharding (=Aufteilen der Daten auf mehrere DBs/Server) Replizieren (=Kopieren der Daten auf mehrere DBs/Server) Schemas für Multi Tenancy Systeme
Agenda Cloud – ist doch einfach nur Hosting, oder? Die Windows Azure Cloud Hello World – lokale Entwicklungsumgebung Windows Azure einrichten Architektur von Anwendungen in Windows Azure SQL Azure Call to Action!
Windows Azure-Plattform – Preise Instanz (Web/Worker) pro Stunde Kleine VM – € 0,0852 Mittlere VM – € 0,1703 Große VM – € 0,3405 Extragroße VM – € 0,6809 Blob/Queue/Table-Speicher € 0,1064/GB pro Monat € 0,0071/ Trn. Web Edition Max. 1 GB/DB € 7,085/DB Business Edition Max. 10 GB/DB € 70,913/DB Datentransfer: € 0,071/GB eingehend, € 0,1064/GB ausgehend
Zusammenfassung Cloud Computing – eine weitere Option Starke Last/Ressourcen-Schwankungen Unvorhersehbare Ressourcen-Entwicklungen Windows Azure-Plattform Die Cloud-Plattform von Microsoft Rechenleistung, Storage, RDBMS, Integration Teilweise oder komplett verwendbar
Nächste Schritte Holen Sie sich den Windows Azure-SDK Richten Sie Ihre Entwickler-Maschine ein Machen Sie sich mit SLA und Preisen vertraut Probieren Sie es einfach aus Windows Azure Introductionary Offer (bis Juli 2010) 25 Stunden Instanz-Betrieb pro Monat gratis 1 x 1 GB SQL Azure-Datenbank pro Monat gratis 500 MB Blob/Table/Queue Storage pro Monat gratis Achtung: nach Test alles löschen – Sonst beginnt die Verrechnung bei Überschreiten!!!
Q&A Unterstützt Azure.NET 4.0? Verstößt man bei Nutzung von Azure gegen ein Datenschutzgesetz? Update Kann unmanaged Code ausgeführt werden? Welche Programmiersprachen werden unterstützt? Welche Plattformen außer.NET werden noch unterstützt? Wie funktioniert Backup? Von der Public zur Private Cloud …
Ressourcen Angebote, Preise, SLA, TCO Entwicklungsumgebung Wichtige Werkzeuge Azure Training Kit
Azure – Ihre Entwickler-Maschine Windows Azure Tools für Visual Studio SQL Azure Sync Framework PowerPack AppFabric SDK Windows Azure Management Console Azure Tutorial auf codefest.atcodefest.at
Rainer Stropek time cockpit / cubido business solutions gmbh Danke für Ihre Aufmerksamkeit und viel Spaß in der Cloud