windows azure web sites - things they don’t teach kids in school

Post on 19-May-2015

2.600 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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.

TRANSCRIPT

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!

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

top related