brunch

최적의 제품 아키텍처 수

플랫폼화, 모듈화의 난제, 최적

by 심야서점

최적의 아키텍처 수에 대한 문제는 제 책에서도 다뤘고, 동일한 주제로 예전 블로그에 쓴 적도 있습니다.

이번에 한 번 더 다루는 이유는 얼마 전 정부 기관 세미나에서 나온 질의 중 하나였기 때문입니다.


“어렵게 표준 제품 아키텍처를 만들었는데 새롭게 개발해야 하는 제품이 이것을 활용할 수 없을 땐 어떻게 해야 하는가?”


플랫폼화를 하겠다는 것, 모듈화를 하겠다는 것은 결국 제품 아키텍처를 표준화하여 다양한 제품들을 동일한 제품 아키텍처를 통해서 만들겠다는 것을 의미합니다.


제품 아키텍처를 표준화하는 노력은 상당하기 때문에 최대한 많은 제품을 해당 제품 아키텍처를 통해서 개발하길 원합니다. 동일한 제품 아키텍처를 사용하여 다양한 제품을 만드는 과정에서는 제품 아키텍처에 대한 변종(Variation)이 생기게 됩니다. 플랫폼화에서는 플랫폼을 제외한 나머지 모듈들이 모듈화에서는 전체 모듈에 대한 종류가 증가하게 되겠죠.


플랫폼화를 통해서 제품 아키텍처를 표준화하는 건 변종이 생기더라도 플랫폼을 유지해야 하기 때문에 적용해야 하는 제품의 종류가 제한 되게 되고, 플랫폼 수가 증가하게 됩니다. 사실상 플랫폼이 제품의 절반 이상을 차지하기 때문에 제품 아키텍처가 변화하는 것으로 볼 수 있죠.


이러한 제한 때문에 플랫폼 화보다 적용 폭을 넓히는 노력이 모듈화입니다. 플랫폼을 다수의 모듈들로 쪼개서 변종의 폭을 넓히는 겁니다.


그럼에도 표준화된 제품 아키텍처로 모든 제품을 대응하기 어려울 수 있습니다.

그땐 제품 아키텍처가 새롭게 만들어지고, 제품 아키텍처의 종류가 증가하게 되는 겁니다.

그래서 최적화 문제가 발생합니다.


최적의 제품 아키텍처의 수는 몇 개인가?

최적의 플랫폼 수는 몇 개인가?

최적의 모듈 수는 몇 개인가?


모듈러 디자인, 모듈러 아키텍처 활동에서 가장 풀기 어려운 문제이자, 정답이 없습니다.


다만, 명확한 방향성은 존재합니다.


첫 번째, 최적화 문제는 최적의 제품 아키텍처의 수, 최적의 플랫폼 수, 최적의 모듈 수 순으로 최적화 문제를 검토해야 합니다.


즉, 작은 영역의 최적화 결과를 얻어내고 점차 큰 영역으로 키우는 것이 아니라, 가장 큰 영역의 최적화 결과를 얻고 점차 작은 범위로 줄여가야 합니다.


두 번째, 최적화 문제는 전개할 제품군, 제품의 변화를 모두 정의한 후에 풀어야 합니다.


최적화 문제는 철저하게 효과적인 제품군 정의 하에 가장 효율적으로 개발, 운영할 수 있는 방법으로서 접근해야 합니다. 무작정 숫자를 계산하겠다, 무엇인가 정해진 수식으로 풀겠다는 건 불필요함을 떠나서 무가치한 행위입니다.


세 번째, 두 번째 문제를 검토한 후에는 무조건 수는 적을수록 좋습니다.


보통 세 번째와 두 번째를 순서를 바꿔서 접근하는 경우가 많은데, 가장 중요한 건 효과성, 효과적인 제품군 정의가 된 후에 이를 효율적으로 대응하는 방법을 찾는 겁니다.


이번 글에서는 세미나 시에 자주 질의 되는 최적화 문제에 대해서 다뤄봤습니다.


세미나 참석자가 불가피한 행사로 인해서 소수로 축소되었으나, 질의 수준이 높아서 알찬 시간이었습니다.


Image by Gerd Altmann from Pixabay

keyword
매거진의 이전글소프트웨어 재사용을 주목하자 [3]