쓸모 있는 모듈러 디자인
제품을 모듈화 하면서 그 결과가 제대로 된 것인지 확인하기 위해서
모듈화 체크리스트를 활용합니다.
제가 가지고 있는 체크리스트에는 모듈화가 제대로 되었을 때 얻는 바람직한 결과,
좋은 모듈이란 무엇인가에 대한 대답이 적혀 있습니다.
이번 글에서는 모듈화 체크리스트 일부를 옮겨 보도록 하죠.
모듈화가 된다는 것은 제품의 생명 주기와 모듈의 생명 주기를 디커플링 하겠다는 의미입니다. 가장 잘못된 모듈화의 결과는 제품의 생명 주기, 또는 모듈들의 생명 주기가 서로 동기화되어 작동하는 경우입니다. 예를 들어서, 프린터의 카트리지가 잉크를 다 쓸 때마다 프린터를 교체해야 한다면 제대로 된 모듈화일까요?
모듈은 필요에 따라서 제품보다 오래 살아남을 수도 있고, 제품보다 빨리 수명을 마칠 수 있습니다. 그것은 제품이 가지고 있는 변화 특성에 따라서 달라집니다. 어떤 경우에도 명확한 것은 모듈의 생명 주기는 제품과 또 다른 모듈과 분리되어야 한다는 겁니다.
"담벼락이 없는 사이좋은 이웃사촌"은 모듈에서는 통하지 않는 말입니다. 모듈 간에는 그 정도의 차이는 있겠지만, 명확하게 경계가 정해져 있어야 합니다. 경계가 모호해지면 서로 의존성이 높거나, 높아지게 되어서 서로 생사를 같이 하게 되는 전우가 되는 겁니다.
모듈화라는 것이 제품 내부의 경계를 명확히 나누겠다는 겁니다. 그 기준이 달라질 뿐이지, 결과물은 동일합니다. 모듈화 수준이라는 것이 있습니다. 경계를 나누는 것 자체를 모듈화라고 한다면, 경계를 단순히 선을 긋는 것에서, 연석을 깔아서 구분을 해놓은 정도에서, 돌담을 쌓는 것까지 경계를 강하게 만드는 것은 모듈화 수준을 높이는 작업입니다. 경계를 명확히 나누는 것과 별개로 모듈화 수준을 높이는 것은 필요에 따라서 정도 차이가 발생합니다.
경계가 나눠져 있다고 해도, 결국 제품이라는 하나의 시스템에서 작동해야 합니다. 회사라는 시스템에서 부서라는 경계가 나눠져 있어도 서로 협업을 해야만 회사가 운영되는 것과 같은 원리입니다. 그런데, 제대로 모듈화가 되려면 모듈 간의 관계, 상호 작용은 정해진 틀에서 이루어져야 합니다.
회사라는 시스템에서 부서로 모듈로 나눠진 후에도 서로 직접 오가며 업무 요청, 업무 협조를 구하는 방식이 아니라, 공식 업무 요청 메일, 결재, 회람 등의 약속된 커뮤니케이션 수단으로 업무를 진행하는 것과 같습니다. 과거에서는 하나의 부서에서 개발도 하고, 영업도 하고, 마케팅도 하던 것을 개발팀에서는 개발을 하고, 영업팀에서는 영업을 하고, 마케팅팀은 마케팅을 하는 식으로 서로의 역할과 관계를 명확히 나눠서 서로 업무에 대한 침해 없이 역할과 권한을 행사할 수 있게 만드는 것처럼 모듈도 서로 정해진 틀에서 타 모듈과의 관계를 정립하고 상호 작용해야만 좋은 모듈이라고 볼 수 있습니다.
정해진 틀에서 관계를 정립하고, 상호작용을 하는 모듈은 단독으로 설계, 생산, 구매, 품질 검증이 가능합니다. 물론, 이것은 모듈화 수준에 따라서 달라지고, 회사가 원하는 모듈화 수준에 따라서 달라집니다.
이상적으로는 모듈화 수준이 높은 경우에는 모듈은 그 자체로 설계 단위, 생산 단위, 구매 단위, 품질 검증 단위가 될 수 있습니다.
서로 다른 모듈이 경계를 명확히 나누고 정해진 틀에서 작동하더라도, 자신의 목적이 명확하지 않고 스스로 맡은 기능을 제대로 발휘하지 않으면 이렇게 모듈들로 나눈 것이 아무런 의미가 없습니다.
모듈로 나누어진 것보다 중요한 것은 모듈들이 각자 고유의 목적을 가지고 있으며, 그 목적 달성을 위해서 기능성을 완벽히 발휘하는 겁니다. 즉, 모듈화 보다 모듈의 합인 시스템의 목적이 최우선인 셈입니다.
쓰다 보니 한편에는 완성을 못할 내용이군요. 다음 편에 이어서 쓰겠습니다.
6. 좋은 모듈은 동일한 기능을 발휘하는 모듈 대비 경쟁력이 우위에 있다.
7. 좋은 모듈은 조화롭게 제품 내에서 자신의 기능성을 완벽하게 수행한다.
8. 좋은 모듈은 다른 모듈과 명확히 다른 특성을 갖는다.
9. 좋은 모듈은 공용화와 재사용이 용이하다.
10. 좋은 모듈은 특정한 목적에 따라서 제품에서 분리하기가 쉽다.
11. 좋은 모듈은 내부의 정보는 감추고, 정해진 규칙에 따라서 내부 정보를 감춘다.
12. 좋은 모듈은 공개된 정보만 가지고 재사용이나 공용화가 가능하다.
13. 전체 모듈들이 제품의 목적 달성에 완벽히 기여해야 한다.
Image by Matthias Wewering from Pixabay