My team is in a situation where we need to create about 30 different processors. By processors I mean code that takes data from a DB and sends it to a remote service somewhere else in the world. They each do fundamentally the same thing, only with different data.
Only some of these processors will be deployed to server A, some to server B, and so on. And they won't all version at the same time. If we make a change to processor X, we would version and ship X while leaving the rest of the processors alone.
We've come up with three possible options, each of which have their own issues:
- Have 30 different solutions
- Have one solution with 30 different projects
- Have one solution, with one project, with each processor functionality separated by namespace
The main con of #1 is having to create and maintain 30 different solutions. And if we have to make a change to many processors at once, we'll need to open n solutions to do so.
The main con with #2 is versioning. If we branch the code, we branch the whole thing, even if only one project changed.
The main con with #3 is the same as #2. And then we also need to find a way to exclude certain processors from certain servers for deployment. #3 is the easiest to manage during development, but the most difficult during deployment.
Is one of these the best option, or is there something else I haven't considered?