Site performance and moving to the Cloud….

This is a topic that I revisit quite often, sometimes out of boredom and sometimes just out of a need to well revisit things. Over the years I have worked as a system admin for a few hosting companies and have noticed that not all sites fit well on a shared platform, or if they fit just don’t work as well as they could.  My goal has always been to try to get a premium setup without paying an arm and a leg for it.

Below I am going to cover a few things that I have researched(Don’t expect any hard numbers you will simply have to take my word on this or search Google for articles showing full comparisons/numbers), tested and implemented for

Server Setup:  After shopping around I found that RackSpace seemed to offer the cheapest cloud server weighing in at about $11 a month. Originally I chose to go with CentOS, but after creating an exact Ubuntu Server install and comparing the CPU/Memory usage I found that Ubuntu Server had far less overhead than CentOS. Keeping with the memory/CPU usage as well as reading many articles about performance from a web server I chose to go with NGinx NGinxinstead of Apache.  While the initial install and setup was a little more complex than Apache once up and running I haven’t had to look back.  I should clear up that I have been using Apache for the past 10yrs to NGinx seemed a little foreign to me until I did some reading.  Of course, the server has MySQL and the only thing I have really customized with it at this point was to enable query-cache. Of course, there is a ton more that can be done with MySQL… but that’s for another article.  Ohh and for PHP I am using PHP-fpm with APC enabled.

DNS: I first debated about using Route53 for my DNS since its cloud-based.  After doing some research there were a few things that made me decide to look elsewhere.  First, off keeping with the cheap budget, it does cost $1 and if you are looking to go as cheap as possible … well thats another $1 per month for each domain.  The second thing which was not really a deal-breaker, but could be for some is that there is no interface for it.  Everything you wish to manage with your DNS with Route53 has to be done via their API or you can use some of the 3rd party services people have created to manage your DNS, just seemed like a bit of a small hassle.
The other option that I found, which I am a big fan of is Cloudflare.  Cloudflare is CloudFlarea cloud-based DNS host and then some… oh and Free.  They help prevent spammers/bots from accessing your site, which in the end saves you X page views over the course of the month as well as X bandwidth which is a huge plus.  They also cache parts of your site to make so that it is always online, this feature is awesome I have actually tested by turning my server off and trying to load my site and it loads a static version.  They also give you a nice rundown of stats that are updated every 24hrs, the pro version updates stats every 15mins.

Statistics: Some people will argue that using Google Analytics is not as accurate as using something like AWstats, Webalizer or even writing your own which reads the server log files in realtime. This option works well enough for me since I am not running in click tracking ads etc.

Email: Google Apps for your domain is an awesome free product and allows you NOT to have a mail server running on your setup.  Besides the performance gain from NOT running this on your server, you also get the benefit of letting Google handle your Spam… which if you have ever done admin work mail can be a total pain.

CDN:  While this kind of goes away from the whole aiming to be as cheap as possible, its a nice feature to have.  The cost involved with using a CDN can vary on who you go with, and the traffic that your site is generating. I chose to go with Amazon S3/CloudFront, the cost is pretty much next to nothing once you get all set up and there seems to be a bit of a noticeable

Frontend/Backend:  WordPress is used through the site, with minimal plugins as well as a child theme running on Genesis.  I tested out a few theme frameworks and found that Genesis gives you more bang for your buck as well as seems to be fast when compared to other frameworks on the market, and has a great customer base to help support it…. and yeah I know this is not Free either.  I am using a total of 13 plugins, I could honestly probably disable a few others as I don’t use them often. Speaking of plugins since I didn’t configure a local mail server of any sorts on this install I had to install WP-Mail-SMTP plugin which allowed me to use a POP mail account for WordPress mailing. I am also using Disqus for my comments, this works great with Cloudflare when your server is not reachable.

So far the site/setup seems great especially when you look at the total price being under $15 a month for a cloud-based setup which doesn’t place all your eggs in one basket and gives you an almost true 100% uptime for all of your services.