94 karma · joined December 31, 2013
It must be a little depressing to build a really useful product you know many people need, give it away only hoping people will use it and be happy, then find out everyone would rather build their own.
But we do like to build things, it is in our nature. Plus, what looks better on your resume: 1) I migrated my teams test suite to using test load balancer in two days, saving hours every test run. 2) I contributed improvements to the open source test load balancer project. 3) I designed and implemented my own distributed test load balancing tool!
I'm swapping between ergodox, kinesis advantage, and type matrix these days but always keeping my eye out for a better solution. Honestly the best thing I have found is a different keyboard, so these days I just keep cycling through them every few months.
If I had to do that then I would definitely be looking at versions message schemas, or contracts like Pact/Pacto but it seems much simpler to just deploy a full set of tested and known to work together services at once than to version each one.
Someone else referred to this pattern as a distributed monolith but I disagree. I still gain the benefits of scaling the size and number of instances of my micro services independently, but remove a lot of the burden of independent versioning and keeping track of the version compatibility matrix.
For anyone interested in a simpler path I think there is a lot of useful information in the book Continuous Delivery by Jez Humble and Paul Hammond.
You might find it useful to read their source, the same techniques could probably be easily adapted for your usage.
Unfortunately I am heading off to work and don't have time to elaborate further but to very briefly answer your question, yes I have found differential testing to be hugely beneficial. I don't use it to replace unit tests but lean on it heavily when doing a rip and replace of a sub-system such as when I am rewriting a ruby service in scala.
Even though it has been tried a few times before and never seems to catch on I really like the idea and would be down to help except I haven't coded C in 15 years and don't really have any desire to go back. I wonder if there are parts I could help with in newer languages. It's always fun to pick up a project to learn a new language.