소프트웨어 중심의 회사를 흉내 내는 것으로 끝날 문제가 아니다
소프트웨어를 활용하는 제품은 크게 소프트웨어만으로 구성되는 제품과 기구를 포함한 하드웨어와 소프트웨어가 결합된 제품으로 나눌 수 있습니다.
제품의 효율적인 전개를 위해서 제품의 아키텍처를 최적화를 하는데, 그 방법론 중 하나가 모듈러 디자인입니다. 첫 번째 소프트웨어만으로 구성되는 제품의 경우는 소프트웨어 아키텍처를 최적화하는 것으로 과업을 단순화할 수 있고, 모듈러 디자인 입장에서는 문제에 대한 모듈화와 설루션에 대한 모듈화를 일치화할 수 있기 때문에 상대적으로 단순화하여 접근할 수 있습니다.
반면에 하드웨어와 소프트웨어가 결합된 제품인 경우는 문제에 대한 모듈화와 솔루션에 대한 모듈화가 서로 일치될 수 없습니다. 그래서, 문제에 대한 모듈화는 시스템 입장에서 모듈로서 소프트웨어를 바라보는 것인 "Software as Module"로 표시하고, 솔루션에 대한 모듈화는 "Software Modularization", 소프트웨어 모듈화, 소프트웨어 아키텍처 최적화로 표시합니다.
즉, 소프트웨어에 대한 모듈러 디자인 접근은 문제에 대한 모듈화, 솔루션에 대한 모듈화가 나눠져야 합니다.
그런데, 전통적으로 하드웨어 중심으로 제품을 만들던 회사들이 제품에서 소프트웨어가 차지하는 비중이 커지면서 제품 아키텍처에 대한 최적화 니즈가 커짐에도 모듈화 방향성을 잡지 못하는 것은 이 두 가지 모듈화 방식을 구별하지 않기 때문입니다.
사실 더욱 큰 문제는 전통적인 하드웨어 중심의 기업이 아닌 소프트웨어 중심의 기업이 하드웨어 영역으로 진출하면서 갖게 되는 경쟁력을 위기의식을 느끼는 과정에서 겉모습을 따라 하는데 그치는 것입니다.
하드웨어와 소프트웨어가 결합된 제품을 만드는 기업은 크게 두 가지 접근방법을 가지고 있다고 볼 수 있습니다.
첫 번째는 소프트웨어를 시스템 관점에서는 하나의 모듈 또는 서브 시스템으로 보는, 공급망 관점에서는 하나의 공급망의 하나의 노드로 바라보는 접근 방법입니다. 이는 대부분의 전통적인 하드웨어 중심의 기업들이 취하는 접근 방법입니다. 소프트웨어는 제품이 원하는 요구사항을 반영해야 하고, 소프트웨어는 시스템에 대한 이해 없이 요청하는 대로 반영하는데 집중하는 것이 일반적입니다.
두 번째는 소프트웨어가 다른 측 하드웨어를 자신의 기능을 실현하는 툴, 수단으로 바라보는 입장입니다. 즉, 소프트웨어가 중심이 되고, 그것이 발휘하는 기능을 최적으로 수행하는 것이 하드웨어의 역할인 접근 방법입니다. 이런 접근 방법을 가진 회사들이 바로 소프트웨어 영역이 강하고, 자체적인 소프트웨어 플랫폼을 보유하고 있는 회사들이 취하는 방법입니다.
둘 간으로 서로 좁혀질 수 없는 기업 DNA 같은 거리감이 있습니다. 즉, 첫 번째 접근방법을 당연하게 수행하고 있는 회사가 경쟁력을 갖춘다고 두 번째 접근방법을 취하는 것이 쉽게 성공하지 못할 이유가 바로 그것입니다. 하나의 서브 시스템 정도, 하나의 모듈 정도로 취급하면서 그마저도 거대한 공급망에서 하나의 노드 정도, 언제든 교체할 수 있는 노드로 보던 입장에서 소프트웨어를 중심으로 다른 영역을 수단 정도로 여기는 것이 가능할까요?
사실상 불가능합니다.
이에 대한 차이점을 인식한 상태에서 소프트웨어 모듈러 디자인, 모듈러 디자인을 통한 소프트웨어 아키텍처 최적화를 바라보아야 합니다.
그렇다면, 현실적으로 어떻게 접근해야 할까요? 어떻게 소프트웨어 경쟁력을 갖춰야 할까요?
완벽한 답은 아니지만, 현실적인 제언은 다음 편에서 다루겠습니다.