Expand contract pattern - Continuous Delivery and Databases
833 views
37 slides
May 12, 2018
Slide 1 of 37
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
About This Presentation
Modifying the schema of a production database is *hard*. If something goes wrong, the impact on both customers and the team can be enormous. And it can be hard or even impossible to rollback a database schema change if things go wrong. And the same is true for any architectural change for a producti...
Modifying the schema of a production database is *hard*. If something goes wrong, the impact on both customers and the team can be enormous. And it can be hard or even impossible to rollback a database schema change if things go wrong. And the same is true for any architectural change for a production application.
The Branch by Abstraction and Strangler Pattern makes significant application changes easier. Are there any similar patterns we can use to make production database changes less risky?
Indeed, there are. The Expand/Contract pattern is a blueprint for making the database migration. It makes the remodelling both reversible and safe. By *expanding* the application to accommodate both the old and the new schemas in parallel, we can give ourselves time to:
- Migrate any downstream dependencies on the old database schema
- Gain confidence that the migration is safe
We *contract* the application to the new version, once we’ve satisfied that the old schema is no longer needed.
The pattern helps to make significant, but necessary refactorings to your data model in a **continuous delivery way**. Most importantly, without threatening the robustness of your production applications.
Size: 2.38 MB
Language: en
Added: May 12, 2018
Slides: 37 pages
Slide Content
Expand Contract
Pattern
Continuous Delivery for Databases
@leenasn
https://martinfowler.com/bliki/BranchByAbstraction.html
Branch by Abstraction
Database?
Slow
High risk
https://pixabay.com/en/balance-risk-courage-risky-3062272/
Less risky?
Database Refactoring
https://martinfowler.com/books/refactoring.html
Refactoring is a controlled technique for improving
the design of an existing code base. Its essence is
applying a series of small behavior-preserving
transformations, each of which "too small to be worth
doing".
However the cumulative effect of each of these
transformations is quite significant.