brunch

You can make anything
by writing

C.S.Lewis

by Jin Apr 30. 2024

Design Rule의 의미

모듈러 아키텍처의 핵심 개

디자인 룰 (Design Rule)은 모듈러 아키텍처를 정의함에 있어서 중요한 개념 중 하나입니다.

굳이 번역한다면, "설계 규칙"으로 지칭할 수 있는데, 


번역한 단어와 원 단어 간의 느껴지는 무게 차이가 있는 편입니다.


디자인 룰은 시스템을 설계함에 있어서 준수해야 하는 정책, 규칙, 가이드를 의미하는데, 

설계라는 용어 자체가 다양한 규모의 시스템에서 폭넓은 활동을 의미하기 때문에 디자인 룰의 개념도

명확히 하나로 정의하기가 쉽지 않습니다. 


우선 본 글에서는 모듈러 아키텍처에서 다루는 디자인 룰의 개념을 설명하도록 하겠습니다.

이론적인 내용이 주이기 때문에 굳이 이런 것까지 알아야 하나 생각이 들 수 있지만, 

디자인 룰을 이해하지 않고, 시스템을 모듈화를 하는 것은 시스템을 단순히 덩어리로 찢는 활동만을

의미한다고 오해할 수 있습니다.


모듈러 아키텍처로 구현된 시스템은 이론적으로는 모듈과 모듈 간의 인터페이스로 구성이 됩니다. 

즉, "모듈의 합이 시스템이다"라고 표현할 수 있죠. (물론, 100% 모듈로만 구성되진 않습니다.) 

모듈로 구성된 시스템 하에서 디자인 룰은 다음 3 가지로 나눌 수 있습니다.


첫 번째, 디자인 룰은 모듈과 모듈 간의 관계, 모듈 간의 인터페이스를 의미합니다.

두 번째, 모듈과 시스템 간 관계, 모듈과 시스템 간의 인터페이스를 의미합니다.

세 번째, 시스템의 변화, 모듈의 변화 상황을 대응하는 방식을 의미합니다.


분류만 봐서는 와닿지 않을 수 있는데, 어떤 식으로 활용하는지 살펴보면 도움이 됩니다.


모듈은 일반적으로 기능을 구현하는 서브시스템 단위로, 그 자체로도 시스템으로 작동할 것을 권장합니다.

그런데, 시스템 내에 존재하는 모듈은 시스템이 달성해야 하는 목적을 지원하는 역할을 담당해야 합니다.


동시에 모듈이 담당하는 본연의 기능을 수행해야 합니다. 또는 다른 모듈이 적절하게 

자기 역할을 하는 것을 지원해야 할 수도 있습니다.


여기서 2개 이상의 모듈이 상위 시스템의 목적을 달성하기 위해서 작동하는 것을 

협업 (Collaboration)이라고 합니다.


다른 모듈이 작동하는 것을 지원하는 것을 협조 (Cooperation)이라고 하고, 개별 모듈들이 자신에게 

최적화된 업무를 수행하는 과정에서 발생하는 충돌 상황을 해결하는 것을 조정 (Coordination)이라고 합니다. 


여기서 협업과 협조는 디자인 룰의 분류 중 모듈 간의 인터페이스를 통해서 이루어집니다.

조정은 디자인 룰의 분류 중 시스템과 모듈 간의 인터페이스를 통해서 이루어집니다.


시스템이 작동하는, 동적인 상황에서는 위와 같이 표현할 수 있고, 정적인 상황에서는 모듈 간의 인터페이스, 시스템과 모듈 간의 인터페이스는 모듈의 독립성을 유지하고 모듈이 개별적으로 설계, 개발, 진화할 수 있는 기본 조건이 됩니다.


마지막 시스템의 변화, 모듈의 변화에 따른 대응하는 방식은 위 두 가지 디자인 룰에서 시간축이 반영한 결과입니다.


원리는 동일합니다. 시간이 바뀌면 시스템이 진화해야 하는 데, 진화하는 대상이 최소로 만들기 위해서는 모듈 간의, 모듈과 시스템 간의 인터페이스가 정의되고 표준화되어 있어야 합니다. 그것을 세대 간으로 길게 늘려서 정의했다면 세 번째, 디자인 룰이 되는 것이죠.


모듈화, 모듈 기반의 제품 아키텍처 정의 과정을 거치면 모듈과 인터페이스를 만들어 내는 것이라고 단순히

생각하겠지만, 그것이 아니라 사실 디자인 룰을 결정하는 것이고 그 결과로 모듈과 인터페이스가 만들어진다고 생각해야 합니다.


앞에서도 언급했듯이, 디자인 룰의 개념이 명확하지 않으면 모듈화는 단순히 여러 개의 덩어리로 시스템을 나누는 활동으로 단순화해서 생각하게 됩니다.


매거진의 이전글 효과가 먼저, 효율은 그다음
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari