We will probably need to scale out for some big customers in the near future. We use DevForce 2010 currently with a desktop application solution. We will perform some experiments but I want to go ahead and query the experience of other folks here regarding this matter.
Our plan is to deploy BOS to multiple servers, those would serve as a load balanced tier above the DB tier. I haven't found too many topics about this, a couple of them suggests that using Windows Server's load balancing feature should just work. I also found a Word document white paper titled "DevForce Business Object Server Performance". That says:
"
Scalability
Since the Business Object Server is effectively stateless,
the server scales very well and there are a number of good options if
additional performance is required:
- Use a
high-end processor - Since the server is not memory-bound, the throughput
scales well with increasing clock speed.
- Use
more processing units – Moving to a quad core processor or a multi-socket
configuration will increase throughput by about 80% for every doubling of
processing units.
Add more servers – This effectively adds more
processing units but scales almost linearly because the memory subsystem is not
shared among cores."
Please confirm that the caching is done on the client side and the BOS is absolutely stateless. That would really mean that it can scale out easily. At the same time I'm wondering where is the catch. Because there's always one. Right now I can see two catches:
1. The freshness of the client-side cache. If one client modifies a bunch of business object, when will another client through another BOS (or the same BOS) see that?
2. What if we have also some stored procedures which goes down to the DB tier and manipulates the data in bulk (for performance reasons).
Extra question from the quoted section: how multi-threaded is the BOS? The doc states to "use more processing units". BOS will take automatically advantage of extra cores?
Thanks,
Csaba