Cloudpave, LLC. provides software products as service. Its main focus is SaaS(software as a service) and cloud computing. The company is formed in early 2014 in the state of corns, Indiana, U.S. Check out Cloudpave at http://www.cloudpave.com. The rest of this article talks about how cloudpave.com is setup in AWS.
Following figure is a high level diagram of components and technologies involved in the setup.
1. In Route 53, www.cloudpave.com is a CNAME record that points to a Cloudfront distribution.
2. The origin of Cloudfront distribution is URL of the S3 static website from bucket www.cloudpave.com. Note that here we used custom origin with the URL of static website instead of S3 origin. This is to allow request http://www.coudpave.com/foo/ to be mapped to object s3://www.cloudpave.com/foo/index.html.
3. In Route 53, cloudpave.com is an A record with alias pointing to cloudpave.com static website directly. This means any HTTP request to cloudpave.com domain is handled by S3 website in US east-1 data center first, unlike CDN.
4. The S3 static website cloudpave.com is an empty redirection bucket in US east-1 that redirect any request to domain www.cloudpave.com. This means request http://cloudpave.com/foo/bar.html is redirected by server in US east-1 to http://www.cloudpave.com/foo/bar.html.
5. An VPC in US east-1 is setup to host Cloudpave applications.
6. In Route 53, work.cloudpave.com is a CNAME record pointing to a web application(in form of an Elasticbeanstalk environment) that shows website of http://work.cloudpave.com.
7. The web application communicates with a RESTful application(in form of an Elasticbeanstalk environment) built on top of Datamung. It also relies on an RDS instance in same VPC, a few DynamoDB tables and Simple Workflow.
8. In Route53, blog.cloudpave.com is a CNAME record pointing to a blog in Google Blogger.
In general the design is quite simple, straightforward and typical. It follows very basic design rules:
- Static content is distributed through Cloudfront.
- Dynamic applications run in Elasticbeanstalk.
- RESTful service is physically separated from web application.
- Instances are caged in VPC