Azure Web SItes - Things they don't teach kids in school - Multi-Mania
-
Upload
maarten-balliauw -
Category
Technology
-
view
596 -
download
0
description
Transcript of Azure Web SItes - Things they don't teach kids in school - Multi-Mania
Azure Web SitesThings they don’t teach kids in schoolMaarten Balliauw@maartenballiauw
Who am I?
Maarten Balliauw Antwerp, Belgium Technical Evangelist, JetBrains Founder, MyGet AZUG Focus on web ASP.NET MVC, Azure, SignalR, ... MVP Azure & ASPInsider
Big passion: Azure http://blog.maartenballiauw.be @maartenballiauw Shameless self promotion: Pro NuGet - http://amzn.to/pronuget2
Agenda Azure Web Sites
Architecture
Project Kudu
Kudu kung-fu Application log streaming Managing settings Staging and Production Multi-tier deployments Customizing deployments Running “jobs” (batch files / background processes) Visual Studio Online
Alt+Shift+Up
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 issuesonline IDE
Web Sites in Seconds
dem
o
Azure Web Sites
Architecture
Azure Web Sites use Azure Cloud Services + load balancer Load-balanced Layer 7 reverse proxy Actual infrastructure
Blob storage Your web site is on here (GRS)
SQL Azure Your web site config + metering is on here
Web Sites are not always in IIS. They only are when requests come!
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
Runtime DB
Azure LB
Storage Controller
IIS ARR(LB)
Web Worker
X-DriveDeployment Server
Other databa
ses
SQL Azure
Blob storage
Azure Worker Role
Provisioning / API Frontend
Metering
DWAS
Site (W3WP.exe)Site (W3WP.exe)
Site (W3WP.exe)
The full picture
Need some 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
dem
o
Project Kuduon Azure Web Sites
Kudu kung-fu
Let’s be agile... Demos Application log streaming Managing settings Staging and Production Multi-tier deployments Customizing deployments Running “jobs” (batch files / background processes) Visual Studio Online
Alt+Shift+Up
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(there are more ways to do this)
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
or add an environment variable
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, …
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 KUDU_SYNC_CMD + everything you feed it through the management portal
dem
o
Customizing deploymentsSample deployment script
Great… but why? Deploy an advanced 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?
Post-Deployment scripts https://github.com/projectkudu/kudu/wiki/Post-Deployment-Action-Hooks
Deploy to other regions once the first succeeds
Send an e-mail notification
Update database
Send a Tweet
…
dem
oRunning Web Jobs(background processes)
Web Jobs There is lots more! http://www.asp.net/aspnet/overview/developing-apps-with-windows-azure/azure-webjobs-recommended-resources
Web Jobs SDK - react to what happens in blob, table, queue
Run jobs continuously Run jobs scheduled Run jobs at interval Run jobs on demand (manual /
API)
class Program { static void Main(string[] args) { JobHost host = new JobHost(); host.RunAndBlock(); }
public static void SquishNewlyUploadedPNGs( [BlobInput("input/{name}")] Stream input, [BlobOutput("output/{name}")] Stream output) { var quantizer = new WuQuantizer(); using (var bitmap = new Bitmap(input)) { using (var quantized = quantizer.QuantizeImage(bitmap)) { quantized.Save(output, ImageFormat.Png); } } }}
dem
o
Visual Studio Online
Conclusion
Key takeaways Azure Web Sites are hosted on Azure, high density
Based on Project Kudu
Kudu kung-fu Application log streaming Managing settings Staging and Production Multi-tier deployments Customizing deployments Running “jobs” (batch files / background processes) Visual Studio Online
Thank you!http://blog.maartenballiauw.be@maartenballiauwhttp://amzn.to/pronuget