Skip to content

Design Requirements

ulisespulido edited this page Nov 10, 2011 · 3 revisions

AutoPatch was designed with a few very simple requirements in mind.

  • Patches should execute before any server logic
    • This is important, or the application logic couldn't trust the state of the external systems
  • AutoPatch must enforce a total natural ordering on all patches.
    • This allows a developer to depend on the results of previous patches, for instance a patch can use database tables defined in patches that were executed previously
  • AutoPatch must ensure that each patch is applied once and only once
    • Having them apply multiple times would mean the patch author could never trust the initial state of the database, making patch development very difficult
  • AutoPatch should be able to globally order patches that execute against multiple external systems
  • AutoPatch should be capable of executing post-patching maintenance after patching (things like recompiling pl/sql, etc)
  • AutoPatch should be capable of executing the same patch across multiple databases with the same schema
  • AutoPatch should be capable of running in a read only way, showing what it would do, but not changing anything
  • AutoPatch should be able to support multiple migration strategies.
    • Developers could be able to add their own migration strategy to AutoPatch.