SlideShare una empresa de Scribd logo
1 de 39
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
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?
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


 notification




Application     Logic




Data
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/
ABER
Consumerization
Logik
UND
SKALIERBAR
Quelle: Wally
Vertikale vs. Horizontale Skalierung
Vertikal == 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/

• 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/
Meine App in der Cloud

Windows Azure
                    Meine Cloud App
  Guest OS




                Virtualisiert in der „Fabric“
Messen und skalieren
• Testen
  – TDD
  – Testen unter Belastung (LoadTest)
• Feedback
  – Windows Azure Diagnostics
  – Windows Azure Diagnostics Manager
    http://www.cerebrata.com/Products/AzureDiagnosticsManager/
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
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
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);
            }
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
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)
Quelle: http://www.flickr.com/photos/32975477@N02/4566833793/
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
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
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, ...
Statless vs. Statefull Apps
                            Instance 1
         Loadbalancer




                            Instance 2
http://myapp.cloudapp.net




                                   Different States
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
Globale Verfügbarkeit
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
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
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
Versionierte URLs
Superawesome WebApp
      http://myapp.cloudapp.net



…
<img
src="http://azXXXX.vo.msecnd.                CDN
net/images/logo.2011-11-
net/images/logo.2011-09-                 logo.2011-09-16.png
22.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
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
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
•   Transaktionssicherheit        für Inhalte
•   Skalieren aller Schichten
                                • Datensynchronisation
Commercial Cloud Services
Resourcen
Twitter:   patricsmsdn
Blog:      http://blogs.msdn.com/patricb
Mail:      patbosc@microsoft.com

Más contenido relacionado

La actualidad más candente

Technische Gründe für schlechte Entwicklungsperformance
Technische Gründe für schlechte EntwicklungsperformanceTechnische Gründe für schlechte Entwicklungsperformance
Technische Gründe für schlechte EntwicklungsperformanceOPEN KNOWLEDGE GmbH
 
Flexibilitaet mit CDI und Apache DeltaSpike
Flexibilitaet mit CDI und Apache DeltaSpikeFlexibilitaet mit CDI und Apache DeltaSpike
Flexibilitaet mit CDI und Apache DeltaSpikeos890
 
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...Lukas Eder
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Gregor Biswanger
 
Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Thorsten Kamann
 
Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)Chris Michael Klinger
 
dotnet Cologne 2013 - Windows Azure Mobile Services
dotnet Cologne 2013 - Windows Azure Mobile Servicesdotnet Cologne 2013 - Windows Azure Mobile Services
dotnet Cologne 2013 - Windows Azure Mobile ServicesSascha Dittmann
 
Test-Driven-Development mit JUnit 4
Test-Driven-Development mit JUnit 4Test-Driven-Development mit JUnit 4
Test-Driven-Development mit JUnit 4Jörn Dinkla
 
Automated Web 2.0 Testing
Automated Web 2.0 TestingAutomated Web 2.0 Testing
Automated Web 2.0 Testingjlink
 
Speeding up Java Persistence
Speeding up Java PersistenceSpeeding up Java Persistence
Speeding up Java Persistencegedoplan
 
Subversion Schulung
Subversion SchulungSubversion Schulung
Subversion SchulungJörn Dinkla
 
Einstieg in das Windows Installer XML (WiX) ToolSet
Einstieg in das Windows Installer XML (WiX) ToolSetEinstieg in das Windows Installer XML (WiX) ToolSet
Einstieg in das Windows Installer XML (WiX) ToolSetRalf Abramowitsch
 
WPF Dos n Don'ts - der WPF Rundumschlag
WPF Dos n Don'ts - der WPF RundumschlagWPF Dos n Don'ts - der WPF Rundumschlag
WPF Dos n Don'ts - der WPF RundumschlagHendrik Lösch
 

La actualidad más candente (16)

Jenkins Acceleration
Jenkins AccelerationJenkins Acceleration
Jenkins Acceleration
 
Technische Gründe für schlechte Entwicklungsperformance
Technische Gründe für schlechte EntwicklungsperformanceTechnische Gründe für schlechte Entwicklungsperformance
Technische Gründe für schlechte Entwicklungsperformance
 
