Group Services Based on Domain Proximity
Context
Microservices are being adopted. Each microservice is assigned to exactly one team. There is still need for coordination between microservices and their respective teams The number of microservices is comparatively high.
Problem
- Coordination need between microservice teams causes communication overhead and decreases the innovation speed
Solution
Group services based on their functional proximity and assign them to teams that are organizationally aligned very closely.
When two teams are organizationally aligned closely (e.g. in the same department), chances are high that coordination is faster than coordinating with teams of other departments. The best case would be that the microservices that require coordination more often (because they are functionally close together) are allocated to the same team.
Building these groups and building hierarchies can also help to keep an overview over the large amount of microservices, for example for implementing differently grained security policies based on the different layers in the hierarchy.
Maturity
Proposed, to be evaluated.
Sources of Evidence
L14:
- Otto.de used Conway's law
- today 18 teams on 45 applications in 12 so-called "verticals"
L20:
- Another gain of microservices: layered and fine-grained security policies
- define hierarchical groupings of microservices
- designers can apply differently grained security policies to different layers in hierarchy
L45:
- Cluster = group microservices under specific characteristic
- => logical division of system into groups
- hierarchical grouping of microservices => security policies differently grained to the different layers in a hierarchy
L46:
- Microservices = fine-grained building blocks;
- Microservice domain = logical business entity containing collection of related microservices of the domain
- assist to manage microservices of the domain
- proliferation of microservices and consequences: multiple data models, platform and technology, cross-dependencies to other microservices
- business functional domain as "container" for microservices
- e.g. microservices supporting billing functions managed & governed by unit associated with billing processes and activities
Interview A:
- One team multiple microservices
- communication effort within team most of the times
- (=> interpretation: need to be grouped and assigned to team)
Interview B:
- One team usually develops multiple microservices
- functionally close together => contact persons close