Architecture Without an End State

TL;DR

  1. Embrace Plurality
    • Avoid single system of record (SSoR).
    • Federate extents from multiple different systems (multiple systems of record).
  2. Contextualize Downstream
    • Business rules are contextual.
    • The more we push rules upstream, the larger the surface area of every change becomes.
    • Augment the information upstream, but contextualize it and apply rules and policies downstream.
    • Apply policies in systems closest to the users.
    • Minimize the entities that all systems need to know about it.
  3. Beware Grandiosity
    • Seek compromises.
    • Assume an open world.
    • Begin small and incrementalize.
    • Allow lengthy comment periods.
  4. Decentralize
    • Transparency: methods, work, and results must be visible.
    • Isolation: one group’s failure cannot cause widespread damage.
    • Economics: distributed economic decision-making.
  5. Isolate Failure Domains
    • Six different ways of introducing modularity: splitting, substitution, augmenting, excluding, inversion, porting
  6. Data Outlives Applications
    • Data outlives many different technologies and applications.
  7. Applications Outlive Integrations
    • Hexagonal architecture or Ports and Adapters
  8. Increase Discoverability
    • Improve by building on the work of others.
    • Visible work: open code repositories, internal blogs, etc.

Presentation