Clean Architecture 정리 - 3부 10장 인터페이스 분리 법칙
2025. 6. 14. 13:15

정의

인터페이스가 다양한 역할(≠기능)을 처리하게 만드는 청사진이 되지 않도록, 역할 단위로 잘게 나누어야 한다는 뜻이다.


인터페이스가 지나치게 클 때 발생하는 문제

여러 객체가 하나의 인터페이스를 채택해 기능을 구현한다고 하자.

그런데 모든 객체가 그 인터페이스의 모든 기능을 사용하는 것은 아니다.

 

이런 상황에서 인터페이스가 일부 수정되면, 그 수정된 부분이 논리적으로 어떤 객체에는 전혀 필요 없는 것일 수 있다.

하지만, 해당 객체는 인터페이스를 구현하고 있기 때문에 코드상으로는 그 변경을 반영해야 한다.

 

결과적으로, 불필요한 의존성과 변경 전파가 발생하게 된다.

이는 유지보수를 어렵게 만든다.


아키텍처 수준에서의 인터페이스 분리 법칙

이 원칙은 단순히 객체의 메서드 인터페이스에만 국한된 이야기가 아니다.

모듈 간의 의존 관계에서도 동일하게 적용된다.

 

예시:

A → B → C
  • A 모듈은 B를 의존하고
  • B 모듈은 C를 의존한다고 가정하자.

이때 C 모듈이 변경 및 배포되면, 그에 따라 B도 변경될 수 있고, 결국 A도 영향을 받는다.

더 큰 문제는, C 내부의 기능 중 A와 B가 전혀 사용하지 않는 기능에 문제가 생겨도, A와 B는 영향을 받을 수 있다는 점이다.

 

 

추이 종속성 차단

이를 막기 위해선:

A → I ← B → C   // 인터페이스 I로 의존성 단절

이처럼 인터페이스는 변경 전파를 차단하는 방패 역할로 사용할 수 있다.

 

※ 본 글은 『Clean Architecture』(로버트 C. 마틴 저) 3부의 10장을 기반으로 학습 목적으로 요약한 글입니다.

※ 이 글은 책의 내용을 요약한 것으로, 원문 없이 읽을 경우 오해의 여지가 있을 수 있습니다. 정확한 이해를 위해 원서의 정독을 권장합니다.