Sunday 31 July 2011

To be run only in a single server instance

One day when I was talking with my colleague about the past software development projects, it occurred me to ask, why isn't it ever specified that the software to be developed only needs to be run in a single server instance? The reason for my thought is that it would remove unneeded complexity from the application, allowing more straight forward solutions and optimisations that couldn't otherwise be done. In essence it would save both development and maintenance time, thus saving money.

Of course it isn't possible or sensible in all situations to make this specification, but there are cases where it could and should be done. For example SMEs many times have simple applications that just take input from users and other systems, do simple processing and then save it, serving the end result to other users and systems. These kind of CRUD -applications really don't need to be clustered. The reasons why they are specified to be run in a cluster have usually more to do with beliefs or with ignorance about what kind of systems we have to day. For example reason given on why the applications has to be have multiple could be...

"We have too many users, we need to have multiple servers"
No. The servers we have today have amble of power, memory and storage. You can easily rent a server with 2 x 2,5GHz Quad Core, 8GB of memory and hundreds of gigabytes of storage with less than few hundred Euro per month. This setup should be more than enough for your average run-of-the-mill business application and it should be able to handle hundreds of simultaneous users easily.

"It needs to be fail safe, we need to have multiple servers"
No. The server where the application is deployed is probably either an virtual server or an card server attached to a NAS that has RAID enabled and timely backups done. In case of a hardware failure, the virtual server instance is deployed to a new server, and the card server is replaced with a new blade. Depending on the service and automation level, a server failure will cost us a downtime ranging from minutes to hours.

Now to be on the safe side, there are applications and usage situations where what I suggest can't simply be done, and even when we have a suitable case it doesn't mean that we have to throw good engineering practices away. No. If and when we have a case where we know that we aren't going to need multiple servers, let us give the developers the added guidance of not needing to have the application to be clusterable, and let them produce a better application with less unneeded complexity.

Friday 29 July 2011

Welcome to my blog

As you can read, I'm starting a new blog. The reason for this is very simple, I have noticed that in my daily life from work to private life I tend to get many ideas and questions that I sometime share and deliberate with my work colleagues and friends for a small time, the problem is that all these thoughts just dissolve into air. And that is a problem, my thoughts aren't creating any additional value than being just musings. Thus I have decided that it is better to share some of my thoughts in a hope that I can not only give something out but hopefully get something back in someway or another.

So cheers, and welcome to my blog! :-)