The Problem with Naive RBAC Implementations
Before ACM, permission checks lived directly inside business services.
For every API request:
- The database was queried to verify permissions
- The same permission data was fetched repeatedly
- Authorization logic was scattered across services
- Each service implemented checks slightly differently
This approach was functionally correct — but architecturally flawed.
The Resulting Problems
- Increased database load
- Higher request latency
- Poor scalability under traffic spikes
- Difficult auditing and debugging
- Tight coupling between business logic and authorization
The core issue was clear:
Permissions are read-heavy and rarely updated, yet they were treated like transactional data.
That mismatch became a systemic bottleneck.




