Static Asset Front-End's

A static-asset front-end, is a design pattern in which the front-end is delivered to the users, without the intermediate processing of a server. This means that a very simple service can deliver the content, such as Amazon S3, and the distribution of that content is extremely simple.

Why Should I Care?

This approach leads to a very scalable and robust system. The servers that are hosting and delivering the content only has a single job. They are not required to route to a specific server based on a session, nor does the application server need to be replicated to multiple regions. The likelihood of a content delivery node failing is much lower than an application server.

The down side is you lose the power to perform server side checks, and pre-rendering of content on the server before delivering it to the client. More work needs to be performed on the client, and may lead to issues if you are attempting to support very old clients.

How Does it Work?

The main premise, is to collect a list of web assets that are necessary to run your front-end. These list of assets are then put onto a content delivery service, with the assumption that no server side work will be done. The beauty of this is that minimal setup and maintenance is required to make this pattern work.

Example Setup

Here is an example setup. It leverages Amazon's S3, Cloudfront and Route 53. This example setup is minimalist on the various technologies, to create a baseline for comparison to other techniques, that follow this design pattern.

Overview

In order to create this magnificent beast, we leveraged a few technologies not required for implementation, but helpful in describing the underlying infrastructure.

Terraform

A brilliant IaC implementation by Hashicorp, that makes launching resources in Amazon, and many other IaaS providers.