This document discusses strategies for migrating applications to the Azure cloud platform. It covers choosing a porting model like moving web sites to web roles. Tips are provided like enabling full IIS, moving configuration out of web.config, and rewriting native code ISAPI filters. Stateful and stateless services running on worker roles or VM roles are also discussed. The document provides additional migration tips around logging, SQL, and monitoring applications in the cloud.
Full IIS vs.Hosted Web Core Multiple sites or virtual applications activation of WCF services over non-HTTP transportsSimple, less resources
8.
Tip: Enable FullIIS <Sites> <Site name="Web"> <Bindings> <Binding name="Endpoint1" endpointName="Endpoint1" /> </Bindings> </Site> </Sites>Add Sites to the csdef file….
9.
Tip: Shy awayfrom session stateASP.NET cache is not shared between instances as wellMove session to SQL azureVelocity for Azure is coming later in the yearYou can use memcached meanwhile
10.
Tip: Move configurationfrom app.config/web.configChanges in web.config – mean redeploymentMove
11.
Tip: native codeISAPI filters are tricky to import…Consider rewriting
12.
Can you Azurethis?<html> <head><title>Hello World PHP</title></head> <body> <?phpecho 'Today is '. date('Y-m-d') ."\n"; ?> </body> </html>
13.
Add a Webrole.config…<?xmlversion="1.0" encoding="utf-8" ?><configuration><system.webServer><fastCgi><applicationfullPath="%RoleRoot%\approot\php\php-cgi.exe"/></fastCgi></system.webServer></configuration>…and enable native code in the .csdef<WebRolename="WebRole"enableNativeCodeExecution="true
Run under fullIIS to get scale out and management capabilities Service 1Service 1Service 2Service 2Service 3Service 3Web Role (full IIS)Web Role (full IIS)
16.
Tip: Make yourWCF accessible to silverlight clients <?xml version="1.0" encoding="utf-8" ?><!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"><cross-domain-policy><allow-http-request-headers-from domain="*" headers="*"/></cross-domain-policyDrop crossdomain.xml in the root directory of the WebRole
Need to buildavailability on top SQL Migration Wizard
29.
Tip: SQL RetrySQL Connections: Retry on failureConnections can drop for variety of reasonsIdlenessTransient (network) errorsIntentional throttlingFirst step: reconnect immediatelyHandles idleness- and transient-disconnectsGateway handles connection retry for appConnections attempted for ~30s before failureWhat to do on connection failure?Wait (10 seconds), then retry Change your workload if throttled
Existing apps weredeveloped in an age of abundance in resourcesCloud apps should be more cost aware
32.
What else?Monitoring Application LifecycleManagement (including system & performance testing) Archiving Authentication and authorization (between tiers as well as of users)CDNsCharging modelConfigurationData Access LayerData encryption Data partitioning Data storage and transactions Dependencies and 3rd party components Deployment, continuous integration & automationDiagnostics, logging & instrumentation Elasticity (dynamic, scheduled, or manual) Geographical co-locationIdempotencyImport/export routines Message security Message size Multi-tenancyNetwork latency Page weightReporting Session state SLAs (availability, performance, etc) SQL features Windows Services & batch jobshttp://blogs.msdn.com/b/simonince/archive/2010/04/13/checklist-discussing-an-azure-migration.aspx
33.
E.g. Can’t hostSMTP server in the cloudCan open TCP connection from Azure to the outside world … (and find a SMTP server)