Raindrop/Hosted
Hosted Raindrop Setup
This document tries to describe the current state of the hosted raindrop setup. It's running on Amazon EC2 for convenience, but doesn't actually rely on anything Amazon specific, like S3.
System Classes
The entire system is composed of different system classes, each of them handling a set of specific tasks, and running on different instances. Each of these classes are currently running on a single EC2 instance, but can each scale independently. Keeping them at 1 right now is sufficient for our load, and simplifies things as well as keep running costs low.
Proxy
The proxies are what end-users browsers talk to directly. They are responsible for caching and routing requests to the right place.
On these, there are a few important services running:
Pound
Pound is a SSL reverse-proxy / load balancer used in our case for SSL termination. SSL requests are received by Pound who processes them and just blindly proxies them down to Varnish
The only extra thing it does is set a X-SSL: On http requests so layers down can determine if a request was via SSL or not.
Varnish
Varnish is a blazing fast caching proxy, and is in place to be able to serve cached content to end-users, so we don't have to rely on the browsers cache all the time. For instance, API requests will be cached by varnish for a little while, so even if users shift-reloads, we won't take the performance hit more than every n seconds/minutes.
Processor
Gearman Client
Couchdb
{ "_id": "e102a4d41882082a0038271661906851", "_rev": "10-85846664eee5ee7bdd819777387b7e6d", "username": "test-80db93", "backends": [ "http://domU-AB-CD-EF-00-11-22.compute-1.internal:5984/test-80db93" ], "current": 0, "active": true, "openids": [ "www.google.com/accounts/o8/id?id=XXX", "www.google.com/accounts/o8/id?id=YYY", "www.google.com/accounts/o8/id?id=ZZZ" ], "e-mails": "animalyouth@gmail.com", "gearmans": [ "domU-ab-cd-ef-01-23-45.compute-1.internal:4730", "domU-ab-cd-ef-01-23-78.compute-1.internal:4730" ] }