1

I have a developer who is developing an ASP.NET Web application for me and I've been publishing it so far on my server, example1.com, so far without any problems. It is managed with a single Git repository on Bitbucket without any hassles so far, when he adds new features, I can easily fetch & pull the changes, and then I publish it right away to the live server.

Now I need to host this application on example2.com. It will use its own database and some logos/images will be different than the one on the git repository. Also, I changed some width values in some views so the new images would fit better. In total, there are like 7 files are different than the official git repository one, and the one live on example1.com.

I can easily copy-paste the current solution to a new folder, replace the files that needs to be replaced, and then publish to example2.com, but I want my setup to be updated via Git. I tried connecting them both to the same git repository and changed the .gitignore file a bit on the new solution, but I couldn't find my way around and was confused.

Which way will be the easiest to manage these two sites? They will maintain the same core functionality, only different databases (web.config file) and logo files. I am using Microsoft Visual Studio.

2

What you are describing is a single-tenant application. What you want is a multi-tenant application. The difference being that a single-tenant app is one codebase that is copied and rolled out for one customer at a time. Whereas, a multi-tenant app is one codebase that is deployed to one location and multiple customers access it, often via different subdomains.

Single-tenant applications have their place. Enterprise software that is installed on a customer's own hardware behind their firewall is single-tenant. But, it introduces challenges. Rolling out bug fixes and new features requires updating every instance, some or all of which may have been customized (like the case you describe).

Multi-tenant applications are usually a single web application that different customers access simultaneously, typically through different urls (e.g. customer1.example.com, customer2.example.com). The advantages here are that all bug and feature updates are applied across all customers simultaneously. This is the promise of web-based software.

As for customizing the app for each customer, there are all kinds of easy ways to do that. Assuming your app has the concept of customer, you could add images for each customer that are uploaded via an administrative interface. By standardizing the accepted image dimensions, you can even limit the CSS changes.

Take the time to create a multi-tenant app. It will pay off by the time you are adding your third or fourth customer.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.