We are a mid sized moving and shipping company that is transitioning our custom applications to microservices. Our business was originally based on shipping, but we found some niche areas in moving/relocation of employees and groups of employees (offices/companies). There were also a few acquisitions over the past decade. This leaves us with many domains, some of which are very similar across company offerings.
Company executives would like to merge many of these products to reduce redundancy and cost. On the surface the user interfaces can be designed to meet this need. Under the surface, both products have extremely unique back ends. Nobody wants a multiple year big bang release, we are all in agreement that we want incremental change.
So, starting with a microservice for CustomerProfile, the back ends are wildly unique. We are debating between two approaches.
- Create one common api gateway endpoint and let api gateway route traffic to two separate microservices to the correct product specific CustomerProfile microservice.
- Create one common api gateway with one microservice, but in that microservice there would be some feature flag implementation to direct the request to the correct "strategy" design pattern for the unique implementaion.
The first option is easier, but some of us are concerned that we will never merge these two separate microservies. The second one has some developers concerned that it would be too complex, but the advantage is that the implementation of feature flags will provide a baseline for future microservice implementations.
Thoughts?
-A