Peer-to-peer and cloud systems (virtualization) are by their nature totally different things. In quite a few cases you may use either to achieve the same thing. In this cases, you may wonder what to chose for your implementation. So, we will talk about key differences, advantages, and disadvantages in the 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 referral to peer to peer systems, we will focus just on uses of clouding suitable for comparison.
The most common thing you could do every day over peer-to-peer and cloud would be file transfer. There are quite a few services offering this use like dropbox, google drive...
You transfer files by uploading them first from client A to intermediate cloud server S. Then these files are available for download from clients 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 the same time. Cloud storage practically serves as a shared network disk. You can download that files wherever and whenever you want if you have an internet connection.
But unfortunately, there are many down-sides. Most important are security and privacy of your data. Anyone anytime can access your data if he has your username and password. Also, fact that some employee in cloud hosting company will not peek at your data can not be guaranteed in another way that by company promise which is also not relevant refiring to particular employees. Also, we could mention organized government surveillance programs that could bother you much if you are some other government protecting the sovereignty of your country. Good information is the mightiest weapon these days. Also, imagine you hold 10.000.000,00$ expencive software 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 recommended for sure.
Also, intermediate servers storing this cloud data are known places exposed to attacks. If someone wants to observe your data, he will know the right place to look for it. It is because it's concentrated in one single place. In the end you might finish with apologies from cloud hosting company.
Cloud file storage systems often limit your free storage space. At the end they need physical disks space to store your data on their servers and that costs money. This is overcome by subscribing to some paid plan that helps them cover storage expenses.
One thing in which cloud system could never compare to peer to peer systems is real-time communications. Since cloud if far easier to implement than peer-to-peer systems there where some attempts to implement cloud streaming. Such systems result in poor performance and enormous cost. Simply intermediate server becomes hot spot all clients communicate with so total bandwidth is shared between all clients. Peer to peer systems overcome this by skipping intermediate hot spots. They communicate directly so that has no impact on servers.
Encrypted peer-to-peer communication tunnel (direct tunnel created using nat traversal) is most secure and private way of transferring data between two hosts. These are some of the facts that earn it that:
- The tunnel is stealth to monitoring/observation/surveillance systems because it happens on one (destination port) of 65535 ports that is randomly chosen during traversal operation and its existence is very hard to be recognized. Monitoring/observation/surveillance systems usually track some well-known ports you use every 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 period are totally secret to the 3rd party. With clouding your keys may be half-exposed because you can not be sure attacker is monitoring server and that he is not aware of one part of the key.
In above text, we focused on most important differences. That fact is important to note if you are designing some system that is required to provide high standards for data security and privacy or quality real-time communication between a large number of peers. Usually, cloud storage may be a handy and fast solution for some everyday small-scale solutions that serve a small number of people.
In some cases, you even may combine cloud virtualization with peer-to-peer system to get the best result.
+ Most important thing cloud virtualization gives you is always accessible data
+ Most important thing peer-to-peer system gives you is secure and totally private real-time communication