Tomammon.net – Public Cloud Integration

This is Part 4 in an 7-part series discussing the www.tomammon.net online resume application. Check out the architectural overview for some context, or see the links at the end of the article to navigate to other posts in this series.

In this post we’ll see the role that public cloud plays in the application. The majority of the business logic that powers www.tomammon.net runs in private facilities. However, it makes sense (as is the case in many modern applications) to run part of it from the public cloud. Here’s the strategic view of the application again:

 

The biggest cloud component of the application is the DNS Service.

DNS Design

Amazon’s Route53 is used to provide name services. Route53 is authoritative for tomammon.net. Global site redundancy for the application is provided by populating a single A record with the public IP addresses of each Content Node to create a round-robin DNS entry. Two content nodes are currently in service, as shown here:

The TTL for these records is set low at 300 seconds, to allow for changes in the recordset to propagate quickly. This approach has some major flaws, which we’ll discuss in Part 6: The Ugly Bits. Also, in Part 5: Operational Intent, I’ll show how the AWS API is used to make these DNS records responsive to the health of the application.

Static Assets

Some of the static assets (such as my profile picture image) for the site are located in an Amazon S3 bucket, which is called via the tomammon.com domain:

 

It’s pretty painless to set up a simple static website on S3. All of the dynamic components of the application are located in private compute facilites for www.tomammon.net, so I’m only using public cloud for very specific parts of the application, which keeps the costs quite low.

 References

  1. Hosting a Static Website on Amazon S3
  2. Example: Setting up a Static Website Using a Custom Domain
  3. How Do I Configure an S3 Bucket for Static Website Hosting?

 

Leave a Reply

Your email address will not be published. Required fields are marked *