Decision = Responsibility
The question is, who defines macro and micro architecture and takes care of their optimization? It is important to keep in mind that each decision is linked to responsibility. Whoever makes a decision is responsible for its consequences—good or bad. In turn the responsibility for a microservice entails the necessity to make the required decisions for its architecture. When the macro architecture defines a certain technology stack, the responsibility for this stack rests with the persons responsible for the macro architecture—not with the teams that use them in the microservices and might later have problems with this technology stack. Therefore, a strong restriction of the technology freedom of the individual microservices by the macro architecture is often not helpful. It only shifts decisions and responsibility to a level that does not have much to do with the individual microservices. This can lead to an ivory-tower architecture that is not based on the real requirements. In the best case it is ignored. In the worst case it causes serious problems in the application. Microservices enable you to largely do without macro architecture decisions in order to avoid such an ivory-tower architecture.