Real Decision
Why file handling was hidden behind a unified storage layer.
Problem
File storage implementation should not leak into CRM, billing or communication modules, otherwise infrastructure changes become application-wide refactors.
Decision
Implemented a storage abstraction layer with pluggable drivers so services work with one interface while supporting S3-backed storage and future providers without changing business logic.
Why Not
Call provider SDKs directly from business modules.
Couple storage paths and metadata rules to application features.