Micro and Macro Architecture
Microservices enable you to largely avoid overarching architecture decisions. Each team can choose the optimal type of architecture for its microservices.
The basis for this is the microservices architecture. It provides a large degree of technical freedom. While normally due to technical reasons, uniform technologies are mandatory, microservices do not have these restrictions. However, there can be other reasons for uniformity. The question is which decision is made by whom. There are two layers of decision making:
- • Macro architecture comprises the decisions that concern the overall system. These are at least the decisions presented in Chapter 7, “Architecture of Microservice-Based Systems,” regarding the domain architecture and basic technologies, which have to be used by all microservices, as well as communication protocols (Chapter 8, “Integration and Communication”). The properties and technologies of individual microservices can also be preset (Chapter 9, “Architecture of Individual Microservices”). However, this does not have to be the case. Decisions about the internals of the individual microservices do not have to be made in the macro architecture.
- • The micro architecture deals with decisions each team can make by itself. These should address topics that concern only the microservices developed by the respective team. Among these topics can be all aspects presented in Chapter 9 as long as they have not already been defined as part of the macro architecture.
The macro architecture cannot be defined once and for all but has to undergo continuous development. New features can require a different domain architecture or new technologies. Optimizing the macro architecture is a permanent process.