In all this talk of distributed systems the Interplanetary File System is a fun practical subject. Obviously golang should be part of that.
According to Wikipedia:
The InterPlanetary File System (IPFS) is a protocol and peer-to-peer network for storing and sharing data in a distributed file system. IPFS uses content-addressing to uniquely identify each file in a global namespace connecting all computing devices.
IPFS allows users to not only receive but host content, in a similar manner to BitTorrent. As opposed to a centrally located server, IPFS is built around a decentralized system of user-operators who hold a portion of the overall data, creating a resilient system of file storage and sharing. Any user in the network can serve a file by its content address, and other peers in the network can find and request that content from any node who has it using a distributed hash table (DHT).
I just found that there is a native golang library to easily spawn a node and start storing the files on ipfs.
There are interesting use cases for golang that is the language of choice for micro-services.
One can use ipfs as a data-store for information generated by a micro-service that may run anywhere. Then that information can even be passed around or distributed to different micro-services running on different machines. No wonder someone already created a botnet based on ipfs 🙂
The following is the link to the excellent github tutorial for go-ipfs