John Klein (Architecture Practices Initiative)
"아키텍처는 구조들의 결합체로서 시스템을 설명하는 논리를 제공한다. 각 구조는 구성요소, 요소들간의 관계, 그리고 요소와 관계의 특성으로 구성된다."
그리고, 아키텍처 전문가는 3가지 역할을 수행할 수 있어야 한다.
시스템 디자인을 시작할 때, 아키텍트는 구조적으로 중요한 기능과 품질 요구사항을 정의해야 한다. 그리고, 요구사항을 활용해서 개념적으로 통합된 개요도를 디자인한다. 시스템 디자인에서 가장 중요한 것은 개념 통합이 내부 일관성, 즉 구축과 운영에서 동일한 결과가 동일한 방법에 의해서 만들어지는 로직을 제공해야 한다는 것이다. 이 역할은 소프트웨어 개발 프로젝트의 초기 단계에서 매우 중요하다. 특히, 여러 팀을 도와 효과적으로 협업을 이끌어내야 할 경우 더욱 중요하다.
2. 확장자(Extender)
최초 출시 후에는 일반적으로 빠르게 가치를 부가하려는 압력이 있기 마련이다. 예를 들어, 상업 제품의 초기 출시는 중요한 선행투자에 의해 이루어지며, 시스템 확장 단계에서 그 투자 자금을 빨리 회수하려는 경향이 있다. Facebook, Dropbox, PayPal 처럼 상업용 시스템의 대부분은 다른 시스템과 통합하여 상대적으로 적은 개발 비용을 들이고도 큰 자금회수에 성공할 수 있었다. 마찬가지로, 기업의 IT 환경에서 새로운 시스템을 다른 기업 시스템들과 통합하는 것은 자동화를 향상시키고 가치를 빠르게 높인다.
따라서, 소프트웨어 아키텍트는 구축한 시스템에 대한 이해와 함께 인터페이스에 대해서도 이해하는 것이 중요하다. 그리고, 중요한 미들웨어, API, 커뮤니케이션 프로토콜 등 시스템 통합에 필요한 기술들을 이해하고 있어야 한다.
이런 이해를 통해 아키텍트는 어떤 통합 유형이 쉽고 빠를 수 있는지 정할 수 있다. 그리고 어느 특정 외부 시스템과 통합되는 것이 최선인지도 알 수 있다. 시스템 확장 단계에서 흔히 성공한 개인들은 초기 개발팀의 구성원으로서 그 시스템이 어떻게 만들어졌는지, 명시되지는 않았지만 어떤 기능을 발휘할 수 있는지, 그리고 부작용이 무엇인지 등을 잘 이해하는 사람이다.
3. 지속하게 하는 사람(Sustainer)
시스템이 상당시간 운영되고 나면 이후는 유지보수 비용이 올라가게 된다. 따라서, 관심은 장기유지로 이동하게 되고 가치를 계속 제공하면서 아키텍처나 운영에 거의 변화가 없도록 하는 것이 목표가 된다.
아키텍트 입장에서는, 이런 유지보수 단계에서의 초점은 시스템 가치를 지속하기 위한 분석, 변호, 소통이 된다. 세부 역할에는 최근의 사례와 일치하는 새로운 패턴을 활용하여 시스템에서 그 기술과 유형을 모델링하는 것도 포함된다.
따라서, 이 단계에서는 이해관계자들(의사결정권자 포함)에게 시스템의 지속적인 적합성과 새로운 환경에서 가치를 어떻게 부여할 것인지를 설명할 수 있는 문서를 작성하는 스킬이 요귀된다.
댓글 없음 :
댓글 쓰기