innoq/SCS

"SCS vs. Microservices" should not mix microservices with SCSs

magro opened this issue · 4 comments

magro commented

The page SCS vs. Microservices says "Of course it is possible to split an SCS even further so it consists of microservices". Because it's often said that microservices have their own database in order to be decoupled from other services (see e.g. Pattern: Microservices Architecture) I'd try to avoid the usage of the term "microservices" and rather prefer "subsystems" or "processes". This is just to start the discussion about terminology, which was also already questioned on the discussions page.

I appreciate the discussion and I’m aware of the ambiguity. I still think the way it’s currently phrased is the best compromise – within an SCS, there could essentially be microservices of any kind, including those that have their own database. Of course you are right and an SCS could also be composed of processes or subsystem or components, but I don’t think that changes the point all that much.

I’m open to be letting myself be convinced :-)

magro commented

I'd prefer to have/give more freedom when thinking/talking about the parts of an SCS and not couple it to the meaning/attributes and discussion of/around microservices. If "microservice" is used the common attributes of microservices are somehow present and might lead to misinterpretations, misunderstanding and unnecessary discussions. While in fact an SCS could consist of several microservices that don't share any logic and data I'd assume that this would be more the exception than the rule (the parts of an SCS should be highly cohesive). From a terminology perspective using "subsystem" seems fairly natural when cutting a "system" into smaller parts. The step from "Self-Contained System" to "Microservice" seems not that natural to me.

I don’t actually see the coupling to any particular variant of the microservices concept if we say that SCSs can contain them. We’re often in discussions where people are looking for a higher-level structuring mechanism, and we also have projects where people are using finer-grained microservices in addition to the SCS approach.

Maybe if we phrased it slightly weaker to show that it’s not something we recommend, but rather one of many options?

I think it is important to give people a hint of how these both concepts are related. I see the point, that the kind of microservice is not defined further, but i don't think that this should be a part of the SCS definition.