I hear about "cloud computing" all the time, but don't know what it is.
- What is it's purpose?
- Why do I need it?
- What problems does it solve?
- What problems does it create?
The general purpose of cloud computing is to get the cost and difficulty of setting up infrastructure to support your business applicaion needs off of your plate and onto somebody else (like Google, Amazon or Microsoft).
Need is a strong word. You may need it because you cannot afford to implement the type of infrastructure one of your line of business application requires.
In general, it helps address issues of scalability and availability (although this is debatable). It also helps solve the problem of getting infrastructure up quickly to meet business needs.
In my mind, mostly security concerns.
To allow people to use machines online without being concerned about where or what a machine is. This enables you to scale up quickly without physical infrastructure.
You probably don't as a home user, although if you use Google you already use it.
It solves a lot of the infrastructure issues by abstracting away the hardware layer. If you need a new server it is a matter of minutes to get one rather than months lead-time at a traditional hosting provider.
There is a different problem of managing non real machines, care must be taken not to loose them.
Problems can be difficult to diagnose (or at least require different skills)
You can't use hardware appliances (eg a firewall) in the same way that you can at a traditional data centre
Commonly, it is services, programs, platforms over the internet.
It makes the services available wherever there is internet available. Look at Google apps or the newly announced MS Office suite for the internet. You could use them wherever you want., without being tied to your computer and your installation/licence.
The problems it creates are mostly in the realm of privacy. Your data lives in the cloud - as you want to find your documents from wherever you are too. So Google not only has your search results, blog entries, navigation history in Chrome, emails in gmail, your location through android, your pictures with gps coordinates, but also your documents?
To provide applications which can be accessed over the internet, regardless of where the user is and what local data storage capabilities they have.
Anything accessed over the internet could be considered "cloud". Gmail is "cloud email". Superuser.com is "cloud crowdsource technical support".
The theory is that service providers like Google, Microsoft, and Amazon (to name a few of the big providers) can build a better and more reliable datacenter than you can, and at less cost to you. The service provider also manages the application version upgrades and data storage issues for you. These can reduce the costs you would have of trying to run these services yourselves -- compare the costs of managing an Exchange server, for example, with Gmail For Domains.
It also gives you/your staff/your team the ability to have access to the same working environment wherever they are -- the computer at home has access to the same tools that the computer in the office does. And if either computer dies, the data is safe in the cloud.
Firstly, you are now even more dependant on your internet connection. If there is an issue with your connection, everyone has a problem.
Secondly, you lack immediate control over your data -- if the service provider fails, there may not be able to retreive it in a timely manner, if at all. Also the data is subject to the local laws wherever the service is hosted -- Canadian companies using US service providers would have their data be subject to US search-and-seizure laws. Finally there is the lack of ability to demonstrate to external auditors that company data is both safe and secure, since the service provider's procedures may not be visible to you.
Well, that's up to you, based on your assessment of the above. It may provide you the ability to do more with less, and to effectively outsource parts of your IT infrastructure.
Its purpose is to remove the burden of maintaining your own servers and reduce initial capital expenditures. You only pay for what you actually use rather than having to budget for peak demand up front.
Amazon, Google, and Microsoft have a lot more cash than you do to create their own data centers. You can leverage their economies of scale and the lessons they've learned usually cheaper than doing things yourself.
I think one could summarize cloud computing as a way of storing/accessing/processing data from a remote source. The cloud is a term for the internet, so it can be said that it is most things that are done and stored there.
The intended benefit is that there is less reliance on the local computer for work and storage.
Some downsides include privacy of materials stored and processed. There is also the needs and limitation of an internet connection such as security, speed and availability.
You probably want to consider this if you are making an application with strong ties to the internet or the benefits that the internet provides. Wikipedia has a lot of general information.
Some more recent examples of Cloud computing would be the new Unreal Tournament game played through a browser or Valve's new Cloud System of allowing users to have their saved games available on any computer with their client.
Cloud computing refers to the provision of computational resources on demand via a computer network.
Cloud computing can be compared to the supply of electricity and gas, or the provision of telephone, television and postal services. All of these services are presented to the users in a simple way that is easy to understand without the users needing to know how the services are provided. This simplified view is called an abstraction. Similarly, cloud computing offers computer application developers and users an abstract view of services that simplifies and ignores much of the details and inner workings. A provider's offering of abstracted Internet services is often called "The Cloud".
Cloud computing is nothing more than what Google is doing since they started: software to create a reliable system on top of unreliable commodity hardware.
Nowadays, it also includes the management of the resources and also the automatic (on-demand) assignment of resources to specific applications.