expand contract pattern - usenix · 2019. 10. 30. · continuous delivery of databases expand...

49
Expand Contract Pattern Continuous Delivery for Databases @leenasn

Upload: others

Post on 23-Aug-2021

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Expand Contract Pattern

Continuous Delivery for Databases

@leenasn

Page 2: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

https://pixabay.com/en/hands-hand-raised-hands-raised-220163/

Page 3: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

A few years backhttps://pixabay.com/en/art-watercolors-arts-and-crafts-1851483/

Page 4: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

https://pixabay.com/photos/time-for-a-change-new-ways-letters-2015164/

Page 5: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Non-text features

Textual features

Abstraction Layer

Old Library

New Library

Page 6: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

All features

Abstraction Layer

New Library

Page 7: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

https://martinfowler.com/bliki/BranchByAbstraction.htmlBranch by Abstraction

Page 8: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

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.

Refactoring

Page 9: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

https://continuousdelivery.com/

Ability to get changes of all types—including new features, configuration changes, bug fixes and experiments—into production, or into the hands of users, safely and quickly in a sustainable way.

Continuous Delivery

Page 10: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

https://pixabay.com/photos/hourglass-time-hours-clock-620397/

Page 11: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Good KarmaStory-telling CRM because Facts Tell but Stories Sell http://goodkarmayoga.in/

Page 12: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Evolvability https://www.dreamstime.com/

Page 13: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Database? https://pixabay.com/vectors/cranium-head-human-people-persons-2028555/

Page 14: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

https://unsplash.com/photos/elayN_YscVgSlow

Page 15: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

High risk https://pixabay.com/en/balance-risk-courage-risky-3062272/

Page 16: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

ACID https://pixabay.com/vectors/database-storage-data-storage-152091/

Page 17: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Atomic Deployments https://pixabay.com/en/juggle-artists-circus-money-1027844/

Page 18: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Safehttps://pixabay.com/photos/lifesaver-life-buoy-safety-rescue-933560/

Page 19: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Less risky

Page 20: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

A database refactoring is a small change to your database schema (the table structures, data itself, stored procedures, and triggers) which improves its design without changing its semantics.

http://databaserefactoring.com/

Page 21: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

● Enables Continuous Delivery● Supports evolutionary development

http://databaserefactoring.com/

Page 22: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

https://www.dreamstime.com/stock-photos-example-stamp-image28420393

Page 23: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Split Column

customer_idbooking_datestatus

trial_bookings

Page 24: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Transition

customer_idstatus[old field]booking_dateattendance_statusmembership_status

trial_bookings

Page 25: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

New Schema

customer_idbooking_dateattendance_statusmembership_status

trial_bookings

Page 26: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

New SchemaTransition PeriodOld Schema

customer_idbooking_dateattendance_statusmembership_status

trial_bookings

customer_idbooking_dateattendance_statusmembership_status

trial_bookings

customer_idstatus[old field]booking_dateattendance_statusmembership_status

trial_bookings

Page 27: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Split table

billing_cycles

customer_idvalidity_starts_atvalid_untilpayment_modePayment_made_atamount_paid

Page 28: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

payments

billing_cycle_idpayment_modepayment_made_atamount_paid

Transition

billing_cycles

customer_idvalidity_starts_atvalid_untilpayment_modepayment_made_atamount_paidbillable_amount

* 1

Page 29: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

payments

billing_cycle_idpayment_modepayment_made_atamount_paid

New Schema

billing_cycles

customer_idvalidity_starts_atvalid_until * 1

Page 30: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

New SchemaTransition Period

Old Schemapayments

billing_cycle_idpayment_modepayment_made_atamount_paid

billing_cycles

customer_idvalidity_starts_atvalid_untilpayment_modePayment_made_atamount_paid

billing_cycles

customer_idvalidity_starts_atvalid_untilpayment_modepayment_made_atamount_paidbillable_amount payments

billing_cycle_idpayment_modepayment_made_atamount_paid

billing_cycles

customer_idvalidity_starts_atvalid_until

Page 31: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

https://martinfowler.com/articles/evodb.html

Page 32: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Types of Refactoring

★ Structural Refactoring★ Data Quality Refactoring★ Referential Integrity Refactoring★ Transformation★ Architectural Refactoring★ Method Refactoring

Page 33: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

https://pixabay.com/vectors/abc-alphabet-blocks-toy-148517/Basics

Page 34: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Versioning https://git-scm.com/downloads/logos

Page 35: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

https://pixabay.com/photos/gears-cogs-machine-machinery-1236578/Automation

Page 36: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

https://pixabay.com/en/strategy-arrows-building-startup-3224515/

Page 37: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Transition period https://pixabay.com/photos/bridge-iron-old-pedestrian-metal-3181356/

Page 38: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

https://pixabay.com/en/magnifying-glass-facts-examine-1607160/

Page 39: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Move fast and break nothinghttps://zachholman.com/talk/move-fast-break-nothing/

Page 40: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Upgrading Railshttps://github.blog/2018-09-28-upgrading-github-from-rails-3-2-to-5-2/

Page 41: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Software Releases Without Major Problemshttps://www.forbes.com/sites/quora/2013/08/12/how-do-facebook-and-google-manage-software-releases-without-causing-major-problems/

Page 42: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Strangler Applicationshttps://paulhammant.com/2013/07/14/legacy-application-strangulation-case-studies/

Page 43: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles
Page 44: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Murphy’s Lawhttps://www.flickr.com/photos/smemon/5471883005

Page 45: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Low risk releaseshttps://pixabay.com/en/button-red-round-shiny-155149/

Page 46: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Small reversible stepshttps://www.slideshare.net/jallspaw/ops-metametrics-the-currency-you-pay-for-change

Page 47: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

References

Page 49: Expand Contract Pattern - USENIX · 2019. 10. 30. · Continuous Delivery of Databases Expand Contract Pattern - Continuous Delivery of Databases Database Refactoring Four Principles

Leena S N@leenasn / [email protected]

https://medium.com/@leenasn