SlideShare a Scribd company logo
Design Patterns and Plan for
developing High Available Azure
Applications
Himanshu Sahu
Mindfire Solutions
himanshus@mindfiresolutions.com
Availability
Availability
Availability defines the proportion of time that the system is
functional and working. It will be affected by system errors,
infrastructure problems, malicious attacks, and system load. It is
usually measured as a percentage of uptime. Cloud applications
typically provide users with a service level agreement (SLA), which
means that applications must be designed and implemented in a
way that maximizes availability.
Why Design Patterns
Design patterns can help to solve a specific and commonly
occurring problems that may be encountered when building
applications that run in the cloud.
Problem Areas in the Cloud
Availability , Data management, Design and Implementation,
Messaging, Management and Monitoring, Performance and
Scalability, Resiliency, Security
Design Patterns and Plan for developing
High Available Azure Applications
Different Patterns for High Availability
3.1 Health Endpoint Monitoring Pattern
3.2 Queue-based Load Leveling Pattern
3.2 Throttling Pattern
3.3 Retry Pattern
3.4 Multiple Datacenter Deployment Guidance
Health Endpoint Monitoring Pattern
Implement functional checks within an application that external
tools can access through exposed endpoints at regular intervals.
This pattern helps to verify that applications and services are
performing correctly.
Many factors that affect cloud-hosted applications are network
latency, the performance and availability of the underlying
compute and storage systems, and the network bandwidth
between them. The service may fail entirely or partially due to any
of these factors. Therefore, you must verify at regular intervals that
the service is performing correctly to ensure the required level of
availability—which might be part of your Service Level Agreement
(SLA).
Health Endpoint Monitoring Pattern
Solutions
Implement health monitoring by sending requests to an endpoint
on the application.
A health monitoring check typically combines two factors: the
checks (if any) performed by the application or service in response
to the request to the health verification endpoint, and analysis of
the result by the tool or framework that is performing the health
verification check.
Health Endpoint Monitoring Pattern
Health Endpoint Monitoring Pattern
When to Use this Pattern
•
Monitoring websites and web applications to verify availability.
•
Monitoring websites and web applications to check for correct
operation.
•
Monitoring middle-tier or shared services to detect and isolate a
failure that could disrupt other applications.
•
To complement existing instrumentation within the application,
such as performance counters and error handlers. Health
verification checking does not replace the requirement for logging
and auditing in the application. Instrumentation can provide
valuable information for an existing framework that monitors
counters and error logs to detect failures or other issues. However,
it cannot provide information if the application is unavailable.
Health Endpoint Monitoring Pattern
How to do in Azure
•
Use the built-in features of Microsoft Azure, such as the
Management Services or Traffic Manager.
•
Use a third party service (NewRelic, and Statuscake)
•
Create a custom utility or a service that runs on your own or on a
hosted server.
Queue-Based Load Leveling Pattern
Use a queue that acts as a buffer between a task and a service that
it invokes in order to smooth intermittent heavy loads that may
otherwise cause the service to fail or the task to time out. This
pattern can help to minimize the impact of peaks in demand on
availability and responsiveness for both the task and the service.
Temporal decoupling
Load leveling
Load balancing
Loose coupling
Queue-Based Load Leveling Pattern
Queue-Based Load Leveling Pattern
When to Use this Pattern
•
This pattern is ideally suited to any type of application that uses
services that may be subject to overloading.
•
This pattern might not be suitable if the application expects a
response from the service with minimal latency.
Queue-Based Load Leveling Pattern
Queue-Based Load Leveling Pattern
Queue-Based Load Leveling Pattern
How to do in Azure
•
Using Windows Azure Storage Queue or Windows Azure Service
Bus
Throttling Pattern
Control the consumption of resources used by an instance of an
application, an individual tenant, or an entire service.
This pattern can allow the system to continue to function and meet
service level agreements, even when an increase in demand places
an extreme load on resources.
Many factors that affect cloud-hosted applications are network
latency, the performance and availability of the underlying
compute and storage systems, and the network bandwidth
between them. The service may fail entirely or partially due to any
of these factors. Therefore, you must verify at regular intervals that
the service is performing correctly to ensure the required level of
availability—which might be part of your Service Level Agreement
(SLA).
Throttling Pattern
Solutions
Auto Scaling
Queue-Based Load Leveling Pattern
Priority Queue Pattern
Rejecting requests from an individual user who has already
accessed system APIs more than n times per second over a given
period of time.
Disabling or degrading the functionality of selected nonessential
services so that essential services can run unimpeded with
sufficient resources.
Throttling Pattern
Throttling Pattern
When to Use this Pattern

