Recent practice in distributed systems has shifted from building and maintaining monolithic applications to breaking monoliths into microservices, but the standardization and best practices for microservice architecture and interaction between microservices remain largely undefined.