I want my eCommerce application Suteki Shop to be able to flexibly meet the requirements of any customer (within reason). How can we have a single product but enable our customers to have diverse implementations? I think the solution depends on the level of diversity and the number of customers. The right solution for a product with thousands of customers with little customization is different from a solution for a handful of customers with very diverse requirements. There are several axes of change to consider: Codebase. Do I have one codebase, or do I maintain a separate codebase for each customer? Application instance. Do I have one application instance to service all my customers, or does each customer have a separate one? Database schemas. Do I have one database schema, or do I have a different schema for each customer? Database instances. Do I have one database instance or separate ones for each customer? Lots of customers, a little customization Let's co...