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.
Wie skaliert man Software as a Service Applikationen in der Windows Azure Cloud
1. Skalieren von SaaS Anwendungen
http://blogs.msdn.com/patricb
Patric Boscolo Felix Rieseberg
Developer Evangelist Developer Evangelist
Microsoft Deutschland GmbH Microsoft Deutschland GmbH
patbosc@microsoft.com feriese@microsoft.com
@patricsmsdn @felixrieseberg
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. Laufzeitumgebung Relationale Datenbank Sichere Integration
„as a Service“ „as a Service“ „as a Service“
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. Meine App in der Cloud
Windows Azure
Meine Cloud App
Guest OS
Virtualisiert in der „Fabric“
16.
17. Messen und skalieren
• Testen
– TDD
– Testen unter Belastung (LoadTest)
• Feedback
– Windows Azure Diagnostics
– Windows Azure Diagnostics Manager
http://www.cerebrata.com/Products/AzureDiagnosticsManager/
18. Synchrone Ausführung
WebApp
Frontend
Meine Superawesome Webseite
http://myapp.cloudapp.net
SQL
Azure
Client Request #1 Executes
Thread Result Middle Tier
Client 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
19. 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 2
Client 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
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
Toolbox
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);
}
21. 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
22. 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)
24. 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
25. 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
26. 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, ...
27. Statless vs. Statefull Apps
Instance 1
Loadbalancer
Instance 2
http://myapp.cloudapp.net
Different States
28. 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
30. 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
31. 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
32. 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
34. 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
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.