Hi,
I am using the SLA Estimation tool to calculate the composite SLA for a set of services used in an user-flow.
The composite SLA for 1 region is calculated by the tool accurately
VMs in Az (99.99%) * Az Traffic Manager (99.99%) * Az DNS (100%) * App Gateway (99.95%)* AAD (99.99%) = 99.92%
According to the documentation (ref: https://docs.microsoft.com/en-us/azure/architecture/framework/resiliency/business-metrics#slas-for-multiregion-deployments) a Multi-Region deployment can be calculated using the following formula
The combined SLA for two regions = (1 − (1 − 0.9995) ^ 2) = 99.999975%
The combined SLA for four regions = (1 − (1 − 0.9995) ^ 4) = 99.999999%
using the formula to calculate the SLA for 2 region deployment, the value should be 99.999936%
The tool displays the same value as that of the Single Region Deployment unless one the following value(s) is changed
I changed the value of the Global Key to "yes" and the tool was able to calculate the SLA accordingly.
getResetTiers() {
return [
{ name: 'Global', pairedRegion: 'no' },
{ name: 'Web', pairedRegion: 'no' },
{ name: 'Api', pairedRegion: 'no' },
{ name: 'Data', pairedRegion: 'no' },
{ name: 'Security', pairedRegion: 'no' },
{ name: 'Network', pairedRegion: 'no' },
The paired regions are used by default for Storage RA-GRS tiers, that is by design. In the same way, the suggestion is to use a paired region wherever possible. However, my understanding is that irrespective of the secondary region being a paired region the SLO/SLA should increase because of the global fail-over possibilities.
Also, if there is a reason that this array dictates the calculation of the Multi-Region Composite SLA, it would be really helpful if the documentation is updated accordingly. Also, what should the end user change in the UI to get the calculation right.
The calculation code is in the MainPanel.js file, in the CalculateSLAMultiRegion function
if(tier != undefined)
regionOption = tier.pairedRegion;
const sla = services[i].service.sla/100;
const value = **regionOption === 'yes' ? 1-((1-sla) * (1-sla)) : sla;**
total = total * value;