An Architectural Vision for Better Information Systems
Malcolm Sparks, CTO@JUXT
1982-1991 | BASIC, 68000 |
1991-1996 | C, C++, UNIX |
1996-2009 | Java, XML |
2009-2023 | Clojure |
Malcolm Sparks, CTO@JUXT
@malcolmsparks (GitHub, X, LinkedIn, etc.)
1997 | Server-side Java, CORBA, RMI, Servlets |
1998 | Enterprise JavaBeans |
1999-2003 | J2EE App Servers, Servlet/JSP containers |
2006+ | REST (Restlet, WebMachine) |
2010 | plugboard, Liberator |
2014 | bidi, yada |
2019+ | jinx, pick, reap, tick, grab... |
2020-2023 | Site (part of XTDB family) |
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
Principle 1 | Shared State |
Principle 2 | Domain Operations |
Principle 3 | Data Consistency |
Principle 4 | API Only |
Principle 5 | Access Control |
Principle 6 | Event Logging |
Principle 7 | Bitemporality |
For the last decade, the tech sector has been on a mission to decrease its dependence on central SQL-monoliths. The mainstay of these efforts were focused on microservices and its “loose coupling” and “separation of concerns” as guiding principles.
https://itnext.io/loosely-coupled-monoliths-and-where-to-find-them-4004fac8ecc1
the issue comes from the interaction between two processes happening in parallel. Remember that the point of this (increasingly complex) exercise is to decrease coupling, ie: reduce the amount of implied information between subsystems.
https://itnext.io/microservices-and-the-myth-of-loose-coupling-9bbca007ac1a
some_list = [10, 20, 30, 40]
print("Original List:", some_list)
some_list.append(100)
some_list[0] = 0
some_list.pop(1)
print("Manipulated List:", some_list)
'Atom'
from https://martinfowler.com/articles/data-mesh-principles.html
https://dev.solita.fi/2020/09/23/centralised-schema-management-microservices.html
Principle 1 | Shared State |
Principle 2 | Domain Operations |
Principle 3 | Data Consistency |
Principle 4 | API Only |
Principle 5 | Access Control |
Principle 6 | Event Logging |
Principle 7 | Bitemporality |
update-customer-profile
confirm-payment
check-inventory-levels
modify-order-status
verify-account
schedule-delivery
reset-password
issue-ticket
track-shipment
update-order
create-invoice
adjust-billing
process-return
initiate-transfer
validate-membership
escalate-issue
generate-report
review-application
authorize-transaction
notify-user
Principle 1 | Shared State |
Principle 2 | Domain Operations |
Principle 3 | Data Consistency |
Principle 4 | API Only |
Principle 5 | Access Control |
Principle 6 | Event Logging |
Principle 7 | Bitemporality |
Principle 1 | Shared State |
Principle 2 | Domain Operations |
Principle 3 | Data Consistency |
Principle 4 | API Only |
Principle 5 | Access Control |
Principle 6 | Event Logging |
Principle 7 | Bitemporality |
Principle 1 | Shared State |
Principle 2 | Domain Operations |
Principle 3 | Data Consistency |
Principle 4 | API Only |
Principle 5 | Access Control |
Principle 6 | Event Logging |
Principle 7 | Bitemporality |
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
Principle 1 | Shared State |
Principle 2 | Domain Operations |
Principle 3 | Data Consistency |
Principle 4 | API Only |
Principle 5 | Access Control |
Principle 6 | Event Logging |
Principle 7 | Bitemporality |
Principle 1 | Shared State |
Principle 2 | Domain Operations |
Principle 3 | Data Consistency |
Principle 4 | API Only |
Principle 5 | Access Control |
Principle 6 | Event Logging |
Principle 7 | Bitemporality |
Malcolm Sparks, CTO@JUXT
mal@juxt.pro
@malcolmsparks (GitHub, X, LinkedIn, etc.)