In a monolithic application, different services are developed within same project side by side. In these kind of applications you don't need to worry about breaking the compatibility between contract interfaces since there is an invisible verifier called compiler that checks that all method calls follows the defined signature. But in case of microservices, different services are deployed in different runtimes and using different separated networks. In this scenario, any change on the contract of one service cannot be caught by the compiler since there is no typesafe connection between services.. Now breaking the compatibility between services can be really easy and hard to detect (maybe until your new version of the service is on production). In this talk we are going to explore why deploying a new version of a service might break everything in microservices architecture, and how to fix with consumer-driven contracts pattern.