Session

Winning at Continuous Deployment with the Expand/Contract Pattern (Live Demo)

You've done everything right: you have a continuous deployment pipeline, you have a commit stage with great unit tests, a pre-prod stage with fully automated deployment, robust end-to-end tests as well as some performance & security checks, and once all your quality gates are passed, your stream of changes march confidently towards production - but then somehow, someway, somewhy, production still blows up!

Continuous delivery is awesome, but the devil is in the details, and there's a decent chance you've been bitten by one of the biggest challenges - the safe management of contract changes.

Contracts can be obvious and public such as APIs (URL structure & schema), or obvious and private, such as database schemas, or non-obvious, such as the schema of in-flight messages in a queue, or dependency on specific timing expectations.

This talk demonstrates with real deployments the fundamental principle that underlies all safe contract changes - the 3 step model:

1. expand - introduce the change in a backwards and forwards compatible way
2. change - ensure all instances of the component and all dependants are using the new definition
3. contract - retire the obsolete compatibility elements

The good news is, with continuous delivery we can often do all three steps in quick succession!

This has been delivered at Voxxed Days Brussels 2023 and Agile on the Beach (UK) 2023. It includes a live demo where we do a deployment of a contract change in a single step while running an end-2-end test in a loop. This test fails during deployment, and we then re-do the deployment in 3 steps and demonstrate that the tests never fail.

Chris Simon

Technology Coach and Advisor

Sydney, Australia

Actions

Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.

Jump to top