Achieving low latency with Amazon CloudFront

Building a web application with high availability and eventual consistency

Background

This was a project I did recently in the first half of 2021. It was a collaboration with Ascenda Loyalty where my team was tasked to build a high performing application with the use of the Amazon Web Services (AWS). The application requirements are that it should be highly scalable and available while achieving eventual consistency.

Exploration

Our team explore various ways that we can fulfil this requirement. We considered various services that we can use on AWS, design patterns and communication patterns. On the programming side, we aggregate the results using asynchronous calls to the multiple suppliers so that we can provide our consumers with results first while slowly aggregating the remaining results. My team mate has done a nice article on this here where we also utilise AWS ElastiCache for Redis.

Amazon Web Services (AWS)

On the infrastructure side, our team decided on using AWS Elastic Container Service (ECS) to deliver on the scalable requirement and Amazon CloudFront to ensure the high availability. Amazon CloudFront also acts as a second layer of caching on top of the results that were cached in AWS ElastiCache for Redis.

AWS Architecture Diagram

Results

JMeter test results on application load balancer endpoint
JMeter test results on CloudFront endpoint

Takeaway

Though this project was daunting especially to us newbies in AWS, it was certainly rewarding to be able to see these kinds of amazing results, meaning that our implementation was good and praiseworthy.

Web Developer in Singapore, with a growing interest of Cloud Computing (AWS). I hope to share more on what I learn.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store