Loading ...

Scaling Acumatica Horizontally

Hello everybody,

today I want to share one interesting piece of information about horizontal scaling of Acumatica. I mean as usually for majority of people it is clear that Acumatica can work on one machine when DB, IIS and Acumatica lives on one machine. 

One more variant of scaling can be when you have IIS with Acumatica on one machine, and DB on another machine. It can look like this:

scalingAcumatica1.png

Here User lives on his machine, Acumatica ERP server lives on second machine, and site database lives on third machine. That is pretty good working schema especially for cases if you need vertical scalability.

But recently I've discovered little bit more horizontal scalability for Acumatica which looks like this:

scalingAcumatica2.png

And take note, that with such a schema user request will pass through load balancer. You can use as way of example nginx. And one more important feature that really speeds up your performance will be Redis. That scalability option will have following features:

  1. If data is not persisted to db, then it will be stored at Redis. 
  2. You can have as much as you'd like ( or can afford ) to have Acumatica ERP server

Some additional comments on such a schema. First of all I'd like to mention that nginx is quite efficient load balancer, so you can really use it for making your life easier. There are some options but for now I'm inclined to recommend to use nginx. One of the reasons of such a sticking is plenty of documentation over it.

For session storage currently I'm more sticked to Redis. And main reason for such an approach is that Redis is also scalable. While MS SQL is also scalable, but as mathematicians say oranges should go with oranges, apples with apples. Redis was born with scalability in mind, while SQL was born for efficient persisting your data. 

As green lines on the schema shows, some time it can happen that your user persisted some data on Node1, made some manipulations and switched to Node2 and that will be done seemlessly.