Skip to content

Infrastructure

Daniel Furman edited this page Apr 13, 2018 · 2 revisions

It seems silly to have a project about well-managed deployments be deployed with manual steps, so let's start here! 😎

Deployment

All infrastructure is deployed with the Terraform infrastructure-as-code product.

The reasons are relatively simple:

  • I like writing HCL more than JSON files
  • terraform plan makes infrastructure testing almost as convenient python coding or Laravel's tinker console
  • Though I'm striving to use a no-use/no-cost service structure, typing terraform destroy is easy and should put any newcomer's minds to ease testing out the product

Architecture

Serverless Pattern

The serverless pattern starts with logically splitting the presentation layer from the application logic.

Simplified Single Page Application Architecture

Then, piece by piece we can build out and scale each element of the application with the user of managed services avoiding the burden of system patching, security vulnerabilities and HA design/deployment at each stage.

Presentation

Presentation data such as HTML page constructs, style sheets and javascript files are isolated into their own host. This has several advantages, first it decouples to choice of application logic or framework allowing independent development and deployment; next it logically moves client-side execution or static assets; finally, browser or mobile application rendering and logic are isolated into their own fault domain.

By breaking these down, client renderings can evolve as needed with new iterations of web applications, mobile applications or even bots/IoT domains able to move on their own.

It also allows us to fire the servers. This architectural choice allows the replacement of traditional web servers (which, for static assets, really just respond to GET requests with a file anyway) with object based storage. In our case, AWS S3; but, as WMD becomes wickedly popular, we can add a CDN like AWS CloudFront in front of it to improve user experience.

Application

Coming soon!

Workflow

Workflow diagram for front end and back end development

Clone this wiki locally