In the past year there has been a real buzz around cloud computing, why should use it?
1. No Hardware, No hassle.
We don’t to own hardware, we don’t want to buy a rack and host it, we don’t want to be responsible for it’s up-time. It will cost us more, but the total cost of ownership is too frightening. The downside, it’s one size fits all and it’s more expensive.
2. It Scales.
The Amazon elastic cloud promises us 99.99r up-time and total scale-ability, the choice of OS. But don’t forget, you still need to write the service/server. I always thought that good scale-ability came out of good software architecture, apparently cloud services provide this automatically :)
3. The singular solution
The reasoning for using the cloud goes something like this:
“Buying computers and hosting them somewhere has limitations, therefore we will use a cloud service, because we are building for the future, when millions of people use our service every day, we will be able to handle all of them. We will create our service and make it scale across multiple servers, so we can grow as more people use our service.”
Here’s the problem: Business people think they understand this!!
This sound like utopia, the holy grail, I smell a rat!
4. The Reality
What’s important, is it the infrastructure, the software/servers or the users of the software. In what priority should these things done,
Firstly. Study the Users – Clearly the most important, who will use your software, how big is the market, how should your software solve the uses problem, get some use cases.
Secondly. Prototype your software – Now you know what the users want, you can design something quick to solve their problem, it’s not a university project just get on with it. Prototype your software first, just go ahead and write something quick and dirty (search for “Duck Tape Programming”), do this before creating a real design, you will learn more now than at any other time, set yourself a deadline and work to it. If you created a design at this time, it would change constantly and you would end up with deep limitations.
Thirdly. Design your software – Do it properly based on everything you learnt in your prototype. You must be able to create and debug this software with the fastest turnaround in the simplest configuration. Test with a smaller group first, by doing this you can shorten development time, cost and reduce development risk.
Fourthly - Cloud services. Since you already know the scale of your users in step one, you should have taken this into consideration in the software step. Perhaps you don’t need a cloud server or a high level of scale-ability, perhaps you do.
You don’t need cloud services/servers at the beginning, in fact it’s better not to have them, you just need to be prepared in advance. Remember software is king, content is the king of kings and users are god.