Skalieren von SaaS Anwendungenhttp://blogs.msdn.com/patricbPatric Boscolo               Felix RiesebergDeveloper Evangelis...
Meine Applikation in der Cloud                                 4   Skalierbare Applikation in der Cloud                   ...
Laufzeitumgebung   Relationale Datenbank   Sichere Integration  „as a Service“       „as a Service“         „as a Service“
Quelle: Bing Picture of the Day
12:38                        Sensoren        Kommunikation     APP      ID                        Akteure
12:38                           12:38 notificationApplication     LogicData
Windows Azure Toolkits• iOS Toolkit  https://github.com/microsoft-dpe/wa-toolkit-ios• Android Toolkit  https://github.com/...
ABERConsumerization
Logik
UNDSKALIERBAR
Quelle: Wally
Vertikale vs. Horizontale SkalierungVertikal == Mehr Resourcen   Horizontal == Mehr Instanzen
Quelle: http://www.fanpop.com
Windows Azure + IDE Unterstützung• Visual Studio + Windows Azure SDK 1.6  http://www.microsoft.com/windowsazure/sdk/• Ecli...
Meine App in der CloudWindows Azure                    Meine Cloud App  Guest OS                Virtualisiert in der „Fabr...
Messen und skalieren• Testen  – TDD  – Testen unter Belastung (LoadTest)• Feedback  – Windows Azure Diagnostics  – Windows...
Synchrone Ausführung         WebApp         Frontend                              Meine Superawesome Webseite             ...
Asynchrone Ausführung          WebApp          Frontend                               Meine Superawesome Webseite         ...
Microsoft Visual Studio Item1.cs   File      Edit    View   Build   Debug   Team       Data    Tools   Test   Analyze   Wi...
Microsoft Visual Studio Item1.cs   File      Edit    View   Build   Debug   Team       Data    Tools   Test   Analyze   Wi...
Async Support in der Cloud• Async Features  – .net 4.0 Async CTP funktioniert mit Windows Azure,    wenn man die AsyncCtpL...
Quelle: http://www.flickr.com/photos/32975477@N02/4566833793/
Verfügbarkeit• Transient Condition   – Network, Datacenter, Service ...• Beispiel   – SQL Azure Error 40501     „The servi...
Meine Superawesome Webseite       http://myapp.cloudapp.net   Meine Superawesome Webseite                                 ...
Ist meine Applikation• ... horizontal skalierbar?  gibt es Abhängigkeiten, ist Sie virtualisierbar ...• ... unter Last err...
Statless vs. Statefull Apps                            Instance 1         Loadbalancer                            Instance...
Windows Azure AppFabric Caching• Cache für Daten die über mehrere Instanzen hinweg  zur Verfügung stehen sollen.   – Sessi...
Globale Verfügbarkeit
Content Delivery Network (CDN)    evtl. viele “hops” oder “poor links”Blob Storage   weniger hops                       CD...
Content Delivery Network (CDN)• 24 global verteilt CDNs (99.95% Erreichbarkeit)• Einrichten eines CDN via Management Porta...
Lebenszeit von Inhalten im CDN• Per Default wird Content für 72 Std. gehalten• Einstellen der TTL via „cache control heade...
Versionierte URLsSuperawesome WebApp      http://myapp.cloudapp.net…<imgsrc="http://azXXXX.vo.msecnd.                CDNne...
CDN für Web Apps• CDN support für Webseiten  http://blog.smarx.com/posts/using-the-windows-azure-cdn-for-your-web-applicat...
Daten Synchronisation
Synchronisierung• SQL Azure DataSync via Windows Azure  Management Studio
Zusammenfassung•   Asynchrone Ausführung       • Cachen wo möglich•   Wiederholte Ausführung      • Verwendung des CDN•   ...
Commercial Cloud Services
ResourcenTwitter:   patricsmsdnBlog:      http://blogs.msdn.com/patricbMail:      patbosc@microsoft.com
Wie skaliert man Software as a Service Applikationen in der Windows Azure Cloud
Nächste SlideShare
Wird geladen in …5
×

Wie skaliert man Software as a Service Applikationen in der Windows Azure Cloud

