The EA Playbook: Architecture Patterns from Production
What we learned building business systems across banking, legal, accounting, and enterprise security. Not theoretical frameworks—actual patterns from production systems.
Why This Matters for Enterprise Architects
You're evaluating architectures, approving designs, and setting standards. You need patterns that actually work—not vendor slides or academic frameworks.
We've built systems across four industries that look nothing alike: immigration law firms, bank data platforms, CSR expense management, and mobile device compliance. The patterns are remarkably similar.
7 Patterns That Appear Everywhere
After building workflows across these industries, we keep seeing the same patterns. Miss one, and you'll rebuild later.
State Machine
Every business workflow is a finite state machine. Define your states, valid transitions, and guards that control when transitions can occur.
Implementation
- •Enumerate all possible states explicitly
- •Define valid transitions as a directed graph
- •Add guards (conditions) for each transition
- •Make invalid states unrepresentable
Anti-pattern
Using a freeform "status" string field that can hold any value
Example
Data Product Governance: Draft → Proposed → In Review → Certified → Published → Deprecated
Pattern × Industry Matrix
Not every pattern applies everywhere. Here's what we've seen.
| Pattern | Banking | Legal | Accounting | Security |
|---|---|---|---|---|
| State Machine | ||||
| Multi-Party Handoffs | — | |||
| Approval Gates | ||||
| Audit Trail | ||||
| Clarification Loops | — | |||
| Configurable Statuses | — | — | ||
| Access & Entitlements | — | — |
5 Anti-Patterns We've Seen Kill Projects
These aren't theoretical. We've seen each one cause real pain.
The God Service
One service that does everything. It starts simple, then grows tentacles into every part of the system.
Fix: Decompose by bounded context. Each service owns its data and workflow.
Stringly Typed Status
Using freeform strings for status instead of enums. "Approved", "approved", "APPROVED", "apprvd" all mean the same thing... maybe.
Fix: Use proper enums. Validate at the boundary. Reject invalid values.
Optimistic Audit
Logging only successes, or only errors. When the auditor asks "did anyone view this record?", you don't know.
Fix: Log everything: reads, writes, failures, and why. Store immutably.
Sync-Everything
Every action waits for every downstream system. One slow integration blocks the user.
Fix: Use async messaging for non-critical paths. Show "processing" states.
Config in Code
Business rules buried in if-statements. Changing a threshold requires a developer and a deployment.
Fix: Externalize business rules. Make ops teams self-sufficient for common changes.
See the Patterns in Action
Each case study shows how these patterns apply in a specific industry context.
Data Product Governance
Data everywhere, usable data nowhere. Teams creating tables without documentation.
Immigration Case Management
72+ unstructured statuses. Documents scattered. No client visibility.
CSR Expense Management
15+ project spreadsheets. Monthly consolidation taking days.
Device Compliance Monitoring
No visibility into mobile fleet compliance. Point-in-time audits missing drift.
When to Use What
A quick decision framework for choosing patterns.
Building a Business System?
We help organisations design and build workflow systems that actually work. From discovery through deployment, we bring these patterns to life.