Skip to content

Instantly share code, notes, and snippets.

@theIV
Last active February 1, 2022 18:11
Show Gist options
  • Save theIV/61da87d307e147cf12f0c6068da8bd5b to your computer and use it in GitHub Desktop.
Save theIV/61da87d307e147cf12f0c6068da8bd5b to your computer and use it in GitHub Desktop.

branch by abstraction (BbA)

  1. There are also a lot of developers already depending on the code that is subject of the ‘longer to complete’ change, and we do not want them to be slowed down in any way.
  2. No commit pushed to the shared repository should jeopardize the ability to go live.

steps (as defined in mono to micro)

  1. Create an abstraction for the functionality to be replaced.
  2. Change clients of the existing functionality to use the new abstraction.
  3. Create a new implementation of the abstraction with the reworked functionality. (microservice)
  4. Switch over the abstraction to use our new implementation.
  5. Clean up the abstraction & remove the old implementation.

alternative phrasing

  1. Create abstraction.
  2. Use abstraction.
  3. Create new implementation.
  4. Switch implementation.
  5. Clean up.

see 1 for diagrams.
see 2 for first article written on BbA.
see 3 for a Fowlerian write-up.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment