It’s now been a week or so since we put the new Kyan.com live and we’ve been getting nothing but rave reviews from everyone who has seen the site. Whilst this is an amazing thing for us to get, it does come with some added side affects, namely the thirty thousand visitors we’ve had from around the globe coming in to see the new site for themselves.
Hosting this sort of thing can usually be a tricky affair as normally a corporate website doesn’t normally receive enough traffic to warrant any high throughput hosting from a cost point of view, but you also don’t want to have the site go down when some high profile twitterers mention your site at peak time.
To the cloud!
So, enter Heroku stage left. We’ve been using Heroku for a few months now, and some of the team have a few years of experience with the platform. Kyan is a Heroku development partner so we thought we should probably eat our own dog food and host our website on what we recommend. Everything you see before you is coming to you from one element or another of cloud hosting. We’re using Heroku for the site itself, S3 for some of the graphical elements, and services such as RedisToGo for some ancillaries such as caching.
Due to the flexibility of the platform we’ve got all sorts of background monitoring and scaling processes running, being able to see more of what’s happening on the site than ever before.
Keeping it fresh
Normally we would resort to using static pages for a site which doesn’t change that much, but Kyan.com is still a fully content managed website using a custom backend. What’s more there is content that is always changing. For instance, in the footer of each and every page we have some statistics about the company. These stats are changing second by second and update on the site regularly. A feature such as this instantly makes static caching less than ideal.
Our main focus with the hosting was to be able to return pages nice and snappily, whilst also being able to scale as far as we may need to without any fuss. This ruled out most standard hosting straight away. Using Heroku allows to scale our resources on-demand, so when floods of traffic come we’re able to deal with them and ensure that users don’t see any issues.
So, how do we ensure we can scale? Well, 90% of the site you see before you is coming from Amazon’s S3 service which is an ideal platform for simple serving static files such as CSS and images up to some massive throughputs (Personally I’ve seen 18,000 requests/second on S3 before). By using Rails 3.1 and the new asset pipeline we’re able to do this automagically, making the development and deployment process as streamlined as possible.
We’re also doing some low-level caching, for instance in the footer. By using a Redis key/value store we’re able to cache the website footer for a few minutes at a time periodically updating on a needs basis. This means that every user isn’t having to wait for the live stats to come through, we’ve already done it before they turn up.
Overall we’ve had a great time using Heroku for Kyan.com and we’ve been able to scale for the response we’ve had without batting an eyelid. What’s more we’ve got a stack of features behind the scenes that we get for free that we may talk about in the future.Tweet