Multiple Canister Architecture

I’m trying to understand how to best design my mailing system to allow it to scale in the future. I don’t think I understand how inter-canister update calls work.

The two systems architectures I’m considering are:

  1. A Facade Canister that interfaces to N data bucket canisters. Update calls hit the facade, which routes the call to the best data canister.

  2. A Register Canister that returns where a some data should go, or currently is.

In case one, since the writes are hitting difference canisters but proxied, have I actually increased the throughput of the system? Or, because they are all going through a single canister, have I only increased my storage capacity?

Case two I know works, but would be a hassle (not a huge one though) because the client would have to locate the canister each time a call is made.


I think case 1 would still increase overall throughput, because even though all calls are still going through a single facade canister, each call is now less expensive since the real lookup work is delegated to a data bucket canister. So the facade canister should be able to process more queries (given that it is single-threaded).