Presentation is loading. Please wait.

Presentation is loading. Please wait.

New England Code Camp October-2010

Similar presentations


Presentation on theme: "New England Code Camp October-2010"— Presentation transcript:

1 New England Code Camp 14 02-October-2010
Going Native Building Cloud-Native Applications on Microsoft’s Windows Azure Stack New England Code Camp 14 02-October-2010 Not representing my day job Several slides stolen borrowed (with permission) from ( – Jim O’Neil’s Windows Azure presentation from March 17, 2010 meetup) + from Chris Bowen’s “roadshow” talk (March 2010) Boston Azure User Group @bostonazure Bill Wilder @codingoutloud Boston West Toastmasters Not here with my day job Only Bill’s personal views Copyright (c) 2010, Bill Wilder

2 Agenda Lightning-quick overview of Azure
Two Major Shifts in Cloud-Native Apps: Using Scalable and Cost-effective Storage Using Roles and Queues for Scalability and Resilienceyness Scalable and Resilient

3 Cloud-Native Applications
Effort focuses on business functionality Development is highly productive Time-to-market is short Modification is straight-forward Infrastructure is not a limiting factor Cost structure is a good fit Downtime is not necessary Scale is efficient Innovation / experimentation is enabled

4 [Azure] Cloud Platform
The rise of focused, specialized services Really good at one thing True of other Cloud Platforms “Scalable” Persistent Storage abstractions Set of Services Illusion of infinite scale out Same performance with x clients as with 10x as with 100x as with 1000x as with … Billing model: pay only for what you use Friction-free access to add’l or less storage

5 Part A A

6 Part A – Executive Summary
Use Azure Blobs and Tables and your DATA will be resilient to failure and will scale like crazy…

7 Persistent Storage Services – Options
Type of Data Traditional Azure Way Relational SQL Server SQL Azure Blob File System, or SQL Server Azure Blobs File File System Azure Drives, or Azure Blobs Reliable Queue MSMQ (maybe) Azure Queues Non-Relational Azure Tables

8 Azure Storage Services
Family of specialized, complementary storage services Abstractions High level services Blobs + Queues + Tables [+ Drives + CDN]

9 All Azure Storage is Replicated
Resilient in case of failure “All data replicated multiple times” – Sriram Krishnan, Programming Windows Azure, p130+ Supports scale-out Replicate specific data if it gets too hot to keep up

10 Azure Blob Storage The place to put ANY LARGE OBJECT Private or Public
Public blobs can be anonymously accessed Images, videos, CSS files Need not be binary Public blobs can be cached in Azure CDN 20 locations around the world Different locations than data centers Time-limited signed-access available “You have until tomorrow to download this video” – Windows Azure CDN – 20 CDN nodes available across the world

11 Azure Blob Storage Two types of Azure Blobs “Block Blob” “Page Blob”
Parallel upload scenarios Resume download scenarios Up to 200 GB “Page Blob” Random access scenarios Azure Drives Up to 1000 GB – Windows Azure CDN – 20 CDN nodes available across the world

12 Azure Table Storage Best place for granular, semi-structured data
No rigid database schema Fast and easy to instantiate Strongly Consistent No performance lag Programming model is WCF Data Services All data access and data updates LINQ

13 Azure Table Storage Storage Account Table [*] Entity [*, 1 MB data]
PartitionKey + RowKey Property [255x] Name/Value/Type Up to 64k Entity is like a Row

14 Azure Table Storage Partition Key Row Key
Along a “logical grouping” – a “shard” PartitionKey value of up to 64 KB Row Key Identify specific row within a partition RowKey value is String of up to 64 KB Table access requires Partition Key + Row Key Not to mention (cryptographic) Access Key (for the digital signing of the http header)

15 Relational Data vs. Azure Tables
Approach SQL Azure Azure Tables Normalization Normalized Denormalized (Duplication) (No duplication) (Lots of duplication) Structure Schema Flexible Transactions Distributed Limited scope Responsibility Database Developer Knobs Many Few Scale Up (or Sharding) Out Cost Reasonable Less expensive

16

17 Pay As You Go – Storage Storage Applies equally to:
$0.15 per GB stored per month $0.01 per 10,000 storage transactions Applies equally to: Queues Tables Blobs Drives

18 Pay As You Go – Data Transfer
North America and Europe regions $0.10 per GB in $0.15 per GB out Asia Pacific Region $0.30 per GB in $0.45 per GB out No charge for transfer within a data center

19 What is Cost of 1 Byte? Azure Storage cost/byte = x
SQL Azure cost/byte = 66x

20 Part B B

21 Part B – Executive Summary
Scale out, not up, and your COMPUTE will be resilient to failure and will scale like crazy…

22 Azure Does Compute Compute Services Web Roles Worker Roles
VM Role (Nov 2010) Your Code Runs Here Image:

