원문 : http://kangcom.com/book/project/project_list.asp?pr_code=41
『Applied Software Architecture』에서는 아키텍트가 수행해야 하는 여러 가지 역할을 좀더 정리해서 ‘아키텍트의 일곱 가지 역할(7 Roles of Architect)’이라는 이름으로 소개하고 있다. 아키텍트에게는 어떤 자질이 있어야 하는지는 일곱 가지 역할을 통해 짐작해 볼 수 있다. 우리 시대, 우리 세계의 영웅이 되고 싶다면, 개발자들의 제갈공명이 되고 싶다면, 여기 소개하는 일곱 가지 역할을 잘 수행하기 위한 자질을 갖추도록 갈고 닦아야 한다.
1.비전 제시자(creating vision) : 시대의 기술 혁신 동향을 잘 읽어내야 한다. 시스템의 전체적 인 요구사항과 제약조건을 파악해 비전을 만들어 내고, 그 비전을 효과적으로 전달할 수 있어야 한다. 만들고자 하는 제품의 요구사항과 제약사항을 잘 파악하고 이를 바탕으로 시스템을 바라 보는 눈이 있어야 한다. 시장 동향도 파악해야 한다. 무엇보다도 창의력이 있어야 한다. 이런 역할은 차라리 기획이나 영업 부분에 가까워 보인다. 대부분의 개발자들이 이런 부분에 대해 가 장 막막하게 느낄 것이다. 그러나 진정한 아키텍트라는 이런 역할을 잘 수행하기 위한 자질을 갖춰야 한다. 그것이 개발자가 단순 노동자 이상의 그 무엇이 되는 길이다. 제갈공명이 천하삼 분지계, 즉 천하를 위·촉·오의 셋으로 나누어 한 왕조 재건을 도모한다는 큰 비전을 제시하지 못한다면 다른 모든 능력은 잡기술에 지나지 않는 것이다. 아키텍트의 나머지 역할과 자질, 즉 가르치고 조정하고 의사 결정하고 구현하는 데 필요한 역할과 자질은 이 비전을 효과적으로 실 현하기 위해 필요한 것들이다. 비전 제시자로서의 자질을 키우기 위해 어떤 방법으로 갈고 닦아 야 하는지 고민해야 한다.
2.핵심 기술 조언자(the architect as a key technical consultant) : 프로젝트 관리자와 아키텍 트의 역할은 (표2)와 같이 구분된다. 아키텍트는 관리자에게 기술적인 영역에서 조언을 주는 존재다. 마치 군주에게 군사에 관한 부분에 대해 조언을 하는 군사(軍師)와 같다. 훌륭한 군사 조언을 위해서는 현실에 바탕을 두고 각종 병법과 이론에 기반해야 한다. 물론 작은 나라에서는 군주가 직접 군사 역할까지 하지만 좀더 체계가 필요한 규모에서는 역할 분담이 필요하다.
3.의사 결정자(The architect makes decisions) : 설계 팀을 이끌고 전체 설계에 영향을 미치는 초기 단계의 중요한 설계 결정을 한다. 설계할 시스템에서 중요한 트레이드오프들을 파악해 내 고 아키텍처를 구성할 때 이를 반영해야 한다. 결정을 내리기 위해 도메인 지식도 어느 정도 필 요하다. 의사 결정시 위험요소와 시간적 제약을 고려해야 한다. 전쟁 중에 군사의 의사 결정에 대한 책임은 매우 막중하다. 한 번의 실수로 국가 전체가 멸망할 수도 있기 때문이다. 이런 실 수를 막기 위해 전쟁 전에 미리 작전을 세우고 군대 편제와 규모, 공격로와 동원 무기체계 등에 대한 결정들을 신중하게 내려야 한다. 물론 미리 이런 계획과 의사 결정을 내릴 뿐만 아니라 진 행 중에도 상황에 따라 제때에 적절한 의사 결정을 내려야 한다. 심지어 XP 같은 프로세스에서 는 ‘계획은 무의미하다. 대신 계획하는 과정은 대단히 의미 있다’라고까지 말하면서 제때에 상황에 맞게 과거의 결정사항을 수정하고 새로운 의사 결정을 내려야 한다. 다양한 종류의 사안 에 대해 논리적 근거를 밝히고, 그런 사안들끼리의 상관관계를 고려하기 위해서는 다양한 경험 과 이론적 기반을 필요로 한다. 이를 기반으로 즉흥적이고 임의적인 의사 결정을 배제하고 논리 적 근거와 타당성을 바탕으로 예측 가능한 결론을 끌어낼 수 있는 의사 결정을 할 수 있어야 한 다.
4.코치(The architect coaches) : 팀 구성원들과 대화의 통로를 열고 이를 통해 설계한 아키텍처 를 가르친다. 아키텍처를 설계한 내용을 이해시켜 주고 그들의 의견을 수렴, 반영한다. 팀원들 이 아키텍트가 설계해 놓은 아키텍처의 틀 위에서 세부 설계를 해 보면서 설계 능력을 키우도록 지도해야 한다. 삼국지의 세력들은 모두 처음부터 큰 무리를 거느리지 않는다. 처음에는 핵심 멤버 몇몇과 함께 전체 조직의 틀을 짜고, 새로운 참가자가 생길 때마다 그들에게 기존 조직체 계를 이해시키고 의견을 반영해 나가면서 조직을 점점 더 탄탄하게 만들어 간다. 군사는 휘하의 무리들에게 전투기술과 조직 운용을 가르쳐 좀더 성장할 수 있도록 해 준다. 누군가를 성장시켜 줌으로써 강력한 리더십을 발휘할 수 있게 된다. 이런 리더십을 통해 의사 결정자로서 입지도 강화된다.
5.조정자(The architect coordinates) : 아키텍처에 영향을 미칠 수 있는 사람들의 활동을 조정, 중재한다. 아키텍처에 의해 영향을 받을 사람들의 활동을 조정한다. 설계 통합성을 유지한다. 아키텍처에 따라 설계가 진행됨을 보장한다. 많은 프로젝트에 불화가 존재한다. 그리고 때로는 이런 불화가 프로젝트 성패를 좌우하는 경우까지 있다. 서로 충돌하는 의견들을 기술적 입장에 서 중재할 사람이 필요하다. 기술적인 문제에서 나온 불화를 해결하기 위해서는 기술적 지도력 이 있는 사람의 권위 있는 중재가 필요하다. 지도력이나 중재력 같은 것들이 단순히 기술만 뛰 어난 개발자에 더해서 아키텍트에게 요구되는 ‘훌륭한 인격과 원만하게 사람 대하는 기술’을 가진 대인 능력적 자질이다.
6.구현 능력(The architect implements) : 새로운 기술을 도입하면 설계에 어떤 영향을 미칠지 고 려한다. 저차원의 세부사항을 보면서 초기 개념을 확인할 수 있다. 프로토타입을 만들어서 설계 결정을 평가할 수 있다. 구현 위험을 최소화하기 위해 기능 한 덩어리를 완전히 구현할 수도 있 다. 개발자들에게 구현 모델을 제시하기 위해 샘플 컴포넌트 하나를 구현할 수도 있다. 칼잡이 들에게 말이 먹히기 위해서는 기막히게 칼질하는 모습을 직접 보여주는 수밖에 없다. 아무리 공 부를 많이 하고 이론에 해박해도 최고로 구현을 잘 하는 사람의 한마디 말 앞에 무너진다. 최고 의 개발자가 최고의 아키텍트가 될 가능성이 높을 수밖에 없다. 물론 여기에 과도하게 집착한 나머지 칼질만 배우고 있으면 곤란하다. 칼잡이는 언제나 칼잡이일 뿐이다. 아더 왕은 랜슬롯보 다 칼을 잘 쓸 필요는 없다. 단지 랜슬롯이 무시하지 못할 만큼의 무공을 갖추면 된다.
7.대변자(The architect advocates) : 소프트웨어 아키텍처에 대한 투자를 대변한다. 소프트웨어 공정에 소프트웨어 아키텍처를 포함하도록 한다. 계속해서 새로운 소프트웨어 아키텍처 기술을 평가하고 도입하도록 주장한다. 많은 고승들이 계율을 파괴하고, ‘부처는 똥 막대기’ 식의 언 사를 해 왔으나 그것은 어디까지나 얽매이지 않는 궁극의 진리를 표현하기 위한 방법이었을 뿐, 실제로는 계율을 존중하고 깨달은 자들에 대한 존경심을 버리지 않았다. 아키텍트는 아키텍처에 대해 끊임없이 투자할 것을 주장해야 한다. 아키텍처에 대한 투자가 개발자들이 처한 절박한 현 실 모순을 해소해 줄 것이기 때문이다.
이렇게 아키텍트의 일곱 가지 역할을 통해 아키텍처가 가져야 할 자질에 대해 살펴봤다. 이 자질들 을 어떤 순서로 어떻게 닦아 나가야 하는지에 대해 필자들은 잘 알지 못한다. 많은 개발자들이 사업적인 요소와 교육자적인 요소를 무시하고 구현 능력만을 최고의 가치로 추구하는 경향이 있다. 그러나 이것만으로 자기 만족을 이룰 수 있을지는 모르겠으나 아키텍트로 대성하기는 힘들다고 본다.
'IT 보기' 카테고리의 다른 글
권순선님이 올린 이번 정부에 SW 예언 (0) | 2013.11.18 |
---|---|
[스크랩] 스냅쳇 - 페이스북 3조원 인수제안 거절한 배짱 청년 CEO (0) | 2013.11.15 |
[가상 인터뷰] 12인이 말하는 ‘아키텍트의 길’ (0) | 2013.09.29 |
[펌] 아키텍트가 되기 위한 길 (0) | 2013.09.29 |
타이젠 OS를 대하는 자세. (0) | 2013.09.06 |
WRITTEN BY