This is the conclusion I've come to on the monolith I work on. We're trying to extract some microsercives but the start of that effort hasn't yet bore fruit and the pace / cost is so slow I suspect it won't really be possible to actually fully carve out some of the stuff we are trying to.
To be fair, at least the initial stuff is stuff that would benefit from being carved out owing to it being integration code that should be independently deployable allowing for quicker turn around of issues with the integration and us being able to benefit from newer tech we want to use but can't.
The actual domain stuff we haven't been able to touch. Mostly because the data access is a veritable trashfire. It's a can that has been kicked 10 years down the road.
My thinking has basically shifted to pushing for us to carve out services for things our backend does that aren't in our core domain but are heavily trafficked, possibly because they're not well designed, and fundamentally affect the performance characteristics of our app. Carving them out is actually tractable, and we can probably reasonably get better perf/design and IMO would be a value add.
For our domain there is just no way we should even attempt to carve it up. We just need to tidy that sucker up until the domain operations are performant, and cleanly implemented.
If and only if we get there would it make sense to attempt carving out of the domain. But in reality we will probably live with a few non-domain related microservice, integration microservice, and our monoservice.
To be fair, at least the initial stuff is stuff that would benefit from being carved out owing to it being integration code that should be independently deployable allowing for quicker turn around of issues with the integration and us being able to benefit from newer tech we want to use but can't.
The actual domain stuff we haven't been able to touch. Mostly because the data access is a veritable trashfire. It's a can that has been kicked 10 years down the road.
My thinking has basically shifted to pushing for us to carve out services for things our backend does that aren't in our core domain but are heavily trafficked, possibly because they're not well designed, and fundamentally affect the performance characteristics of our app. Carving them out is actually tractable, and we can probably reasonably get better perf/design and IMO would be a value add.
For our domain there is just no way we should even attempt to carve it up. We just need to tidy that sucker up until the domain operations are performant, and cleanly implemented.
If and only if we get there would it make sense to attempt carving out of the domain. But in reality we will probably live with a few non-domain related microservice, integration microservice, and our monoservice.