azure cloud patterns

Post on 10-May-2015

182 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

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

Azure Cloud Patterns

About Me

• Software architect, consultant and instructor• Software Engineering Lecturer @ Ruppin Academic Center• Technology addict• .NET and Native Windows Programming

@tamir_dreshertamirdr@codevalue.nethttp://www.TamirDresher.com.

Cloud Patterns

http://en.wikipedia.org/wiki/List_of_cloud_types

Agenda

• What are Cloud Patterns

• Queue Centric

• Poison Messages

• Retry Logic

• Circuit Breaker

• Cache Aside

What are Cloud Patterns

• Architectural Patterns:“A design pattern in architecture and computer science is a formal way of documenting a solution to a design problem in a particular field of expertise”(http://en.wikipedia.org/wiki/Architectural_patterns)

Meet The ProblemDevGeek Coffee Shop

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!

DevGeek Coffee Shop - Operations

coffee

DevGeek Coffee Shop - Operations

coffee#!$@

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

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

Everything has a limit

MoneyMoneyCPUCPU

MEMMEMBANDWIDTHBANDWIDTH

StorageStorage

Scale out

• Add More Nodes– More Cashiers

• Load Distribution– Round Robin– Performance– Other (location, expertise, etc)

Azure Traffic Manager

Meet The Problem 2DevGeek Coffee Shop

DevGeek Coffee Shop – The clients complaints

• Long standing

• Sometimes orders gets lost

• Sometimes the line is so long that the workers close the doors

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

DevGeek Coffee Shop – Aroma model

coffee.

Message Centric

Web Sites worker role::

worker roleweb role

Message Centric – Load Leveling

::

Request Received at variable rate

Messages Processed at consistent rate

Message Centric – Resilency

::

X

X

Message Centric – Delayed Processing

::

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

Azure Service Bus – Queueing

Service Bus Messaging - Queue

• Two parts: 1.key/value properties2.binary message body.

• Example: a sales application sends message properties: 

• *Seller="Ava"  • *Amount=10000. • body : The sale's signed contract scanned image

Producer ConsumerDemo

C2

21

21

11

11

Removing Poison Messages

11

11

21

21334

0

40

Producers Consumers

30

30

2. GetMessage(Q, 30 s) msg 2

1. GetMessage(Q, 30 s) msg 1

11

11

21

21

10

10

20

20

P2

P1

C1

C2

P2

P1

C1

Removing Poison Messages

340

40

Producers Consumers

11

11

21

21

2. GetMessage(Q, 30 s) msg 23. C2 consumed msg 24. DeleteMessage(Q, msg 2)7. GetMessage(Q, 30 s) msg 1

1. GetMessage(Q, 30 s) msg 15. C1 crashed

11

11

21

21

6. msg1 visible 30 s after Dequeue30

30

12

1211

1112

12

C2

P2

P1

C1

Removing Poison Messages

340

40

Producers Consumers

12

12

2. Dequeue(Q, 30 sec) msg 23. C2 consumed msg 24. Delete(Q, msg 2)7. Dequeue(Q, 30 sec) msg 18. C2 crashed

1. Dequeue(Q, 30 sec) msg 15. C1 crashed10. C1 restarted11. Dequeue(Q, 30 sec) msg 112. DeliveryCount > 213. msg1.DeadLetter

12

12

6. msg1 visible 30s after Dequeue9. msg1 visible 30s after Dequeue

30

30

13

1312

1213

13

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.

Priority Queue

• The queue may hold message with different priorities (3-High, 1-Low)

Web Sites worker role::

worker roleweb role

:

Priority Queue

Application

Priority Queue

Application

Meet The Problem 3DevGeek Coffee Shop

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

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

Retry Pattern

• If at first you don’t succeed, try try again (William Edward Hickson)

• Retry Logic– Linear – every fixed amount of time– Exponential – if the server is heavy-used (throttling)

we don’t want to flood it immediate….1 sec….5 seconds….etc.

– Other

Operation With Basic Retry    int currentRetry = 0;    while (currentRetry < MaxRetries)    {        try        {            // Calling external service.            await TransientOperationAsync();        }        catch (Exception ex)        {            currentRetry++;             // Check if the exception thrown was a transient exception            if (!IsTransient(ex))            {                // If this is not a transient error                 // or we should not retry re-throw the exception.                 throw;            }        }         await Task.Delay(TimeBetweenRetries);    }

Retry Pattern – Solutions

• Azure Storage IRetryPolicy

• Azure Service Bus RetryPolicy

IRetryPolicy noRetryPolicy = new NoRetry();BlobRequestOptions requestOptions = new BlobRequestOptions(){    RetryPolicy = noRetryPolicy,};

MessagingFactory factory = MessagingFactory.Create();factory.RetryPolicy = RetryExponential.Default; factory.RetryPolicy = RetryPolicy.NoRetry;

The Transient Fault Handling Application Blockvar retryPolicy = new Incremental(5, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2));

retryPolicy.Retrying += (sender, args) => {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

Circuit Breaker

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

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

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

Circuit Breaker States

Closed Open

Success

Fail [threshold reached]

Half Open

Retry Timeout

Fail

Success

Fail [under threshold]

Cache Aside

Deja vu

• We fetch the same data

• We run the same calculation

• We query the same service

Cache Aside

Azure Caching

• Azure Managed Cache

• Azure Redis Cache

• In-Role Cache

In Role Cache – co-located

In Role Cache - Dedicated

InRole Cache

Summery

• What are Cloud Patterns

• Queue Centric

• Poison Messages

• Retry Logic

• Circuit Breaker

• Cache Aside

References

• P&P Cloud Design Patterns - http://msdn.microsoft.com/en-us/library/dn568099.aspx

• http://cloudpatterns.org/• Cloud Architecture Patterns

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

top related