brunch

You can make anything
by writing

C.S.Lewis

by Jin Dec 27. 2020

아키텍처 (Architecture)란 무엇인가

복잡성과 아키텍처

아키텍처 (Architecture)란 무엇인가

1) 아키텍처는 다양한 영역과 관련된 의사결정의 결과물이며, 이후 이어질 활동에 대한 기준이 된다.



아키텍처를 단순한 설계의 결과물로 보는 것은 설계 과정을 단편적으로 바라보기 때문이다. 설계라는 것은 머릿속의 구상을 현실화하는 시작이자, 다양한 제약사항을 해결해가면서 초기에 설정한 목적을 달성하는 과정을 의미한다. 그래서, 설계에서의 아키텍처는 단순한 산출물이 아니라, 콘셉트의 적용, 제약사항의 해결, 그 과정 속에서의 최적의 의사결정의 집약체가 된다.


한번 아키텍처가 만들어진 후에 이후에 이어질 활동과 단절되는 것이 아니라, 활동에 대한 기준이 된다. 그 형태는 상세 설계에 대한 원칙이 될 수도 있고, 운영 준비에 대한 약속이 될 수도 있다.


아키텍처는 공간과 시간에 따라서 한 가지 정답으로 존재하지 않는다. 대신, 최적화를 위해서 살아있는 여러 가지 선택지 중 하나로 존재한다. 아키텍처에는 정답이 존재하지 않는다. 아키텍처는 설계 과정 중에 수행되는 다양한 의사결정의 결과물로 그 자체가 살아있어야 하는 존재이다.


그래서, 표준이라는 말을 오해하여 하나의 정답지가 있는 것으로 곡해하거나, 변화해서는 안 되는 것으로 오해해서는 안된다. 그것은 결국 아키텍처의 경쟁력을 잃게 만드는 가장 큰 이유가 된다.


아키텍처는 변화를 저항하기 위해서 만드는 것이 아니라, 변화에 능동적으로 대응하기 위해서 만든다.


하나부터 열까지 고민하고 만든 아키텍처에도 결함은 있다. 좋은 아키텍처란 결함이 없는 아키텍처가 아니라, 결함을 능동적이고 효율적으로 보완할 수 있는 프로세스 안의 아키텍처이다.


최소의 결함을 가진 아키텍처도 시간이 흘러갈수록 결함을 노출할 수 있다. 결함이 결함으로 존재하기 전에 아키텍처를 변화하는 것이 가장 작은 비용으로 결과물을 내는 방법이다.


"우린 십 년을 견딜 수 있는 견고한 아키텍처를 만드는 것이 목표이다." 여기서 견고함이란 변화를 이겨내는 힘이 아니라, 스스로 변화할 수 있는 힘을 의미한다.


외부 요인에 의해서 비자발적으로 변화를 "당하는 것"이 아니라, 외부 요인을 파악하고, 요인에 대한 영향도를 분석하여 자발적으로 변화할 수 있는 "유연성"이 바로 견고함의 의미이다.


견고함과 유연함을 반대의 의미라고 생각할 수 있으나, 견고함의 극한이 유연함의 극한과 통한다.

 


2) 아키텍처가 있다는 사실만으로 복잡성을 해결해줄 수 없다.


복잡성을 대응하기 위한 수단으로 아키텍처가 거론되지만, 단순히 아키텍처가 있다는 사실만으로

복잡성이 해결되지는 않는다. 중요한 것은 복잡성에 대응하기 위한 기준, 규칙, 절차가 아키텍처 안에 담긴다는 것이다.


이를 위해서는 복잡성을 대응하기 위한 의사결정의 결과가 아키텍처 안에 담겨야 할 것이다. 즉, 아무런 노력 없이 아키텍처 만으로 복잡성이 해결되지는 않는다.


복잡성의 종류에 따라서 대응하는 아키텍처의 종류도 달라진다.


복잡성은 다양한 원인으로 인해서 발생한다. 기술의 진화에 따라서 복잡성이 증가하기도 하고, 구성요소의 다양화와 구성요소 간의 관계의 다양화로 인해서 복잡성이 증가하기도 한다. 그리고, 외부 환경 변화에 따라서, 고객이 증가함에 따라서, 고객의 요구가 다변화됨에 따라서 복잡성이 증가하기도 한다.