Datenbankoptimierung
DatenbankoptimierungDatenbankoptimierung
Datenbankoptimierung
 
Flexibilitaet mit CDI und Apache DeltaSpike
Flexibilitaet mit CDI und Apache DeltaSpikeFlexibilitaet mit CDI und Apache DeltaSpike
Flexibilitaet mit CDI und Apache DeltaSpike
 
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
 
JavaScript Performance
JavaScript PerformanceJavaScript Performance
JavaScript Performance
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
 
Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?
 
Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)
 
dotnet Cologne 2013 - Windows Azure Mobile Services
dotnet Cologne 2013 - Windows Azure Mobile Servicesdotnet Cologne 2013 - Windows Azure Mobile Services
dotnet Cologne 2013 - Windows Azure Mobile Services
 
Test-Driven-Development mit JUnit 4
Test-Driven-Development mit JUnit 4Test-Driven-Development mit JUnit 4
Test-Driven-Development mit JUnit 4
 
Automated Web 2.0 Testing
Automated Web 2.0 TestingAutomated Web 2.0 Testing
Automated Web 2.0 Testing
 
Speeding up Java Persistence
Speeding up Java PersistenceSpeeding up Java Persistence
Speeding up Java Persistence
 
Subversion Schulung
Subversion SchulungSubversion Schulung
Subversion Schulung
 
Einstieg in das Windows Installer XML (WiX) ToolSet
Einstieg in das Windows Installer XML (WiX) ToolSetEinstieg in das Windows Installer XML (WiX) ToolSet
Einstieg in das Windows Installer XML (WiX) ToolSet
 
WPF Dos n Don'ts - der WPF Rundumschlag
WPF Dos n Don'ts - der WPF RundumschlagWPF Dos n Don'ts - der WPF Rundumschlag
WPF Dos n Don'ts - der WPF Rundumschlag
 

Destacado

Elektronischer Personalausweis
Elektronischer PersonalausweisElektronischer Personalausweis
Elektronischer Personalausweisbofh42
 
Beispiel screenablauf klinik2
Beispiel screenablauf klinik2Beispiel screenablauf klinik2
Beispiel screenablauf klinik2mpwirges
 
Guias de sme coronarios agudos
Guias de sme coronarios agudosGuias de sme coronarios agudos
Guias de sme coronarios agudosLucía Battistella
 
200611202051440.genero narrativo (1)
200611202051440.genero narrativo (1)200611202051440.genero narrativo (1)
200611202051440.genero narrativo (1)gloriagodoyanabalon
 
Principios Electricos y Aplicaciones digitales
Principios Electricos y Aplicaciones digitalesPrincipios Electricos y Aplicaciones digitales
Principios Electricos y Aplicaciones digitalesKaraa Xiah Poot
 
Gdd Erfa 20071011
Gdd Erfa 20071011Gdd Erfa 20071011
Gdd Erfa 20071011bofh42
 
Windows 8 einführung
Windows 8   einführungWindows 8   einführung
Windows 8 einführungchmoser79
 
Einführung in User Experience Design
Einführung in User Experience DesignEinführung in User Experience Design
Einführung in User Experience Designchmoser79
 
BürKonzeptvorschlag 2008 svb verbesserung rahmenbedingungen
BürKonzeptvorschlag 2008 svb verbesserung rahmenbedingungenBürKonzeptvorschlag 2008 svb verbesserung rahmenbedingungen
BürKonzeptvorschlag 2008 svb verbesserung rahmenbedingungenMichael Seeleithner
 
Presentación the family
Presentación the familyPresentación the family
Presentación the familyAida Cousillas
 

Destacado (20)

Erfolgsfaktor app!
Erfolgsfaktor app!Erfolgsfaktor app!
Erfolgsfaktor app!
 
Elektronischer Personalausweis
Elektronischer PersonalausweisElektronischer Personalausweis
Elektronischer Personalausweis
 
Beispiel screenablauf klinik2
Beispiel screenablauf klinik2Beispiel screenablauf klinik2
Beispiel screenablauf klinik2
 
