hyperledger-fabrichyperledgercentralizeddecentralized-applications

Hyperledger Fabric Node SDK server deployment


I want to clear up some confusions I have about Hyperledger Fabric and its decentralization.

In production, I want to have a React website and maybe a React Native application to reach the blockchain, and about 3 or 4 organizations with multiple peers and channels. ¿Where I place the server?

As far as I know, the SDK server is needed to create a "gateway" or connection between the client and one peer, but what I don't understand is where this server is placed in the architecture. I mean, ¿there is only one server deployed in one PaaS platform? ¿It resides in the client side? ¿Or there is one deploy in each organization or in each peer?

If I deploy the server in a single platform, ¿I would't be centralizing the network?

As I said, this question is to clear me up some things about Hyperledger Fabric.


Solution

  • Yes, you are right. If a server is deployed in a single platform with write access on behalf of all organizations, the network becomes a centralized one which defeats the purpose to use Hyperledger Fabric blockchain.

    The ideal decentralized architecture should be something like the following.

    1. Each peer occupies one instance which can maximize the high availability. If there is a cost issue, each organization at least occupies two instances to achieve minimum high availability.
    2. Each organization can only access its managing instances which creates a better permission control.
    3. Since each Node.js SDK server needs to access the organization MSP key to invoke chaincode, each organization should own its own Node.js SDK server which can only insert or update chaincode records on behalf of its organization.
    4. Each organization should also have its own React website server which sends or receives API requests to/from its associated Node.js SDK server.