To ensure that a system continues to meet service level
agreements.

To prevent a single tenant from monopolizing the resources
provided by an application.

To handle bursts in activity.

To help cost-optimize a system by limiting the maximum resource
levels needed to keep it functioning.
Retry Pattern
Enable an application to handle anticipated, temporary failures
when it attempts to connect to a service or network resource by
transparently retrying an operation that has previously failed in the
expectation that the cause of the failure is transient.
An application that communicates with elements running in the
cloud must be sensitive to the transient faults (that means Faults
which are self-correcting such as Network failure, temporarry
serivice available or time-out error due to busy server ) that can
occur in this environment.
Retry Pattern
Solutions
Implement retry logic when trying to connect any service in cloud.
Implement retry logic when trying to connect
SQL Azure
Azure Service Bus
Azure Storage
Azure Caching Service
Retry Pattern
Solutions
The Transient Fault Handling Application Block
The Transient Fault Handling Application Block includes the
following retry strategies
FixedInterval
Incremental
ExponentialBackoff
The FixedInterval retry strategy retries an operation a fixed
number of times at fixed intervals.
Retry Pattern
Solutions
The Incremental retry strategy retries an operation a fixed number
of times at intervals that increase by the same amount each time.
For example, at two-second, four-second, six-second, and eight-
second intervals.
The ExponentialBackoff retry strategy retries an operation a fixed
number of times at intervals that increase by a greater number
each time. For example, at two-second, four-second, eight-second,
and sixteen-second intervals. This retry strategy also introduces a
small amount of random variation into the intervals.
Retry Pattern
Solutions
Connection Resiliency / Retry Logic (EF6 onwards)
Connection Resiliency refers to the ability for EF to automatically
retry any commands that fail due to connection throttling, or to
instability in the network causing intermittent timeouts and other
transient errors.
Multiple Datacenter Deployment
Guidance
Growing capacity over time.
Providing global reach with minimum latency for users
Maintaining performance and availability
Providing additional instances for resiliency
Providing a facility for disaster recovery
Multiple Datacenter Deployment
Guidance
Solutions
Manual Re-Routing On Application Failure
Automated Re-Routing On Application Failure
Re-Routing with Azure Traffic Manager( Built-In Azure Service)
Resources
https://msdn.microsoft.com/en-us/library/dn600219.aspx
https://msdn.microsoft.com/enus/library/hh680906(v=pandp.50).asp
https://msdn.microsoft.com/en-us/library/dn589783.aspx
https://msdn.microsoft.com/en-us/library/dn589788.aspx
http://blogs.msdn.com/b/appfabric/archive/2011/05/17/an-introduct
Questions?
Thank you!

More Related Content

PDF
MS Cloud Design Patterns Infographic 2015
PDF
SERVICE LEVEL AGREEMENT BASED FAULT TOLERANT WORKLOAD SCHEDULING IN CLOUD COM...
PPTX
Cloud Testing by Suganya M
PPT
Muves3 Elastic Grid Java One2009 Final
PDF
Cloud Design Patterns
PDF
Monitoring Clusters and Load Balancers
PDF
Cloud_Testing_The_future_of_softwareV1.04
DOCX
White paper on testing in cloud
MS Cloud Design Patterns Infographic 2015
SERVICE LEVEL AGREEMENT BASED FAULT TOLERANT WORKLOAD SCHEDULING IN CLOUD COM...
Cloud Testing by Suganya M
Muves3 Elastic Grid Java One2009 Final
Cloud Design Patterns
Monitoring Clusters and Load Balancers
Cloud_Testing_The_future_of_softwareV1.04
White paper on testing in cloud

What's hot (19)

