ghost is kinda like ... pretty fast

A while back I tossed a few bucks at the Ghost blogging platform kickstarter fund, and even though it's been available for a while I hadn't gotten around to trying it out until recently. Tomorrow night my brother Terry will be appearing on Top Chef Canada and last week I noticed that other contestants were getting some retweet love from the popular Food Network twitter account but he was missing out. I offered to get him set up with a site he could get some google juice flowing to and figured it was a good opportunity to give Ghost a try.

My experience with NodeJS hasn't been fabulous, but nvm has taken some of the sting out of the process so once I found a version that Ghost seemed to play well with (v0.10.26) it was a pretty smooth set up. It was about two hours from firing up a VPS to live. There's not much there of course, I just copied a few posts from his old blog over by hand and gave him creds to start posting. Then, anticipating his rise to star status chef I decided to look at performance.

I should preface this by pointing out if I haven't already that my day job is pretty much all about web app performance (if you're worried about that sort of thing you're doing yourself a disservice not having a free Traceview account!). I've spent the last ten months setting up and looking at performance metrics for countless websites built on a wide variety of platforms, so I feel like I can speak with at least some authority on this subject.

For most web apps load time is measured in seconds, this is the web most of us surf every day. Good apps have latency averages in the sub one second range. Even 900ms is better than most. Apps with really stellar performance will service the bulk of their requests in the 100-200ms range, these are apps which are really well tuned but providing this performance across all manner of requests is nearly impossible. POSTing data is slow, querying large data sets takes time. Providing serious functionality pushes most complex apps out of this range.

With nothing but nginx as a reverse proxy and Ghost running in a single process on a very low traffic blog the average load time for this site is 19ms! That's pretty much cached static content speeds. I put it under load with a few minutes of 500 concurrent requests and it "ballooned" to 1.7 seconds. A full page cache between node and nginx should dispatch the bulk of that latency with very little effort.

I'm absolutely floored by this thing. So, I will be moving this blog over to Ghost as soon as time allows. I want to be sure Terry's stuff is nice and stable and take my time to port all my content over as best I can but I just can't say no to numbers like that. I'd be impressed to see a fully cached Wordpress blog put up numbers in that range.

If you're in the market for a platform Ghost gets my solid stamp of approval, I paid a bit less than the five bucks / month it costs for a managed and hosted Ghost blog for the VPS I'm running it on but I'm fussy about details. Assuming their hosted solution is as good as the free one you can't go wrong shelling out for it.

And obviously, tune in to Top Chef Canada tomorrow night and watch my brother run rings around the competition!