Having a grasp of common architectural patterns is essential to designing software architecture at scale. Using them saves not only time but also ensures a reliable implementation of your design. There’s no need to reinvent the wheel when there’s an architectural pattern available that applies to an architecture you’re developing.
The following is a brief overview of the Static Content Hosting architectural pattern.
Understanding the Static Content Hosting pattern
The Static Content Holding pattern is one in which static content is separated from dynamic content and stored over a variety of geographic locations in a manner that is optimized for fast access. An example of static content is a web page written in HTML that has data that changes slowly, for instance, an author’s biography. Another example is an mp4 file associated with a movie. An example of dynamic content is data that is fast-changing and is composed on the fly when requested. An example of dynamic data is a list of current stock prices.
A typical implementation of the Static Content Hosting pattern is a Content Delivery Network (CDN).
- Very efficient for delivering slow-changing content and media.
- Distribution technologies are very mature, thus making updates relatively painless.
- As with any redundancy technology, data consistency can be a problem.
- Data is inherently redundant, hence the cost of storage increases accordingly.
Putting it all together
The Static Content Hosting pattern has been in use since the early days of the commercial internet. Architects realized early on that there is little downside to separating an application’s static content from dynamic content. Over the years, static content storage services have standardized a lot of the work that goes into using the pattern. Such services abstract away service discovery to a storage resource to a well-known URL. Thus, should an underlying IP address representing a storage location change, those services consuming the static content will be unaffected because the URL representing the storage resource remains unchanged.
As mentioned above, the technologies used to implement the Static Content Hosting pattern have matured a great deal over the years. Still, there are risks. Upgrading static content might require a different deployment process due to the inherent separation of the static content from dynamic code. And, because static content tends to be distributed redundantly over many geolocations, storage costs will go up accordingly.