Azure and Umbraco CMS
-
Upload
orbit-one-we-create-coherence -
Category
Technology
-
view
122 -
download
5
description
Transcript of Azure and Umbraco CMS
www.orbitone.com
Orbit One BVBARaas van Gaverestraat 83B-9000 GENT, BELGIUM Website www.orbitone.com
E-mail [email protected] Tel. +32 9 330 15 00VAT BE 456.457.353Bank 442-7059001-50 (KBC)
10 March, 2011Azure + Umbraco workshop
10 March, 2011Azure + Umbraco workshop2
Who are we?
Kurt ClaeysMicrosoft EMEATechnology Solution Professional Windows [email protected] http://twitter.com/kurtclaeys
Mel GeratsOrbit One, Lead [email protected]
Olivier MangelschotsOrbit One, Managing [email protected]
10 March, 2011Azure + Umbraco workshop3
Free workshop
Sponsored by Microsoft Azure
In collaboration with Belgian Umbraco User Group (BUUG.be)
Hosted by Orbit One
We are:Team of 18Microsoft Gold Partner
We build:Websites, Intranet, Portals, custom solutions
We love:.NET, SharePoint, Dynamics CRM, Umbraco, Lync, New World of Work
Orbit OneInternet Solutions
Azure + Umbraco workshop10 March, 2011
4
10 March, 2011Azure + Umbraco workshop5
Who are you?
Damiaan Peeters (Comm-IT.be)Tom Crombez (Microsoft.com)Christophe Heureux (JWTDialogue.com)David Desloovere (Natcheurope.com)Anthony Candaele (Webmove.be)Dirk De Grave (netaddICTs.be)David Verberckmoes (Promex.be)Voicu Matei (OrbitOne.com)Thomas Stock (OrbitOne.com)Lieven Meys (OrbitOne.com)Kevin De Smet (OrbitOne.com) Welcome!
10 March, 2011Azure + Umbraco workshop6
Don’t miss: Umbraco BE Festival
Friday 18 March 9:00 – 18:00deSingel Antwerp
Free entrance, register on BUUG.be International speakersSponsored by:
7 Azure + Umbraco workshop10 March, 2011
We will make everything available:SlidesBinaries/source codeDocumentation
Check www.buug.be
Downloads
10 March, 2011Azure + Umbraco workshop8
Agenda
9:30 – 11:00 Technical dive into AzureBreak
11:30 – 12:30 Umbraco CMS and AzureLunch
13:30 Azure Development Program
13:45 – 16:30 Hands-on workshop
We are a small group, let’s make it interactive!
10 March, 2011Azure + Umbraco workshop9
Is your laptop prepped?
This afternoon, you need:Visual Studio 2010Windows Azure SDK 1.3SQL Server 2008 Express R2SQL Azure migration wizardRegistered Azure Account
Links on http://www.buug.be/en/events
Technical dive into Azure
10 Azure + Umbraco workshop10 March, 2011
Who is familiar with?
Load balancer (NLB)Round robinSticky sessions
10 March, 2011Azure + Umbraco workshop11
Azure + Umbraco workshop12
Concept: Network load balancing (NLB)
10 March, 2011
Journey to the Cloud
SOFTWAREA S A S E R V I C E
PLATFORMA S A S E R V I C E
INFRASTRUCTUREA S A S E R V I C E
The Windows Azure platform is a flexible cloud–computing platform that lets you focus on solving business problems and addressing
customer needs.
Cloud Computing TaxonomyThe Windows Azure platform fits here
Traditional IT
Storage
Servers
Networking
O/S
Middleware
Virtualization
Data
Applications
Runtime
You m
anage
IaaS
Storage
Servers
Networking
O/S
Middleware
Virtualization
Data
Applications
Runtime
Managed b
y v
endor
You m
anage
You m
anage PaaS
Managed b
y v
endorStorage
Servers
Networking
O/S
Middleware
Virtualization
Applications
Runtime
Data
SaaS
Managed b
y v
endor
Storage
Servers
Networking
O/S
Middleware
Virtualization
Applications
Runtime
Data
Usage
Com
pu
te
Time
Average
Inactivity
Period
“On and Off “
On & off workloads (e.g. batch job)Over provisioned capacity is wasted Time to market can be cumbersome
Com
pu
te
Time
“Unpredictable Bursting“
Average Usage
Unexpected/unplanned peak in demand Sudden spike impacts performance Can’t over provision for extreme cases
Average Usage
Com
pu
te
Time
“Growing Fast“
Successful services needs to grow/scale Keeping up w/ growth is big IT challenge Complex lead time for deployment
Com
pu
te
Time
Average Usage
“Predictable Bursting“
Services with micro seasonality trends Peaks due to periodic increased demandIT complexity and wasted capacity
Cloud Scenarios
online tax declaration, deadline is july 15th
internet based lottery game grows faster than expected
Azure Examples
Azure Datacenters
Quincy, WA Chicago, IL San Antonio, TX Dublin, Ireland Generation 4 DCs
Azure Fabric Controller
The Fabric Controller communicates with every server within the Fabric. Interacts with a “Fabric Agent” on each machineMonitors every VM, application and instanceService Management is performed by the Fabric Controller Performs load balancing, check pointing and recovery
Fabric Controller
Fabric
X
X
X
Service Definition
Virtual NetworkCompute Storage
Data Sync
Database Reporting
CachingService Bus
Access Control
Internet
Windows Azure Service
Your Service
Web Site(ASPX, ASMX,
WCF)
Web Site(ASPX, ASMX,
WCF)Web Role
(ASPX, WCF)
Worker Service
Worker Role
Your StorageTables Blobs
Queues
NL B
Azure Architecture
SQL Data
SQL
SQL
SQL
Azure Network Load Balancer
webrole
Instance 1
Instance 2
Instance 3
NLB
Azure Network Load Balancer
webrole
Instance 1
Instance 2
Instance 3
NLB
Azure Network Load Balancer
webrole
Instance 1
Instance 2
Instance 3
NLB
“round robin”no sticky sessions !
Azure Roles
Running apps in a virtual machineA virtual machine can have 1,2,4 or 8 coresWe can have multiple instances of the VM runningThree types
Web Role = internet facing, IIS, request/response, ASP.NET or WCFWorker Role = background processing, endless loop, internal endpoints, can host WCF servicesVM Role = custom OS (W2008R2)
• WebRole– Hosting ASP.NET pages and/or WCF Services.– Handles incoming HTTP/HTTPS requests.– Public, Internet faced.– Has access to Storage Services.
• WorkerRole– Code running in background, processing jobs.– ‘Hidden’ processing power.– Similar to a batch job or Windows service.– Handles messages from a queue.– Has access to Storage Services.
Azure Roles
Storage
blobs
tables
queues
SQL Azure DB
Service
X number of Webroles
webrole 1
Instance 1 Instance 2 Instance 3
X number of Workerroles
workerrole1
internal endpoint internal endpoint internal endpoint
Instance 1 Instance 2 Instance 3
certificate
Performance Metrics
Application Log Files
Event Logs
IIS Logs
Crashdumps
Service configuration, maintainable after deploy
Service definition, defined at deployment
webrole 2
Azure Service
Instance 1
external endpoint 1 (port80)external endpoint 2 (port X)
Configuring Virtual Machines Size
VM Size CPU Cores Memory
Disk Space for Local Storage Resources
Small 1 1.7 GB 250 GB
Medium 2 3.5 GB 500 GB
Large 4 7 GB 1000 GB
ExtraLarge 8 14 GB 2000 GB
Configuring the service
Service configuration, maintainable after deployNumber of instancesConnectionString to StorageThumbprints of certificatesCustom setting
Service definition, defined at deploymentSize of VMLocal storage capacityEndpoint
ExternalInternal
Scaling (custom scaling engine)
AppApp
running on 2 instances
performance metrics
Local DB
Scaling engine
defines on metrics and polling intervalsinterprete metrics
Configuration
changes the configuration
App
3
Azure VMRole
Ability to upload your own customized WS2008R2 Enterprise imagesFull control over the OS image, install whatever you want on it.You can remote desktop into the OSTarget scenarios
Need to use apps/libraries with no unattended setup32 bits appsChange registry settings
Scale out !Instances are behind loadbalancer, one public IP per serviceNo durability of OS image on hardware failure
With VM Role, the customer creates & maintains the OSPaying model = Paying model of current web/workerroleUses differencing disks to upload deltas to image
Web/WorkerRole vs VMRoleAll three are virtual images running in the datacenter under control of the Azure fabric controller behind the loadbalancer.
Web/Worker RoleThe virtual image is already there, ... you upload your app, ... Azure places this app on the image and runs the image.
VM RoleYou upload the complete virtual image with all apps installed, ... Azure runs the image
virtual image
appapp
virtual image
app
virtual image
app
development environment Azure
development environment Azure
Hyper-V
Visual Studio
Azure Storage
Non SQL dataUnlimited storage4 types
Tables: no fixed schema, no relationsBlobs: large objects, have metadata attributes, MIME type awareQueues: assync communication to workerroleDrives: NTFS volume mounted to roles
Accessible through a HTTP/REST API
Windows Azure Storage Account
User creates a globally unique storage account name.
Account
Blob Table Queue
Storage keeps being available, even when application is not running !
Libraries
Microsoft.WindowsAzure.*
System.Data.ServicesSystem.Data.Services.Client
Found in Windows Azure SDK
.NET 3.5
using Microsoft.WindowsAzure;using Microsoft.WindowsAzure.StorageClient;using System.Data.Services.Common;
PAAS
Azure Storage Tables
table
partition key
row key
timestamp
field1
field2
field3
Tables are partitioned to support load balancing across storage nodes unique
Table Partioning
A 123 foo bar etcA 124 foo bar etcB 123 foo bar etc
Partition key Row key Data
A 123 foo bar etcA 124 foo bar etc
Partition “A”
Storage node 1
B 123 foo bar etc
Partition “B”
Storage node 2
PAAS
Azure Storage Blobs
Large dataCan be made private or publicCan have metadata attributes and MIME typesCan be cached by a Azure Content Delivery Network (CDN)Time based access to blobs with shared access signaturesTwo Types
Block Blobs : max 200GB, Use for data which is streamed back to a worker or client Page Blobs : max 1TB, Use for data accessed frequently by random reads and writes.
Azure Drives are also blobs
PAAS
Blob addressing
BlobContainerAccounts
MyAccount
SomeContainer
AnotherContainer
Pic001.jpg
Pic002.jpg
Mov001.wmv
Mov002.wmv
http://<AccountName>.blob.core.windows.net/<ContainerName>/<BlobName>
PAAS
Azure Storage Blobs accessibility
blob
private(Azure service or on
premises)
need storage credentials
public(browser, REST)
no storage credentials
time based with shared access signature
GET http://myaccount.blob.core.windows.net/pictures/profile.jpg? st=2009-02-09&se=2009-02-10 &sr=c&sp=r&si=YWJjZGVmZw%3d%3d&sig= dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN%2fRnbI%3d
Shared Access Signatures
• Limit blobs in public container to be readable only if url contains shared access signature.
• Share access signature can be made valid for a timerange only.
http://<accountname>.blob.core.windows.net/<containername>/<blobname>?se=2010-04-04T11%3A38%3A31Z&sr=b&sp=r&sig=D73BRVuRBV9nXp9rsw35b5rkLadi6YEZ4Ti1S8eeAQQ%3D
Azure Storage Drives
NTFS volume as .vhd, mounted to local OS
data
WIN7/WS2008
On premises Azure
data
Web/WorkerRole
Blob Storage
PAAS
Azure Storage Drives
WIN7/WS2008
On premises Azure
data
Web/WorkerRole
Blob Storage
mounts to driveletterlegacy IO code works
dataUpload as blobdat
a
unmounted
PAAS
Azure Content Delivery Network
Azure Datacenter
Service (webrole, workerrole)
Blob storage
user
CDN Node
requests blob
Is blob cached here ?blob
PAAS
Azure Content Delivery Network
Azure Datacenter
Service (webrole, workerrole)
Blob storage
user
CDN Node
another request
blob
PAAS
Azure Content Delivery Network
Azure datacentersDublinAmsterdam
Current CDN nodesAmsterdamDublinLondon Paris StockholmVienna Zurich
PAASOnly EU datacenters listed here
AppFabric Caching
A distributed, in-memory cache, implemented as a cloud service. The same capabilities available in Windows Server AppFabric Caching.You can programmatically interact with the cache.Out-of-the-box ASP.NET providers for both session state and page output caching.Scenarios :
Statefull, multi-instance Azuer rolesASP.NET page cachingSpeed up access to static data
AppFabric Caching
Role Instance 1 Role Instance 2 On Premise app
Caching
Read/Write data Read/Write data Read/Write data
Azure Virtual Network
Aka as “Azure Connect”Secure network connectivity between on-premises and cloud, supports standard IP protocolsAutomatic setup of secure IP-level networkExample use cases:
Enterprise app migrated to Windows Azure that requires access to on-premise SQL ServerWindows Azure app domain-joined to corporate Active Directory Remote administration and trouble-shooting of Windows Azure Roles
Enable local computers for connectivity by installing WA Connect agentDNS name resolution
Azure Virtual Network
Web/Worker VM Role
On PremiseMachine
Azure Connect Gateway
Azure Connect Gateway Azure Connect Gateway
Network policy managed through
portal
SQL Server
IPV6 address IPV6 address
IPV6 address
AppFabric Access Control
Azure ACS
WebApp
Facebook ID
ADFS2
identity providers
Claims
Redirect loginauthorization
rules
Azure Upgrades Swap Staging / Production
Get-HostedServices -subscriptionId <YOUR_SUBSCRIPTION_ID> -certificate (get-item cert:\CurrentUser\MY\<YOUR_CERTIFICATE_THUMPRINT>) | where {$_.ServiceName –eq “<YOUR_SERVICE_NAME>”} | Get-Deployment staging | Move-Deployment | Get-OperationStatus –WaitToComplete
PAAS
Azure Upgrades Rolling Upgrades
V1 instance 1
V1 instance 2
V1 instance 3
V1 instance 4
Upgrade domain 1 Upgrade domain 2
V1 instance 1
V1 instance 2
V1 instance 3
V1 instance 4
Upgrade domain 1 Upgrade domain 2
V2 instance 1
V2 instance 2
V1 instance 3
V1 instance 4
Upgrade domain 1 Upgrade domain 2
V2 instance 1
V2 instance 2
V1 instance 3
V1 instance 4
Upgrade domain 1 Upgrade domain 2
V2 instance 1
V2 instance 2
V2 instance 3
V2 instance 4
Upgrade domain 1 Upgrade domain 2
1. fabric controller brings down 1st upgrade domain
2. upgrade
3. fabric controller brings next upgrade domain
4. upgrade
SQL Azure
Relational DB in the CloudBased on SQL 2008 R2Accessible from every ADO.NET clientSQL 2008 R2 Management Studio High-availability and fault toleranceNo physical administration is required Use existing knowledge in T-SQL development Scale databases up or down based on business needs (between 1GB and 50GB)
PAAS
SQL Azure
SQL Azure Server
Master DB
My DB(1 GB)
My DB(50 GB)
admin
logins users and roles users and roles
firewall
Azure Services(webrole,workerrole)
Anybody
internal restricted IP ranges
code “near” code “far”PAAS
SQL Azure
SQL Azure Server
Master DB
My DB(1 GB)
My DB(50 GB)
admin
firewall
Azure Services(webrole,workerrole)
Anybody
internal restricted IP ranges
code “near” code “far”
stored on 3 replicas stored on 3 replicas stored on 3 replicas
PAAS
PAAS
SQL Azure quorum commit
Quorum based commit scheme where data is written to the primary and one secondary replica before we consider the transaction committed.
DB
transaction
write write
replicas
PAAS
SQL Azure quorum commit
Quorum based commit scheme where data is written to the primary and one secondary replica before we consider the transaction committed.
DB
transaction
replicas OK OK
commited
Journey to the Cloud
all in.We’r e
Short break
60 Azure + Umbraco workshop10 March, 2011
Feel at home – help yourself!Coffee, tea, Coca-Cola, Fanta, Juice, Ice tea, ...
Session continues at 11:30
CMS systems on Azure
61 Azure + Umbraco workshop10 March, 2011
Azure + Umbraco workshop62
CMS in Azure, why?
Paul Sterling [email protected] (Technical Lead)Azure solving the future issues of
•highly-scaled•widely distributed•very dynamic WCMS solutions
NOT a replacement for traditional hosting, but a new option
10 March, 2011
Azure + Umbraco workshop63
How much does it cost?
Simulation (approximate cost)1GB Azure SQL 10GB Blob storage (475000 read/write transactions/day)50GB download traffic, 5GB upload traffic
One webinstance: €86/month Two instances: €148/month Two instances + one staging: €210/month
ConclusionHosting websites on Azure = starting at €1.000€/year
Use Azure Pricing Excel to calculate!Demo?
10 March, 2011
Azure + Umbraco workshop64
WCMS in Azure
Azure is great forHigh traffic websitesSites where you need to quickly scale-up/downGlobal sites (visits many geo locations)Load balancing, stronger SLA’s
Azure is not ideal forLow cost hosting projectsProjects with lots of legacy code/dependencies
10 March, 2011
65
Umbraco in Azure
Azure + Umbraco workshop10 March, 2011
Azure + Umbraco workshop66
Umbraco v4.5+ in Azure: Challenges
What did we learn this morning?Group talk
10 March, 2011
67
Where does Umbraco store info?
SQL database: Page templates (no binaries, only references in DB)Page content (meta-data, texts, navigation nodes)Media/documents (no binaries, only reference in DB)Users & members, permissionsLogs (errors, actions in admin)
File storage: Page templates: .MasterScripts/styles: XSLT, CSS, JS, ... + design elements used in templatesUser controls: ASCX/DLLs + Umbraco binariesMedia: GIF, JPG, PDF, Videos, ...Config: web.config + /config/ xml files
10 March, 2011Azure + Umbraco workshop
68
Umbraco XML cache
XML file (/app_data/umbraco.config)Stored on local file systemContains all published nodes
PurposeFast app warm-up time (<1 sec)Less SQL queries – SQL is not used public site
Automatically updatedEvery time you publish using Umbraco backendXML dump of in-memory cache
http://forum.umbraco.org/yaf_postst4161_Umbraco-caching-explained.aspx
10 March, 2011Azure + Umbraco workshop
69
Challenges
Multiple instances of the web-roleRound-robin load-balancingSessions need to be stored centrally
StorageNo local storage (unsafe)No “shared drive” over multiple machines
CDNOnly possible when files are stored on Azure Blobs
Custom code
10 March, 2011Azure + Umbraco workshop
7010 March, 2011Azure + Umbraco workshop
Solutions for Umbraco v4.5+
1. Simple web-role
2. Accelerator
3. Sync Scripts (by Kurt & O1)Since yesterday
10 March, 2011Azure + Umbraco workshop71
Compare solutions
Simple webrole Accelerator Sync Scripts
Data persistence ×no backups!
√ √
Storage used Local on webrole
Azure BlobNTFS Mounted
Local synced with Azure Blob
Multiple instances (Azure SLA)
× ×challenging
×challenging
Initial setup Easy ComplexOld Azure APIs
Easy
Updates 20 min (downtime)New VS deploy
10 min (downtime)Upload VHD
<1 minFTP type access
>1 site per webrole (multi-tenant)
√Using Visual Studio
× √Using config scripts
10 March, 2011Azure + Umbraco workshop72
Accelerator (CodePlex)
10 March, 2011Azure + Umbraco workshop73
Accelerator (CodePlex)
CodePlex project http://azureaccelerators.codeplex.com By Slalom Consulting (Seattle)
Uses old Azure API implementationOnly 1 webrole is supportedLess control storage transactions (mounted drive)
10 March, 2011Azure + Umbraco workshop74
Synchronization scripts
Azure + Umbraco workshop75
Synchronisation scripts
Current implementation (free Download)One-way sync, copies from Azure Blob to local storage (full sync)IIS configuration, app Pool, Website, binding of hostheadersTriggered at VM boot (startup.exe)
Future (CodePlex project)ConstantSync from Blob > VM
•Triggered by a service call (avoid polling/storagetransactions)Bidirectional synchronisation
•Also from VM to Blob Storage
Thanks to Kurt Claeys!
10 March, 2011
Azure + Umbraco workshop76
FTP like access to Azure Blob
CloudBerry Explorer for Azure Blob Storagehttp://cloudberrylab.com
Free!
10 March, 2011
Azure + Umbraco workshop77
CloudBerry Explorer
10 March, 2011
Azure + Umbraco workshop78
Future: Umbraco v5
Beta expected Q2 2011 (April/May)RTM somewhere end 2011
Paul Sterling [email protected] (Technical Lead)With regard to Umbraco v5; the support for Azure will be native in the sense that the architecture takes into account the de-coupled scenarios possible in cloud-based computing - where your data store may be a database, a flat store, or a blob store - and the runtime may be in a single instance or in 1,000's of volatile instances.
If you are looking to leverage Azure for your solutions in the future, keep an eye on v5 as much of the architecture has been finalized and a usable code base is not too far off.
10 March, 2011
Azure + Umbraco workshop79
Umbraco v4.5+ in Azure, too early?
Yes, for most scenariosOnly one instance, quite complex
But it’s great to:Experiment with AzureBe ready for the future
10 March, 2011
Lunch
80 Azure + Umbraco workshop10 March, 2011
There are sandwiches and fresh soup
Workshop starts at 13:15
10 March, 2011Azure + Umbraco workshop81
Azure Development Program
Pay €1.500 to Microsoft and get1 half day business workshop (Why Azure, pricing, ...)4 half days technical assistance
When your project goes live (before 15 May)Can also be Proof of ConceptFull refund of €1.500!Visibility on Microsoft sites
First 50 live Benelux projects get a priceWindows Phone 7, ...
Interested? Contact Tom [email protected]://yourbusinessyourfame.cloudapp.net
10 March, 2011Azure + Umbraco workshop82
Cloud Essentialshttp://www.microsoftcloudpartner.com
Windows Azure 750 hours of an extra small compute instance 25 hours of a small compute instance 3GB of storage 250,000 storage transactions
SQL Azure 1 Web Edition database (1 GB)
Windows Azure platform AppFabric 100,000 Access Control transactions 2 Service Bus connections
Data Transfers (worldwide) 3 GB in 6 GB out
10 March, 2011Azure + Umbraco workshop83
MSDN Premium Subscription Benefithttp://www.microsoft.com/windowsazure/offers/popup/popup.aspx?lang=en&locale=nl-BE&offer=MS-AZR-0005P
Windows Azure 750 hours of a small compute instance 10 GB of storage 1,000,000 storage transactions
SQL Azure 3 Web Edition databases (up to 1 GB relational database each)
Windows Azure platform AppFabric 1,000,000 Access Control transactions 1 pack of 5 Service Bus connections***
Data Transfers North America and Europe (per region)
•7 GBs in •14 GBs out
Hands-on
84 Azure + Umbraco workshop10 March, 2011
10 March, 2011Azure + Umbraco workshop85
Hands-on: web role + SQL
1. Install clean Umbraco site local laptop (using Web platform installer)
2. Provision Azure SQL storage3. Migrate locale SQL db to Azure SQL (using migration wizard)4. Create Visual Studio package of Umbraco site
(using CodePlex solution)5. Provision WebRole on Azure6. Publish solution to Azure Webrole (using Visual Studio)7. Test your site on http://mysite.cloudapp.net
It works, but we have no backups.
10 March, 2011Azure + Umbraco workshop86
Hands-on part 2: add Blob storage
1. Provision Azure Storage account2. Download 3rd party tool
http://cloudberrylab.com
3. Upload of local Umbraco files to Azure Blob (using Cloudberry)
4. Deploy Generic webrole with startup tasks (using VS) Configure IIS site (host header) Configure Storage Account (container, account name, password)
10 March, 2011Azure + Umbraco workshop87
Hands-on workshop
Follow the installation guidehttp://umbracoonazure.codeplex.com/
We are here to help!