Unlike a monolith, which is an independently deployable unit that can be tested as a whole, microservices are a distributed system, composed of many services that can be tested and deployed independently of each other. While this approach has many advantages, from a testing perspective it can actually make things harder. How do I know the impact of changing or deploying a microservice on other microservices that may depend on it?
Andrew Morgan looks in depth at some common microservices testing anti-patterns and then introduces a testing technique named consumer-driven contract (CDC) testing as a way to mitigate them. Some of the problems you’ll be looking at are building and end-to-end testing microservices like a monolith, the “distributed monolith” anti-pattern, and unit tests that are heavily reliant on stubs of other microservices that may be inaccurate or stale. CDC is a TDD at the API level approach to microservices. Andrew walks you through the concept end to end, explaining how it can be used to help guarantee that both message-driven and API-driven interactions between microservices will work without end-to-end testing, provide a fast and reliable feedback loop for microservices development, and deliver independently testable and releasable microservices.
Andrew Morgan is an independent consultant, currently focusing on architecture and design, microservices, and continuous delivery. He has experience working with many different types of organizations, primarily in development and operations roles. He’s also involved in the wider technology community, contributing to a number of open source projects, presenting at international conferences, writing for InfoQ, and is soon to become a Pluralsight author.
©2019, O'Reilly Media, Inc. • (800) 889-8969 or (707) 827-7019 • Monday-Friday 7:30am-5pm PT • All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners. • firstname.lastname@example.org