Hi Robin, great introductory write up. I'm going to raise a counter point to the mono repo and specifically your point on sharing the payment struct.
In my experience, the biggest benefit of microservice comes from the decoupling of code. Sharing a struct between two services makes them really tightly coupled.
I've always preferred having separate data models, and using unit/integration tests to make sure the contract isn't broken.
I am well aware of the coupling/de-coupling by sharing data model.
Perhaps sharing struct is not the perfect example for this.
Another sharable code is about role & permission checking.
In my workplace we implemented an RBAC system with each microservice / business domain having it's own rule set.
The RBAC engine is shared across microservices in a single package.
Completely agree with that use case! If the same permission/role checking needs to happen with every service that screams our for shared code.
I think I'd still use an external reference (NuGet in the case of .NET) rather than direct refs to the local source files. But I do see your point now.
Thankyou for clarifying :-)
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
Hi Robin, great introductory write up. I'm going to raise a counter point to the mono repo and specifically your point on sharing the payment struct.
In my experience, the biggest benefit of microservice comes from the decoupling of code. Sharing a struct between two services makes them really tightly coupled.
I've always preferred having separate data models, and using unit/integration tests to make sure the contract isn't broken.
Hi James, thanks for commenting.
I am well aware of the coupling/de-coupling by sharing data model.
Perhaps sharing struct is not the perfect example for this.
Another sharable code is about role & permission checking.
In my workplace we implemented an RBAC system with each microservice / business domain having it's own rule set.
The RBAC engine is shared across microservices in a single package.
Hi Robin, thanks for taking the time to reply.
Completely agree with that use case! If the same permission/role checking needs to happen with every service that screams our for shared code.
I think I'd still use an external reference (NuGet in the case of .NET) rather than direct refs to the local source files. But I do see your point now.
Thankyou for clarifying :-)