Guidebook runs on AWS! This is a simple diagram of our AWS architecture. Click a service we use to find out more.
We use an Elasticache cluster to cache data for faster response times.
Route 53 hosts DNS for our root zone, guidebook.com.
We use SQS to queue tasks that would take too long to do within the request (for example, publishing guides). These tasks get picked up by a second set of EC2 instances (see Async Task Processor).
This group of EC2 instances takes tasks from SQS and executes them. This is most commonly used for longer running tasks, like data imports and guide publishing.
We don't store any persistent data on EC2 instances -- it all goes directly to S3. We use S3 to serve our static data as well. We're currently implementing CloudFront to improve our static content delivery around the world.
Simple Email Service sends out all of our automatic email, such as registration confirmations, password resets, invitations, and reminders.
Our app servers run on large EC2 instances. We run nginx, gunicorn, and our Django application on these instances. Longer-running tasks are queued as tasks in SQS to be executed by another set of EC2 machines.
An Elastic Load Balancer distributes load between our EC2 app server instances. We do SSL termination at the ELB, freeing up resources on our app servers and simplifying key management.
We use RDS to host our MySQL instances and manage automatic failover via a Multi-AZ replica.