Distributed Storage - pinocchio61/Architecture GitHub Wiki

Pre-Experiment

N/A.

Purpose

As we require that the uploaded content cannot be tampered with, we choose to store the content on distributed storage service. In this way, we do not have to worry about the single point failure caused by the centralized server.

There are several options to fulfill this requirement, and we chose two of them to investigate:

  1. IPFS
  2. Swarm

Description of the Experiment

We have agreed on some criteria so that we can decide which of them to adopt:

  1. Cost
  2. Ease to develop
  3. Reliability
  4. Maturity of the development community
  5. Performance (Time to access the uploaded file)

Testing Data

We have tested different options with an audio file and its file size is 22.1MB.

Artifacts Created

N/A

Completion Criteria

The uploaded file can be accessed through the web browser and the request should be sent from a device other than the server hosting the file.

Post-Experiment

N/A

Summary of Findings

IPFS Swarm
Cost of the tool FREE FREE
Ease to use Easy Easy
Reliability Mature (More than 4 yrs) PoC (More than 2 yrs)
Maturity of developer community Pretty mature and active N/A
Performance (Time to access) About than 5 minutes Less than 1 minute

Engineer's Recommendations

We will recommend using IPFS. IPFS is a more reliable option since it has been developed and used for more than 4 years. Although IPFS needs a longer time to access the uploaded file, it has a more mature developer community which Swarm does not have. Comparing with IPFS, Swarm is unreliable and doesn't have the developer community. Our concern is that in such an early stage, Swarm may have some issues that haven't been solved yet and we do not have the developer community to ask help from when facing problems. Thus, we recommend that IPFS is a better solution to this project.