Tvp y tep
Tvp y tepTvp y tep
Tvp y tep
 
Guias de sme coronarios agudos
Guias de sme coronarios agudosGuias de sme coronarios agudos
Guias de sme coronarios agudos
 
Poemas
PoemasPoemas
Poemas
 
La celula
La celulaLa celula
La celula
 
200611202051440.genero narrativo (1)
200611202051440.genero narrativo (1)200611202051440.genero narrativo (1)
200611202051440.genero narrativo (1)
 
Creación de cables
Creación de cablesCreación de cables
Creación de cables
 
Principios Electricos y Aplicaciones digitales
Principios Electricos y Aplicaciones digitalesPrincipios Electricos y Aplicaciones digitales
Principios Electricos y Aplicaciones digitales
 
Gdd Erfa 20071011
Gdd Erfa 20071011Gdd Erfa 20071011
Gdd Erfa 20071011
 
noble praxis tipps: drohnen
noble praxis tipps: drohnennoble praxis tipps: drohnen
noble praxis tipps: drohnen
 
Windows 8 einführung
Windows 8   einführungWindows 8   einführung
Windows 8 einführung
 
Los alimentos
Los alimentosLos alimentos
Los alimentos
 
TIC+TAC=APRENDIZAJE EN RED?
TIC+TAC=APRENDIZAJE EN RED?TIC+TAC=APRENDIZAJE EN RED?
TIC+TAC=APRENDIZAJE EN RED?
 
Einführung in User Experience Design
Einführung in User Experience DesignEinführung in User Experience Design
Einführung in User Experience Design
 
BürKonzeptvorschlag 2008 svb verbesserung rahmenbedingungen
BürKonzeptvorschlag 2008 svb verbesserung rahmenbedingungenBürKonzeptvorschlag 2008 svb verbesserung rahmenbedingungen
BürKonzeptvorschlag 2008 svb verbesserung rahmenbedingungen
 
Ich liebe dich
Ich liebe dichIch liebe dich
Ich liebe dich
 
Presentación the family
Presentación the familyPresentación the family
Presentación the family
 
LAK OÖ Meisterkurs
LAK OÖ MeisterkursLAK OÖ Meisterkurs
LAK OÖ Meisterkurs
 

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

Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturQAware GmbH
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!OPEN KNOWLEDGE GmbH
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsJosef Adersberger
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsQAware GmbH
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationGWAVA
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...Peter Hecker
 
MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der CloudTorsten Fink
 
Docker-Images mit vorinstallierter Instanz einer Oracle-DB
Docker-Images mit vorinstallierter Instanz einer Oracle-DBDocker-Images mit vorinstallierter Instanz einer Oracle-DB
Docker-Images mit vorinstallierter Instanz einer Oracle-DBPeter Ramm
 
Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?QAware GmbH
 
Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?Josef Adersberger
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDIadesso AG
 
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“OPEN KNOWLEDGE GmbH
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptSebastian Springer
 
Bkr Workflow Oeffentlich
Bkr Workflow OeffentlichBkr Workflow Oeffentlich
Bkr Workflow OeffentlichRalf Ruethlein
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Torsten Kleiber
 

Similar a Wie skaliert man Software as a Service Applikationen in der Windows Azure Cloud (20)

Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
BizSpark goes Cloud
BizSpark goes CloudBizSpark goes Cloud
BizSpark goes Cloud
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!
 
Node.js
Node.jsNode.js
Node.js
 
Azure WorkshopPart1 Intro
Azure WorkshopPart1   IntroAzure WorkshopPart1   Intro
Azure WorkshopPart1 Intro
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
 
MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der Cloud
 
Docker-Images mit vorinstallierter Instanz einer Oracle-DB
Docker-Images mit vorinstallierter Instanz einer Oracle-DBDocker-Images mit vorinstallierter Instanz einer Oracle-DB
Docker-Images mit vorinstallierter Instanz einer Oracle-DB
 
Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?
 
Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?
 
GWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der PraxisGWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der Praxis
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
 
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScript
 
Ruby on Rails SS09 05
Ruby on Rails SS09 05Ruby on Rails SS09 05
Ruby on Rails SS09 05
 
