변화경영연구소의 소장이셨던 고 구본형 선생의 유명한 책인 '익숙한 것과의 결별'에서는 다음과 같은 내용이 나온다.
비전을 제대로 이해하기 위해서는 건축물을 연상하는 것이 가장 완벽한 동질성을 부여한다.
비전은 '미래의 설계도'라고 말하는 사람들이 많다. 그러나 나는 그 생각에 강하게 반대한다.
그것을 설계도라고 해석하는 데서부터 많은 오류가 발생한다는 것을 알고 있기 때문이다. 설계도는 전문가들을 위한 것이다. 보통 사람은 설계도를 보고 그 건물의 전체적 모습을 떠올릴 수 없다. 그것은 판독하기 어려운 수치와 기호일 뿐이다. 비전은 이해관계자 모두가 쉽게 그 모습을 머릿속에 떠올릴 수 있어야 하며, 그 모습의 아름다움 때문에 마음이 설레어한다.
따라서 비전은 오히려 건물의 조감도와 흡사하다.
건물의 유려한 자태와 자재의 질감이 느껴져야 한다. 그리고 그 건물 속의 한 부분을 줌 업시키면 그 속에 앞으로 자신이 거주하고 생활할 새로운 공간이 보인다. 이 건물이 만들어지면 이 아름다운 곳으로 이사 올 것이다. 어둡고 추운 지금의 공간을 떠나 밝고 넓고 전망이 좋은 공간에서 생활하게 될 것이다.
한 마디로 요약하면 이렇다.
건축물에 비유하자면 비전은 설계도가 아니라 조감도에 가깝다.
구본형 선생의 글은 비전에 대한 내용이지만 문득 '소프트웨어 아키텍처'도 이런 관점에서 출발하면 좋겠다는 생각이 들었다.
고객을 위한 아키텍처
소프트웨어 아키텍처를 작성하는 1차적인 목적을 가만히 생각해 보자.
소프트웨어 아키텍처는 복잡한 시스템에 대한 직관적이고 이해가능한 뷰(View)를 제공하는 데 있다. 이러한 뷰를 청사진이라고도 한다.
여기서 '이해가능한'의 대상 즉 이해를 시켜야 하는 대상은 시스템 구축에 참여하는 모든 이해관계자이다. 이 중 핵심 이해관계자는 고객이다. 결국 아키텍처는 고객이 이해가능한 시스템 청사진이어야 한다.
다시 말해 소프트웨어 아키텍처로 제시된 청사진을 보고 고객은 자신의 요구사항이 해결될 것이라는 걸 직관적으로 이해할 수 있어야 한다.
기술적으로 조금 더 들어가자면, 아키텍처를 결정하는 요인(아키텍처 드라이브라 한다) 중에서 비기능 요구사항을 만족시키는 아키텍처가 훌륭한 아키텍처다. 비기능 요구사항이란 시스템이 제공하는 기능적인 요건 외에 성능과 보안 같은 기능 외 적인 시스템의 성질을 말하는데 보통 품질속성이라고 부른다.
품질속성에는 '가용성/성능/보안/유지보수성'과 같은 시스템적인 부분도 있지만 'TimetoMarket/시스템수명/가격' 등 비즈니스적인 부분도 같이 고려되어야 한다.
따라서 고객의 관점에서 보자면 이러한 품질속성을 이해시키는 데는 전문가들만 해석가능한 복잡한 설계도가 아니라 시스템의 전체 조감도가 더 적합하다.
다음 그림은 아파트 건축물의 조감도이다.
아파트는 주거공간이라는 가장 기본적인 기능적인 요구사항 외에도 주변생활여건, 녹지공간, 전망, 해가 들어오는 방향, 역세권과 같은 비기능요구사항(품질속성)들이 고객의 선택에 중요한 역할을 한다. 이런 요건은 전문적인 설계도보다 아래 그림과 같은 조감도가 보다 직관적인 뷰를 제공해 준다. 특히 고객관점에서는.
전문가를 위한 아키텍처
물론 시스템을 구축하는 또 다른 이해관계자들인 설계자, 개발자와 같은 시스템 전문가들은 소프트웨어 아키텍처를 보고 실제 작업을 해야 하기 때문에 조감도만으로는 부족하다.
실제 작업을 위해서는 다양한 관점에서 설계를 파악할 수 있는 뷰가 제시되어야 한다.
이런 상세 뷰는 OMG의 4+1 View, CMU SEI의 3 View, 지멘스의 4 View와 같은 참조모델을 이용해서 아키텍처를 설계할 수 있다.
OMG 4+1 View
CMU SEI의 3 View
건축물에서도 상세뷰가 제공된다.
다음 그림은 아파트의 특정 가구에 대한 설계도이다. 이 설계도는 개별 세대의 방구조와 배치, 동선 등을 표현하는 좀 더 세부적인 아키텍처에 해당한다. 또한 전문적인 기호와 수치는 또 다른 이해관계자(설계자, 시공업자 등)를 위해 제공되는 정보로서 상세한 설계 기준으로 사용된다.
아키텍트 출발점
현대 건축의 아버지라 불리는, '르 코르뷔지에'는 다음과 같은 말을 했다.
우리는 돌, 나무, 시멘트를 사용하여 집을 짓고 건물을 만든다.
이것은 건축이다.
그런데 문득 그것이 내 마음을 사로잡고, 나를 감동시킨다.
그 순간 행복한 나는 이렇게 말한다.
"아~ 아름답군!". 아키텍처(Architecture)란 그런 것이다.
- 르 코르뷔지에, 19123 "Architecutre: From Prehistory to Post-Modernism"
소프트웨어 개발의 많은 요소들이 건축에서 차용되어 왔다. 소프트웨어 아키텍처 역시 건축물의 아키텍처 사상에 근간하는 경우가 많으며, 아키텍트라면 르 코르뷔지에와 같은 마인드를 가져야 하지 않을까 한다.
복잡한 전문용어와 지식, 설계도 이전에 누구나 이해할 수 있는 간단한 개념과 용어, 추상화된 표현으로 소프트웨어 아키텍처를 제시할 수 있는 마인드, 그리고 그것이 중요하다고 인식하는 마인드 말이다.
앞서 구본형 선생의 글을 정리한 문장을 아키텍처 관점에서 다시 정리해 보자.
건축물에 비유하자면 소프트웨어 아키텍처는 설계도가 아니라 조감도에서 출발해야 한다.
이 글의 도입부에 인용했던 구본형 소장의 글에서 '비전'을 '소프트웨어 아키텍처'로 바꿔도 문맥이 어색하지 않다.
소프트웨어 아키텍처를 제대로 이해하기 위해서는 건축물을 연상하는 것이 가장 완벽한 동질성을 부여한다.
소프트웨어 아키텍처는 '시스템의 설계도'라고 말하는 사람들이 많다. 그러나 나는 그 생각에 강하게 반대한다. 그것을 설계도라고 해석하는 데서부터 많은 오류가 발생한다는 것을 알고 있기 때문이다. 설계도는 전문가들을 위한 것이다. 보통 사람은 설계도를 보고 그 건물의 전체적 모습을 떠올릴 수 없다. 그것은 판독하기 어려운 수치와 기호일 뿐이다. SW아키텍처는 이해관계자 모두가 쉽게 그 모습을 머릿속에 떠올릴 수 있어야 하며, 그 모습의 아름다움 때문에 마음이 설레어한다.
따라서 소프트웨어 아키텍처는 오히려 건물의 조감도와 흡사하다.
소프트웨어의 유려한 자태와 추상화된 고품질의 질감이 느껴져야 한다. 그리고 그 시스템 속의 한 부분을 줌 업시키면 그 속에 서브 시스템이 생활할 새로운 공간이 보인다. 이 시스템이 만들어지면 이 아름다운 것을 사용할 것이다. 어둡고 추운 지금의 시스템을 떠나 밝고 넓고 전망이 좋은 시스템을 활용하게 될 것이다.
ps. 소프트웨어 아키텍처에서 다루는 주제
소프트웨어 아키텍처는 많은 지식과 경험이 필요한 주제다. 효율적인 개발과 효과적인 아웃풋을 위해서 다양한 전문지식이 요구된다.
소프트웨어 아키텍처에 관한 지식영역을 정리한 마인드 맵이다. 개발자에서 아키텍트로 발전하기 위해서 숙지를 권장한다.
다음에 기회가 되면 이들 개별 주제에 대해 다루고 싶다.
소프트웨어 아키텍처 마인드맵