PPT
Software Testing in Cloud Platform A Survey_final
PPTX
CloverDX for IBM Infosphere MDM (for 11.4 and later)
PPT
Taking Testing to the Cloud
PDF
An Introduction to Designing Reliable Cloud Services January 2014
PDF
Conference Paper: CHASE: Component High-Availability Scheduler in Cloud Compu...
PPTX
Cloud Testing - A New Age Approach to Testing
PPTX
Introducing testing cloud services - Transformation to SaaS
PDF
ticle_poster
PDF
Harnessing the Cloud for Performance Testing- Impetus White Paper
PDF
Mmckeown hadr that_conf
PDF
Virtualization impact in software testing
PDF
Kks sre book_ch1,2
PPTX
The emergence of cloud computing and software testing
ODP
Best practice adoption (and lack there of)
PPT
BTD testing with the cloud v2.0
PPTX
How to Build Scalable Websites in the Cloud
PPTX
Harness the Power of the Cloud for Grid Computing and Batch Processing Applic...
PDF
Kks sre book_ch10
PDF
Automatic scaling of web applications for cloud computing services
Software Testing in Cloud Platform A Survey_final
CloverDX for IBM Infosphere MDM (for 11.4 and later)
Taking Testing to the Cloud
An Introduction to Designing Reliable Cloud Services January 2014
Conference Paper: CHASE: Component High-Availability Scheduler in Cloud Compu...
Cloud Testing - A New Age Approach to Testing
Introducing testing cloud services - Transformation to SaaS
ticle_poster
Harnessing the Cloud for Performance Testing- Impetus White Paper
Mmckeown hadr that_conf
Virtualization impact in software testing
Kks sre book_ch1,2
The emergence of cloud computing and software testing
Best practice adoption (and lack there of)
BTD testing with the cloud v2.0
How to Build Scalable Websites in the Cloud
Harness the Power of the Cloud for Grid Computing and Batch Processing Applic...
Kks sre book_ch10
Automatic scaling of web applications for cloud computing services
Ad

Similar to Design patterns and plan for developing high available azure applications (20)

PDF
Ms cloud design patterns infographic 2015
PPTX
Cloud architecture
PDF
Cloud-Based Automation Testing: The Future of Scalable and Efficient QA
PDF
How to Test Your Mobile Apps From Anywhere.pdf
PDF
How Cloud Performance Testing Offers a Cost Advantage Amidst The Economic Rec...
PDF
Azure Design Review Checklist Availabilityの巻
PDF
Test Automation Framework Design | www.idexcel.com
PPTX
Azure SQL Database
PDF
Ncerc rlmca202 adm m4 ssm
PDF
Continuous Testing of Service-Oriented Applications Using Service Virtualization
PDF
M017258892
PPT
Performance Testing Strategy for Cloud-Based System using Open Source Testing...
PDF
Deploying Models
PDF
Enhancing Serverless Architecture with Cloud-Native Testing.pdf
PDF
Achieve Maximum Performance_ Top 10 Cloud Performance Testing Tools in 2024.pdf
PDF
Achieve Maximum Performance_ Top 10 Cloud Performance Testing Tools in 2024.pdf
PDF
Enhancing Serverless Architecture with Cloud-Native Testing.pdf
PDF
Applying a Comprehensive, Automated Assurance Framework to Validate Cloud Rea...
PPT
Less11 3 e_loadmodule_1
PDF
CLOUD TESTING MODEL – BENEFITS, LIMITATIONS AND CHALLENGES
Ms cloud design patterns infographic 2015
Cloud architecture
Cloud-Based Automation Testing: The Future of Scalable and Efficient QA
How to Test Your Mobile Apps From Anywhere.pdf
How Cloud Performance Testing Offers a Cost Advantage Amidst The Economic Rec...
Azure Design Review Checklist Availabilityの巻
Test Automation Framework Design | www.idexcel.com
Azure SQL Database
Ncerc rlmca202 adm m4 ssm
Continuous Testing of Service-Oriented Applications Using Service Virtualization
M017258892
Performance Testing Strategy for Cloud-Based System using Open Source Testing...
Deploying Models
Enhancing Serverless Architecture with Cloud-Native Testing.pdf
Achieve Maximum Performance_ Top 10 Cloud Performance Testing Tools in 2024.pdf
Achieve Maximum Performance_ Top 10 Cloud Performance Testing Tools in 2024.pdf
Enhancing Serverless Architecture with Cloud-Native Testing.pdf
Applying a Comprehensive, Automated Assurance Framework to Validate Cloud Rea...
Less11 3 e_loadmodule_1
CLOUD TESTING MODEL – BENEFITS, LIMITATIONS AND CHALLENGES
Ad