결국 기술의 진화에 따른 내재적인 복잡성에 대응은 제품 단위의 아키텍처로 해결해야 한다.

아키텍처에 따라서 상대적으로 적은 비용으로 기술을 가치로 연결할 수도 있고, 그와 반대되는 경우에 처할 수 있다.


반면에 다양성으로 인한 복잡성은 제품군 단위의 아키텍처로 해결해야 한다. 단일 제품의 아키텍처가 아니라, 다수의 제품들의 아키텍처를 효율화함으로써 복잡성을 줄이는 방법을

찾아야 한다.


제품군 단위의 아키텍처에서 주목해야 하는 관점은 공간 축과 시간 축의 변화이다.


제품군 단위의 아키텍처에서 주목해야 하는 것은 제품 단위에서 벗어난 제품군 단위의 변화이다.

변화라 함은 공간 축의 변화, 즉 동일 세대 내의 제품 들 간의 변화와 시간 축의 변화, 즉 이종 세대 간의 제품 들 간의 변화에 주목해야 한다. 무엇은 변하고, 무엇은 변하지 않는지 주목하고, 어떤 식으로 복잡성에 대응할 것인지 아키텍처 안에 담아야 한다.


 


3) 아키텍처에서 단 한 가지의 속성만 가져야 한다면 개념적인 무결성 (Conceptual Integrity)를 추구해야 한다.



아키텍처의 속성 상 그 상극이 되는 개념은 복잡성 (Complexity)이다. 복잡성을 관리하기 위해서

아키텍처를 활용하는 것이며, 그러한 의미에서 아키텍처에서 가장 중요한 속성으로 갖는 것은 개념적인 무결성이다.


최고의 성능을 추구하는 하이티어 제품이 미미한 부분 하나라도 저렴한 부품 또는 낮은 성능의 부품을 썼다면 그 자체가 아키텍처를 훼손하는 일이 될 것이다. 반대로 초저가를 추구하는 제품이 쓸데없이 하이 퀄리티의 부품을 썼다면 그 자체로 모순이 된다.


아키텍처는 기준이자 원칙이자 절차를 의미한다고 했다. 아키텍처는 부여받은 개념을 지키기 위한 무결성을 최고의 가치로 삼아야 하며, 이를 어기는 행위가 일말의 가치를 생성한다고 해도 이는 장기적으로는 제품의 경쟁력을 잃게 만드는 행위가 된다.


아키텍처가 하나의 형태로 수렴될 수 없는 것은 그 자체가 인적 요소를 내포하기 때문이다.


아키텍처가 제품으로 개발되고 생산이 되는 과정은 점차 인적 요소의 비중이 줄어드는 과정이다.

사람 머릿속의 구상이 점차 현실화가 되고, 여러 가지 제약사항을 받아들여가면서 최적화되는 과정은 결국 사람의 생각, 의사결정이 반영되는 과정이다.


그러다가 점차 인적 요소보다는 운영적인 요소의 비중이 커지게 된다.


이러한 이유로 아키텍처는 하나의 형태로 수렴될 수가 없다. 사람마다 생각이 다르고, 의사결정의 결과도 달라지기 때문이다. 물론, 리엔지니어링을 통해서 경쟁사의 제품을 카피할 수 있을지 몰라도 그것은 결과를 카피하는 것이지 과정을 카피하는 것이 아니기 때문에 콘셉트, 전략적 의도는 추측할 수밖에 없다.


즉, 껍데기만 베끼는 형태가 될 수밖에 없다.


제품은 현실과 반응하면서, 아키텍처를 변화시킨다.


한번 만들어진 아키텍처는 불변의 존재가 아니다. 제품은 현실과 마주하여 변화의 압력을 받고, 경쟁사의 제품들과 동화되는 과정을 겪게 된다. 물론 행위의 주체는 사람이겠으나, 종국에는 제품은 변화하기 마련이다.


그 결과 제품의 변화가 아키텍처의 변화를 이끌고, 아키텍처의 변화는 다시 제품을 변화를 이끌어 낸다. 기업의 경쟁력의 차이는 이 과정을 얼마나 능동적으로, 얼마나 신속하게, 얼마나 정확하게 이끌어 내느냐에서 발생한다.


현실 인식이 늦어지면서 대응이 늦어지거나, 대응을 하면서 잘못된 의사결정을 이끌어내거나, 내부적인 변화 없이 외부의 변화에 억지로 따라 하기 바쁘다거나 아키텍처의 변화는 피할 수 없는 숙명이지만, 그것을 대하는 태도에 따라서 아키텍처의 성패가 결정이 된다고 볼 수 있다.



4) 아키텍처의 어원은 건축에서 유래되었다.


아키텍처 (Architecture)는 아키텍트(Architect)에서 파생된 단어로, 아키텍터는 "Master Builder"라는 의미로 중세 프랑스어 Architecte, 라틴어 Architectus, 그리스어 Arkhitekter에서 유래된 단어이다. 자세히 살펴보면, 아키텍트 (Architect)는 "Chief"를 의미하는 "arkhi"와 "Builder, Carpenter"를 의미하는 "Tekton"이 결합한 단어이다. 즉, 최고의 건축가, 기술가 정도의 의미가 된다.


과거 지배층이 자신의 업적이나 사회적인 위치를 기리기 위해서 규모가 큰 구조물를 만드는 경우가 많았는데, 지배 계층이 의도를 가지고 구조물을 만들기 위해서, 이들 아키텍트들은 그 의도를 파악하여 구조물에 대한 콘셉트를 정의했으며, 구체적인 건축, 구현은 이 콘셉트 하에서 이루어졌다.


즉, 큰 틀에서 보면 아키텍트는 자신들의 고객인 지배계층의 의도를 짜 맞추어 표현하는 사람이었던 것이다. 그리고, 그들의 최상위 결과물이 아키텍처가 된다.


아키텍처라는 용어는 다양한 분야에서 사용되지만, 그 기본 개념은 일맥상통한다.


그 단어가 유래된 건축뿐만 아니라, 소프트웨어, 하드웨어, 기업 전략, 기업 구조 등에서 사용되는 다양한 분야에서 각기 다른 의미로 사용되고 있으나, 그 기본 개념은 기본적으로 의도를 반영하는 콘셉트가 기본이 된다는 것과 콘셉트가 반영된 최상위 설계 결과물이라는 것이다.


그래서, 아키텍처를 구현하기 위해서는 의도가 무엇인지부터 파악하는 것이 핵심이 된다.


가장 훌륭한 아키텍처는 설명하지 않고도, 그 자체로 의도를 파악할 수 있는 그것이다.


기술적인 우위를 복잡함에서 찾는 경우가 많다. 어렵게 정의하고, 어렵게 설명하면 기술적으로 우월한 것으로 생각하는 것이 그것이다. 하지만, 가장 아름다운 설계물은 기능을 구현하는 결과물 중에 가장 단순한 구조를 가진 것이다.


개념적 무결성을 추구하는 것은 결국은 많은 솔루션 중에서 가장 단순한 것을 찾는 과정과 동일하다. 복잡하다는 것은 그만큼 부자연스럽다는 것을 내포하기 때문이다.

 


5) 아키텍처는 구조화 과정의 시작이자, 기준이다.


"복잡성은 시스템이 가진 고유의 특성이고, 아키텍처는 복잡성을 대응하기 위한 고유의 방식이다." 시스템마다 복잡성이 다르듯, 그를 대응하는 방식도 다양할 수밖에 없다. 그러나, 변함없는 것은 아키텍처에는 명확히 지키고자 하는 "무엇"이 있고, 그것이 지속화될 수 있도록 "구조화"하는 과정이 필요하다는 것이다.


그 "구조화" 과정의 시작이 아키텍처이다.


아키텍처는 시스템의 재설계, 재구축의 시작이다.


복잡성을 해결하는 과정은 버릴 것과 유지할 것, 변화할 것과 변화하지 않을 것을 구분하는 것부터 시작한다. 이 과정에서 버릴 것을 과감히 버리고, 향후에도 관리되지 않을 복잡성이 증가되지 않도록 기준을 세우고, 기준에 따라서 지속될 수 있도록 구조화하는 과정을 거치게 된다.


