Proposed Talks

A migration story

Submitted by Jon Jagger

Talk Abstract:

A bit about me, and my https://cyber-dojo.org open source project. Why we initially chose git - the tie in to cyber-dojo. The name of our git library was crumb Context - our tests had close to 100% branch coverage for this code. This made everything possible. Steps we took...

  • Copy all the model classes to a crumb/ dir
  • Refactor the top-level classes with @decorators for all methods and properties that forward to crumb/ classes via .crumb property
  • Introduce the contract-checking lib with lambda functors to allow delayed evaluations
  • In the @decorators pass all lambda functors to contract checking lib.
  • Add .mongo property (initially None) next to .crumb property
  • Add 5 levels of contract-checking from CRUMB_ONLY through to MONGO_ONLY
  • Introduce primary/secondary abstraction so contract checking can treat all calls identically
  • Allowing secondary contract-check calls to be async "fire-and-forget" to retain existing speed
  • Testing async "fire-and-forget" calls!?
  • Adding mirrored Mongo classes that implement all methods and properties.
  • Timestamps in data have to be identical!
  • Migrating with no server downtime.