피드로 돌아가기
DIP — Dependency Injection
Dev.toDev.to
Backend

Abstraction 기반 DI 도입을 통한 인프라 의존성 제거 및 Unit Test 가능 구조 설계

DIP — Dependency Injection

Nghề không nhiều chẳng sắc2026년 6월 29일6intermediate

Context

클래스 내부에서 Dependency를 직접 생성하는 하드코딩 방식으로 인한 강한 Coupling 발생. DB나 Mail Server 등 실제 인프라 환경 없이는 비즈니스 로직 검증이 불가능한 테스트 제약 상황 분석.

Technical Solution

  • Dependency Inversion Principle 적용을 통한 고수준 모듈과 저수준 모듈의 직접 의존성 제거
  • Interface 기반의 Abstraction 계층을 도입하여 구체적인 Implementation으로부터 로직 분리
  • Constructor Injection 방식을 채택하여 외부 Composition Root에서 의존성을 주입하는 구조 설계
  • Mock Object 주입을 통한 외부 인프라 없이 순수 비즈니스 로직만 검증하는 Unit Test 환경 구축
  • Circular Dependency 발생 시 공통 로직 추출 및 Event/Callback 기반의 의존성 방향 전환 적용

- 클래스 내 new 키워드를 통한 서비스 생성 여부 확인 및 Inject 방식으로 전환 검토 - Constructor 파라미터 개수 증가 시 SRP(Single Responsibility Principle) 위반 신호로 인지 및 클래스 분리 - 변동 가능성이 적은 순수 함수나 상수는 DI 대신 직접 Import 하여 불필요한 추상화 제거 - DI Container 도입 전 수동 Constructor Injection으로 시작하여 복잡도 임계점 판단

원문 읽기