The cloud computing is the style of computing which is linearly scalable over network.
There are at least 2 variations of concept:
- Client-side cloud computing, which is client-based software which is at the same time client and server to many other instances. Examples are: Skype, BitTorrent, SETI@home.
- Server-side cloud computing, which is automatically scalable systems like Amazon S3 or Google Apps Engine or Salesforce which provide services on their own platform and hardware and just platforms such as Appistry for deployment on your own hardware.
We will focus on questions and concerns about server-side case.
Server-side cloud computing is when the parts of the stack where your application is running is cloned on demand if load is increasing and freed on load decrease. This is of course mostly about web and business-logic parts of the stack but also for databases. I.e. if you can automatically get more computing resources and/or more scaled database.
This is all, of course, is nothing new and could be implemented with “old” software technologies, but usually all cloud providers supply their own API optimized for cloud computing. Currently most of clouds implementations supports databases, distributed caching and transactions.
The main concern is, of course, security, since for cloud-services providers your software is deployed on other-company’s servers. Another concern is that this architecture have issues with short high spikes loads, when it starts to scale after spike.
When to use
- If you don’t know what load is going to be for your application;
- When you don’t want to invest in your new hardware, clouds will be able to reuse your existing resources or you can rent the service, which will charge you only for used resources;
The anatomy of cloud computing is another good resource on this subject.