I’ve been getting a few requests for a write-up like this from curious Forrst’ers, so here goes nothing.
We’re on three MediaTemple (ve) boxes: one database, one staging, and one web frontend. They’ve each got 2GB RAM, 10,000 RPM RAID-10 disks, and all of that good stuff. I recommend you check out (mt)’s site for more juicy details on our hardware setup.
Forrst is built on PHP 5 (+ my own custom fork of CodeIgniter), Mysql 5, Redis, and MongoDB. Mysql is the primary datastore, with all application data living there. At this point, Redis is used primarily as a read-through cache for all primary key lookups, certain counts (# of comments and likes on a post), and as a persistent datastore for user-post subscriptions.
Mongo is presently being used as a write-through cache and secondary datastore for all activity records generated (activities represent various actions users take on other users or posts [Kyle liked post X by Adam]). At some point in the next week, the main activity stream will be switched over so that all reads are done against Mongo so as to avoid relying on complex SQL (and the ever-so-lovely Mysql query planner) for composing activity pages.
Forrst uses a combination of nginx + Apache for serving requests. nginx is configured as a reverse proxy and handles all incoming traffic; it’s configured to serve static assets (with far-future expires headers, ETag, and all of that goodness). Any other requests pass through to an apache process. I’m playing around with PHP-FPM and may switch over to a pure nginx approach at some point in the future.
Doing nightly data backups using mysqldump and a custom S3-backed backup script which pushes gzipped data dumps to two different S3 availability zones. Monitoring is done with monit, and uptime monitoring is presently done with Was It Up?.
Doh! How could I forget Postmark? We’re using them for all our outbound email and have had a stellar experience thus far. Low latency RESTful API, drivers for a bunch of languages and super-affordable.
I think that about does it for now. I’m happy to answer any questions about Forrst, its architecture, or anything else. Email kyle AT forrst DOT com, or get in touch with me — @kylebragger — on Twitter.