Recently uploaded (20)

PPTX
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
PDF
Digital Logic Computer Design lecture notes
PPTX
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
PPTX
OOP with Java - Java Introduction (Basics)
PPTX
bas. eng. economics group 4 presentation 1.pptx
PPTX
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
PDF
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
PDF
Embodied AI: Ushering in the Next Era of Intelligent Systems
PPTX
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd
PDF
Model Code of Practice - Construction Work - 21102022 .pdf
PPTX
CH1 Production IntroductoryConcepts.pptx
PPTX
Strings in CPP - Strings in C++ are sequences of characters used to store and...
PPTX
Geodesy 1.pptx...............................................
PDF
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
PPTX
additive manufacturing of ss316l using mig welding
PPTX
UNIT-1 - COAL BASED THERMAL POWER PLANTS
PDF
Well-logging-methods_new................
PPTX
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PPTX
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
Digital Logic Computer Design lecture notes
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
OOP with Java - Java Introduction (Basics)
bas. eng. economics group 4 presentation 1.pptx
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
Embodied AI: Ushering in the Next Era of Intelligent Systems
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd
Model Code of Practice - Construction Work - 21102022 .pdf
CH1 Production IntroductoryConcepts.pptx
Strings in CPP - Strings in C++ are sequences of characters used to store and...
Geodesy 1.pptx...............................................
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
additive manufacturing of ss316l using mig welding
UNIT-1 - COAL BASED THERMAL POWER PLANTS
Well-logging-methods_new................
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx

