Overview # With the prevalence of microservices today, it is important to define how the interaction between the different components of an application happen. When you have a monolith application that is easy - the method signatures and interfaces define a rigid structure and any errors due to changes are caught immediately at the build/compile step. For microservices, we don’t have such an enforcement of correct communication - any error surface during integration testing which is often too late and slows down development.