Upload
maarten-balliauw
View
2.600
Download
1
Embed Size (px)
DESCRIPTION
Microsoft has a cloud platform which runs .NET, NodeJS and PHP. All 101 talks out there will show you the same: it’s easy to deploy, it scales out on demand and it runs WordPress. Great! But what about doing real things? In this session, we’ll explore the things they don’t teach kids in school. How about trying to find out the architecture of this platform? What about the different deployment options for Windows Azure Web Sites, the development flow and some awesome things you can do with the command line tools? Did you know you can modify the automated build process? Join me in this exploration of some lesser known techniques of the platform.
Citation preview
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/pronuget
Agenda Windows Azure Web Sites
Architecture
Project Kudu
Kudu kung-fu
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
Web Sites are not in IIS until a request comes in!
Load balancer Layers 1st layer: Windows Azure load balancer 2nd layer: IIS + ARR
ARR “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
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
What I find awesome… Windows Azure Web Sites runs on Windows Azure Cloud Services
ARR nodes are in fault/update domains
Web Workers are in fault/update domains
Storage nodes are in fault/update domains
Data is on SQL Azure
Files are on blob storage
dem
o
Let’s find some proof…
Need more proof?Windows Azure Services for Windows Server (http://www.microsoft.com/hosting/en/us/services.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
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
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 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?
Need. Moar!
Moar out of the box REST API https://github.com/projectkudu/kudu/wiki/REST-API
DropBox support
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 Kudu-in-Kudu
Thank you!
http://blog.maartenballiauw.be
@maartenballiauw
http://amzn.to/pronuget