What would you fight? 1 horse-size duck or 100 duck-size horse?
A good friend who recently attended an interview got asked this question. What would you rather fight? 1 horse-size duck or 100 duck-size horse? Hearing this question made me think, what did this mean to the interviewer? what is he referring to?
Before my current job I worked in a small successful company with a mono repo and I now work in a small company with number of micro-services, my immediate thought was based on this.
At that time I told him I prefer 100 duck-size horses. “But why?” he asked. In my past experience using a mono repo with less test cases, every single change needs to be carefully reviewed and tested. I once did a user-agent change in the Mono-repo which broke at-least 2 customers. We had 10+ test cases for the user-agent, and added more for the change. It was not enough, any new change required extensive testing and experimentation, canary roll-outs. So my answer was 100 duck-size horses.
Roll forward a few weeks, I was dealing with 100 duck-size horses, only this time it was time to upgrade dependencies. Newer is always better right?. Well it is, except I had to upgrade 15+ libraries and deal with incompatibilities, test case failures, code changes for the upgrade, moving to the next major version, upgrading 20+ services which depend on those different libraries and following the same cycle as that of the libraries. What was suppose to be a easy change became a mundane job. Change, build, release and continue.
Now that I have said this, is it micro-services or mono-repo for me? Micro-service or mono-repo it comes with a cost. Depends on what is cheaper to deal with at that point of time. IMHO