Hi Boško,
Finding service boundaries is a challenge and there is no such a “give me requirements and I tell you how many services will be enough and each of them should have this kind of size”. As you wrote there are many variables that have to be take to consideration. As presented in the exercises in the course one option could be start drawing solution and trying grouping things together. Sometimes it’s obvious for example Finance should be as much independent as possible from Shipping but sometimes it’s not so clear. To make a decision sometimes helps to think extremely defense:
“if I turn off this technical part will other parts be work correctly?”
for example
“if I turn off everything from Shipping will orders still be accepted and will credit card checking still be working?”
From the business point of view this two parts could be separated (separate services) so the technical solution should follow the same rules.
The Service is a logical concept. The Autonomous Component (AC) is a physical concept. AC’s are grouping together within Services. Without logical grouping there is much more chance to create strong dependencies between AC’s which shouldn’t be.
Summarizing I think the question What is the size of the Distributed System (DS)? could be extended by questions:
- How hard is to implement new requirement in the DS?
- How hard is to extend existing functionality in the DS?
- How hard is to replaced existing functionality in the DS?
- How hard …?
Hope this help.