Bkr Workflow Oeffentlich
Bkr Workflow OeffentlichBkr Workflow Oeffentlich
Bkr Workflow Oeffentlich
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020
 

Más de Patric Boscolo

Windows 8 App Developer Day
Windows 8 App Developer DayWindows 8 App Developer Day
Windows 8 App Developer DayPatric Boscolo
 
Visual Studio 2012 - Tipps & Tricks
Visual Studio 2012 - Tipps & TricksVisual Studio 2012 - Tipps & Tricks
Visual Studio 2012 - Tipps & TricksPatric Boscolo
 
Visual Studio 11 die neue IDE
Visual Studio 11 die neue IDEVisual Studio 11 die neue IDE
Visual Studio 11 die neue IDEPatric Boscolo
 
Windows 8 für .net Entwickler
Windows 8 für .net EntwicklerWindows 8 für .net Entwickler
Windows 8 für .net EntwicklerPatric Boscolo
 
Gaming across multiple devices
Gaming across multiple devicesGaming across multiple devices
Gaming across multiple devicesPatric Boscolo
 
Mobile Web Presentation @ Multimedia Treff Köln
Mobile Web Presentation @ Multimedia Treff KölnMobile Web Presentation @ Multimedia Treff Köln
Mobile Web Presentation @ Multimedia Treff KölnPatric Boscolo
 
Eclipse & die Microsoft cloud
Eclipse & die Microsoft cloudEclipse & die Microsoft cloud
Eclipse & die Microsoft cloudPatric Boscolo
 

Más de Patric Boscolo (8)

Spass mit Sensoren
Spass mit SensorenSpass mit Sensoren
Spass mit Sensoren
 
Windows 8 App Developer Day
Windows 8 App Developer DayWindows 8 App Developer Day
Windows 8 App Developer Day
 
Visual Studio 2012 - Tipps & Tricks
Visual Studio 2012 - Tipps & TricksVisual Studio 2012 - Tipps & Tricks
Visual Studio 2012 - Tipps & Tricks
 
Visual Studio 11 die neue IDE
Visual Studio 11 die neue IDEVisual Studio 11 die neue IDE
Visual Studio 11 die neue IDE
 
Windows 8 für .net Entwickler
Windows 8 für .net EntwicklerWindows 8 für .net Entwickler
Windows 8 für .net Entwickler
 
Gaming across multiple devices
Gaming across multiple devicesGaming across multiple devices
Gaming across multiple devices
 
Mobile Web Presentation @ Multimedia Treff Köln
Mobile Web Presentation @ Multimedia Treff KölnMobile Web Presentation @ Multimedia Treff Köln
Mobile Web Presentation @ Multimedia Treff Köln
 
Eclipse & die Microsoft cloud
Eclipse & die Microsoft cloudEclipse & die Microsoft cloud
Eclipse & die Microsoft cloud
 

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“
  • 4. Quelle: Bing Picture of the Day
  • 5. 12:38 Sensoren Kommunikation APP ID Akteure
  • 6. 12:38 12:38 notification Application Logic Data
  • 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/
  • 12. Vertikale vs. Horizontale Skalierung Vertikal == Mehr Resourcen Horizontal == Mehr Instanzen
  • 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
  • 33. Versionierte URLs Superawesome WebApp http://myapp.cloudapp.net … <img src="http://azXXXX.vo.msecnd. CDN net/images/logo.2011-11- net/images/logo.2011-09- logo.2011-09-16.png 22.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
  • 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
  • 36. Synchronisierung • SQL Azure DataSync via Windows Azure Management Studio
  • 37. Zusammenfassung • Asynchrone Ausführung • Cachen wo möglich • Wiederholte Ausführung • Verwendung des CDN • Transaktionssicherheit für Inhalte • Skalieren aller Schichten • Datensynchronisation
  • 39. Resourcen Twitter: patricsmsdn Blog: http://blogs.msdn.com/patricb Mail: patbosc@microsoft.com

Notas del editor

  1. http://www.flickr.com/photos/32975477@N02/4566833793/
  2. 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.