Pacts to the Rescue - Making your microservices play nicely together with Consumer Driven Contracts
- 1. Pacts to the rescue!
Making your microservices play nicely together !
with Consumer Driven Contracts!
!
!
!
Beth Skurrie!
@bethesque / @pact_up!
bskurrie@dius.com.au
- 2. !
!
“Integrated tests are a scam. !
A self replicating virus !
that threatens !
the very health of your codebase, !
your sanity, !
and I'm not exaggerating when I
say, !
your life.”!
- JB Rainsberger
- 3. Integrated Tests: The Problems
" Slow!
" Easy to break!
" Hard to fix!
" Scales combinatorially
3 classes, 4 code paths each!
4 * 4 * 4 = 64 tests
- 7. Test Symmetry: The Problem
" Lack of automated tools!
" Relies on developer eternal vigilance!
" Does not scale
- 8. Posed to Dius
Do we have the technology to achieve test
symmetry?
- 9. System Integration Tests: The WORST
" Slower!
" Easier to break!
" Harder to fix!
" Scales BADLY
" Lots of set up!
" Flakey!
" Extra infrastructure
- 12. Problems with... Solved by Pact
Test symmetry!
" No automated tools!
" Relies on developer eternal
vigilance - not sustainable!
" Does not scale!
!
Integrated tests!
" Slow!
" Easy to break!
" Hard to fix!
" Scales combinatorially
Test symmetry!
" Automatically enforced!
!
Integrated tests!
" Fast!
" Low set up!
" Reliable!
" Easier to debug!
" Standalone CI build!
" No extra infrastructure!
" Scales linearly
- 19. Set up test data
Consumer assumed:
Provider complies:
- 21. What’s in it for me?
• Black box testing - quicker turn around for builds!
• Exploratory testing - hints as to design
weaknesses!
• All testing - catch bugs before committing,
support for continuous deployment!
- 22. “How is it working for you?”
Before Pact!
" A “certification” environment that took 2 months to set up!
" Deploy all the things => deploy new thing => integration tests
=> pass ? deploy to production : try again!
" Does not scale!
!
With Pact!
" 40+ microservices using Pact!
" Green standalone CI builds ? deploy to production
- 23. In summary...
Consumer Provider
UI App
Provid
er
Client
API App DB
Integrated test
Test symmetry
with Pact
- 24. Pact allows you to:
" Reduce your defect turn around time!
" Reduce the number of bugs that are committed into the
codebase - immediate feedback on potential integration
breakages!
" Allows you to modify components with agility!
" Have confidence that all the services in your system will work
together!
" Throw away your integration tests!!!
- 25. Pact!
!
Makes your microservices play nicely together !
with Consumer Driven Contracts!
!
github.com/realestate-com-au/pact!
@pact_up!
!
!
Beth Skurrie!
bskurrie@dius.com.au
@bethesque
- 26. P
publish pact latest pact?
tag “prod” pact
deploy
script
prod pact?
C
Pact
Broker