Azure Cloud Patterns

  • View
    177

  • Download
    0

Embed Size (px)

DESCRIPTION

this is the slides from the talk i gave at DevGeekWeek2014 further details are in my blog: http://blogs.microsoft.co.il/iblogger/2014/06/25/devgeekweek-2014-slides-and-demos/

Transcript

  • 1.Azure Cloud Patterns

2. About Me Software architect, consultant and instructor Software Engineering Lecturer @ Ruppin Academic Center Technology addict .NET and Native Windows Programming @tamir_dresher tamirdr@codevalue.net http://www.TamirDresher.com. 3. Cloud Patterns http://en.wikipedia.org/wiki/List_of_cloud_types 4. Agenda What are Cloud Patterns Queue Centric Poison Messages Retry Logic Circuit Breaker Cache Aside 5. What are Cloud Patterns Architectural Patterns: Adesign patterninarchitectureand computerscienceisaformalwayof documentingasolutiontoadesignproblem inaparticularfieldofexpertise (http://en.wikipedia.org/wiki/Architectural_patterns) 6. Meet The Problem DevGeek Coffee Shop 7. DevGeek Coffee Shop DevGeek Coffee is a well known and established coffee shop In business for 20 years Lately, with the increasing competition, sales are dropping Lets Help! 8. DevGeek Coffee Shop - Operations coffee 9. DevGeek Coffee Shop - Operations coffee#!$@ 10. What does this has to do with software? Cashier == Server Basically, this is a scalability issue Running in the cloud (potentially) makes scaling problem appear faster 11. Scale Up Add More Resources to a Node Faster cashier Better CPU to the server More Memory Faster Coffee machine Use a better algorithm/service 12. Everything has a limit MoneyMoney CPUCPU MEMMEMBANDWIDTH BANDWIDTH StorageStorage 13. Scale out Add More Nodes More Cashiers Load Distribution Round Robin Performance Other (location, expertise, etc) 14. Azure Traffic Manager 15. Meet The Problem 2 DevGeek Coffee Shop 16. DevGeek Coffee Shop The clients complaints Long standing Sometimes orders gets lost Sometimes the line is so long that the workers close the doors 17. DevGeek Coffee Shop Latency and throughput Latency is a time interval between the stimulation and response Time between ordering and receiving the coffee Throughput is the number of requests that can be served per unit time 18. DevGeek Coffee Shop Aroma model coffee . 19. Message Centric Web Sites worker role : : worker roleweb role 20. Message Centric Load Leveling : : Request Received at variable rate Messages Processed at consistent rate 21. Message Centric Resilency : : X X 22. Message Centric Delayed Processing : : 23. Azure Queuing Options Azure Storage Queues Simple, Reliable, Persistent Queue Max 200TB and 7 days TTL per message Azure Service Bus Broader capabilities: publish/subscribe, remoting, integration patterns Max 80GB and unlimited TTL per message http://msdn.microsoft.com/en-us/library/hh767287.aspx 24. Azure Service Bus Queueing 25. Service Bus Messaging - Queue Two parts: 1. key/value properties 2. binary message body. Example: a sales application sends message properties: *Seller="Ava" *Amount=10000. body : The sale's signed contract scanned image 26. Producer Consumer Demo 27. C2 2 1 2 1 1 1 1 1 Removing Poison Messages 1 1 1 1 2 1 2 1 334 0 4 0 Producers Consumers 3 0 3 0 2. GetMessage(Q, 30 s) msg 2 1. GetMessage(Q, 30 s) msg 1 1 1 1 1 2 1 2 1 1 0 1 0 2 0 2 0 P2 P1 C1 28. C2 P2 P1 C1 Removing Poison Messages 34 0 4 0 Producers Consumers 1 1 1 1 2 1 2 1 2. GetMessage(Q, 30 s) msg 2 3. C2 consumed msg 2 4. DeleteMessage(Q, msg 2) 7. GetMessage(Q, 30 s) msg 1 1. GetMessage(Q, 30 s) msg 1 5. C1 crashed 1 1 1 1 2 1 2 1 6. msg1 visible 30 s after Dequeue3 0 3 0 1 2 1 2 1 1 1 1 1 2 1 2 29. C2 P2 P1 C1 Removing Poison Messages 34 0 4 0 Producers Consumers 1 2 1 2 2. Dequeue(Q, 30 sec) msg 2 3. C2 consumed msg 2 4. Delete(Q, msg 2) 7. Dequeue(Q, 30 sec) msg 1 8. C2 crashed 1. Dequeue(Q, 30 sec) msg 1 5. C1 crashed 10. C1 restarted 11. Dequeue(Q, 30 sec) msg 1 12. DeliveryCount > 2 13. msg1.DeadLetter 1 2 1 2 6. msg1 visible 30s after Dequeue 9. msg1 visible 30s after Dequeue 3 0 3 0 1 3 1 3 1 2 1 2 1 3 1 3 30. Service Bus Messaging Dead letters the name of the sub-queue is [queueName]/ $DeadLetterQueue The path can be obtained using the FormatDeadLetterPath method of the QueueClient Can be consumed by any other consumer and check the messages, log them etc. 31. Priority Queue The queue may hold message with different priorities (3-High, 1-Low) Web Sites worker role : : worker roleweb role : 32. Priority Queue Application 33. Priority Queue Application 34. Meet The Problem 3 DevGeek Coffee Shop 35. DevGeek Coffee Shop The clients complaints 1. Sometimes the soy milk ran out 2. the barista calls to the storeroom 3. The line is busy 4. The barista move to next order 5. Customer receive an order cancellation 36. Transient Faults Transient fault is a fault that is no longer present if power is disconnected for a short time and then restored. (http ://en.wikipedia.org/wiki/Transient_fault#Transient_fault) Many faults in connectivity to cloud are transient by nature Commonly occur when connecting to service or database 37. Retry Pattern If at first you dont succeed, try try again (William Edward Hickson) Retry Logic Linear every fixed amount of time Exponential if the server is heavy-used (throttling) we dont want to flood it immediate.1 sec.5 seconds.etc. Other 38. Operation With Basic Retry intcurrentRetry=0; while(currentRetry { Trace.WriteLine(args.LastException, "Information"); }; try { retryPolicy.ExecuteAction(() => { TranisentErrorOperation(); }); } catch (Exception) { // All the retries failed. } http://msdn.microsoft.com/en-us/library/hh680934(v=pandp.50).aspx 41. Circuit Breaker 42. Retry Logic Not Always Not all The time Baristas keeps retrying/failing Time Consuming Maybe we can call someone else? The remote service still might get flooded If a failure is not transient, we wish that next attempts fail immediately 43. Circuit Breaker Circuit Breaker pattern prevent repeatedly trying to execute an operation that is likely to fail continue without waiting for the fault to be rectified Prevents wasting valuable resources because of the wait 44. Circuit Breaker The Circuit Breaker is a proxy Monitor the number of recent failures Decide if to proceed or do something else Throw exception Try different destination 45. Circuit Breaker States Closed Open Success Fail [threshold reached] Half Open Retry Timeout Fail Success Fail [under threshold] 46. Cache Aside 47. Deja vu We fetch the same data We run the same calculation We query the same service 48. Cache Aside 49. Azure Caching Azure Managed Cache Azure Redis Cache In-Role Cache 50. In Role Cache co-located 51. In Role Cache - Dedicated 52. InRole Cache 53. Summery What are Cloud Patterns Queue Centric Poison Messages Retry Logic Circuit Breaker Cache Aside 54. References P&P Cloud Design Patterns - http://msdn.microsoft.com/en-us/library/dn568099.aspx http://cloudpatterns.org/ Cloud Architecture Patterns 55. Images References 1. http://en.wikipedia.org/wiki/List_of_cloud_types 2. http://www.freedigitalphotos.net/images/Emotions_g96- Arms_Up_Character_Shows_Shock_And_Surprise_p142355.html 3. http://www.freedigitalphotos.net/images/Hot_drinks_g184- Coffee_In_White_Cup_p96634.html