How to mitigate the complexity of microservice communication