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 dives into common microservices testing anti-patterns, including building an 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. He then offers an overview of consumer-driven contract (CDC) testing—a TDD at the API level approach to microservices—as a way to mitigate them. Andrew walks you through the concept end to end, explaining how to use it to 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, and 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