Second edition of this popular interactive workshop, this time we focussed on the new “Windows Azure Accelerator for Umbraco” CodePlex project.
Topics
Web & Worker Role
Virtual Machine sizes & performance
Storage Types: Blobs, Tables, Azure SQL, queues
No local persistant storage
Network Load Balancing (round robin)
Scale out to multiple instances
Multiples websites in one Azure account
Azure Content Delivery Network
Swap between development & production environments
Typical monthly costs to host Umbraco site
Q&A
2. 24 June, 2011 Azure + Umbraco workshop Who are we? Kurt Claeys Microsoft EMEA Technology Solution Professional Windows Azure kclaeys@microsoft.com http://twitter.com/kurtclaeys Wim De Coninck Orbit One, Development Team Lead wimdc@orbitone.com http://twitter.com/wimdc Olivier Mangelschots Orbit One, Managing Director olivier@orbitone.com http://twitter.com/omangels 2
3. 24 June, 2011 Azure + Umbraco workshop Free workshop Sponsored by Microsoft Azure In collaboration with Belgian Umbraco User Group (BUUG.be) Hosted by Orbit One 3
4. We are: Team of 18 Microsoft 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 workshop 24 June, 2011 4
5. 24 June, 2011 Azure + Umbraco workshop Umbracocertification training + exams Here in Ghent at OneOffice Level 1: When: 7 – 8 November 2011 Target audience: Designers / Webdevelopers Level 2: When: 9 – 10 November 2011 Target audience: .NET Developers 5
6. Azure + Umbraco workshop 24 June, 2011 We will make everything available: Slides Binaries/source code Documentation Check www.buug.be Downloads 6
7. 24 June, 2011 Azure + Umbraco workshop Agenda 9:30 – 10:00 Introduction 10:00 – 11:00 Technical dive into Azure (part 1) Break 11:15 – 12:00 Technical dive into Azure (part 1) 12:00 – 12:45 Umbraco CMS and Azure Lunch 13:30 Azure Development Program13:45 – 16:30 Hands-on workshop We are a small group, let’s make it interactive! 7
8. 24 June, 2011 Azure + Umbraco workshop Is your laptop prepped? This afternoon, you need: Visual Studio 2010 Windows Azure SDK + Tools for Visual Studio (March 2011) version 1.4 SQL Server 2008 Express R2 RegisteredAzure Account Links on http://www.buug.be/en/events 8
14. Cloud ? What is cloud computing ? Offering infrastructure, platform and software as a service over the internet to a global market. Move on-premises management of non functional IT assets to a providor. Difference from traditional hostings Sold on demand “pay as you grow” Elastic scalability Service is fully managed by the providor End user centric (IW or developer) Strong focus on integration (cloud-cloud or cloud-on-premises)
15. Todays challenges percent of IT budgets is spent maintaining datacenter operations percent of datacenter capacity is idle on average Infrastructure Complexity Infrastructure Utilization 70 85
16. Positioning AZURE infrastructure as a service (hardware) Servers available in the cloud platform as a service (developer) Delivery of a OS for custom, cloud enabled apps Support for service hosting and interoperability Relational data storage in the cloud software as a service (end users) = BPOS Exchange online Sharepoint online Dynamics CRM online SAAS IAAS PAAS
17. Positioning AZURE infrastructure as a service (hardware) Servers available in the cloud platform as a service (developer) Delivery of a OS for custom, cloud enabled apps Support for service hosting and interoperability Relational data storage in the cloud software as a service (end users) = BPOS Exchange online Sharepoint online Dynamics CRM online SAAS IAAS PAAS
18. IT as Service Private (On-Premise) Infrastructure (as a Service) Platform (as a Service) You manage Applications Applications Applications You manage Runtimes Runtimes Runtimes Security & Integration Security & Integration Security & Integration Managed by vendor You manage Databases Databases Databases Servers Servers Servers Managed by vendor Virtualization Virtualization Virtualization Server HW Server HW Server HW Storage Storage Storage Networking Networking Networking
19. Cloud Computing Taxonomy The Windows Azure platform fits here IaaS Traditional IT SaaS PaaS You manage Applications Applications Applications Applications Data Data Data Data You manage Runtime Runtime Runtime Runtime Managed by vendor Middleware Middleware Middleware Middleware You manage Managed by vendor O/S O/S O/S O/S Managed by vendor Virtualization Virtualization Virtualization Virtualization Servers Servers Servers Servers Storage Storage Storage Storage Networking Networking Networking Networking
20. Classic IT Capacity problem. Allocated IT-capacities Load Forecast “Under-supply“ of capacities “Waste“ of capacities Fixed cost of IT-capacities IT CAPACITY Barrier for innovations ActualLoad TIME
22. Capacity in a cloud model Load Forecast Allocated IT capacities No “under-supply“ IT CAPACITY Reduction of “over-supply“ Possible reduction of IT-capacities in case of reduced load Reduction of initial investments ActualLoad TIME
23. Rates Compute Per service hour of 1 CPU = 0,12 U$ Storage Per GB/month =0,15 U$ Transactions Per 10K = 0,01 U$ SQL Azure 10 GB/month = 99,99 U$ Access Control Transactions 10K = 0,01 U$ Service Bus Connections 1 connection/month = 3,99 U$ Data Transfer egress Per GB = 0,15 U$ Data Transfer ingress Per GB = FREE
26. “Growing Fast“ “On and Off “ Inactivity Period Compute Compute Average Usage Usage Average Time Time On & off workloads (e.g. batch job) Over provisioned capacity is wasted Time to market can be cumbersome Successful services needs to grow/scale Keeping up w/ growth is big IT challenge Complex lead time for deployment “Unpredictable Bursting“ “Predictable Bursting“ Compute Compute Average Usage Average Usage Time Time Unexpected/unplanned peak in demand Sudden spike impacts performance Can’t over provision for extreme cases Services with micro seasonality trends Peaks due to periodic increased demand IT complexity and wasted capacity
27. The Windows Azure platform is a flexible cloud–computing platform that lets you focus on solving business problems and addressing customer needs.
28.
29. Virtual Network Storage Compute Access Control Service Bus Caching Reporting Database Data Sync
31. Azure Fabric Controller Service Definition The Fabric Controller communicates with every server within the Fabric. Interacts with a “Fabric Agent” on each machine Monitors every VM, application and instance Service Management is performed by the Fabric Controller Performs load balancing, check pointing and recovery Fabric Controller Fabric X X X
33. Browser Browser DB Browser Business Logic Tier Web UITier Browser … Browser
34. Browser Browser DB Browser Web UITier Business Logic Tier Browser “Server Busy” … Browser
35. Browser Browser N L B Web Role DB Browser Business Logic Tier Web Role Browser Web Role … Browser
36. Browser Browser N L B Web Role N L B WorkerRole DB Browser Web Role WorkerRole Browser Web Role WorkerRole … Browser
37. Browser Browser N L B Web Role N L B WorkerRole DB Browser Web Role WorkerRole Browser Web Role WorkerRole … Browser Azure
38. Azure Architecture Windows Azure Service SQL Data Your Service Worker Service NL B Worker Role SQL Internet SQL Your Storage SQL Queues NL B Web Site (ASPX, ASMX, WCF) Web Site (ASPX, ASMX, WCF) Web Role (ASPX, WCF) Tables Blobs
42. Azure Roles Running apps in a virtual machine A virtual machine can have 1,2,4 or 8 cores We can have multiple instances of the VM running Two types Web Role = internet facing, IIS, request/response, ASP.NET or WCF Worker Role = background processing, endless loop, internal endpoints, can host WCF services
55. Configuring the service Service configuration, maintainable after deploy Number of instances ConnectionString to Storage Thumbprints of certificates Custom setting Service definition, defined at deployment Size of VM Local storage capacity Endpoint External Internal
56. Azure VMRole Ability to upload your own customized WS2008R2 Enterprise images Full control over the OS image, install whatever you want on it. You can remote desktop into the OS Target scenarios Need to use apps/libraries with no unattended setup 32 bits apps Change registry settings Scale out ! Instances are behind loadbalancer, one public IP per service No durability of OS image on hardware failure With VM Role, the customer creates & maintains the OS Paying model = Paying model of current web/workerrole Uses differencing disks to upload deltas to image
57. Web/WorkerRole vs VMRole All three are virtual images running in the datacenter under control of the Azure fabric controller behind the loadbalancer. Web/Worker Role The virtual image is already there, ... you upload your app, ... Azure places this app on the image and runs the image. VM Role You upload the complete virtual image with all apps installed, ... Azure runs the image Visual Studio virtual image virtual image virtual image app app app Azure Azure app development environment development environment Hyper-V
58. VMRole lifecycle Create a .vhd in Hyper-V manager, install W2008 R2 as OS Install whatever roles, features and apps you want on it. Turn of automatics updates Install Windows Azure VM Role Integration Components Run sysprep.exe and bring it down Upload the .vhd to Azure (needs a certificate) Deploy a service configuration (Visual Studio, Managament Portal or Management API PS commandlets)
59. Azure Virtual Network Aka as “Azure Connect” Secure network connectivity between on-premises and cloud, supports standard IP protocols Automatic setup of secure IP-level network Example use cases: Enterprise app migrated to Windows Azure that requires access to on-premise SQL Server Windows 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 agent DNS name resolution
60. Azure Virtual Network Network policy managed through portal Web/Worker VM Role Azure Connect Gateway Azure Connect Gateway IPV6 address IPV6 address On Premise Machine SQL Server IPV6 address Azure Connect Gateway
61. Azure Storage Non SQL data Unlimited storage 4 types Tables: no fixed schema, no relations Blobs: large objects, have metadata attributes, MIME type aware Queues: assync communication to workerrole Drives: NTFS volume mounted to roles Accessible through a HTTP/REST API
62. Windows Azure Storage Account User creates a globally unique storage account name. Account Blob Table Queue Storagekeepsbeingavailable, even whenapplication is not running !
63. Libraries Microsoft.WindowsAzure.* Found in Windows Azure SDK System.Data.ServicesSystem.Data.Services.Client .NET 3.5 using Microsoft.WindowsAzure; using Microsoft.WindowsAzure.StorageClient; using System.Data.Services.Common;
64. Azure Tables s Tables store entities. Entity schema can vary in the same table. Can Not : Create foreign key relationships between tables. Perform server side joins between tables. Create custom indexes on the tables. No server side Count(), for example.
65. Azure Storage Tables partition key Tables are partitioned to support load balancing across storage nodes unique row key timestamp table field1 field2 field3
66. Table Partioning Data Row key Partition key A 123 foo bar etc A 123 foo bar etc A 124 foo bar etc A 124 foo bar etc B 123 foo bar etc B 123 foo bar etc Partition “B” Partition “A” Storage node 1 Storage node 2
67. Azure Storage Blobs Large data Can be made private or public Can have metadata attributes and MIME types Can be cached by a Azure Content Delivery Network (CDN) Time based access to blobs with shared access signatures Two Types Block Blobs : max 200GB, Usefor 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
69. Azure Storage Blobs accessibility blob private (Azure service or on premises) need storage credentials no storage credentials public (browser, REST) 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
70. 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
71. Azure Storage Queues Message in – Message out To support the assync processing model Topologies : Cloud-Cloud (web – worker) Cloud-OnPremises OnPremises-Cloud OnPremises-OnPremises through the cloud 8K per message HTTP/REST based
73. Azure Storage Queues get message Msg 1 process message Msg 1 Msg 2 Msg 3 Msg 4 delete message
74. Azure Storage Queues get message Msg 1 process message Msg 2 Msg 3 Msg 4 When not deleted within a timeout, the message is added to the queue again ! Msg 1 delete message
75. Drives Azure Web orWorkerRole AzureStorage blob using (StreamReadersr = File.OpenText(@”F:ile.txt”)) F: Mounted , results in driveletter uploaddownload Attach VHD On-Premises blob using (StreamReadersr = File.OpenText(@”F:ile.txt”)) F:
76. Azure Content Delivery Network user Azure Datacenter Service (webrole, workerrole) requests blob Blob storage CDN Node Is blob cached here ? blob
77. Azure Content Delivery Network user Azure Datacenter Service (webrole, workerrole) another request Blob storage CDN Node blob
78. SQL Azure Relational DB in the Cloud Based on SQL 2008 R2 Accessible from every ADO.NET client SQL 2008 R2 Management Studio High-availability and fault tolerance No physical administration is required Use existing knowledge in T-SQL development Scale databases up or down based on business needs (between 1GB and 50GB)
79. SQL Azure admin SQL Azure Server My DB (1 GB) My DB (50 GB) Master DB users and roles users and roles logins firewall internal restricted IP ranges Azure Services (webrole,workerrole) Anybody code “near” code “far”
80. SQL Azure admin SQL Azure Server My DB (50 GB) My DB (1 GB) Master DB stored on 3 replicas stored on 3 replicas stored on 3 replicas firewall internal restricted IP ranges Azure Services (webrole,workerrole) Anybody code “near” code “far”
81. 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
82. 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 commited OK OK replicas
83. AppFabric Caching A distributed, in-memory cache, implemented as a cloud service. The same capabilities available in Windows Server AppFabricCaching. 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 roles ASP.NET page caching Speed up access to static data
84. AppFabric Caching Role Instance 1 Role Instance 2 On Premise app Read/Write data Read/Write data Read/Write data Caching
85. AppFabric Access Control identity providers Azure ACS rules Facebook ID Claims authorization Redirect login ADFS2 WebApp
86. Short break Azure + Umbraco workshop 24 June, 2011 Feel at home – help yourself!Coffee, tea, Coca-Cola, Fanta, Juice, Ice tea, ... Session continues at 11:30 77
87. CMS systems on Azure Azure + Umbraco workshop 24 June, 2011 78
88. CMS in Azure, why? Paul Sterling paul@umbraco.com (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 24 June, 2011 Azure + Umbraco workshop 79
89. How much does it cost? Simulation (approximate cost) 1GB Azure SQL 10GB Blob storage (1000000 read/write transactions/day) 50GB download traffic, 10GB upload traffic One webinstance: €77,01/month (promo offer €52,71) Two instances: €140,91/month (promo offer €94,78) Two instances + one staging: €204,81/month (promo offer €136,85) Conclusion Hosting websites on Azure = starting at €635/year Use Azure Pricing calculator! http://www.microsoft.com/windowsazure/pricing-calculator/ Differencesbetweeninstances http://www.microsoft.com/windowsazure/compute/ 24 June, 2011 Azure + Umbraco workshop 80
90. Website CMS in Azure Azure is great for High traffic websites Sites where you need to quickly scale-up/down Global sites (visits many geo locations) Load balancing, stronger SLA’s Azure is not ideal for Very low cost hosting projects Projects with lots of legacy code/dependencies 24 June, 2011 Azure + Umbraco workshop 81
92. Umbraco v4.5+ in Azure: Challenges What did we learn this morning? What are the challengesto host a CMS in Azure? Group talk 24 June, 2011 Azure + Umbraco workshop 83
93. 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, permissions Logs (errors, actions in admin) File storage: Page templates: .Master Scripts/styles: XSLT, CSS, JS, ... + design elements used in templates User controls: ASCX/DLLs + Umbraco binaries Media: GIF, JPG, PDF, Videos, ... Config: web.config + /config/ xml files 24 June, 2011 Azure + Umbraco workshop 84
94. Umbraco XML cache XML file (/app_data/umbraco.config) Stored on local file system Contains all published nodes Purpose Fast app warm-up time (<1 sec) Less SQL queries – SQL is not used public site Automatically updated Every time you publish using Umbracobackend XML dump of in-memory cache http://forum.umbraco.org/yaf_postst4161_Umbraco-caching-explained.aspx 24 June, 2011 Azure + Umbraco workshop 85
95. Challenges Multiple instances of the web-role Round-robin load-balancing Sessions need to be stored centrally Storage No local storage (unsafe) No “shared drive” over multiple machines CDN – Content Delivery Network Only possible when files are stored on Azure Blobs Custom code Needstoworkwithin the boundries of Azure 24 June, 2011 Azure + Umbraco workshop 86
96. 24 June, 2011 Azure + Umbraco workshop Solutions to host Umbraco v4.5+ on Windows Azure Simple web-role (manual creation) CodePlex accelerator (by Slalom Consulting) Sync Scripts (by Kurt & O1) CodePlex accelerator (by Microsoft) 87
99. 24 June, 2011 Azure + Umbraco workshop CodePlexAccelerator by Slalom Consulting CodePlex project http://azureaccelerators.codeplex.com By Slalom Consulting (Seattle) Uses old Azure API implementation Only 1 webrole is supported Less control storage transactions (mounted drive) 90
101. 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 hostheaders Triggered at VM boot (startup.exe) Thanks to Kurt Claeys! 24 June, 2011 Azure + Umbraco workshop 92
103. CodePlex Accelerator by Microsofthttp://waacceleratorumbraco.codeplex.com How does the Accelerator work? Creates 1 or more web-role instances (VMs) deploys a sync IIS process on these machines Deploy tool uploadscomplete Umbraco installation to Blob Storage Includes all the files: images, css, aspx, web.config, … Created SQL Azure database for session stage Auto configuration of web.config Scripts keeps local file system in sync with the blob storage Every second Bi-directional Uuser adds file trough Umbraco cms, is stored on local filesystem of the current web-role One second later, file is pushed to Azure Blob Storage One second later, file is pulled to the other web-roles 24 June, 2011 Azure + Umbraco workshop 94
104. How to update files of your site? CloudBerry Explorer for Azure Blob Storage (Free!) FTP like access toAzureBlob http://cloudberrylab.com Alternative free tool: ClumsyLeafCloudXplorer http://clumsyleaf.com/products/cloudxplorer Warning: Does notcreate empty folders 24 June, 2011 Azure + Umbraco workshop 95
106. Future: Umbraco v5 CTP Released last week (available on CodePlex) http://umbraco.codeplex.com Betaexpected Q4 2011 RTM somewhere end 2011 - beginning 2012 Paul Sterling paul@umbraco.com (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. 24 June, 2011 Azure + Umbraco workshop 97
107. Umbraco v4.7+ in Azure, too early? No! No needtowaitfor v5 Umbraco v4.7 + Microsoft accelerator is great! 24 June, 2011 Azure + Umbraco workshop 98
108. Lunch Azure + Umbraco workshop 24 June, 2011 There are sandwiches and fresh soup Workshop starts at 13:15 99
109. 24 June, 2011 Azure + Umbraco workshop Azure Development Program Pay €1.500 to Microsoft and get 1 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 Concept Full refund of €1.500! Visibility on Microsoft sites First 50 live Benelux projects get a price Windows Phone 7, ... Interested? Contact Tom Crombez v-tocrom@microsoft.com http://yourbusinessyourfame.cloudapp.net 100
110. 24 June, 2011 Azure + Umbraco workshop 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 101
111. 24 June, 2011 Azure + Umbraco workshop 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 102
113. 24 June, 2011 Azure + Umbraco workshop Nowit’syour turn! Prepare the storage account Run the setup script Prepare the Accelerator fordeployment Prepare the hosted service Prepare the SQL Azure service ConfigureUmbracowith the script Upload the site Follow the step-by-step guide We are hereto help! 104
Notas do Editor
When a request is made using the Windows Azure Blob service URL, the blob is read directly from the Windows Azure Blob service. When a request is made using the Windows Azure CDN URL, the request is redirected to the CDN endpoint closest to the location from which the request was made to provide access to the blob. If the blob is not found at that endpoint, then it is retrieved from the Blob service and cached at the endpoint, where a time-to-live (TTL) setting is maintained for the cached blob. The TTL specifies that the blob should be cached for that amount of time in the CDN until it is refreshed by the Blob service. The CDN attempts to refresh the blob from Windows Azure Blob service only once the TTL has elapsed. The default TTL is 72 hours. At PDC 2009, we will allow you to specify the standard HTTP Cache-Control header for your Windows Azure blobs. If this value is specified for a blob, then the TTL period will be set to the value specified in Cache-Control header.
How does itwork?1: It createsone or more webroleinstancesanddeploys a synchronizationwindows service on these machines2: The deploy tool uploads the complete Umbracoinstallationwithall the files (images, css, aspx, web.config, …) to the blob. 3: The synchronization scripts keep the local file system in syncwith the blob storage (every second). If a user is addingsomethingto the umbracocms, thiswillbewrittento the local filesystem of the currentwebrole. One second later itwillbepushedto the blob store andone second later itwillbesyncedto the otherwebroles.
in web.config word een session state db geconfiged door de accelerator en de database word automatisch aangemaakt in de sql azure