본문 바로가기

카테고리 없음

[개발서적] 클린 아키텍처 10 - ISP: 인터페이스 분리 원칙

 

ISP란?

ISP(인터페이스 분리 원칙)는 클래스 간 의존 관계를 인터페이스 단위로 분리함으로써, 불필요한 의존성을 제거하고 변경 시 불필요한 빌드와 배포를 방지하도록 한다.

의존 관계로 인한 문제

하나의 클래스를 여러 하위 클래스가 의존하는 경우, 하위 클래스가 사용하지 않는 메서드에도 의존성이 생기기 때문에 상위 클래스가 수정되면 모든 하위 클래스에서 재컴파일 및 재배포가 필요해지는 문제가 발생할 수 있다.

(정적타입 언어) 하나의 클래스를 여러 클래스가 의존

 

이 문제는 상위 역할 클래스와 이를 구현한 하위 구현 클래스 간의 의존관계를 인터페이스 단위로 분리함으로써 불필요한 메서드에 대한 의존성을 제거하여 해결할 수 있다.

(정적타입 언어) 분리된 오퍼레이션

ISP와 아키텍처

ISP는 정적 타입 언어에만 국한된 원칙으로 보일 수 있지만, 아키텍처 영역에서도 적용될 수 있다. 예를 들어, S 시스템이 F 프레임워크에 의존하고, F 프레임워크는 반드시 D 데이터베이스를 사용하도록 설계된 경우를 생각해 보자. 이때 시스템 간 의존관계는 S → F → D가 된다. 이는 User와 OPS 클래스 간 관계에서 발생하는 문제와 동일한 상황을 야기할 수 있다.

  • S 시스템이 사용하지 않는 기능이 D 데이터베이스에 포함된 경우에도, D 데이터베이스가 수정되면 F 프레임워크와 S 시스템 모두를 재배포해야 하는 문제가 발생할 수 있다.

 

결론

ISP(인터페이스 분리 원칙)는 불필요한 의존성을 제거하여 불필요한 재빌드와 재배포를 방지한다. 또한, 정적 타입 언어에 국한되지 않고 시스템 아키텍처 영역에서도 효과적으로 적용할 수 있다.