Your SlideShare is downloading. ×
MIGRATION VONANWENDUNGENIN DIE CLOUDDariusz ParysTechnical Strategist Web PlatformMicrosoft Deutschland GmbH28.03 – 08.04....
INHALT DIESER SESSION• Architektur Azure-basierter Cloud Services• Beispiel: Kassenverwaltung• Migration des Beispiels• We...
ARCHITEKTUR AZURE-BASIERTER CLOUDSERVICESCloud ServiceLBhttp://myApp.cloudapp.netWorker RoleWorker Role 2Worker Role 1Web ...
LEISTUNG VON PAAS UNDARCHITKTURENTSCHEIDUNGENCloud ServiceLBhttp://myApp.cloudapp.netWorker RoleWorker Role 2Worker Role 1...
HOCHVERFÜGBARKEIT> Herausforderung:> Ausführungsort eines Cloud Service kannzur Laufzeit wechseln und lokale Datenkönnen v...
PERSISTENZ IN WINDOWS AZURESQL Azure WA Tables WA Queues WA Blobs WA Drives Lokales FSTabellen mitSchemaKey-Value Nachrich...
SZENARIO FÜR DIESE SESSION• Eine zentrale Kassenverwaltung mit Anbindung an einLagersystem. Aktualisierungen durch Kassens...
ARCHITEKTUR DER ANWENDUNGSlide 8LagerBuchungenStore Central(ASP.NET MVC)WebServiceKasseFilialleiterSQL ServerIISBrowserWin...
Slide 9DEMO: POS CENTRAL
Store Central(ASP.NET MVC)WebServiceMIGRATION DER ARCHITEKTURSlide 10KasseFilialleiterBrowserWindows FormsSQL AzureBuchung...
MIGRATIONSSCHRITTE• Datenbank Schema und Daten migrieren• MVC Projekt als Web Role hinzufügen• Diagnostic hinzufügen• Work...
DATENBANK MIGRATIONSlide 12
DATENBANK BENUTZER• Integrated Security  Nein• Umstellung des Connection Strings• Anlegen eines dedizierten Benutzers für...
DATENBANK SCHEMA MIGRIEREN• Entity Framework  „Generate Database From Model“• SQL Server Management Studio  Generate Scr...
DATENBANK INHALTE MIGRIEREN• SQL Server Integration Services• BCP.EXESlide 15
Slide 16SQL Azure Migration Wizard<http://sqlazuremw.codeplex.com>
DATENBANK BENUTZER ANLEGENSlide 17CREATE LOGIN posuser WITH PASSWORD = passwortCREATE USER pos FOR LOGIN posuserWITH DEFAU...
EF CONNECTIONSTRING ANPASSENSlide 18Data Source=(local)sqlexpress;Initial Catalog=POSCentral;Integrated Security=True;Pool...
Slide 19DEMO: DATENBANK MIGRATION
MIGRAION DER WEB ANWENDUNGSlide 20
MVC PROJEKT IN WEB ROLEUMWANDELN• Visual Studio 2010 in Admin Mode starten• Hinzufügen der Azure Assembly Referenzen• Micr...
WEBROLE.CSSlide 22public class WebRole : RoleEntryPoint{public override bool OnStart(){// eigener Initialisierungscoderetu...
Slide 23Using SQL Azure for Session State<http://blogs.msdn.com/b/sqlazure/archive/2010/08/04/10046103.aspx>
Slide 24DEMO: MVC  WEB ROLE
LOGS UND DIAGNOSTICSSlide 25
EMULATION != CLOUD• Logging ist Essentiell• Manche Fehler treten nur in der Produktivumgebung auf• z.B. fehlende Assemblie...
EMULATION != CLOUD• Das sollte man auf jeden Fall beobachten• IIS 7• Tracing• Crash Dumps• Windows Event Logs• Performance...
IIS 7 LOGSSlide 28<system.webServer><tracing><traceFailedRequests><add path="*"><traceAreas><add provider="ASPNET" areas="...
TRACE LISTENERSlide 29<system.diagnostics><trace><listeners><add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonito...
INITIALISIERUNGSCODESlide 30var wadConnectionString ="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString";var sto...
INITIALISIERUNGSCODE IISlide 31config.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1D);config.Logs.ScheduledTransfe...
INITIALISIERUNGSCODE IIISlide 32config.WindowsEventLog.DataSources.Add("System!*");config.WindowsEventLog.DataSources.Add(...
INITIALISIERUNGSCODE IVSlide 33Crash DumpsCrashDumps.EnableCollection(true);Setzen der neuen Konfigurationeinstellungenrol...
DIE OS VERSIONEN UND LOGGING• Windows Server 2008 SP2• Windows Server 2008 R2Slide 34<ServiceConfigurationserviceName="Azu...
Slide 35Copy Logs Bug mit Windows Server 2008 R2Workaround von Christian Weyer
Slide 36DEMO: DIAGNOSTICS
DEPLOYMENTSlide 37
DAS DEPLOYMENT• Windows Azure Management Portal• Powershell Commandlets• Visual Studio 2010Slide 38
ZERTIFIKATE• Für das Deployment aus einem Tool benötigt man einManagement Zertifikat• Für die Remote Desktop Verbindung be...
INTELLITRACE AKTIVIEREN BEIMDEPLOYMENT AUS VISUAL STUDIO 2010• Intellitrace lässt sich beim Deployment aktivieren• Nachträ...
Slide 41System.Web.Mvc aufCopyLocal = true setzen
Slide 42Ausfallsicherheit (SLA) ist nur beim Deploymentvon mindestens 2 Instanzen pro Rollegewährleistet
Slide 43DEMO: DEPLOYMENT
WORKER ROLESlide 44
LAGERBESTANDVERWALTUNG INWORKER ROLE AUSLAGERN• Neues Worker Role Projekt hinzufügen• Die WF4 Aktivität in die Worker Role...
MIT QUEUES ARBEITENSlide 46var storageAccount =CloudStorageAccount.FromConfigurationSetting("DataConnectionString");queueS...
MIT QUEUES ARBEITEN IISlide 47public override void Run(){Trace.WriteLine("WarehouseRole entry point called", "Information"...
MIT QUEUES ARBEITEN IIISlide 48public void Transfer(POSBill bill){...var queue = queueStorage.GetQueueReference("bills");v...
Slide 49DEMO: WORKER ROLE
WEITERE SZENARIEN + BEISPIELE• Silverlight• Rein Silverlight benötigt nur Blob Storage• Rein SL + OData  Blob Storage + S...
Slide 51dparys@microsoft.com@writelinehttp://downtocode.net
VIELEN DANK!Slide 52
Upcoming SlideShare
Loading in...5
×

Migration von Anwendungen in die Cloud

99

Published on

Älteres Deck von meinem Talk auf irgendeiner Cloud Konferenz

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
99
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Migration von Anwendungen in die Cloud"

  1. 1. MIGRATION VONANWENDUNGENIN DIE CLOUDDariusz ParysTechnical Strategist Web PlatformMicrosoft Deutschland GmbH28.03 – 08.04.2011Slide 1
  2. 2. INHALT DIESER SESSION• Architektur Azure-basierter Cloud Services• Beispiel: Kassenverwaltung• Migration des Beispiels• Weitere SzenarienSlide 2
  3. 3. ARCHITEKTUR AZURE-BASIERTER CLOUDSERVICESCloud ServiceLBhttp://myApp.cloudapp.netWorker RoleWorker Role 2Worker Role 1Web RoleWeb RoleWindows AzureStorage(Table, Blob, Queue)SQL Azure Internet Services
  4. 4. LEISTUNG VON PAAS UNDARCHITKTURENTSCHEIDUNGENCloud ServiceLBhttp://myApp.cloudapp.netWorker RoleWorker Role 2Worker Role 1Web RoleWeb RoleWindows AzureStorage(Table, Blob, Queue)SQL Azure Internet ServicesVerteilung derAnwendungslogikOptimierung derInstanzenzahlKoppelungder RollenTraffic über RZ-Grenzen hinwegPersistenzHoch-Verfügbarkeit
  5. 5. HOCHVERFÜGBARKEIT> Herausforderung:> Ausführungsort eines Cloud Service kannzur Laufzeit wechseln und lokale Datenkönnen vernichtet werden, z.B. bei> Hardware-Ausfall / Host Update> Guest OS-Upgrade> Lösung:> Korrekte Persistenzoptionen verwenden> Architekturmuster verwenden (s.u.)> Lose Koppelungz.B. über ein Bus System(AppFabric Service Bus)> Vermeidung von „Shutdown“-Code> Einsatz von Queues für asynchroneKommunikation (Azure Queues)
  6. 6. PERSISTENZ IN WINDOWS AZURESQL Azure WA Tables WA Queues WA Blobs WA Drives Lokales FSTabellen mitSchemaKey-Value Nachrichten Blobs flexibel flexibelInformationstypJa, 3-fach Ja, 3-fach Ja, 3-fach Ja, 3-fach Ja, 3-fach NeinRedundanzJa Ja Ja Ja Ja NeinToleranz gegenInstanzausfallSehr gut,flexible KeysGut, ein Key Nein Nein Nein NeinZugriffs-optimierungHoch Hoch Hoch Hoch Hoch Sehr hochDatendurchsatzTDS REST REST REST NTFS NTFSSchnittstelleDatenbank-MaximalgrößeTatsächlicherSpeicherTatsächlicherSpeicherTatsächlicherSpeicherTatsächlicherSpeicherKeineSpeicherkostenKeine Pro Transaktion Pro Transaktion Pro Transaktion Pro Transaktion KeineZugriffskostenRelationaleDatenbank• Session-Persistenz• Massendatenmit einemSchlüsselAsynchroneKommunikation (z.B. zwischenRollen)Ablage vongroßenBinärdaten (z.B.Dokumente,Multimedia)Einsatz vonFrameworks,die einDateisystembenötigenCaching vonDatenTypischesEinsatz-szenarienAlternativen für die Datenspeicherung
  7. 7. SZENARIO FÜR DIESE SESSION• Eine zentrale Kassenverwaltung mit Anbindung an einLagersystem. Aktualisierungen durch Kassensoftware inden Filialen• Technisch:• ASP.NET MVC 2• Entity Framework 4• Workflow Foundation 4• IIS 7Slide 7
  8. 8. ARCHITEKTUR DER ANWENDUNGSlide 8LagerBuchungenStore Central(ASP.NET MVC)WebServiceKasseFilialleiterSQL ServerIISBrowserWindows Forms
  9. 9. Slide 9DEMO: POS CENTRAL
  10. 10. Store Central(ASP.NET MVC)WebServiceMIGRATION DER ARCHITEKTURSlide 10KasseFilialleiterBrowserWindows FormsSQL AzureBuchungenLagerSQL AzureWindows AzureWorkflowQueue
  11. 11. MIGRATIONSSCHRITTE• Datenbank Schema und Daten migrieren• MVC Projekt als Web Role hinzufügen• Diagnostic hinzufügen• Workflow in Worker Role hinzufügen• DeploymentSlide 11
  12. 12. DATENBANK MIGRATIONSlide 12
  13. 13. DATENBANK BENUTZER• Integrated Security  Nein• Umstellung des Connection Strings• Anlegen eines dedizierten Benutzers für die DatenbankSlide 13
  14. 14. DATENBANK SCHEMA MIGRIEREN• Entity Framework  „Generate Database From Model“• SQL Server Management Studio  Generate ScriptsSlide 14
  15. 15. DATENBANK INHALTE MIGRIEREN• SQL Server Integration Services• BCP.EXESlide 15
  16. 16. Slide 16SQL Azure Migration Wizard<http://sqlazuremw.codeplex.com>
  17. 17. DATENBANK BENUTZER ANLEGENSlide 17CREATE LOGIN posuser WITH PASSWORD = passwortCREATE USER pos FOR LOGIN posuserWITH DEFAULT_SCHEMA = dbo;EXEC sp_addrolemember Ndb_owner, Npos;In der Master-DatenbankIn der Ziel-Datenbank
  18. 18. EF CONNECTIONSTRING ANPASSENSlide 18Data Source=(local)sqlexpress;Initial Catalog=POSCentral;Integrated Security=True;Pooling=False;MultipleActiveResultSets=TrueBisherData Source=sxz382mwst.database.windows.net;Initial Catalog=POSCentral;User Id=posuser;Password=pass@word1;Pooling=False;MultipleActiveResultSets=FalseNeu
  19. 19. Slide 19DEMO: DATENBANK MIGRATION
  20. 20. MIGRAION DER WEB ANWENDUNGSlide 20
  21. 21. MVC PROJEKT IN WEB ROLEUMWANDELN• Visual Studio 2010 in Admin Mode starten• Hinzufügen der Azure Assembly Referenzen• Microsoft.WindowsAzure.Diagnostics• Microsoft.WindowsAzure.ServiceRuntime• Microsoft.WindowsAzure.StorageClient• Hinzufügen einer WebRole Klasse• Einstiegspunkt für Windows Azure• Konfiguration der Einstellungen• z.B. Wieviele Instanzen, Welches Betriebssystem, etc...• Starten der Anwendung in der EmulationSlide 21
  22. 22. WEBROLE.CSSlide 22public class WebRole : RoleEntryPoint{public override bool OnStart(){// eigener Initialisierungscodereturn base.OnStart();}}
  23. 23. Slide 23Using SQL Azure for Session State<http://blogs.msdn.com/b/sqlazure/archive/2010/08/04/10046103.aspx>
  24. 24. Slide 24DEMO: MVC  WEB ROLE
  25. 25. LOGS UND DIAGNOSTICSSlide 25
  26. 26. EMULATION != CLOUD• Logging ist Essentiell• Manche Fehler treten nur in der Produktivumgebung auf• z.B. fehlende Assemblies im Global Assembly CacheSlide 26
  27. 27. EMULATION != CLOUD• Das sollte man auf jeden Fall beobachten• IIS 7• Tracing• Crash Dumps• Windows Event Logs• Performance Counter• Zusätzliche Konfiguration und Initialisierungscode nötigSlide 27
  28. 28. IIS 7 LOGSSlide 28<system.webServer><tracing><traceFailedRequests><add path="*"><traceAreas><add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" /><add provider="ISAPI Extension" verbosity="Verbose" /><add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module" verbosity="Verbose" /></traceAreas><failureDefinitions statusCodes="400-599" /></add></traceFailedRequests></tracing></system.webServer>web.config
  29. 29. TRACE LISTENERSlide 29<system.diagnostics><trace><listeners><add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener,Microsoft.WindowsAzure.Diagnostics,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35"name="AzureDiagnostics"><filter type="" /></add></listeners></trace></system.diagnostics>web.config
  30. 30. INITIALISIERUNGSCODESlide 30var wadConnectionString ="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString";var storageAccount =CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(wadConnectionString));var roleInstanceDiagnosticManager =storageAccount.CreateRoleInstanceDiagnosticManager(RoleEnvironment.DeploymentId,RoleEnvironment.CurrentRoleInstance.Role.Name,RoleEnvironment.CurrentRoleInstance.Id);DiagnosticMonitorConfiguration config =DiagnosticMonitor.GetDefaultInitialConfiguration();WebRole – OnStart()
  31. 31. INITIALISIERUNGSCODE IISlide 31config.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1D);config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Undefined;Windows Azure Logsconfig.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(1D);IIS 7 Logs + Failed Request Logsconfig.DiagnosticInfrastructureLogs.ScheduledTransferLogLevelFilter =LogLevel.Warning;config.DiagnosticInfrastructureLogs.ScheduledTransferPeriod =TimeSpan.FromMinutes(1D);Infrastructure Logs
  32. 32. INITIALISIERUNGSCODE IIISlide 32config.WindowsEventLog.DataSources.Add("System!*");config.WindowsEventLog.DataSources.Add("Application!*");config.WindowsEventLog.ScheduledTransferPeriod =TimeSpan.FromMinutes(1D);Windows Event Logsvar procTimeConfig = new PerformanceCounterConfiguration();procTimeConfig.CounterSpecifier = @"Processor(*)% Processor Time";procTimeConfig.SampleRate = TimeSpan.FromSeconds(1.0);config.PerformanceCounters.DataSources.Add(procTimeConfig);Performance Counter
  33. 33. INITIALISIERUNGSCODE IVSlide 33Crash DumpsCrashDumps.EnableCollection(true);Setzen der neuen KonfigurationeinstellungenroleInstanceDiagnosticManager.SetCurrentConfiguration(config);
  34. 34. DIE OS VERSIONEN UND LOGGING• Windows Server 2008 SP2• Windows Server 2008 R2Slide 34<ServiceConfigurationserviceName="AzurePOSCentral"xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1"osVersion="*">ServiceConfiguration.cscfg<ServiceConfigurationserviceName="AzurePOSCentral"xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="2"osVersion="*">ServiceConfiguration.cscfg
  35. 35. Slide 35Copy Logs Bug mit Windows Server 2008 R2Workaround von Christian Weyer
  36. 36. Slide 36DEMO: DIAGNOSTICS
  37. 37. DEPLOYMENTSlide 37
  38. 38. DAS DEPLOYMENT• Windows Azure Management Portal• Powershell Commandlets• Visual Studio 2010Slide 38
  39. 39. ZERTIFIKATE• Für das Deployment aus einem Tool benötigt man einManagement Zertifikat• Für die Remote Desktop Verbindung benötigt die Rolleden Private Key des Management Zertifikat Verschlüsselung von CredentialsSlide 39
  40. 40. INTELLITRACE AKTIVIEREN BEIMDEPLOYMENT AUS VISUAL STUDIO 2010• Intellitrace lässt sich beim Deployment aktivieren• Nachträgliches Post-Mortem Debugging der einzelnenRollenSlide 40
  41. 41. Slide 41System.Web.Mvc aufCopyLocal = true setzen
  42. 42. Slide 42Ausfallsicherheit (SLA) ist nur beim Deploymentvon mindestens 2 Instanzen pro Rollegewährleistet
  43. 43. Slide 43DEMO: DEPLOYMENT
  44. 44. WORKER ROLESlide 44
  45. 45. LAGERBESTANDVERWALTUNG INWORKER ROLE AUSLAGERN• Neues Worker Role Projekt hinzufügen• Die WF4 Aktivität in die Worker Role packen• WebRole.cs Code hinzufügen• Web Role Implementierung des WCF Dienstes anpassenSlide 45
  46. 46. MIT QUEUES ARBEITENSlide 46var storageAccount =CloudStorageAccount.FromConfigurationSetting("DataConnectionString");queueStorage = storageAccount.CreateCloudQueueClient();CloudQueue queue = queueStorage.GetQueueReference("bills");queue.CreateIfNotExist();Queue anlegenCloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>{configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));});Notwendiger Code um Konfigurationen lesen zu können
  47. 47. MIT QUEUES ARBEITEN IISlide 47public override void Run(){Trace.WriteLine("WarehouseRole entry point called", "Information");var queue = queueStorage.GetQueueReference("bills");while (true){var message = queue.GetMessage();if (message != null){// WF4 hier aufrufen}queue.DeleteMessage(message);}Thread.Sleep(10000);Trace.WriteLine("Working", "Information");}Worker wartet auf Arbeit
  48. 48. MIT QUEUES ARBEITEN IIISlide 48public void Transfer(POSBill bill){...var queue = queueStorage.GetQueueReference("bills");var message = new CloudQueueMessage(builder.ToString());queue.AddMessage(message);...}Web Role verschickt Rechnung über die Queue
  49. 49. Slide 49DEMO: WORKER ROLE
  50. 50. WEITERE SZENARIEN + BEISPIELE• Silverlight• Rein Silverlight benötigt nur Blob Storage• Rein SL + OData  Blob Storage + SQL Azure• Web Plattformen (Php, Java, Ruby und node.js)• Acceleration Kits• Startup Tasks <http://blog.smarx.com/posts/windows-azure-startup-tasks-tips-tricks-and-gotchas>• Native Anwendungen• C++ lässt sich einfach integrieren• Beispiel auf http://blogs.msdn.com/b/dparys/archive/2009/12/08/verteiltes-rechnen-mit-windows-azure-und-c.aspx• <http://things.smarx.com/>Slide 50
  51. 51. Slide 51dparys@microsoft.com@writelinehttp://downtocode.net
  52. 52. VIELEN DANK!Slide 52

×