Building Serverless Web Applications
上QQ阅读APP看书,第一时间看更新

Amazon CloudFront

CloudFront is a Content Delivery Network (CDN). It is a special service with the objective of improving your website speed and availability. It achieves this by reducing the distance between users and files using Amazon's infrastructure around the world, which contains more than 60 edge locations, where each one of them can be used to host copies of your files.

A signal traveling at light speed from Sydney (Australia) to New York (USA) takes 53 milliseconds. A ping message needs a roundtrip, covering twice the distance and taking double the time. Also, there are other factors that increase this time: light travels 33% slower on fiber optics (glass), there is no straight line connecting both cities, and equipment like repeaters and switches will slow down transfer speeds. The result is a measured latency between 200 milliseconds and 300 milliseconds. By comparison, providing the content in the same city may reduce the latency to 15 milliseconds.

This difference is usually not significant for most applications. In a serverless website, the cold start delay has a bigger impact. If your use case is very sensitive to high latencies, you should avoid serverless or you can use CloudFront to minimize the impact, at least in the frontend.

To reduce costs, CloudFront won't replicate your content automatically throughout the world. It will replicate only where a demand for it exists. For example, when a request is made from a British city, the DNS will route the request to the nearest edge location and if it does not have yet a local copy of the file, it will be copied temporarily (cached). When another user in a nearby city requests the same file, it will benefit from a lower latency and fast response.