Design patterns and plan for developing high available azure applications

  • 1. Design Patterns and Plan for developing High Available Azure Applications Himanshu Sahu Mindfire Solutions himanshus@mindfiresolutions.com
  • 2. Availability Availability Availability defines the proportion of time that the system is functional and working. It will be affected by system errors, infrastructure problems, malicious attacks, and system load. It is usually measured as a percentage of uptime. Cloud applications typically provide users with a service level agreement (SLA), which means that applications must be designed and implemented in a way that maximizes availability.
  • 3. Why Design Patterns Design patterns can help to solve a specific and commonly occurring problems that may be encountered when building applications that run in the cloud. Problem Areas in the Cloud Availability , Data management, Design and Implementation, Messaging, Management and Monitoring, Performance and Scalability, Resiliency, Security
  • 4. Design Patterns and Plan for developing High Available Azure Applications Different Patterns for High Availability 3.1 Health Endpoint Monitoring Pattern 3.2 Queue-based Load Leveling Pattern 3.2 Throttling Pattern 3.3 Retry Pattern 3.4 Multiple Datacenter Deployment Guidance
  • 5. Health Endpoint Monitoring Pattern Implement functional checks within an application that external tools can access through exposed endpoints at regular intervals. This pattern helps to verify that applications and services are performing correctly. Many factors that affect cloud-hosted applications are network latency, the performance and availability of the underlying compute and storage systems, and the network bandwidth between them. The service may fail entirely or partially due to any of these factors. Therefore, you must verify at regular intervals that the service is performing correctly to ensure the required level of availability—which might be part of your Service Level Agreement (SLA).
  • 6. Health Endpoint Monitoring Pattern Solutions Implement health monitoring by sending requests to an endpoint on the application. A health monitoring check typically combines two factors: the checks (if any) performed by the application or service in response to the request to the health verification endpoint, and analysis of the result by the tool or framework that is performing the health verification check.
  • 8. Health Endpoint Monitoring Pattern When to Use this Pattern • Monitoring websites and web applications to verify availability. • Monitoring websites and web applications to check for correct operation. • Monitoring middle-tier or shared services to detect and isolate a failure that could disrupt other applications. • To complement existing instrumentation within the application, such as performance counters and error handlers. Health verification checking does not replace the requirement for logging and auditing in the application. Instrumentation can provide valuable information for an existing framework that monitors counters and error logs to detect failures or other issues. However, it cannot provide information if the application is unavailable.
  • 9. Health Endpoint Monitoring Pattern How to do in Azure • Use the built-in features of Microsoft Azure, such as the Management Services or Traffic Manager. • Use a third party service (NewRelic, and Statuscake) • Create a custom utility or a service that runs on your own or on a hosted server.
  • 10. Queue-Based Load Leveling Pattern Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth intermittent heavy loads that may otherwise cause the service to fail or the task to time out. This pattern can help to minimize the impact of peaks in demand on availability and responsiveness for both the task and the service. Temporal decoupling Load leveling Load balancing Loose coupling
  • 12. Queue-Based Load Leveling Pattern When to Use this Pattern • This pattern is ideally suited to any type of application that uses services that may be subject to overloading. • This pattern might not be suitable if the application expects a response from the service with minimal latency.
  • 15. Queue-Based Load Leveling Pattern How to do in Azure • Using Windows Azure Storage Queue or Windows Azure Service Bus
  • 16. Throttling Pattern Control the consumption of resources used by an instance of an application, an individual tenant, or an entire service. This pattern can allow the system to continue to function and meet service level agreements, even when an increase in demand places an extreme load on resources. Many factors that affect cloud-hosted applications are network latency, the performance and availability of the underlying compute and storage systems, and the network bandwidth between them. The service may fail entirely or partially due to any of these factors. Therefore, you must verify at regular intervals that the service is performing correctly to ensure the required level of availability—which might be part of your Service Level Agreement (SLA).
  • 17. Throttling Pattern Solutions Auto Scaling Queue-Based Load Leveling Pattern Priority Queue Pattern Rejecting requests from an individual user who has already accessed system APIs more than n times per second over a given period of time. Disabling or degrading the functionality of selected nonessential services so that essential services can run unimpeded with sufficient resources.
  • 19. Throttling Pattern When to Use this Pattern  To ensure that a system continues to meet service level agreements.  To prevent a single tenant from monopolizing the resources provided by an application.  To handle bursts in activity.  To help cost-optimize a system by limiting the maximum resource levels needed to keep it functioning.
  • 20. Retry Pattern Enable an application to handle anticipated, temporary failures when it attempts to connect to a service or network resource by transparently retrying an operation that has previously failed in the expectation that the cause of the failure is transient. An application that communicates with elements running in the cloud must be sensitive to the transient faults (that means Faults which are self-correcting such as Network failure, temporarry serivice available or time-out error due to busy server ) that can occur in this environment.
  • 21. Retry Pattern Solutions Implement retry logic when trying to connect any service in cloud. Implement retry logic when trying to connect SQL Azure Azure Service Bus Azure Storage Azure Caching Service
  • 22. Retry Pattern Solutions The Transient Fault Handling Application Block The Transient Fault Handling Application Block includes the following retry strategies FixedInterval Incremental ExponentialBackoff The FixedInterval retry strategy retries an operation a fixed number of times at fixed intervals.
  • 23. Retry Pattern Solutions The Incremental retry strategy retries an operation a fixed number of times at intervals that increase by the same amount each time. For example, at two-second, four-second, six-second, and eight- second intervals. The ExponentialBackoff retry strategy retries an operation a fixed number of times at intervals that increase by a greater number each time. For example, at two-second, four-second, eight-second, and sixteen-second intervals. This retry strategy also introduces a small amount of random variation into the intervals.
  • 24. Retry Pattern Solutions Connection Resiliency / Retry Logic (EF6 onwards) Connection Resiliency refers to the ability for EF to automatically retry any commands that fail due to connection throttling, or to instability in the network causing intermittent timeouts and other transient errors.
  • 25. Multiple Datacenter Deployment Guidance Growing capacity over time. Providing global reach with minimum latency for users Maintaining performance and availability Providing additional instances for resiliency Providing a facility for disaster recovery
  • 26. Multiple Datacenter Deployment Guidance Solutions Manual Re-Routing On Application Failure Automated Re-Routing On Application Failure Re-Routing with Azure Traffic Manager( Built-In Azure Service)