With regard to RAM. TLDR: it's your cache size * how many concurrent connections you need to handle. But the amount of RAM needed for additional sites is less than the first one as you can reuse RAM used to load code amoung threads.
A zope application server uses multiple processes and can be configured with multiple threads and different cache sizes. You would add more threads or processes to handle more requests at once. The RAM you need is something like this
processes * ( code_overhead + (threads * num sites * cache_size)) + ZEO RAM
For example I run a platform with 8 processes with 2 threads per process and 30k cache size and it takes around 1.3GB RAM per process and another 1GB for the ZEO. You can vary these things to optimise your setup but generally
- lower cache size = slower response but less RAM needed
- higher threads = lower overall RAM per site but starts to get slower if lots of IO such as during cache misses or BLOB reads.
- more processes = better if you have the RAM and CPU to match
All this assumes you use a different database mount per site. if you add new sites in the same database mount then they share the same cache and your RAM won't increase much but the sites will respond more slowly as their effective cache size has gone down.