Element 84 Logo
Element 84, Inc. - Building Scalable, Low-Maintenance Websites Using AWS

E84 Research Lab

Building Scalable, Low-Maintenance Websites Using AWS

Most content management systems rely on a database to store content and changes to content. When a visitor loads a page, code fetches the content from the database and displays it to the user. These systems can be prone to malicious attacks via SQL injection and other techniques that target database-backed sites. They can also be difficult to scale, requiring tuning of both database and web server stacks.

Static websites don’t need a database because the files produced are just plain old HTML. This has an advantage over database-backed sites in that there is no processing happening on the server–all of those requests to the database can add up to latency and a degraded user experience.

As a result, static site content management does not update the content on the website directly. Instead, changes are produced and then the system rebuilds the entire website and re-deploys the updated static files. Dynamic content, when needed, is instead handled through JavaScript running in the end users browser.

The problem

Traditionally hosted websites can be difficult to scale and maintain, while custom CMS’ don’t address scalability.

The solution

Serverless cloud infrastructure, such as AWS, provides highly scalable, secure, and lower cost content publishing solutions.

The services

AWS Managed Services, Headless WP.

50%

Of the top 100,000 websites use WordPress

One of the major hurdles with implementing static sites within an organization is that there are very few mature content management systems that are built from the ground up to handle a static site workflow. Content management systems with mature user interfaces are generally database-backed and function in a traditional way: users update content in the admin system; the updates are stored in the database; and on the next page load, the web server requests content from the database and displays it to the user. Static site content management systems like Netlify and Siteleaf are purpose built for a static workflow, but lack advanced CMS features like complex user roles and useful writing and tagging tools and often require a subscription to a web service to integrate with other tools like GitHub. This creates problems for organizations that need require tiered access control and the ability for non-technical staff to write and contribute to website content without needing to know how to “push” new updates to the site. WordPress, although squarely in the traditional CMS camp, can be used in sort of an “interface-only” mode while bypassing the database publication model. By using the WordPress REST API, output from the admin system can be piped into just about any 3rd party static site system–allowing for the best of both worlds: static site deployment with a mature, familiar CMS. Gatsby is a static site generator built on React, a JavaScript framework for creating interactive user interfaces. Everything is configured out of the box including React, Webpack, Prettier, and more. Since Gatsby builds on top of React, you get all the benefits of the framework such as performance, components, JSX, the React library ecosystem, and a large support community.

GraphQL to query WP API

The most common solution for querying the WordPress REST API is GraphQL which is conveniently shipped with Gatsby out of the box. With some configuration and the installation of a single WordPress plugin we’re able to create pages and pull data from the WordPress backend using a simple GraphQL schema. All these systems come together to build and deploy new versions of the static site when users save changes within WordPress.

We worked on

Cloud Architecture & Data Scaling, Software Engineering & Analytics, User Experience & Design