Atomic Architecture

A vision for better software systems

Malcolm Sparks, CTO@JUXT

Motivation

Status Quo

Within this research setting, we found that differences in architectural complexity could account for 50% drops in productivity, three-fold increases in defect density, and order-of-magnitude increases in staff turnover.

Source: System design and the cost of architectural complexity, Sturtevant (2013) https://dspace.mit.edu/handle/1721.1/79551

Atomic Architecture

... in 7 properties

P1: Shared State

P1: Shared State

Prior Art

  1. clojure.core/atom
  2. reagent's r/atom
  3. Client/Server (PC/Unix)

P1: Shared State

Trade-offs/Questions

  1. Is the shared database an anti-pattern?
  2. How to get consensus on domain model
  3. How large should our domain be?

P2: Domain Operations

book-appointment, cancel-reservation, refund-customer, get-booking, find-customer, calculate-pension-accrual, reserve-product, send-confirmation...

P3: Data Consistency

P4: API Only

P5: Access Control

P5: Access Control

Prior Art

  • OAuth2
  • OpenID/Connect
  • Still very hard!

P5: Access Control

Challenges

Executive Order 14028, “Improving the Nation’s Cybersecurity”, pushes agencies to adopt zero trust cybersecurity principles and adjust their network architectures accordingly.

https://zerotrust.cyber.gov/zero-trust-maturity-model/  May 12, 2021

P5: Access Control

Demo

P6: Event Logging

P7: Bitemporality

 

P7: Bitemporality

 

Post-script

XTDB/Site

Principle XTDB Site
Shared State Yes
Domain Operations Yes
Contractual Interfaces REST/GraphQL
Consistency Support for tx-fns Operations run in tx-fns
Access Control Yes, plus OAuth
Record Events Implicit Explicit
Version History Bitemporality

Questions?

Email: mal@juxt.pro (get in touch!)

Twitter: @malcolmsparks

GitHub: @malcolmsparks

LinkedIn: https://www.linkedin.com/in/malcolmsparks/

Atomic Architecture

By Malcolm Sparks

Atomic Architecture

A talk given in Copenhagen in April 2023 introducing Atomic Architecture by referencing its 7 properties.

  • 371