Peer-to-peer and cloud systems (virtualization) are by thier nature totaly different things but in quite few cases you may use eather to achive same thing. In this cases you may wonder what to chose for your implementation so we will talk abou key differences, advantages and disadvantages in following text.

Virtualization (most common use of cloud computing) abstracts the physical infrastructure, which is the most rigid component, and makes it available as a soft component that is easy to use and manage. In refferal to peer to peer systems we will focus just on uses of clouding sutable for comparation.

Most common thing you could do every day over peer-to-peer and cloud would be file transfer. There are quite few services offering this use like dropbox, google drive.... 

You transfer files by uploading them first form clent A to intermidiate cloud server S, then this files are availabe for download form clinets B, C, D... until you explicitly delete them from S. Key advantages of this implementation are that clients A,B,C,D... are not required to be active in same time, cloud strage practically serves as shared network disk and you can downlaod that same files wherever and whenever you want if you have internet connection.

But unfortunately ther are many down-sides. Most important are security and privacy of you data. Anyone, anytime can access your data if he has your username password. Also fact that some emplaye in cloud hosting company will not peek at your data can not be guaranteed in other way that by company promise which is also not relevent refiring to particular employees. Also we could mention organised government surveillance programs that coud bother you much is you are some other government protecting suvernity of your country. Good information is mightiest weapon this days. Also imagine you hold 10.000.000,00$ expencive softwave source code on such server, or you are public figure storing there some media material that could compromise you if exposed - that would not be recomended for sure.

Also intermidate servers storing this cloud data are known places exposed to attacks. If someone wants to observe you data he will simply know right place to look for it becuse it's concentrated in one single place so in the end you might finsh with apologize from cloud hosting company.

Cloud file storage systems often limit your free storage space becuse at the end they need physical disks space to store your data on thier servers and taht costs money. This is easaly overcomed by subscibing to some payed plan that helps them cover storage expences.

One thing in which cloud system could never compare to peer to peer systems are real-time communications. Since cloud if far easier to implement than peer-to-peer systems there where some attempts to implement cloud streaming but such systems result in poor performance and enormus cost. Simply intermediate server becomes hot spot all clients comunicate with so total bandwithd is shared between all clients. Peer to peer systems overcome this by simply skiping intermediate hot spots. They simply comunicate directly so that practicaly has no impact to servers.

Encrypted peer-to-peer communication tunnel (direct tunnel created using nat traversal) is most secure and private way of transfering data between two hosts. This are some of the facts that earn it that:

- Tunnel is stelath to monitoring/observation/survailance systems becouse it happens on one (destination port) of 65535 ports that is randomly chosen during traversal operation and it's existance is very hard to be recognised. Monitoring/observation/survailance systems usualy track some well known ports you use evry day for common client-server communication like 80, 443, 25, 22, 23 , 995 ... where they also expect certain data transfer protocol based on port value.  

- Secure encryption keys generated in short priod are totaly secret to 3rd party. With clouding your keys may be half-exposed becuse you can not be sure attecker is monitoring server and that he is not avare about one part of key. 

 In above text we focused on most important diferences. That fact are important to note if you are designing some system that is required to provide hight standards for data security and privacy or quailty real-time communication between large number of peers. Usualy colud storage may be handy and fast solution for some evry day small scale solutions that serve small number of people. 

In some cases you even may combine cloud virtualization with peer-to-peer system to get best result.

+ Most important thing cloud virtualization gives you is alwaus accessible data

+ Most important thing peer-to-peer sistem gives you is secure and totaly private real time communication