Scaling Internal Tools.
Architecture patterns for resilient enterprise tools: operator-first UX, strict separation of concerns, and RBAC by design.
Internal ToolsArchitectureRBACUX
Failure modes are predictable: tools built for the happy path, single-role assumptions, and treating the DB as the UI contract. Growth breaks these seams.
Design for the operator's mental model: task → status → action. Hide complexity behind progressive disclosure.
- Task-Oriented: Navigation by need, not DB table.
- Impact: 2w onboarding to 2d at Daikin Applied.
Three-layer architecture: UI → Service (business rules) → Data (Repository). This lets you swap data sources without touching the UI components.
Define roles (Operator, Supervisor, Admin) as first-class entities with permission matrices. Enforce at the service layer, not just the UI.
Structured logging with correlation IDs, health probes (/health), and error-rate dashboards ensure you detect failures before users report them.
Run the checklist: Can commercial software solve 80%? Will >5 people use it? If no, script it. If yes, architect it.
“The most expensive internal tool is the one that should have been a spreadsheet. The second most expensive is the one that started as a spreadsheet and grew into a monster.”