You’re working on a huge project. Then the boss says, “Can we extend our system to running some other function on another website?” You say, sure, why not? Since we can just do a SVN checkout and tell Apache to use only one subdirectory, with a couple modifications we can have all of the features and functionality of our original system on this smaller subsystem.
Do you really need all of the functionality from your giant day-to-day system in your offshoot? Does it need to share the SVN repository as your main project? What happens when you need to make significant URL, IP, or system structure modifications? Will the two branches work nicely with each other?
My suggestion: have your sub-system use APIs to talk to the big system. Much cleaner. The subsystem can live on its own, wherever it wants to on whatever hardware or architecture it needs to. It can then make requests and pass data back and forth with your parent system in a similar way to how a client would. This means that the upgrade paths of these two systems can diverge from each other and nothing’s going to break. Need to introduce some fancy load balancing on one and not the other? Go for it. Need to move the child off to cloud-based hosting due to new business requirements? No problem.
A little extra time spent separating distinct systems pays for itself in flexibility later.
Michael Berding August 20th, 2013
Posted In: Systems