Windows Azure Web Sites Things they don’t teach kids in school Maarten Balliauw @maartenballiauw
Sep 08, 2014
Windows Azure Web SitesThings they don’t teach kids in schoolMaarten Balliauw@maartenballiauw
Who am I? Maarten Balliauw Technical Evangelist, JetBrains AZUG Focus on web ASP.NET MVC, Windows Azure, SignalR, ... MVP Windows Azure & ASPInsider Big passion: Windows Azure http://blog.maartenballiauw.be @maartenballiauw Shameless self promotion: Pro NuGet - http://amzn.to/pronuget2
Saturday, March 29, 2014 http://global.windowsazurebootcamp.com
90+ locations last year, this year let’s go for a 100!
96Locations
Possibly the largest community event ever
7432Attendees
194Sessions
154Speakers
74MVP’s
Agenda Windows Azure Web Sites Architecture Project Kudu Kudu kung-fu Application log streaming Managing settings Staging and Production Multi-tier deployments Customizing deployments Running batch files / background processes (*)
Alt+Shift+Up
Windows Azure Web Sites
Start Simplestart free, scale up and out as you go, friction-free and without the headaches
Your waywith asp.net, php or node.js, develop on Windows, OSX or Linux
Go Livedeploy live in seconds,
easily monitor performance, rapidly diagnose and fix issues
Web Sites in Seconds
dem
o
Windows AzureWeb Sites
Architecture
Load balancer Layers 1st layer: Windows Azure load balancer 2nd layer: IIS + ARR
ARR (disclaimer: not ) “Reverse proxy” Verifies hosting database (plans, quotas, …) Negotiates best node to run your site on Site not used much? Put it on a highly loaded machine
Web servers %SYSTEM32%\inetsrv\config\applicationHost.config is taken out of the loop SQL Azure No refreshing of all app pools when file is saved
Storage “File share” hosted on other machines Using “WA drive” on blob storage
Dynamic website activation service Verifies runtime database (plans, quotas, …) Site not used for a while? Remove it from the server
Web Sites are not in IIS. They only are when a request comes
in!
Azure LB
Runtime DB
Storage Controller
IIS ARR(LB)
Web Worker
Other databases
1
2
3
4
5
5
5
5
1st request (cold site)
Storage Controller
IIS ARR(LB)
Web Worker
Other database
s
1 2
3
3
3
3
xth request (hot site)
Azure LB
Your app not being used for a while?
Provisioning, publishing, metering Provisioning and publishing Storage and database != launching a website on web farm
Metering By web servers once a site is loaded Reported back to runtime database
Runtime DB
Azure LB
Storage Controller
IIS ARR(LB)
Web Worker
X-DriveDeployment Server
Other databa
ses
SQL Azure
Blob storage
Windows Azure Worker Role
Provisioning / API Frontend
Metering
DWAS
Site (W3WP.exe)Site (W3WP.exe)Site (W3WP.exe)
Provisioning, publishing, metering
Need more proof?Windows Azure Pack(http://www.microsoft.com/en-us/server-cloud/windows-azure-pack.aspx)Or:http://blog.maartenballiauw.be/post/2012/07/24/Hands-on-Windows-Azure-Services-for-Windows.aspx
Project Kudu
Project Kudu “The engine behind git deployments on Windows Azure” Open source (www.github.com/projectkudu/kudu) Provides git deployments Provides builds Provides sandboxing Provides hosting
dem
o
Project Kudu
Pointers from the Kudu repository Website extensions (analytics?) Job runner / “worker role” “KuduCalf” (A Kudu is an Antelope. Its baby is a calf. A Kudu Calf is deployed
from Kudu.)
Kudu kung-fu
dem
o
Application log streaming
Log streaming All logs from the LogFiles/Application folder Or configure it when querying: azure log tail <site> -p http Settings DIAGNOSTICS_LASTRESORTFILE -> file to log to when diagnostics
go wrong DIAGNOSTICS_LOGGINGSETTINGSFILE -> settings file (json) DIAGNOSTICS_TEXTTRACELOGDIRECTORY -> default folder DIAGNOSTICS_TEXTTRACEMAXLOGFILESIZEBYTES-> log rotation
(bytes) DIAGNOSTICS_TEXTTRACEMAXLOGFOLDERSIZEBYTES -> max log
size (bytes)
dem
o
Managing settingsand secrets!
dem
o
Staging and production
dem
o
Multi-tierDeploying a specific project file
Multi-tier remarks… One .deployment file per branch [config]project=MultiTier.WebApi/MultiTier.WebApi.csproj
How do I deploy all tiers in a separate website? .deployment file per branch and every tier in a branch or customize the build How do I deploy all tiers in the same website? No .deployment file, just use virtual directories
Customizing the build process Check https://github.com/projectkudu/kudu/wiki/Deployment-hooks .deployment file [config]command=<whatever command>
Write in batch file, bash script, PHP, JavaScript, …
dem
o
Customizing deploymentsAn introduction
What can I do in scripts? A lot :-) (but not too much… there’s a sandbox) Environment variables: DEPLOYMENT_SOURCE DEPLOYMENT_TARGET DEPLOYMENT_TEMP WEBROOT_PATH MSBUILD_PATH + everything you feed it through the management portal
dem
o
Customizing deploymentsSample deployment script
Great… but why? We’ve seen the multi-tier scenario We can download stuff (NuGet package restore, pull in external Git repos before build)
We can run stuff (msbuild, nuget.exe, curl, php, node, …)
dem
o
Customizing deploymentsWhat about running unit tests?
dem
oRunning background processes (workers)Note: only in Kudu at this time!
Need. Moar!
Moar out of the box REST API https://github.com/projectkudu/kudu/wiki/REST-API
Creating a custom handlerhttp://www.windowsazure.com/en-us/develop/python/tutorials/web-sites-with-django/
Need. MOAR!!!
A private Kudu build in web sites?
Build and FTP the artifacts/debug/KuduService to your website Add USE_PRIVATE_KUDU=1 app setting Enjoy the ride! (but don’t call support, you’re on your own)
See http://blog.davidebbo.com/2012/06/developing-kudu-locally-and-on-azure.html
A private Kudu build in web sites?
Conclusion
Key takeaways Windows Azure Web Sites are high density Hosted on Cloud Services Kudu is our best friend Settings and secrets Muliple environments Multiple tiers Build customization Unit tests Worker roles Kudu-in-Kudu
Thank you!
http://blog.maartenballiauw.be
@maartenballiauwhttp://amzn.to/pronuget