아키텍트
아키텍트(architect)는 시스템을 기획, 설계, 관리, 감독하는 사람을 말한다. 원래 아키텍트는 주택이나 건물을 설계하고 감독하는 건축가를 의미하는 말로써, 정보시스템을 건축가에 비유하여 아키텍트라는 말을 사용하게 되었다.
목차
개요
사전적 아키텍트(architect)의 의미는 건물을 건축할 때 계획을 세우고 설계를 하며 감독하는 사람인 건축가를 의미하는 영어 낱말로써, 시스템을 기획, 설계, 관리, 감독하는 사람을 건축가로 비유하여 아키텍트라는 말을 사용하게 되었다.
특징
자질과 역량
통찰력(Insight)
아키텍트가 갖추어야 할 자질 중 으뜸으로 아키텍트가 고유의 역할을 수행함에 있어 등대와 같은 역할을 한다. 통찰력은 사물의 본질을 꿰뚫어 볼 수 있는 능력을 말하는데 아키텍트에게 있어서는 IT 산업과 기술 전반에서 단위 프로젝트까지가 통찰의 대상이 된다. 통찰의 대상이 단위 프로젝트일 경우에는 프로젝트의 목표를 명확하게 정의하고 이를 달성할 수 있는 경로를 정확하게 파악할 수 있는 능력이 아키텍트의 통잘력이다. 아키텍트의 통찰력은 제한된 자원으로 주어진 시간 내에 최적의 결과물을 만들어내기 위해서 목표 시스템이 요구하는 다양한 기능, 품질요소들의 중요도와 난이도를 꿰뚫어보고 가장 좋은 조합을 이루어낼 수 있도록 해준다.[1]
창의성(Originality)
새로운 비전을 만들고 올바른 문제 해결 경로를 탐색하기 위해 필요한 자질이다. 통찰력이 비전 형성의 원천이라면 창의성은 통찰의 결과로 얻어진 결론을 기반으로 실제 비전을 만들기 위한 능력이다. 한번 정해진 비전을 현실에 맞도록 수정하고 개선하는 과정 역시 창의성에 의해 성패가 결정된다. 또한 창의성은 구현 과정에서 부닥치는 복잡한 비즈니스 연산을 효과적으로 처리하기 위한 로직을 만들 수 있는 능력을 제공한다. 창의성을 통해 구상한 생각은 창조력을 통해 현실화된다.[1]
논리성(Logicality)
아키텍트는 논리적이어야 한다. 모든 아키텍트의 결정은 단위 프로젝트에서든 IT 전반에 대해서든 해당 사업의 성패에 결정적인 영향을 미치게 된다. 따라서 논리적으로 타당한 명제 만으로 문제를 파악하고 필요한 결정을 내리는 것은 아키텍트에게 필수적인 자질이다. 논리적인 타당성을 갖춘 결론은 그 자체로서 중요할 뿐 만 아니라 결론에 대한 조직적 합의를 이끌어내는 핵심적인 요소로도 작용한다. 또한 논리성은 아키텍트가 가지고 있는 생각을 정확하게 묘사할 수 있게 해준다. 이를 통해 어렵고 복잡한 기술에 대한 컨설팅이 가능해지고 수립된 아키텍처에 대해 설명하고 전파하는 것이 가능해진다.[1]
기술력(Technique Skill)
아키텍트의 자질에서 가장 중요한 것이 통찰력이라면 아키텍트의 역량 중에서 가장 중요한 것은 기술력이다. 기술력은 아키텍트를 아키텍트일 수 있도록 하는 핵심 중의 핵심이라 할 것이다. 제아무리 통찰력을 갖추고 창의적이고 논리적인 사고를 한다 해도 그 밑바탕에 기술에 대한 올바른 이해가 깔려 있지 않다면 아무런 소용이 없다. 여기서 문제는 기술력에 해당하는 영역이 너무도 방대하고 깊어서 한 개인이 이를 모두 자신의 것으로 만들어 갖는다는 것이 불가능하다는 사실이다. 소프트웨어 기술력과 관련된 영역 가운데는 소프트웨어 개발 공정의 집대성이라 할 각종 표준 규격과 이를 구현한 소프트웨어 솔루션, 프로그래밍과 관련되는 개발 언어, 개발 도구, 개발 환경 그리고 방법론, 아키텍처/디자인패턴, 이디엄, 다이어그램 등의 아키텍팅 및 개발 기법들 등등 많은 영역이 존재한다. 가히 아키텍트가 기술력으로 갖춰야 할 분야는 현존하는 소프트웨어 산업이 이룩한 모든 성과물들이라고 할 만하다.[1]
의사소통 능력(Communication Skill)
의사소통 능력은 아키텍트의 역량 중에서 실재 프로젝트를 성공으로 이끄는데 가장 큰 영향을 미치는 요소이다. 높은 기술력과 탁월한 통찰력이 프로젝트의 성공을 위한 근간이라면 의사소통 능력은 그 근간을 전체 프로젝트에 전파하여 아키텍트의 지향점과 판단에 모든 구성원을 복속하게 만드는 무기가 된다. 아키텍트는 수립한 아키텍처를 적절한 표현을 통해 문서화하고 이를 정확하게 설명하고 전달함으로써 목표 시스템의 구현 과정에 아키텍처가 중심이 되도록 해야 한다. 또한 설계 및 구현 과정에서의 기술적인 문제에 대한 조정과 의사 결정이 원활하게 조직적인 합의에 이르도록 하기 위해서도 의사소통 능력은 필요하다. 아키텍처 수립이 프로젝트 성공에 미치는 영향과 이로부터 확인되는 올바른 아키텍처의 가치를 전파하는 데 있어서도 의사소통 능력은 중요한 역할을 한다. 결론적으로 아키텍트의 의사소통 능력은 아키텍트의 내재한 기술력과 통찰력을 대외적으로 보여주는 수단이자 궁극적으로 실재 프로젝트의 성공을 보장하는 핵심적인 능력이다.[1]
리더십(Leadership)
아키텍트에게 있어서 리더십은 기술력이나 의사소통 능력에 비해 상대적으로 부차적인 요소이다. 그러나 기술적인 이슈에 대한 의사결정을 조직적으로 관철하고 개성 강한 개발자들의 다양성을 생산적으로 이끌 수 있는 능력은 대단히 중요하다. 아키텍처 중심의 시스템 개발을 이끌기 위해서도 리더십은 필요하다. 전체 프로젝트의 중심을 유지하고 수많은 위험요소들과의 싸움에서 이기기 위한 일사불란한 조직운영은 단지 프로젝트 관리자 만의 몫은 아니다. 특히 기술적인 중심으로써 프로젝트 개발 조직을 이끄는 리더십은 아키텍트의 몫이다.[1]
역할
첫 번째 소프트웨어 아키텍트의 가장 중요한 역할로 프로젝트의 비전을 제시하는 역할을 들고 있다. IT 기술의 흐름과 향후 전망을 토대로 고객이 원하는 요구를 실현할 수 있는 방안을 마련하여 고객의 동의를 얻어내고 고객과 합의된 목표 시스템의 명확한 모습을 전체 프로젝트 구성원에게 제시하고 이해시킬 수 있는 능력이 이 역할의 수행을 위해 필요하다. 두 번째는 핵심 기술에 대한 조언을 할 수 있는 컨설턴트의 역할을, 세 번째로는 프로젝트가 부닥치는 중요한 사안에 대한 의사 결정을 할 수 있는 의사 결정자의 역할을 제시하고 있다. 기술 컨설팅과 주요 의사 결정은 프로젝트에서 맞닥뜨리게 되는 수많은 문제와 이슈들에 대한 올바른 판단과 결정을 할 수 있는 능력과 이를 전체 프로젝트 수행 조직에 전달하고 설득할 수 있는 능력을 필요로 한다. 네 번째는 수립된 아키텍처에 대한 코치 역할이다. 장기적인 비전과 기술적 이슈에 대한 올바른 의사결정을 통해 수립된 아키텍처를 전체 프로젝트 조직원들에게정확하고 일관되게 전달하여 실제로 구현되는 시스템이 아키텍처와 일치되도록 하는 능력은 중요하다. 다섯 번째는 프로젝트에서 발생하는 다양한 형태의 대립을 해소하는 조정자의 역할이다. 프로젝트 수행 과정에는 고객과 프로젝트 수행 조직 간의 관계나 개발 조직 간, 개발자 개개인 간에 기술적인 문제로부터 비롯한 다양한 충돌이나 대립이 발생하는데 이때 이를 적절히 조정하고 올바른 결론으로 문제를 풀어갈 수 있는 역할이 요구된다. 이를 위해서는 기술력과 함께 대인관계를 원만하게 풀어갈 수 있는 설득력과 대화 능력(Communication Skills)이 필요하다. 여섯 번째는 소프트웨어 구현이다. 아키텍트는 자신이 수립한 아키텍처가 실제로 어떤 모습으로 구현될 것인지를 보여줄 수 있어야 한다. 일곱 번째는 아키텍처의 중요성에 대한 대변자의 역할이다. 이 역할은 지금까지 살펴 본 여타의 역할과는 달리 단일 프로젝트 내에서의 역할을 넘어서는 영역을 제시한다.[1]
종류
- 소프트웨어 아키텍트(software architect) : 전문가로 간주되는 소프트웨어 개발자로서, 고수준의 설계적 결정을 수행하고 소프트웨어 코딩 표준, 도구, 플랫폼을 포함한 기술 표준을 지시한다.
- 엔터프라이즈 아키텍트(Enterprise Architect, EA) : 비즈니스 아키텍처를 포함한 전체 아키텍처 설계에 대한 책임을 진다. 비즈니스 이해를 바탕으로 전체 아키텍처에 대한 큰 설계를 담당하며, 장기적인 IT 전략 수립을 담당한다. 엔터프라이즈 아키텍트 경우 단일 프로젝트 뿐만 아니라 해당 회사의 비즈니스 전략에 맞춰 앞으로 있을 모든 프로젝트에 대한 아키텍처에 대한 책임을 진다. 또한, 솔루션 아키텍트, 애플리케이션 아키텍트, 테크니컬 아키텍트, 데이터 아키텍트에 대한 통제 권한을 가지고 아키텍트 팀을 운용한다.
- 솔루션 아키텍트(Solution Architecture, SA) : 특정 솔루션에 대한 아키텍처를 설계한다. 솔루션 아키텍트의 경우 프로젝트 내에 개발팀이 있을 때 해당 솔루션을 사용하는 모든 팀에 대한 아키텍처 설계를 담당한다.
- 애플리케이션 아키텍트(Application Architect, AA) : 애플리케이션에 대한 표준 가이드 및 아키텍처 구조를 담당한다. 대규모일 때에는 개발팀 마다 애플리케이션 아키텍트를 배치하고 소규모일 때에는 전체 팀에 대해서 애플리케이션 아키텍처 설계를 담당한다.
- 데이터 아키텍트(Data Architect, DA) : 프로젝트 전체 팀에 대해서 데이터 아키텍처를 설계한다.
- 글로벌 아키텍트(Global Architect, GA) : 일반적인 프로젝트 팀에서 흔하게 존재하는 역할은 아니며 엔터프라이즈 아키텍트의 경우 사내에서 진행중인 모든 프로젝트에 관여해야 하고, 비즈니스 전략 측면에서 접근하다 보니 실제 아키텍처 설계 과정에 꼼꼼하게 참여하기가 어려운 부분에 있어 글로벌 아키텍트라는 역할을 두고 솔루션 아키텍트, 테크니컬 아키텍트, 데이터 아키텍트, 애플리케이션 아키텍트에 대한 통제 권한을 부여하고 기술 중심의 시스템 아키텍처의 설계를 하도록 한다. 엔터프라이즈 아키텍트는 비즈니스를 포함한 외부 대응이나 큰 그림에 신경을 쓰고 글로벌 아키텍트는 기술 위주의 아키텍처 설계에 집중한다.[2]
각주
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 1.6 rvun, 〈Java 아키텍트 역할〉, 《다음 블로그》, 2012-04-07
- ↑ bymin, 〈아키텍트의 종류와 역할〉, 《깃허브》, 2018-07-10
참고 자료
- rvun, 〈Java 아키텍트 역할〉, 《다음 블로그》, 2012-04-07
- bymin, 〈아키텍트의 종류와 역할〉, 《깃허브》, 2018-07-10