There are companies who would like to deliver their information such as web pages, video, documents, audio, etc to the greatest number of user as possible into a high resilience architecture thus content delivery networks are increasingly important for these companies. Today, thanks to cloud service providers and content delivery networks, users can watch streaming videos or listen live music easily and without disruptions from anywhere and, meanwhile, companies can pay as they go to the cloud where cloud providers charge based on usage.
A Content Delivery Network or CDN is a network of computers hosted in different regions around the world which store a copy of data that can be delivered to users based mainly on proximity. For instance, if we were a spanish company who deliver video in EMEA and LATAM, we could upload our video to the CDN to be delivered quickly to end users based on geography. We shouldn’t confuse CDN with Global Server Load Balancing (GSLB) because GSLB provides load balancing between data centers thus load balancing our services, while CDN is based on GSLB architecture.
There are many companies who offer CDN services like Amazon, Akamai or Cloudflare. All of them have data centers available on five continents to deliver content quickly. For instance, Amazon has more than 11 data centers where we can create our virtual Data Center with AWS Elastic Load Balancing for high availability, we can protect our services with AWS Shield & AWS WAF, and we can also accelerate our web applications with Amazon CloudFront. On the other hand, Cloudflare is well known by his powerful network which is able to reach high throughputs and protect our services against DDoS attacks. However, Akamai has always been, from my point of view, a content delivery provider.
|High Availability and Scalability Architecture|
Amazon CloudFront is a global content delivery network integrated with AWS services which help us to deliver highly available and scalable applications with high performance and it’s also able to secure content at the edge. In addition, it’s cost effective because we pay only for the data transfer and requests used to deliver content to our customers. Amazon CloudFront is easy to use and deploy from AWS Management Console, where we have to choose the viewer protocol policy and allowed HTTP methods as well as caching and encryption configuration. What’s more, distribution settings like price class, security protection and HTTP/2 support can be chosen as well as logging and IPv6 compatibility.
|Amazon CloudFront Distribution Settings|
As IT engineers, when we have to design high available, scalable and reliable architectures, we have to take into account many things. First, we have to design our services thinking about failures thus we should design avoiding single point of failures. Multiple servers with a load balancer help us to meet this requirement. Second, one data center may not be enough thus we’ll need multiple data centers balanced with GSLB in different regions and databases should also be replicated and synchronized. Finally, monitoring is a must for dynamic scalability. Many requests, more servers. Few requests, less servers. On the other hand, we can use content delivery network services like Amazon CloudFront, Akamai or Cloudflare to deliver our web pages, video or audio easily without thinking about networking or load balancing.
What are you thinking about? Are your services highly scalable and available?