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. 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. 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.
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. In order to create this magnificent beast, we leveraged a few technologies not required for implementation,
but helpful in describing the underlying infrastructure.
A brilliant IaC implementation by Hashicorp, that makes launching resources in Amazon, and many other
IaaS providers.Why Should I Care?
How Does it Work?
Example Setup
Overview
Terraform