[bisq-network/proposals] Decentralize the Bisq Markets API service (#165)

wiz notifications at github.com
Fri Jan 10 20:56:35 UTC 2020


> _This is a Bisq Network proposal. Please familiarize yourself with the [submission and review process](https://docs.bisq.network/proposals.html)._

### Summary
Following the success of the previous project to [decentralize the BSQ explorer into several BSQ explorer nodes](https://github.com/bisq-network/proposals/issues/143), I now propose to decentralize the Bisq Markets API in a similar fashion.

### Background
A few months ago [when I took over the Bisq Markets API maintainer role](https://github.com/bisq-network/roles/issues/9), the API service was in bad shape, mostly overloaded having grown to serve millions of requests, and suffering from slow load times and frequent downtime

As a quick temporary fix back then, @bodymindarts and I [used his Risq incubator project and some Google Appengine caching code to re-implement the Bisq Markets API](https://github.com/bisq-network/bisq-markets/pull/20), and it has worked well for the past few months. But the move to Google was only temporary, as they do not respect user privacy, and keep IP logs of everyone who accesses the API service.

Additionally, I understand that @bodymindarts will no longer be able to maintain the Risq project due to his personal situation, as well as Bisq implementing new budget controls so there won't be any funding for incubator projects like Risq. We should move back to self-hosted as soon as reasonably possible to preserve the decentralized and self-hosted spirit of Bisq.

### Proposal
Similar to how I implemented a [one-command installation script for the Bisq Seednode and BSQ explorer nodes](https://github.com/bisq-network/bisq-explorer#bsq-explorer), I will implement a simple and easy way to install a local Bisq Markets API service. We will return to 100% java codebase Bisq nodes, using the JSON file dump. I came up with some RAM backed performance enhancements for the BSQ explorer use case which I feel can be applied to the Bisq Markets node as well.

Instead of using the previous PHP codebase to serve the API itself, we can research how to use some existing various open source projects as a minimal layer middleware to serve the static JSON filed dumped from Bisq Markets node to the API service - this shouldn't be a large amount of work, and there are a lot of projects that do this with high performance now.

After the new codebase is working well, we can have 4 new Bisq Markets API nodes run by one each of the current infrastructure operators, @wiz @emzy @devinbileck @mrosseel, and we can use DNS round-robin to load balance across the 4 markets API nodes. This will reduce the load on each API node, eliminate the CPOF of having a centralized server, and hopefully ensure high uptime for the service going forward.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/bisq-network/proposals/issues/165
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bisq.network/pipermail/bisq-github/attachments/20200110/0c191eb6/attachment.html>


More information about the bisq-github mailing list