1.196 Aufrufe

Veröffentlicht am

Skalierung heißt eine Applikation möglichst vielen Benutzern mit der selben Funktionalität zur Verfügung zu stellen. In dieser Präsentation beschäftigen wir uns mit den unterschiedlichen Vorgehensweisen um Applikationen erfolgreich zu skalieren.

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.196
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
4
Aktionen
Geteilt
0
Downloads
4
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie
  • http://www.flickr.com/photos/32975477@N02/4566833793/
  • Key Points:No competitor has the breadth of cloud services of MicrosoftOnly Microsoft has a set of cloud services that complements on-premises softwareScript:In addition to our consumer-facing cloud services, Microsoft offers the most complete set of cloud-based solutions to meet your business needs including advertising, communications (email, telephony, meetings), collaboration (document storage, sharing, workflow), business applications (CRM, business productivity), storage, management and infrastructure services. In October 2010, Microsoft renamed its collection of communication, collaboration and CRM applications into an offering called “Office 365” that will become available during 2011. The offering includes Office, Office Web Apps, Lync Online, Exchange Online, SharePoint Online and Microsoft Dynamics CRM Online. The goal is to show the cohesion of these services and the richness of functionality that the provide to Microsoft’s business, educational and government clients.And unique to Microsoft these sets of cloud services complement a full and rich set of on-premise software enabling often times to add cloud functionality to your existing software or move between cloud and on-premises systems.
  • Wie skaliert man Software as a Service Applikationen in der Windows Azure Cloud

    1. 1. Skalieren von SaaS Anwendungenhttp://blogs.msdn.com/patricbPatric Boscolo Felix RiesebergDeveloper Evangelist Developer EvangelistMicrosoft Deutschland GmbH Microsoft Deutschland GmbHpatbosc@microsoft.com feriese@microsoft.com@patricsmsdn @felixrieseberg
    2. 2. Meine Applikation in der Cloud 4 Skalierbare Applikation in der Cloud 3 Was bietet mir der 2 Plattform Anbieter?Was muss meine Applikation tun? 1 Ausgangspunkt?
    3. 3. Laufzeitumgebung Relationale Datenbank Sichere Integration „as a Service“ „as a Service“ „as a Service“
    4. 4. Quelle: Bing Picture of the Day
    5. 5. 12:38 Sensoren Kommunikation APP ID Akteure
    6. 6. 12:38 12:38 notificationApplication LogicData
    7. 7. Windows Azure Toolkits• iOS Toolkit https://github.com/microsoft-dpe/wa-toolkit-ios• Android Toolkit https://github.com/microsoft-dpe/wa-toolkit-android• Windows Phone 7 Toolkit http://watwp.codeplex.com/
    8. 8. ABERConsumerization
    9. 9. Logik
    10. 10. UNDSKALIERBAR
    11. 11. Quelle: Wally
    12. 12. Vertikale vs. Horizontale SkalierungVertikal == Mehr Resourcen Horizontal == Mehr Instanzen
    13. 13. Quelle: http://www.fanpop.com
    14. 14. Windows Azure + IDE Unterstützung• Visual Studio + Windows Azure SDK 1.6 http://www.microsoft.com/windowsazure/sdk/• Eclipse + Windows Azure SDK für Java http://www.interoperabilitybridges.com/projects/windows-azure-sdk-for-java.aspx• Windows Azure SDK für PHP http://www.interoperabilitybridges.com/projects/php-sdk-for-windows-azure.aspx• Mehr finden Sie unter ... http://www.microsoft.com/windowsazure/sdk/
    15. 15. Meine App in der CloudWindows Azure Meine Cloud App Guest OS Virtualisiert in der „Fabric“
    16. 16. Messen und skalieren• Testen – TDD – Testen unter Belastung (LoadTest)• Feedback – Windows Azure Diagnostics – Windows Azure Diagnostics Manager http://www.cerebrata.com/Products/AzureDiagnosticsManager/
    17. 17. Synchrone Ausführung WebApp Frontend Meine Superawesome Webseite http://myapp.cloudapp.net SQL Azure Client Request #1 Executes Thread Result Middle TierClient Client Response #1 Storage Client Request #2 Blocking • Jeder Thread ist genau für ein Request zuständig • Blockiert bei jedem Schritt der Ausführung • Gibt erst nach Abschluss der Ausführung (Operationen) das Resultat zurück (Respond & Repeat) • Jeder ausstehende Request wird im Thread-Stack gespeichert • Thread blockiert die abarbeitung der Threads im Thread-Stack • Durch das Anlegen eines weiteren Threads, wird lediglich ein weitere Thread abgearbeitet
    18. 18. Asynchrone Ausführung WebApp Frontend Meine Superawesome Webseite http://myapp.cloudapp.net SQL Req 1 Azure Client Response #1 Client Request #1 Response 1 Executes Executes Middle Tier Thread Req 2 Response 2Client Client Request #2 Client Response #2 Storage • Threads arbeiten wann immer Sie bereit sind Die Reihenfolge der Abarbeitung ist zufällig • Die Requests werden in der App Datastructure verwaltet • Threads blockieren nicht mehr währen der Ausführung von Operatione • Threads können mehrere simultane Requests abarbeiten
    19. 19. Microsoft Visual Studio Item1.cs File Edit View Build Debug Team Data Tools Test Analyze Windows Help Debug Any CPU Item1.cs Item2.cs Item3.csToolbox void UploadImage(Stream image, CloudBlob destBlob) { // Add image to list in SQL Azure AddImageToSQLAzure(destBlob.Uri); //Upload image to blob storage UploadImageToBlob(image, destBlob); } Team Explorer async Task UploadImageAsync(Stream image, CloudBlob destBlob) { //Add imaage to list in SQL Azure Task var t1 = AddImageToSQLAzureAsync(destBlob.Uri); Solution Explorer //Upload image to blob storage var t2 = UploadImageToBlobAsnc(image, destBlob); await TaskEx.WhenAll(t1, t2); }
    20. 20. Microsoft Visual Studio Item1.cs File Edit View Build Debug Team Data Tools Test Analyze Windows Help Debug Any CPU Item1.cs Item2.cs Item3.cs void uploadImageToBlob(Stream image, CloudBlob destBlob)Toolbox { destBlob.UploadFromStream(image); } async Task UploadImageToBlobAsync(Stream image, CloudBlob destBlob) { // Task.Factory.FromAsync method creates a Task or Task<T> // to represent a Begin/End async invocation await Task.Factory.FromAsync<Stream>(destBlob.BeginUploadFromStream, Team Explorer destBlob.EndUploadFromStream, image, null); } Solution Explorer
    21. 21. Async Support in der Cloud• Async Features – .net 4.0 Async CTP funktioniert mit Windows Azure, wenn man die AsyncCtpLibrary.dll mit ausliefert. (Copy Local)• Windows Azure Storage Queues – Integriertes „load balancing“ – Dequeue und Requeue via „InvisibilityTimeout“• Async Design Patterns erhöhen die Gefahr von „Race Conditions“ – Murphys Law – Transaktionssicherheit gewährleisten – Problematik der „Retries“ beachten (Retry Logic)
    22. 22. Quelle: http://www.flickr.com/photos/32975477@N02/4566833793/
    23. 23. Verfügbarkeit• Transient Condition – Network, Datacenter, Service ...• Beispiel – SQL Azure Error 40501 „The service is currently busy. Retry the request after 10 seconds.“• Transient Fault Handling Framework – http://windowsazurecat.com/2011/02/transient-fault-handling-framework/• Wiederholen von externen Aufrufen – SQL Azure – Windows Azure Storage – Service Bus – 3rd Party Services
    24. 24. Meine Superawesome Webseite http://myapp.cloudapp.net Meine Superawesome Webseite Scale me too!!! ;-) http://myapp.cloudapp.net Meine Superawesome Webseite http://myapp.cloudapp.net 1 Datenbank n Webinstanzen • Es ist besser 50 mal 1GB Datenbanken zu haben, als eine 50 GB Daten • Wie skaliert man Datenbanken? • Partitionierung • Alphabetisch • User • Last • Datum
    25. 25. Ist meine Applikation• ... horizontal skalierbar? gibt es Abhängigkeiten, ist Sie virtualisierbar ...• ... unter Last erreichbar asynchrone Ausführung von Requests, wiederholen von nicht abgeschlossenen Requests, ...• ... Transaktionssicher? wird die Datenkonsistenz sichergestellt, Protokollierung der Schreibvorgänge, Datensicherung, ...
    26. 26. Statless vs. Statefull Apps Instance 1 Loadbalancer Instance 2http://myapp.cloudapp.net Different States
    27. 27. Windows Azure AppFabric Caching• Cache für Daten die über mehrere Instanzen hinweg zur Verfügung stehen sollen. – Session State, Shopping Cart, ...• AppFabric Caching ist ein hosted distributed cache – Global Verfügbar – Low latency, hosted per subregion – ACS unterstützung• Vorteile – Einfache Administration – ASP.net Session State und Output Cache providers – Nearcache für aktuelle Daten ohne Serializierungskosten
    28. 28. Globale Verfügbarkeit
    29. 29. Content Delivery Network (CDN) evtl. viele “hops” oder “poor links”Blob Storage weniger hops CDN Closest Point of Presence X Public Container X Blob header determines DNS name resolves time-to-live at the edge to closest POP
    30. 30. Content Delivery Network (CDN)• 24 global verteilt CDNs (99.95% Erreichbarkeit)• Einrichten eines CDN via Management Portal – Generiert 2 URLs für unterschiedliche Zugriffe • Direkter Zugiriff: http://myacct.blob.core.windows.net/images/myimage.jpg • Zugiff via CDN: http://azXXXX.vo.msecnd.net/images/myimage.jpg – CNAME Mappings für CDN URLs http://blog.smarx.com/posts/using-the-new-windows-azure-cdn-with-a-custom-domain• CDN für WebApps und Windows Azure Storage – CSS, Images, ...• Smooth streaming verfügbar als CTP
    31. 31. Lebenszeit von Inhalten im CDN• Per Default wird Content für 72 Std. gehalten• Einstellen der TTL via „cache control header“ x-ms-blob-cache-control: public, max-age=<value in seconds> – Stunden, Tage, Wochen – Längere Lebenszeit reduziert: • Kosten, Latenzzeiten, andere Caches• Verwendung von Versionierten URLs um Inhalte bei Bedarf zu ändern
    32. 32. Versionierte URLsSuperawesome WebApp http://myapp.cloudapp.net…<imgsrc="http://azXXXX.vo.msecnd. CDNnet/images/logo.2011-11-net/images/logo.2011-09- logo.2011-09-16.png22.png"16.png" /> logo.2011-09-16.png… logo.2011-11-22.png logo.2011-11-22.png • Vereinfacht das Rollback / Versionierung • Ermöglicht A/B Tests
    33. 33. CDN für Web Apps• CDN support für Webseiten http://blog.smarx.com/posts/using-the-windows-azure-cdn-for-your-web-application – Normale URL: http://foo.cloudapp.net/default.aspx – CDN URL: http://azXXXX.vo.msecnd.net/default.aspx – Cached from: http://foo.cloudapp.net/cdn/default.aspx• CNAME & HTTPS support• Achtung! Die „cache control headers“ müssen angepasst werden um das ASP.net OutputCache Modul zu unterstützen http://blogs.msdn.com/b/scicoria/archive/2011/07/10/hosted-service-as-a-windows-azure-cdn-origin-tips.aspx
    34. 34. Daten Synchronisation
    35. 35. Synchronisierung• SQL Azure DataSync via Windows Azure Management Studio
    36. 36. Zusammenfassung• Asynchrone Ausführung • Cachen wo möglich• Wiederholte Ausführung • Verwendung des CDN• Transaktionssicherheit für Inhalte• Skalieren aller Schichten • Datensynchronisation
    37. 37. Commercial Cloud Services
    38. 38. ResourcenTwitter: patricsmsdnBlog: http://blogs.msdn.com/patricbMail: patbosc@microsoft.com

    ×