23 Web Roles vs. Worker Roles
Runs in IIS 7 (always listening) Built using ASP.NET, MVC Good to handle interactive users Addressable over Internet Good for hosting Web API (WCF) Runs Continuously Smarx “The only difference between a web role and a worker role is that in the web role, IIS (actually Hosted Web Core) gets started and pointed at your app data directory. You can still put code in WebRole.cs that does exactly the same thing as you would do in your worker role, so the decision should really be "Do you want IIS?" If so, use a web role. If not, use a worker role.” One is always running, one is always listening

24 “Out” is the New “Up” Scaling Out has hard limits at CPU, Memory
Architecturally more limiting

25 Azure Storage Services in Concert

26 Key Pattern: Roles + Queues
Web Role (IIS) Worker Role Queues AJAX – orthogonal concern Worker Role not related to HTML 5 concept of Web Worker Blobs Tables

27 Canonical Example: Thumbnails
Web Role (IIS) Worker Role Queues AJAX – orthogonal concern Worker Role not related to HTML 5 concept of Web Worker Blobs Tables

28 Adding to Queue - Conceptual
Queue Name: “thumbnailer-7”

29 Adding to Queue - Actual
314159 265358 979323 Azure Blob Storage 314159 265358 979323

30 Roles + Queues: API queue.AddMessage( new CloudQueueMessage(
statusUpdateMessage)); Web Role (IIS) Worker Role Queues AJAX – orthogonal concern Worker Role not related to HTML 5 concept of Web Worker CloudQueueMessage statusUpdateMessage = queue.GetMessage( TimeSpan.FromSeconds(10)); … queue.DeleteMessage(statusUpdateMessage);

31 General Case: Rolesn + Queuesn RnQnRn
Worker Role Worker Role Web Role (IIS) Worker Role Web Role (IIS) Worker Role Type 1 Web Role (IIS) Web Role (IIS) Worker Role Worker Role Queues Worker Role AJAX – orthogonal concern Worker Role not related to HTML 5 concept of Web Worker Worker Role Type 2

32 Azure Queue Storage Service for RELIABLE message delivery
7 days = default TTL for item to stay in queue 30 seconds = default “invisibility window” 8 KB = max size of a queued item 500 = approx number of transactions a queue can handle per second Beware of “spinning” – may get throttled, disabled N = number of queues you can have (N >> 1)

33 Key Metric Queue length (and trend) is key data point for tuning Role deployment numbers Available programmatically for monitoring May vary across queue types

34 RnQnRn enables Responsive
Response to interactive users is as fast as a work request can be persisted Time consuming work done off-line Same total resource consumption, better subjective experience UX challenge – how to express Async to users? Communicate Progress Display Final results

35 RnQnRn enables Scalable
Loosely coupled, concern-independent scaling Blocking is Bane of Scalability Decoupled front/back ends insulate from other system issues if… Twitter down server unreachable Order processing partner doing maintenance Internet connectivity interruption

36 RnQnRn enables Distribution
Scale out systems better suited for geographic distribution More efficient and flexible because more granular Hard for a mega-machine to be in more than one place Failure need not be binary Chainsaw:

37 Optimization is optional
Individual role utilization may be low Role is a VM – lots of resources You pay by instance, not resource use within Make sure VM instances are “right sized” Small, Medium, Large, XL Make sure enough roles for uptime SLA requires minimum of 2 instances Business Trade-Off for further optimizations Optimize for CPU utilization (multiple threads) Combine types of processing into fewer role types

38 RnQnRn requires Idempotent
If we do a task twice, end result same as if we did it once App-specific concerns dictate approaches Compensating transactions Last in wins Many others possible – hard to say Example with Thumnailing

39 RnQnRn requires Poison Message Strategy
A Poison Message cannot be processed Error condition Non-transient reason Strategy One: Fall off the queue (TTL) Message stays in queue for 7 days (default) Strategy Two: Specify retry threshold Remove poison messages

40 RnQnRn enables Resilient
And Requires that you “Plan for failure” There will be role restarts Bake in handling of restarts Not an exception case! Expect it! Restarts are routine, system “just keeps working” If you follow the pattern, the payoff is substantial…

41 What’s Up? Aspirin-free Reliability as EMERGENT PROPERTY
Typical Site Any Azure Role Overall System Operating System Upgrade Application Update / Deploy Change Topology Hardware Failure Software Bug / Crash / Failure Security Patch Tech Windows

42 Questions? ?

43 BostonAzure.org Boston Azure cloud user group
Focused on Microsoft’s cloud solution Next meeting: 6-8:30 PM Thurs Oct 21st 2010 Hacking on “Boston Azure Project” Silverlight and Azure – better together Meetings usually 4th Thursday of month No cost; food; great topics; growing community; wifi Join list: Follow on

44 Slides available from Bill’s blog
hmbl.me is URL shortener running on Azure:

45 Bill Wilder @codingoutloud


Download ppt "New England Code Camp October-2010"

Similar presentations


Ads by Google