We are in a process of redesigning our product code in such a way so as to support multitenancy. Currently the implementation is such that one product deployment caters to only one customer. Thus the application data corresponds to only one customer. This data (which is global  wrt the application) is in the form of hashtables, lists and DB. Multiple threads make use of this data. The complete code is written in C. Now, since we want to migrate to multitenant architecture, the application code would need to store data for multiple customers. Since data stored in the application should be segregated wrt customers, I want to figure out what kind of architecture would best suit this requirement. I am thinking of adopting some OOP concepts here since I can use C++ also. But not sure how good this idea would be. Modularity is a prime advantage that OOP offers over C and hence thinking on those lines. But at the same time it is going to have a humongous on the current implementation requiring lots of changes. Hence, minimizing this is also important. What would be the best approach to attain all the objectives mentioned above? Is there any other way to do this?
Design for migrating to Multitenant architecture
design;object oriented;c++;c;multitenancy