Software Architecture · SOLID Principles
How should Dependency Inversion Principle be applied in a production system?
Place abstractions near the policy that owns the need and inject infrastructure implementations at composition boundaries.