This document provides details about an Azure + Umbraco workshop that was held on March 10, 2011. It introduces the presenters Kurt Claeys from Microsoft and Mel Gerats and Olivier Mangelschots from Orbit One. The workshop provided an introduction to Azure and a hands-on session on using Umbraco in Azure. The agenda included technical dives into Azure and Umbraco, and attendees were instructed to ensure their laptops were prepped with the necessary software for the hands-on portion.
2. 10 March, 2011 Azure + Umbraco workshop 2 Who are we? Kurt Claeys Microsoft EMEA Technology Solution Professional Windows Azure kclaeys@microsoft.comhttp://twitter.com/kurtclaeys Mel Gerats Orbit One, Lead developer mel@orbitone.com Olivier Mangelschots Orbit One, Managing Director olivier@orbitone.com
3. 10 March, 2011 Azure + Umbraco workshop 3 Free workshop Sponsored by Microsoft Azure In collaboration with Belgian Umbraco User Group (BUUG.be) Hosted by Orbit One
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 10 March, 2011 4
5. 10 March, 2011 Azure + Umbraco workshop 5 Who are you? Damiaan Peeters (Comm-IT.be) TomCrombez (Microsoft.com) Christophe Heureux (JWTDialogue.com) DavidDesloovere (Natcheurope.com) Anthony Candaele (Webmove.be) Dirk De Grave (netaddICTs.be) DavidVerberckmoes (Promex.be) Voicu Matei (OrbitOne.com) Thomas Stock (OrbitOne.com) Lieven Meys (OrbitOne.com) Kevin De Smet (OrbitOne.com) Welcome!
6. 10 March, 2011 Azure + Umbraco workshop 6 Don’t miss: Umbraco BE Festival Friday 18 March 9:00 – 18:00 deSingel Antwerp Free entrance, register on BUUG.be International speakers Sponsored by:
7. 7 Azure + Umbraco workshop 10 March, 2011 We will make everything available: Slides Binaries/source code Documentation Check www.buug.be Downloads
8. 10 March, 2011 Azure + Umbraco workshop 8 Agenda 9:30 – 11:00 Technical dive into Azure Break 11:30 – 12:30 Umbraco CMS and Azure Lunch 13:30 Azure Development Program 13:45 – 16:30 Hands-on workshop We are a small group, let’s make it interactive!
9. 10 March, 2011 Azure + Umbraco workshop 9 Is your laptop prepped? This afternoon, you need: Visual Studio 2010 Windows Azure SDK 1.3 SQL Server 2008 Express R2 SQL Azure migration wizard Registered Azure Account Links on http://www.buug.be/en/events
14. The Windows Azure platform is a flexible cloud–computing platform that lets you focus on solving business problems and addressing customer needs.
15. 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
16. Cloud Scenarios “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
17. Azure Examples online tax declaration, deadline is july 15th internet based lottery game grows faster than expected
19. 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
20. Virtual Network Storage Compute Access Control Service Bus Caching Reporting Database Data Sync
21. Azure Architecture Windows Azure Service SQL Data Your Service Worker Service NL B Worker Role SQL Internet SQL Your Storage SQL Queues Web Site (ASPX, ASMX, WCF) Web Site (ASPX, ASMX, WCF) Web Role (ASPX, WCF) Tables Blobs
25. 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 Three types Web Role = internet facing, IIS, request/response, ASP.NET or WCF Worker Role = background processing, endless loop, internal endpoints, can host WCF services VM Role = custom OS (W2008R2)
38. 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
39. Scaling (custom scaling engine) App performance metrics Local DB App App running on 2 instances 3 interprete metrics defines on metrics and polling intervals Scaling engine changes the configuration Configuration
40. 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
41. 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
42. 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
43. Windows Azure Storage Account User creates a globally unique storage account name. Account Blob Table Queue Storagekeepsbeingavailable, even whenapplication is not running !
44. 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;
45. Azure Storage Tables partition key Tables are partitioned to support load balancing across storage nodes unique row key timestamp table field1 field2 field3 PAAS
46. 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 PAAS
47. 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 PAAS
49. 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 PAAS
50. 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
51. Azure Storage Drives On premises Azure Blob Storage WIN7/WS2008 data data NTFS volume as .vhd, mounted to local OS Web/WorkerRole PAAS
52. Azure Storage Drives On premises Azure Blob Storage WIN7/WS2008 data data data Upload as blob unmounted Web/WorkerRole mounts to driveletter legacy IO code works PAAS
53. Azure Content Delivery Network user Azure Datacenter Service (webrole, workerrole) requests blob Blob storage CDN Node Is blob cached here ? blob PAAS
54. Azure Content Delivery Network user Azure Datacenter Service (webrole, workerrole) another request Blob storage CDN Node blob PAAS
55. Azure Content Delivery Network Azure datacenters Dublin Amsterdam Current CDN nodes Amsterdam Dublin London Paris Stockholm Vienna Zurich Only EU datacenters listed here PAAS
56. 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
57. AppFabric Caching Role Instance 1 Role Instance 2 On Premise app Read/Write data Read/Write data Read/Write data Caching
58. 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
59. 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
60. AppFabric Access Control identity providers Azure ACS rules Facebook ID Claims authorization Redirect login ADFS2 WebApp
63. 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) PAAS
64. 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” PAAS
65. 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” PAAS
66. 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
67. 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 PAAS
69. Short break 60 Azure + Umbraco workshop 10 March, 2011 Feel at home – help yourself!Coffee, tea, Coca-Cola, Fanta, Juice, Ice tea, ... Session continues at 11:30
70. CMS systems on Azure 61 Azure + Umbraco workshop 10 March, 2011
71. 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 10 March, 2011 Azure + Umbraco workshop 62
72. 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 Conclusion Hosting websites on Azure = starting at €1.000€/year Use Azure Pricing Excel to calculate! Demo? 10 March, 2011 Azure + Umbraco workshop 63
73. WCMS 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 Low cost hosting projects Projects with lots of legacy code/dependencies 10 March, 2011 Azure + Umbraco workshop 64
75. Umbraco v4.5+ in Azure: Challenges What did we learn this morning? Group talk 10 March, 2011 Azure + Umbraco workshop 66
76. 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 10 March, 2011 Azure + Umbraco workshop 67
77. 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 10 March, 2011 Azure + Umbraco workshop 68
78. 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 Only possible when files are stored on Azure Blobs Custom code 10 March, 2011 Azure + Umbraco workshop 69
79. 10 March, 2011 Azure + Umbraco workshop 70 Solutions for Umbraco v4.5+ Simple web-role Accelerator Sync Scripts (by Kurt & O1) Since yesterday
82. 10 March, 2011 Azure + Umbraco workshop 73 Accelerator (CodePlex) 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)
84. 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) 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 workshop 75
85. FTP like access to Azure Blob CloudBerry Explorer for Azure Blob Storage http://cloudberrylab.com Free! 10 March, 2011 Azure + Umbraco workshop 76
87. Future: Umbraco v5 Beta expected Q2 2011 (April/May) RTM somewhere end 2011 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. 10 March, 2011 Azure + Umbraco workshop 78
88. Umbraco v4.5+ in Azure, too early? Yes, for most scenarios Only one instance, quite complex But it’s great to: Experiment with Azure Be ready for the future 10 March, 2011 Azure + Umbraco workshop 79
89. Lunch 80 Azure + Umbraco workshop 10 March, 2011 There are sandwiches and fresh soup Workshop starts at 13:15
90. 10 March, 2011 Azure + Umbraco workshop 81 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
91. 10 March, 2011 Azure + Umbraco workshop 82 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
92. 10 March, 2011 Azure + Umbraco workshop 83 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
94. 10 March, 2011 Azure + Umbraco workshop 85 Hands-on: web role + SQL Install clean Umbraco site local laptop (using Web platform installer) Provision Azure SQL storage Migrate locale SQL db to Azure SQL (using migration wizard) Create Visual Studio package of Umbraco site (using CodePlex solution) Provision WebRole on Azure Publish solution to Azure Webrole (using Visual Studio) Test your site on http://mysite.cloudapp.net It works, but we have no backups.
95. 10 March, 2011 Azure + Umbraco workshop 86 Hands-on part 2: add Blob storage Provision Azure Storage account Download 3rd party tool http://cloudberrylab.com Upload of local Umbraco files to Azure Blob (using Cloudberry) Deploy Generic webrole with startup tasks (using VS) Configure IIS site (host header) Configure Storage Account (container, account name, password)
96. 10 March, 2011 Azure + Umbraco workshop 87 Hands-on workshop Follow the installation guide http://umbracoonazure.codeplex.com/ We are here to help!
Notas del 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.