...
- Good Design
- Whether something "should" be on the server or client because of good decomposition
- Probably not terribly important.
- Library API
- Do not want to complicate the API and make the developer write more or trickier code
- Complicating the library is ok, just not the library API
- Latency
- Depends on what we're doing. Might increase.
- Throughput
- A net plus (that's why we're doing this)
- Scalability
- We only want to add servers if we run out of storage capacity.
- Security
- The client cannot be trusted
- Obviously we still need some authentication code on the serverclient
- RAM
- We want servers to reserve as much memory as possible for holding data. If certain tasks use too much memory, then that might not be acceptable.
- Remember, can't swap data to disk!
...
- Does it make sense for client machines to contribute their RAM?
- How much RAM does a client actually need?
- What is the cost savings of adding RAM to a client machine than compared to buying a new server?
- Again, what is the bottle neck?
...