In my understanding, what defines cloud computing, basic computing resources (storage, processors, RAM, load balancing, etc.) of cloud services and software are completely abstracted from the consumer of software / services. This means that the cloud provider takes responsibility for the performance / reliability / scalability of the computing environment.
From the point of view of application developers, this can be a huge advantage, because acquiring, maintaining, configuring, monitoring, and scaling hardware to meet growth needs is difficult and expensive.
For small ISVs, cloud computing offers the ability to prototype, test, and deploy software at no capital cost.
For larger applications, the advantage is usually unlimited scalability, as well as outsourcing of IT / application hosting responsibilities, as well as instant access to new servers / storage / regardless of needs. Often, cloud computing providers will offer levels of redundancy, reliability, and even security, apart from the largest in-house IT stores that they could never have achieved for all of this.
The main drawback of application developers is the loss of control. Not only is the hardware hosted in a cloud environment, but abstracted, so if your application needs direct control of the hardware, you're out of luck. And you need to trust the cloud provider. All of them offer 99.9% repeat time and SLA, but I doubt that these statistics are actually implemented. But you have to ask yourself, can I do better? The answer is often no. But hardware control is not the only control that is lost - integration with cloud systems can also be more difficult than by position or self-monitoring for obvious reasons. However, it seems to me that this roadblock evaporates as new technologies and a robust API eliminate many of the integration difficulties that arise when running applications outside of LAN / WAN.
Another drawback may be performance. Running the application on the local LAN is likely to provide a slightly better experience for local users than starting from the cloud. But if your audience is distributed, this advantage can only apply to a subset of the applicationโs audience.
Distributed computing, as has been said several times, is simply computed between two or more computers. Cloud Computing is, by definition, distributed computing, but a specialized form.
Here is a good doc by David Chappell. This is a Microsoft-sponsored document, so it is presented from the point of view of the Microsoft cloud platform (Azure), but the basic principles are quite universal, and David Chappell is always quite easy to read.