andy's blog

Ubuntu Logo

With so many Linux distributions out there it gets tricky to know which is the best one to use. Of course "the best" depends on what you are looking for, but in our case ten years ago we were looking for a stable server platform which really didn't change much, so we chose Red Hat Enterprise. However about four years ago when Red Hat was becoming expensive to maintain and painful to update we moved to CentOS.

It seemed perfect at the time. However, these days I am working on a few more technologies that have changed frequently in the last 3 years (including Django and Python) so having a system that appears to be almost always 2-3 years out of date was painful. You'd find yourself constantly hunting down packages that you have to build yourself or from repositories that are questionable. Which of course starts to defeat the point of having a stable distribution.

I recently switched to Ubuntu 10.04 LTS, and I now can pretty much get all that I need from the main distribution. The "LTS" in the name is important and it stands for "Long Term Support", and versions are supported for a full three years after they come out. The tools are a bit different, but it is really refreshing to be able to use the system without constantly having to go off to the internet to find some recent patch.

Django Reinhardt

Fifteen years ago I built my first web development platform or framework called SAGE that was used by garden.com to go public. Nine years ago I built a new platform called The Universal Web Engine (UWE) that we have used at Digital Cheetah since its inception. About three years ago I mapped out a new system that was going to replace the UWE. I actually began to implement it in 2008, but was forced to shelve it's development due to the economy. This month I began looking at starting this new platform in earnest.

My plan was to use Python as the primary development language and I was going to take all of the ideas from the last fifteen years and develop the "perfect" system for the creation of 1000's of custom websites. Luckily before I had really started I rediscovered Django.

Django, named after the legendary guitarist Django Reinhardt, appears to be the perfect place to start to develop a new framework. It doesn't do everything the way I had planned, but it does so much more and is flexible enough to allow me to augment it with at least a few of my own ideas.

To the many happy developers and designers already using Django this is probably no big surprise. But for someone who has been used to developing his own frameworks from scratch this is a huge departure. I for one am really excited that I can start building at a much higher level.

I believe using Cloud Computing and Django I will truly be able to deliver a platform that will allow Digital Cheetah to continue to provide world class custom solutions for the next ten years and beyond. And just maybe we'll be able to build a new website for ourselves too, instead of the eight year old one we currently have!

A Few Bumps In The Road.

So it is clear that I have been impressed by Amazon Web Services and Cloud Computing in general. I remain convinced that virtualization will eventually be the new order of things.

However, I have experienced a few bumps in the road. Firstly, Amazon Support. So far I have been unable to get them to respond to my enquirers. My guess is that unless you pay for support you'll be primarily stuck with forums and the help docs. This is fine if you know about it up front, and I expect to factor in fees for Silver or Gold support.

Secondly, the Amazon Relational Database Service (RDS) appears to be a lot slower than setting up your own MySQL instance. In my benchmarks, using the standard MySQL Benchmark Suite, RDS runs at about 6 times slower. I tried my tests with MySQL running on the same instance and also a different instance and in both cases RDS was about 6 times slower. This doesn't mean that RDS is unusable and might be perfect for you. But at this point it feels like more tuning is required.

Finally, the whole issue of security. One of the problems with offering such an all encompassing and compelling service is that you basically hold a big flag up to all would be hackers out there. I'm sure that Amazon are better than most companies at providing security for their web services. However, by being so big and so good the threat of being hacked goes up proportionally too. This is the one area I have to get my head around before I recommend we move our enterprise to Amazon. In the meantime I am looking at other companies that use Eucalyptus to provide a private cloud with similar features to Amazon, but with a little more control and anonymity.

Amazon Web Services

When it comes to execution Amazon truly are amazing. Whether it be in delivering an online order from five different locations in two days or the creation of virtual servers in the clouds, they really have an impressive operation.

I have just been evaluating Amazon Web Services for the last couple of days and thus far I have been utterly impressed. In fact, I can't remember the last time that a collection of technologies worked so well out of the box. Aside from the Richard Stallman concerns (which are real if a bit dramatic) the only issue I have come across so far is that Amazon have so many impressive features it takes a while to figure out the best selection of options.

I have been creating and deleting "servers", adding disks, load balancing, databases, monitoring, and firewalls and everything I do takes a minute or two. In the world I come from it takes 7-14 days to buy a server, 1-2 days to provision it, and if I get something wrong I have to deal with it. What is most impressive is how all of this is achieved by the simple web interface with zero external assistance. Quite a contrast to the number of people that I have to rely in my current situation. Also, because things are so fast, it is really easy to try out some packages or installs and if you don't like them you can instantly go back to where you were before.

I am keeping an eye on the meter too, if you go crazy it seems that prices could get fairly high. However, based on the amount of money we currently pay on our co-location solution I still think we can do things quite a lot cheaper in the cloud. The selection of services appropriate to the size and requirements of your client are imperative to get a handle on costs. This is where the Amazon approach can score because instead of giving all clients the same set of features you choose the appropriate set-up for each client and if they want more features they are there and they pay for them.

Will we save money in the cloud? I think so, but for me it is not so much about saving money as it is in saving time, increasing reliability, providing a better service to our clients, and offering them the options they are looking for - these really are the compelling reasons for cloud computing.

Cloud Computing is a harder sell if you already have a good hardware and software infrastructure. However, if you are starting a new company or a new project that requires new hardware I urge you to try Amazon out. Until a few months ago I was a skeptic but I have looked at clouds from sides now and am very pleased at what I have seen.

Clouds - Joni Mitchell

So far I have managed to avoid dealing with Cloud Computing as I like to give new technologies a few years to mature before using them. But this week I am pressing forward with an evaluation of the Amazon Elastic Compute Cloud.

I am optimistic that this will provide a good technology and infrastructure base for the new platform that I am just weeks away from commencing.

Let's hope that unlike the song they don't get in my way.