brunch

SOLID 원칙과 모듈러 아키텍처

변화에 강한 모듈러 시스템 설계 전략

by 심야서점

SOLID 원칙은 객체 지향 설계에서 제안된 다섯 가지 핵심 원칙으로, 소프트웨어를 더 유연하고 유지보수하기 쉽게 만드는 데 목적이 있습니다. 이 원칙들을 모듈러 아키텍처에 적용하면, 독립적이면서도 확장 가능한 시스템을 설계할 수 있습니다.


1. 단일 책임 원칙 (SRP, Single Responsibility Principle)


단일 책임 원칙은 클래스가 하나의 책임만 가져야 한다는 원칙입니다. 변경 사유가 하나뿐이어야 코드가 단순하고 관리하기 쉬워집니다.


모듈러 아키텍처에 적용하면, 각 모듈은 명확히 정의된 하나의 기능만 담당해야 합니다. 특정 기능이 바뀌더라도 해당 모듈만 수정하면 되고, 다른 기능에는 영향을 주지 않아야 합니다. 즉, 모듈은 높은 응집성과 변화에 대한 강건함을 동시에 가져야 합니다.


2. 개방-폐쇄 원칙 (OCP, Open/Closed Principle)


개방-폐쇄 원칙은 소프트웨어는 확장에는 열려 있고 변경에는 닫혀 있어야 한다는 원칙입니다. 즉, 새로운 요구사항이 생겼을 때 기존 코드를 수정하지 않고 확장이 가능해야 합니다.


모듈러 아키텍처에서는 새로운 기능이 필요할 경우 기존 모듈을 수정하지 않고 새로운 모듈을 추가하는 방식으로 대응해야 합니다. 이렇게 하면 기존 시스템을 안정적으로 유지하면서도 점진적 확장이 가능합니다.


3. 리스코프 치환 원칙 (LSP, Liskov Substitution Principle)


리스코프 치환 원칙은 서브타입이 기반 타입을 대체할 수 있어야 한다는 규칙입니다. 즉, 자식 클래스가 부모 클래스의 기능을 유지하면서 확장되어야 한다는 의미입니다.


모듈러 아키텍처에서는 새로운 모듈이 기존 모듈을 확장하더라도 이전 기능을 그대로 유지해야 합니다. 기존 시스템에서 사용하던 모듈을 새 모듈로 교체하더라도 기능이 깨지지 않아야 하며, 하위 호환성이 보장되어야 합니다.


4. 인터페이스 분리 원칙 (ISP, Interface Segregation Principle)


인터페이스 분리 원칙은 클라이언트가 자신이 사용하지 않는 인터페이스에 의존하지 말아야 한다는 원칙입니다. 즉, 인터페이스는 작고 명확해야 하며, 필요하지 않은 기능까지 강제로 구현하도록 만들어서는 안 됩니다.

모듈러 아키텍처에서는 각 모듈이 다른 모듈에 의존할 때, 그 모듈이 제공하는 전체 기능에 종속되기보다는 필요한 기능만 선택적으로 의존해야 합니다. 이를 통해 불필요한 결합을 줄이고, 모듈의 독립성을 높일 수 있습니다.


5. 의존 역전 원칙 (DIP, Dependency Inversion Principle)


의존 역전 원칙은 상위 수준 모듈이 하위 수준 모듈에 의존하지 말고, 추상화에 의존해야 한다는 원칙입니다. 또한 추상화는 세부 사항에 의존하지 않고, 세부 사항이 추상화에 의존해야 합니다.


모듈러 아키텍처에서는 특정 구현이 아닌 추상화된 인터페이스를 기준으로 모듈 간 의존성을 관리해야 합니다. 예를 들어, View 모듈은 Model 모듈의 세부 구현에 직접 의존하지 않고, 추상화된 인터페이스를 통해서만 데이터를 다루어야 합니다. 이렇게 하면 Model의 세부 구현이 바뀌더라도 View 모듈은 영향을 받지 않게 됩니다.


결론


SOLID 원칙은 객체 지향 설계에서 출발했지만, 모듈러 아키텍처에도 효과적으로 적용할 수 있습니다.

SRP는 모듈의 명확한 역할 정의를,

OCP는 새로운 기능의 확장을,

LSP는 호환성과 안정성을,

ISP는 불필요한 결합 방지를,

DIP는 유연한 의존성 관리를 가능하게 합니다.


이 다섯 가지 원칙을 충실히 적용하면, 변화에 강하면서도 확장 가능한 모듈러 시스템을 구축할 수 있습니다.


#SOLID원칙 #모듈러아키텍처 #소프트웨어설계 #객체지향설계 #단일책임원칙 #개방폐쇄원칙 #리스코프치환원칙 #인터페이스분리원칙 #의존역전원칙 #유지보수성 #확장성 #유연한설계 #소프트웨어아키텍처 #모듈설계 #코드품질 #설계원칙

keyword
매거진의 이전글부품 단위 3S 활동의 중요성