Distributing RuBAN
RuBAN has scale up and scale out mechanisms, it can be installed on a single server and scales out as needed to be distributed across servers.
RuBAN has a microservices architecture to deliver better performance for large scale deployments. The microservices are independent system components which run within docker containers and communicate with their piers over RESTful calls or via an internal message bus. As the services run on docker containers they can be run together on one server or be spread across many servers. Furthermore many instances of individual services can be created to meet large loads. The instances of a particular microservice can be increased without having to increase the number of other services, this is good as scale can be achieved in a fine-grained manner minimizing the cost of adding capacity to the system. The modularity of the microservice architecure has other benefits too. Since each service is well defined and small they can be implemented quickly with high quality. New services can be added to the system with minimal risk to the existing system. New services which target specific verticals or opportunities can be rolled out quickly without risking the integrity of the whole system. Central to this model is the routing and load balancing provided by NGINX and loose coupling messaging provided by the internal message bus.