모든 소프트웨어 아키텍트들은 모든 것을 가질 수 없다는 것을 알고 이해해야 합니다. 높은 성능, 높은 가용성, 고 수준의 보안 그리고 고 수준의 추상화 모두를 동시에 충족하는 아키텍쳐를 설계하는 것은 사실상 불가능합니다.
소프트웨어 아키텍트들이 알아야만 하고, 이해해야 하는, 그리고 고객, 동료와 함께 대화를 나누어야 하는 진실된 이야기가 있습니다.
이 이야기는 Vasa라 불리는 배 이야기입니다. 1620년대에 스웨덴과 폴란드 사이에 전쟁이 발생했습니다. 스웨덴 국왕은 비용이 많이 드는 전쟁을 빨리 끝내고 싶었고, vasa라 불리는 배를 건조[1]할 것을 명령하였습니다. 이 순간부터, 이 배는 더 이상 평범한 배가 될 수 없었습니다.
이 배가 갖춰야 했던 조건(요구사항)들은 그 당시의 어떤 배와도 비교할 수 없었습니다: 선체가 200피트 정도 더 길고, 2개의 갑판에 64개의 총을 적재할 수 있고, 300명의 군사를 안전하게 태워 폴란드로 가는 바다를 가로지를 수 있는 수송 능력을 가져야 했습니다. 배를 건조하는 데드라인(시간)을 엄수해야 했으며, 재정(자금)적으로도 여유롭지 않았습니다.
어떤 전문직이든, 전문용어를 사용합니다. 그러므로 같은 전문직에 종사하는 사람들끼리 효율적으로 대화할수 있습니다.
법조인은 인신 보호 영장 (habeas corpus), 예비 심문 (voir dire), 배심원 (venire)에 관해 다른 사람에게 말합니다.
마찬가지로 목수는 맞댐이음 (butt joint), 겹 이음 (lap joint), 플럭스[1] 에 관해 다른 사람에게 말합니다.
그리고 소프트웨어 아키텍트는 ROA(Resource-Oriented Architecture), 2 Step Views[2], 레이어 슈퍼타입[3]에 관해 다른 사람에게 말합니다.
잠시만요! 뭘 이야기 할려는 거죠?
소프트웨어 아키텍트에게 전문용어의 사용은 필수적인 것입니다. 아키텍트가 사용하는 플랫폼에 상관없이, 전문용어는 다른 이들과 대화하는 효율적인 수단입니다.
의사소통(communication)의 이러한 수단들 중에 하나가 아키텍처와 디자인 패턴들입니다. 유능한 아키텍트가 되기 위해서는, 반드시 기본이 되는 아키텍처와 디자인 패턴들을 이해하고, 언제 사용되고,적용할지 알아야 합니다. 그리고 다른 아키텍트/ 개발자와 대화하기 위해 패턴을 사용할 수 있어야 합니다.