Talk the talk (말하는 것에 대해서 말하다)
어떤 전문직이든, 전문용어를 사용합니다. 그러므로 같은 전문직에 종사하는 사람들끼리 효율적으로 대화할수 있습니다.
법조인은 인신 보호 영장 (habeas corpus), 예비 심문 (voir dire), 배심원 (venire)에 관해 다른 사람에게 말합니다.
마찬가지로 목수는 맞댐이음 (butt joint), 겹 이음 (lap joint), 플럭스[1] 에 관해 다른 사람에게 말합니다.
그리고 소프트웨어 아키텍트는 ROA(Resource-Oriented Architecture), 2 Step Views[2], 레이어 슈퍼타입[3]에 관해 다른 사람에게 말합니다.
잠시만요! 뭘 이야기 할려는 거죠?
소프트웨어 아키텍트에게 전문용어의 사용은 필수적인 것입니다. 아키텍트가 사용하는 플랫폼에 상관없이, 전문용어는 다른 이들과 대화하는 효율적인 수단입니다.
의사소통(communication)의 이러한 수단들 중에 하나가 아키텍처와 디자인 패턴들입니다. 유능한 아키텍트가 되기 위해서는, 반드시 기본이 되는 아키텍처와 디자인 패턴들을 이해하고, 언제 사용되고,적용할지 알아야 합니다. 그리고 다른 아키텍트/ 개발자와 대화하기 위해 패턴을 사용할 수 있어야 합니다.
아키텍처와 디자인 패턴은 4개의 기본 카테고리 들로 분류될 수 있는데, 엔터프라이즈 아키텍처 패턴, 어플리케이션 아키텍처 패턴, 통합 패턴, 그리고 디자인 패턴입니다. 이들 카테고리는 일반적으로 전체 아키텍처 내의 범위 수준으로 분류될수 있습니다.
엔터프라이즈 아키텍처 패턴은 상위 수준(high-level)의 아키텍처를 다루고 있고, 반면에 디자인 패턴들은 아키텍처의 구조와 행위 내에서 어떻게 개별적인 컴포넌트들을 다루는지 설명하고 있습니다.
엔터프라이즈 아키텍처 패턴은 상위 수준의 아키텍처를 위한 프레임워크를 정의합니다. 좀더 범용적으로 사용되는 아키텍처 패턴들 중 어떤 것들은 이벤트 드리븐 아키텍처 (EDA), 서비스 지향 아키텍처 (SOA), 자원 지향 아키텍처 (ROA) 그리고 파이프라인 아키텍처를 포함하고 있습니다.
어플리케이션 아키텍처 패턴은 어떻게 어플리케이션과 서브시스템이 거대한 엔터프라이즈 아키텍처 영역 안에서 설계되었는지를 명시하고 있습니다. 이 카테고리에 속하는 몇 개의 범용적인 패턴 카테고리로는 잘 알려진 J2EE 디자인 패턴과 엔터프라이즈 아키텍처 패턴(마틴 파울러가 기술한 책인 PEAA – Patterns of Enterprise Application Architecture (Addison-Wesley Professional)에서 묘사된)들이 포함됩니다.
Gang of Four 책인 Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley Professional) 에서 묘사한 기본 디자인 패턴들을 아는 것은 모든 소프트웨어 아키텍트에게 필수적인 것입니다. 비록 디자인 패턴들이 소프트웨어 아키텍트에게는 너무 하위 수준을 다루는 것처럼 보일 수 있지만, 이러한 패턴들은 아키텍트와 개발자간에 효율적인 대화를 나누게 하는 표준 어휘(Vocabulary)의 일부입니다.
다양한 안티패턴들을 알고 이해하는 것 역시 매우 중요합니다. Andrew Koening의 의해 만들어진 용어로, 비 효율적인 결과를 생산해 되는 반복적인 절차들을 말합니다. 가장 잘 알려진 안티패턴들 중 몇 개는 분석 마비(Analysis Paralysis), 위원회에 의해 설계(Design By Committee), 버섯 관리(Mushroom Management), 데스매치(Death Match)와 같은 패턴을 포함합니다. 이러한 패턴을 알게 되면, 당신이 경험할수 있는 함정들을 미리 피하는 데 도움이 됩니다. 일반적으로 사용되는 안티패턴들의 목록을 http://en.wikipedia.org/wiki/Anti-patterns 에서 찾을 수 있습니다
소프트웨어 아키텍트들은 분명하고, 정확하고, 효율적인 방법으로 다른 사람들과 의사소통 하는 능력이 필요합니다. 위에서 예를 들었던 패턴들을 배우고 이해하는 것들은 소프트웨어 아키텍트로서 우리가 해야 할 일입니다.
그래서 우리는 실천할 때 실천하고, 말할 때 말할 줄 (walk the walk, talk the talk) 알아야 합니다.
By Mark Richards
[1] flux – 용접에서 생기는 산화물, 유해물의 분리 및 제거를 위해 사용하는 분말상의 재로
[2] Template View와 Transform View로 구성되는 2단계 변환법 – PEAA http://www.martinfowler.com/eaaCatalog/twoStepView.html
[3] Layer Supertype – http://www.martinfowler.com/eaaCatalog/layerSupertype.html
저희 스터디 팀이 번역하고 있는 서적중 제가 번역을 하는 몇가지 에피스도를 여기 올리고자 합니다.
영문 풀 버젼을 보시고 싶으신 분은..
http://97-things.near-time.net/wiki 방문하세요 🙂
오랫만에 뵙네요 ^^
좋은 글 잘 읽었습니다
요즘 개발 업무 때문에 통 아키텍쳐 관련해서 공부를 못했네요
좀더 소양을 쌓고 패턴도 부지런히 공부하면
커뮤니케이션에 많은 도움이 되리라 기대해 봅니다.
저도 오랜마에 뵙네요.
드디어 블로깅을 시작하신건가요? 🙂
바쁜 일이 어느 정도 정리되신거 같네요 🙂 ㅎㅎㅎ
그럼 저도 좋은글 부탁드리죠 🙂
[…] 커뮤니티나 그룹에서 사용되는 공용어 역할을 하기도 합니다. Do Food 라는 패턴을 들으면 음식을 나눠먹음으로써, […]