구조화하는 것을 모듈러 디자인에서는 "모듈 기반의 운영체계의 구축"이라고 표현한다.


모듈 기반의 운영체계에서는 각 부문이 전사 최적화를 위해서 모듈 기반의 활동을 정의하고, 이를 유지할 수 있는 시스템을 구성해야 한다.


그 시작이 "아키텍처"이고, 아키텍처에 따라서 시스템을 재설계 및 재구축을 하게 된다.

 


6) 단순화로 생존하고, 설계로 경쟁하라. (Surviving By Simplification, Competing By Design)


성장의 부산물인 복잡성은 종국에는 성장을 방해하고, 조직의 기반을 해친다. 조직의 성장과 더불어서 조직의 역량이 같이 향상되지만, 복잡성의 상승 속도만큼은 이르지 못한다. 한참 성장의 열매에 취해있을 때는 복잡성의 폐해를 느끼지 못한다. 무엇인가 문제가 생겼다고 느낄 때는 이미 복잡성이 극적인 방법이 아니면 정리하지 못할 수준이 되어버린다.


복잡성을 절감하는 것은 조직의 생존과 연결된다. 그러나, 복잡성을 절감하는 것만으로는 충분하지 않다. 복잡성이 성장의 부산물이라고 했던 것은 지속적인 성장을 위해선 복잡성을 이겨낼 수 있는 역량을 갖춰야 한다는 것이다. 복잡성을 이겨낼 수 있는 구조로 전환해야 하며, 그 구조는 "아키텍처"이며 아키텍처를 만들어내는 과정인 설계로 경쟁해야 한다.


복잡성의 문제는 관성의 문제이다.


복잡성의 문제가 해결하기 어려운 것은 복잡성이 관성의 문제로 연결되어 있기 때문이다. 복잡성은 시스템의 고유의 특성으로, 시스템을 바꾸지 않으면 복잡성은 절감될 수 없다. 시스템은 변화를 거스르는 것을 막는 속성이 있으며, 이러한 속성이 복잡성의 문제를 복잡하게 만드는 주요한 이유가 된다. 점진적인 방법으로는 복잡성의 문제를 근본적으로 해결하지는 못하며, 급진적이고, 극적인 방법만으로 만 복잡성의 문제를 해결할 수 있다.



마지막으로 제품 설계에 있어서 아키텍처의 의미를 살펴보고, 다음 주제로 넘어가겠다.


제품은 그것을 사용하는 사람의 Wants와 Needs가 현실화된 결과물이다. 처음에는 고객의 Wants와 Needs를 받아들여서 설계자의 의도 (Intention)가 먼저 결정이 된다. 고객의 목소리와 설계자의 의도가 상세하게 구체화된 것이 기능적/비기능적 요구사항이다. 이렇게 표현된 요구사항을 설계자에 의해서 이루고자 하는 결과물의 모습인 콘셉트 (Concept)으로 가장 먼저 형상화된다. 이 과정에서 만들어진 최초의 결과물이 아키텍처 (Architecture)이다. 아키텍처는 설계자의 의도가 반영되어서 만들어진 콘셉트를 형상화된 고레벨의 결과물이다. 이후에는 좀 더 구체화하여 종국에는 제품에 이르게 된다.


제품이 기능을 수행하기 위해서 만들어진 그 결과물이 구조 (Structure)이다. 아키텍처보다 좀 더 구체화된 모습이 구조 (Structure)이고, 아키텍처는 의도된 결과물인 반면에, 구조는 모든 활동으로 만들어진 결과물이라고 볼 수 있다. 고객의 요구사항부터 제품으로 만들어진 과정을 설계 (Design)이라고 한다. 즉, 필요로 인한 생각을 실현하기 위한 결과물을 만들어내는 과정을 설계라고 한다.


아키텍처에 관심을 가져야 하는 것은 기업의 변화는 기업이 만드는 제품들, 제품을 기획하고 만들고 판매하는 과정, 그에 수반되는 활동을 변화시키는 과정이 필요한 데, 그것을 하기 위한 기본이 되는 과정이 아키텍처를 변화시키는 것이기 때문이다. 체질을 바꾸는 구조적인 변화, 변화를 구조화하기 위해서는 아키텍처부터 시작해야 해야 한다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari