The name I’ve given to my new service that I am developing at work. The goal is a complete data and logic isolation of one of our features, extracting it from the monolithic web-application we currently have running for our customers.
And while the idea in itself is amazing, the actual implementation is not so easy. The goal is to have a service that crawls the web for data, transforms it and stores it inside our system using the correct configuration and structure. The problems however are:
- The core is so tightly coupled, that I’m not even sure I can start on this without some preliminary refactoring.
- There is a data-dependency in both systems, where I do not see an easy separation.
- There’s a constant need for synchronising data between the systems, which makes me wonder if there’s really a need to extract this.
- Once we start on this, we need to drive it through completely.
Our Product Owner sees the issues and supports that we need to clean up our technical dept regarding this feature. The business however has requirements that need to be fulfilled as well. Doing both at the same time might be possible I suppose, but do we want that?
- We could say that all feature development for this topic is on hold, and the new service needs to be finished first. (We all know how “finished” software is)
- We port over the established components and keep developing features in the app, porting them later (refactor hell)
- We put the service on hold and finish the new features first (like that’s ever going to happen)
All three approaches have their benefits and downsides. The biggest problem I have right now is that I see no clean technical solution at the moment on the sync need between the both of them, and how we can proceed with this in an orderly manner.
I’ve tossed the problem in front of the team, and I’m waiting on feedback at the moment, but my mind is wandering, and a little voice says to keep everything in the monolithic application right now and go for code-isolation first, and data-isolation later on.