AWS Cloudfront availability SLA

Viewed 2222

I'm trying to design a system on AWS cloud with a certain level of SLA (say 99.99). One of the elements of my architecture is CloudFront and at this point, I'm struggling to understand if it's possible to increase the availability of it by introducing redundancy. Usually, it works, e.g. ECS containers or EC2 instance or RDS, but it's not possible for cloudfront (as far I a found).

What I've got so far:

here it says that SLA is from 99 to 99.9

and here it says that I can increase the availability having multiple Origins (CDNs), but to me, it seems like I would increase the availability of CDN, but not CloudFront service itself, wouldn't I?

Could somebody correct my understanding if it's wrong or/and explain the correct way of increasing SLA for CloudFront service?

3 Answers

Before you go crazy and try to design high SLA systems, think it through. 99.9% uptime is fairly easy to achieve at moderate cost. Go beyond that and your costs go up rapidly. For each addition 9, think 10x to 100x cost increase. This cost includes cloud infrastructure, management, monitoring and alerting software and the person costs. You will spend a lot of time managing systems that provide an SLA greater than 3 nines (99.9%).

99.99% utime means only 1 minute per week of downtime. This includes time that you need to spend patching operating systems, updating software, backing up, etc. Can you do all of that in 1 minute each week? If not, you won't achieve 4 nines (99.99%). Make a mistake and your 4 nines goal will become two nines.

Amazon CloudFront provides for 99.9% uptime. This is pretty good. To go higher, you need to provide multiple origins (sources for data that CloudFront caches and delivers to end users). Your origin costs just doubled in price not counting the workload to keep both origins exactly in-sync with each other 24x7. Any downtime or problems with your origins and your 4 nines just went out the window.

As others mentioned, this will introduce more costs and complexity, so here goes my idea:

You can increase availability with the help of Route53 (which has a SLA of 100%).

First, I would have a copy of the objects you're serving on Cloudfront on a different service, for example, EC2 (see how complexity starts to grow).

Then you'd need to setup a failover routing policy. Basically Route53 would check the health of your Cloudfront distribution and if it's not healthy then the traffic would failover to EC2.

Now your SLA will go up to 99.89% (99.99% EC2 * 99.9% Cloudfront)

Think of CloudFront as CDN (similar to Akamai and other CDN). I.e. it is a cache for static content that can reside on S3 or other origins. Even if CloudFront goes down your system is still 99.99% available (if designed that way), because your system boundary is VPC edge and not CloudFront, Route53, S3 etc. (these are regarded as external interfaces by your system and are in public zone unless you build a private connection to them).

Related