memory, disk - scaling, performance - application architecture question
Posted on 2013-11-24
I am re-architecting an application that focuses on group collaboration around interactively building and annotating a complex diagram.
Average total data size for one group session for will probably be somewhere between 150KB and 1MB.
Currently the group session data is stored entirely in memory in a large object containing datasets and supporting variables. This data is synced to disk during diagram update/writes.
The data is kept in memory for fast diagram form refreshes (one participants does a small write, which might change the relationships on the diagram, which then has to be refreshed to all other participants).
My question has to do with performance versus scaling:
> If 1 GB can store 1000 concurrent sessions (in my dreams), it doesn't seem like that would be a scaling bottleneck i.e. the server would bog down first, or I could add servers if I ran out of memory.
> If I had to retrieve say 50KB from disk per diagram refresh (say one per second for each group session), it seems like that would be a big disk performance/scaling constraint.
So it seems like keeping the data in memory is almost necessary, to achieve scaling and maintain performance.
I'm trying to figure out if I've made some basic error in this thinking.
Any comments on these thoughts and assumptions would be appreciated.