I am using "cloud" solutions (or let's say web applications offered by external service providers) myself. I tested and tried many, when they are still free but nowadays the providers start to charge for those. I still use several Google services (Google search, GMail, Google Calender, Google Reader and Blogger of course), mite (not free any more for new users), Vyew (occasionally) and some social networking sites (XING, Facebook, LinkedIn). I have dumped many others because of several reasons.
The pros of cloud based solutions:
- The application and data is available from everywhere (every machine you are using).
Well, if you have a home network plus fix IP address (or using DynDNS or similar service), but:
- You don't need to do maintenance work (apply security updates, ensure power-supply, repair broken hardware etc).
OK, you can rent a server (space) somewhere with different levels of maintenance work to be done by you.
- The applications scale well (usually those services run on infrastructure that allows scaling).
OK, if only you are using the application (and maybe some family members and friends) you might not need any scaling, but if you are a company (maybe a startup that expects or hopes for fast growing) this might be a real advantage.
If you or your company is quite big and/or using a lot of software there might be several servers required and maintaining a smaller or larger server farm can be costly (just think of ensuring power supply and keeping spare parts of used hardware pieces like hard disks and so on). Cloud service providers are specialized on providing computing power and with the mass they can do it cheaper. I think this is the real driver for the rise of cloud based solutions (what a finding, that most things are driven by money...). Especially when you have only peek times where increased computing power is needed (e.g. some batch jobs running at night), it might be costly to have many servers up-and-running doing nothing most of the time.
The cons of cloud based solutions:
You do not know what the service provider is doing with your data. At best I would think they are only running some statistics to see where you make your business, what are customers buying from you (in the meaning of what products and services are going best) and so on. I think that depending on the service you are using there are usually some interesting statistics to be made that could be sold for money to consulting companies. If the service provider is not trustworthy, I could even imagine that they could sell more detailed data.
This disadvantage does not (fully) apply if you are using services like Google app engine or EC2 because there you have more influence on what you are running (more or less your application or entire virtual machine that is just running on their hardware). Using an in-house solution you usually have more influence on the system configuration and the software, you are using. I have instances of phpBB, Wordpress, vTiger and others running. You can apply plugins as you like and have access to the source code (to apply fixes or some really personal adaptions). You can make backups and snapshots as you like, directly manipulate the database and so on. And you can pay developers for implementing your own requirements - which can be very important because how do you expect offering outstanding services, if you just use what everybody else is using? Using a service provider, your possible influence is usually very limited and you have the same functionality that everybody else has, who is using the service.
This disadvantage again does not (fully) apply if you are using services like Google app engine or EC2. But within an externally hosted application you are often sharing resources or the whole the application with other users. Who does guarantee you, that there is no security issue that allows one user to see private data from another? This is an additional security issue category apart from those regarding security hacking from outside.
You can only hope that the price of the service is kept at a reasonable level and that the provider company is not going bankrupt or somehow else stopping the service (even big companies are closing down services from time to time because they do not make enough money with them).
Why performance? You can get a lot of performance by just renting more computing power? - The truth is: The performance increase you can get is for external users of your services. Remember, that with the solution in the cloud also the relevant data also needs to be there (or at least transferred back and forth more often) - and for you the data is then far away (internet is very slow in comparison with local access). Or if you host just the data inhouse, you anyway may get a performance issue (this time the access from outside if you don't have a fast database running on fast and enough hardware).
For example: We have outsourced our FTP server for software installation package downloads and now putting a new version online takes a lot longer than before.
Apart from the network traffic, even my laptop is already a dual core (bought more than a year ago), friends already have quad-core laptops. And using web applications in the cloud, there is nearly nothing to do with that enormous computing power (with just the browser running to surf the internet).
In many cases it is definitely more efficient to run the applications local and just send the data over the (inter)net where necessary. Implementing a web-application that offers - let's say Word/Excel/Powerpoint-like features, require much server power although that computing power is already available locally. And I can see already a tendency back from web applications to full clients. But this begins to get off-topic because this is rather a thick vs thin client comparison - we had that already. - Final word to the performance: If you really need much computing power, then the cloud can really help you.
Last but not least: Implementing a solution in a cloud-enabled way requires additional considerations and work due to the problems coming along with computing in the cloud, so developing an application enabled for the cloud is usually more expensive (although depending on what exactly you are going to transfer to the cloud - that is not necessarily always a whole application, it can be a single task/job also).
Related posts: Web vs Thick client, Your holy machine, Surveillance, privacy (NSA, PRISM, ...) and encryption.