Confidently Releasing Microservices With Consumer-Driven Contract Testing
Many teams working with microservices need confidence they don't break functionality when making changes. System integration tests, functional tests, and sometimes manual tests are older ways to obtain that confidence. These processes may take more than 1 day or even more if different teams or a different company own the services.
To ensure the same level of confidence and speed up delivery, we can create Contracts for integrations between consumers and providers. Contracts created by consumer services need to pass with every build going in production to guarantee the integrations between systems/services work fine. Checking these contracts in a CI/CD pipeline makes feedback loops even faster.
A Contract is a collection of agreements between a Consumer and a Provider that describes the interactions that can take place between them. Consumer-Driven Contracts (CDCs) is a pattern that drives the development of the Providers from its Consumer's point of view. It is TDD for microservices.
This talk covers where and where not to do contract testing, backed up by real project experiences. The experience in doing contract testing at scale, mistakes, lessons learned are the core of the talk.
Outline/Structure of the Talk
- Introduction to microservices common deployment patterns
- The pitfall of a couple of deployment strategies
- Introduction to Consumer-Driven Contract Tests
- How CDC helps in speeding up the Continuous Delivery
- Demo of CDC for two microservices integration.
- Putting CDC in CI/CD workflow.
- Experience using different CI/CD strategies
- How the contract testing makes feedback look faster in agile teams
- New testing strategy to fasten continues delivery
- Understanding multiple testing approaches
- Deploying services autonomously with confidence
- Understanding contract testing with example
- Automating service dependencies
- Putting CDC in CI/CD workflow
Developers, Analyst, Agile Coach, anyone who works in a cross-functional team