DI 적용 계기·구체 구현·테스트 가용성 향상·설계 습관 연결 중심으로 푸는 결
DI(의존성 주입)를 처음 제대로 적용한 건 학부 프로젝트에서 외부 API 호출 로직이 비즈니스 로직과 강하게 결합되어 테스트가 불가능해진 문제를 겪고 나서였습니다. API를 직접 호출하는 코드가 서비스 레이어 안에 박혀 있다 보니, 테스트할 때마다 실제 요청이 나가거나 환경 설정이 필요했습니다. DI를 적용하면서 외부 API 클라이언트를 인터페이스로 추상화하고, 실제 구현체와 Mock 구현체를 주입 가능하게 만든 구조로 바꿨습니다. 그랬더니 단위 테스트에서 Mock을 주입해 외부 의존 없이 비즈니스 로직만 검증할 수 있게 됐습니다.
Python에서는 생성자 인자로 의존성을 받는 방식으로 구현했는데, 의존성을 외부에서 주입받는 구조로 바꾸는 것만으로도 코드 모듈성이 확 달라진다는 걸 직접 경험했습니다. 이후 프로젝트에서는 설계 초반부터 "이 클래스가 무엇에 의존하는가"를 먼저 정의하고, 그 의존성을 생성자로 받는 패턴을 기본으로 쓰고 있습니다.