Presentation is loading. Please wait.

Presentation is loading. Please wait.

Cloud-Native in Azure Zoran B. Djordjevic’s CSCI E-175 Cloud Computing and Software as a Service class at Harvard University 19-November-2010 Copyright.

Similar presentations


Presentation on theme: "Cloud-Native in Azure Zoran B. Djordjevic’s CSCI E-175 Cloud Computing and Software as a Service class at Harvard University 19-November-2010 Copyright."— Presentation transcript:

1 Cloud-Native in Azure Zoran B. Djordjevic’s CSCI E-175 Cloud Computing and Software as a Service class at Harvard University 19-November-2010 Copyright (c) 2010, Bill Wilder Boston Azure User Group http://bostonazure.org @bostonazure Bill Wilder http://blog.codingoutloud.com http://blog.codingoutloud.com @codingoutloud Boston West Toastmasters http://bwtoastmasters.com http://bwtoastmasters.com Not here with my day job Only Bill’s personal views Services & Patterns for Building Cloud-Native Applications on Microsoft’s Windows Azure Stack

2 Bill Wilder – brief bio Bill Wilder has been a professional software developer for more than 20 years. Last year he founded the Boston Azure User Group, an in-person cloud computing community which gets together monthly to learn about Windows Azure through prepared talks and hands-on coding. Bill is especially excited about the Boston Azure Project, a collaborative Windows Azure coding project just starting up in the Boston Azure community. Bill is an active community speaker, blogger (blog.codingoutloud.com), and tweeter (@codingoutloud) on technology matters and soft skills for technologists, and is also a member of Boston West Toastmasters. Separately, Bill has a day job as an enterprise architect focusing on Microsoft technologies, including.NET.Boston Azure User GroupBoston Azure Projectblog.codingoutloud.com@codingoutloud

3 Agenda Azure provides Affordances that: -Nudge you towards scalable, -Cost-effective, -Durable application architectures We will look at those services and “natural” patterns…

4 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

5 [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

6 Part A Storage services

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

8 Persistent Storage Services – Options Type of DataTraditionalAzure Way RelationalSQL ServerSQL Azure BlobFile System, or SQL Server Azure Blobs FileFile SystemAzure Drives, or Azure Blobs Reliable QueueMSMQ (maybe)Azure Queues Non-RelationalAzure Tables

9 Azure Storage and Services Family of specialized, complementary storage and messaging services – Clean abstractions – Specialized services Queues Blobs, Drives, CDN Tables SQL Azure

10 Azure API RESTful interfaces for interacting with Queue, Table Storage, and Blob Storage SQL Azure is same as SQL Server Client agnostic [Service Management API also exists and is RESTful]

11 All Azure Storage is Durable Resilient in case of failure – “All data replicated multiple times” – Sriram Krishnan, Programming Windows Azure, p130+ – 3 copies SQL Azure supports full relational semantics – ACID = Atomicity, Consistency, Isolation, and Durability – Part of the PaaS-ness Blob Storage, Table Storage, Queues – Which of these support ACID?

12 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”

13 Azure Blob Storage Two types of Azure Blobs 1.“Block Blob” – Parallel upload scenarios – Resumable download/streaming scenarios – Up to 200 GB 2.“Page Blob” – Random read/write access scenarios – Azure Drives – Up to 1000 GB

14 Azure Blob Storage Storage Account Container[*] Blob[*] Unique URL Properties [several] Metadata [255 entries] Name/Value/Type

15 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

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

17 Azure Table Storage Partition 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)

18 Relational Data vs. Azure Tables ApproachSQL AzureAzure Tables NormalizationNormalizedDenormalized (Duplication)(No duplication)(Lots of duplication) StructureSchemaFlexible TransactionsDistributedLimited scope ResponsibilityDatabaseDeveloper KnobsManyFew ScaleUp (or Sharding) Out CostReasonableLess expensive

19

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

21 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

22 What is Cost of 1 Byte? Azure Storage cost/byte = x SQL Azure cost/byte = 66x Practical multiplier might be 100x

23 Part B Decoupling patterns

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

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

26 Web Roles vs. Worker Roles Web RoleWorker Role 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

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

28 Azure Storage Services in Concert

29 Azure Queue Storage In Azure’s architecture, part of Storage Family of Services – Builds on Blob Storage In Your architecture, it is your Messaging between loosely-coupled system components – Compute + Storage + Messaging

30 Key Pattern: Roles + Queues Web Role (IIS) Web Role (IIS) Worker Role Worker Role Queues Blobs Tables

31 Canonical Example: Thumbnails Web Role (IIS) Web Role (IIS) Worker Role Worker Role Queues Blobs Tables

32 Queue Name: “thumbnailer-7” http://bostonazure.queue.core.windows.net/thumbnailer-7 Adding to Queue - Conceptual

33 Azure Blob Storage Adding to Queue - Actual 314159 265358979323

34 Roles + Queues: API Web Role (IIS) Web Role (IIS) Worker Role Worker Role Queues queue.AddMessage( new CloudQueueMessage( payloadStringOrByteArray)); CloudQueueMessage statusUpdateMessage = queue.GetMessage( TimeSpan.FromSeconds(10)); … queue.DeleteMessage( statusUpdateMessage );

35 General Case: Roles n + Queues n R n  Q n  R n Web Role (IIS) Web Role (IIS) Worker Role Worker Role Queues Web Role (IIS) Web Role (IIS) Web Role (IIS) Web Role (IIS) Web Role (IIS) Web Role (IIS) Worker Role Worker Role Worker Role Worker Role Worker Role Type 1 Worker Role Type 1 Worker Role Worker Role Worker Role Worker Role Worker Role Worker Role Worker Role Type 2 Worker Role Type 2

36 Look @ WorkerRole.cs Thumbnailing Code public class WorkerRole : RoleEntryPoint { public override void Run() { … }

37 Azure Queues – by the numbers 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 What happens if you need more than 500 tps?

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

39 R n  Q n  R n 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

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

41 R n  Q n  R n 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

42 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” – XS ($0.05/hr), Small ($0.12/hr), 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

43 R n  Q n  R n 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

44 R n  Q n  R n requires Poison Message Strategy A Poison Message is not able to be processed – Error condition – Non-transient reason – CloudQueueMessage.DequeueCount property Strategy One: – Fall off the queue (TTL) – Message stays in queue for 7 days (default) Strategy Two: – Specify retry threshold – Remove poison messages

45 R n  Q n  R n 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…

46 What’s Up? Aspirin-free Reliability as EMERGENT PROPERTY Typical SiteAny Azure RoleOverall System Operating System Upgrade Application Update / Deploy Change Topology Hardware Failure Software Bug / Crash / Failure Security Patch

47 Questions? ?

48 BostonAzure.org Boston Azure cloud user group Focused on Microsoft’s cloud solution Next meeting: 6-8:30 PM Mon Dec 13 sh 2010 – Hacking on “Boston Azure Project” – Silverlight and Azure – better together Meetings usually 4 th Thursday of month – No cost; food; great topics; growing community; wifi Join email list: http://bostonazure.org Follow on Twitter: @bostonazure

49 Slides available from Bill’s blog http://blog.codingoutloud.com -or- http://hmbl.me/3KTBOE Note: hmbl.me is a URL shortening service running on Azure.

50 Bill Wilder @codingoutloud http://blog.codingoutloud.com


Download ppt "Cloud-Native in Azure Zoran B. Djordjevic’s CSCI E-175 Cloud Computing and Software as a Service class at Harvard University 19-November-2010 Copyright."

Similar presentations


Ads by Google